MySQL总结(一)


此文最后修改于:12/11/2017 3:05:33 PM

涨姿势

①DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。功能:创建、删除、修改库和表结构。

②DML(Data Manipulation Language):数据操作语言,用来定义数据库记录:增、删、改表记录。

③DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。

④DQL(Data Query Language):数据查询语言,用来查询记录。

数据类型

TINYINT:1字节,小整数值。

SMALLINT:2字节,大整数值。

MEDIUMINT:3字节,大整数值。

INT或INTEGER:4字节,整型,大整数值。

FLOAT:单精度浮点数值。

DOUBLE(5,2):双精度浮点型数值,参数表示该浮点型数值最多有5位,其中必须有2位小数。

DECIMAL(M,D):小数值,参数表示该数值最多有M位,其中必须有D位小数。

CHAR:字符型,固定长度字符串类型:char(255)。你存入一个a字符,虽然a只占一个字符,但是它会自动给你加254个空格凑成255个长度。即数据的长度不足指定长度,它会补足到指定长度。

VARCHAR:可变长度字符串类型:- varchar(65535),你存入的数据多长它就是多长。它会抽出几个字节来记录数据的长度。

TEXT(CLOB):mysql独有的数据类型,字符串类型。

BLOB:字节类型。

YEAR:年份值,格式为:YYYY

DATA:日期类型,格式为:yyyy-MM-dd。

TIME:时间类型,格式为:hh:mm:ss。

TIMESTAMP:时间戳类型,格式为上面二者的综合。

DATETIME:混合日期和时间值,格式为:YYYYMMDD HHMMSS.

基本语法规则

1.DDL语法(操作数据库及表的结构)

----++----对数据库的操作----++----

1.1 查看所有数据库:

SHOW DATABASES;

1.2 使用数据库:

USE tbl;

1.3 创建数据库并指定编码:

CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 

1.4 删除数据库:

DROP DATABASE tbl;

1.5 修改数据库的编码:
ALTER DATABASE tbl CHARACTER SET UTF-8;

----++----对表结构的操作----++----

1.6 创建表:

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
#①特别注意,创建表时候    表名与字段名都使用反引号。也试试英文状态下的“ ~ ”符号
#②反引号是为了区分 MySql 关键字与普通字符而引入的符号。

PS:如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。

1.7 查看当前数据库中所有表:

SHOW TABLES;

1.8 查看表结构:

DESC runoob_tbl;

1,9 删除表:

DROP runoob_tbl;

修改表:修改表有5个操作,但前缀都是一样的:

ALTER TABLE 表名

1.10 修改表之添加列:
#添加一个名为com的一列在description列之后
ALTER TABLE runoob_tbl
ADD COLUMN com DECIMAL(2,1) NULL
AFTER description;

1.11 修改表之修改列类型(modify):

#修改com列的类型为int(11)
ALTER TABLE runoob_tbl MODIFY com int(11);

1.12 修改表之 列名称 列类型 一起修改(change):

ALTER TABLE runoob_tbl CHANGE com com1 char(1);

1.13 修改表之删除列:

ALTER TABLE runoob_tbl DROP com1;

1.14 修改表之修改表名:

ALTER TABLE runoob_tbl RENAME TO PSJhhh;

部分截图:


初始表结构

向表中添加列

改列类型

其他修改

2.DDL语法(数据操作)

2.1 插入数据(记录)

INSERT INTO runoob_tbl 
-> (id, name)
-> VALUES
-> ('psj','peng');
插入数据并读取表数据

2.2 修改数据

update runoob_tbl set name=2 where id=55;
where表示条件

2.3 删除整行

delete from runoob_tbl where id = 55;
delete from runoob_tbl #清空表
删除数值

3.DCL语法(数据控制)

3.1创建用户

create user 用户名@IP地址 identified by ‘密码’;
#只能指定ip地址上登录
create user 用户名@‘%’ identified by ‘密码’;
#可以在任意ip地址上登录

3.2 用户授权

语法:grant 权限1,…,权限n on 数据库.* to 用户名@IP地址;
其中权限1、2、n可以直接用all关键字代替。
权限例如:create,alter,drop,insert,update,delete,select。

3.3 撤销授权

语法:revoke 权限1,…,权限n on 数据库.* from 用户名@ ip地址;撤销指定用户在指定数据库上的指定权限。撤销例如:revoke create,delete on mydb1.* form user@localhost;表示的意思是撤消user用户在数据库mydb1伤的create、alter权限。

3.4 查看权限

查看指定用户的权限:show grants for 用户名@ip地址;

4.DQL语法(数据查询)

4.1 读取表字段(列)的数据(记录)

select * from runoob_tbl
select id from runoob_tbl
select distinct id from runoob_tbl #相同字段只显示一次
查询
#数字型字段可运算
select id from runoob_tbl
数字型字段可运算

4.2条件控制

1.条件查询。在后面添加where指定条件:select * from 表名 where 列名=指定值;

2.模糊查询:当你想查询所有姓张的记录。用到关键字like。eg:select * from 表名 where 列名 like ‘张_’;(代表匹配任意一个字符,%代表匹配0~n个任意字符)。

4.3排序(所谓升序和降序都是从上往下排列)

1.升序:select * form 表名 order by 列名 (ASC );
()里面的内容为缺省值;
2.降序:select * from 表名 order by 列名 DESC;

3.使用多列作为排序条件: 当第一列排序条件相同时,根据第二列排序条件排序(当第二列依旧相同时可视情况根据第三例条件排序)。eg:select * from 表名 order by 列名1 ASC, 列名2 DESC;
意思是当列名1的值相同时按照列名2的值降序排。

4.4聚合函数

1.count:select count(列名) from 表名;
,纪录有效行数。

2.max:select count(列名) from 表名;
,列中最大值。

3.min:select sum(列名) from 表名;
,列中最小值。

4.sum:select sum(列名) from 表名;
,求列的总值,null 和字符串默认为0。

5.avg:select avg(列名) from 表名;
,一列的平均值。

4.5 分组查询

分组查询的信息都是组的信息,不能查到个人的信息,其中查询组的信息是通过聚合函数得到的。

语法:select 分组列名,聚合函数1,聚合函数2 from 表名 group by 该分组列名;

其中分组列名需要的条件是该列名中有重复的信息。
查询的结果只能为:作为分组条件的列和聚合函数;查处的信息都是组的信息。

分组查询前,还可以通过关键字where先把满足条件的人分出来,再分组。语法为:select 分组列,聚合函数 from 表名 where 条件 group by 分组列;

分组查询后,也可以通过关键字having把组信息中满足条件的组再细分出来。语法为:select 分组列,聚合函数 from 表名 where 条件 group by 分组列 having 聚合函数或列名(条件);

4.6 LIMIT子句(mysql中独有的语法)

LIMIT用来限定查询结果的起始行,以及总行数。

例如:select * from 表名 limit 4,3;

表示起始行为第5行,一共查询3行记录。

4.7 优先级顺序

select>from>where>group by>having>order by

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容