MySQL总结(一)

MySQL总结(一)_第1张图片

此文最后修改于: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;

部分截图:


MySQL总结(一)_第2张图片
初始表结构

MySQL总结(一)_第3张图片
向表中添加列

MySQL总结(一)_第4张图片
改列类型

MySQL总结(一)_第5张图片
其他修改

2.DDL语法(数据操作)

2.1 插入数据(记录)

INSERT INTO runoob_tbl 
-> (id, name)
-> VALUES
-> ('psj','peng');
MySQL总结(一)_第6张图片
插入数据并读取表数据

2.2 修改数据

update runoob_tbl set name=2 where id=55;
MySQL总结(一)_第7张图片
where表示条件

2.3 删除整行

delete from runoob_tbl where id = 55;
delete from runoob_tbl #清空表
MySQL总结(一)_第8张图片
删除数值

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 #相同字段只显示一次
MySQL总结(一)_第9张图片
查询
#数字型字段可运算
select id from runoob_tbl
MySQL总结(一)_第10张图片
数字型字段可运算

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

你可能感兴趣的:(MySQL总结(一))