SQL分类
类别 | 全称 | 概述 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行删增改查 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户,控制数据库的访问权限 |
DDL
数据库操作
查询
- 查询所有数据库
SHOW DATABASES;
- 查询当前数据库
SELECT DATABASE();
创建
CREATE DATABASE [ IF NOT EXISTS ] 数据库名称 [ DEFAULT CHARSET 字符集 ] [ COLLATE 排序规则 ];
使用时可以在数据库名称前面加入"IF NOT EXISTS",意为当数据库不存在则创建否则不作为。
删除
DROP DATABASE [ IF EXISTS ] 数据库名称;
使用时可以在数据库名称前面加入"IF EXISTS",意为当数据库存在则删除否则不作为。
使用
USE 数据库名称;
表操作
ps:表操作需要使用数据库之后才能操作
查询
- 查询当前数据库中所有的表
SHOW TABLES;
- 查询表字段结构
DESC 表名称;
- 查询指定表的建表语句
SHOW CREATE TABLE 表名;
创建
CREATE TABLE 表名(
字段1 字段1数据类型 [ COMMENT 字段1注释 ],
字段2 字段2数据类型 [ COMMENT 字段2注释 ],
字段3 字段3数据类型 [ COMMENT 字段3注释 ]
......
) [ COMMENT 表格注释 ];
修改
修改表名称
ALTER TEABLE 表名 RENAME TO 新表名;
删除
- 删除表
DROP TABLE [ IF EXISTS ] 表名;
"IF EXISTS" 意为有则删除否则不作为
- 删除指定表,并且重新创建该表(一般用于格式化)
TRUNCATE TABLE 表名;
字段操作
修改
- 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [ COMMENT 注释 ] [约束];
- 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
- 修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [ COMMENT 注释 ] [约束];
删除
ALTER TABLE 表名 DROP 字段名
数据类型
概述
MYSQL的数据类型主要分为三种:数值类型、字符串类型、日期时间类型。
数值类型
类型 | 大小 | 有符号范围(SIGNED) | 无符号范围(UNSIGNED) | 概述 |
---|---|---|---|---|
TINYINT | 1 byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 byte | (-32768,32767) | (0,65535) | 大整数值 |
MEDIUMINT | 3 byte | (-8388608,8388607) | (0,16777215) | 大整数值 |
INT或INTEGER | 4 byte | (-8388608,8388607) | (0,4294967295) | 大整数值 |
BIGINT | 8 byte | (-2^63,2^63-1) | (0,2^64-1) | 极大整数值 |
FLOAT | 4 byte | (-3.402823466 E+38,3.402823466351 E+38) | 0 和 (1.175494351 E38,3.402823466 E+38) | 单精度浮点数值 |
DOUBLE | 8 byte | (-1.7976931348623157E+308,1.7976931348623157E+308) | 0 和(2.2250738585072014E-308,1.7976931348623157E+308) | 双精度浮点数值 |
DECIMAL | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
字符串类型
类型 | 大小 | 概述 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串(需要指定长度) |
VARCHAR | 0-65535 bytes | 变长字符串(需要指定长度) |
TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65 535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 bytes 极 | 极大文本数据 |
日期类型
类型 | 大小 | 范围 | 格式 | 概述 |
---|---|---|---|---|
DATE | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901 至 2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00 至9999-12-31 23:59:59 | YYYY-MM-DDHH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:01 至2038-01-19 03:14:07 | YYYY-MM-DDHH:MM:SS | 混合日期和时间值,时间戳 |
DML
添加数据
- 给指定字段添加数据
INSERT INTO 表名(字段1,字段2,......) VALUES (值1,值2,......);
- 给全部字段添加数据
INSERT INTO 表名 VALUES (值1,值2,......);
- 批量添加数据
INSERT INTO 表名(字段1,字段2,......) VALUES (值1,值2,......),(值1,值2,......),(值1,值2,......);
INSERT INTO 表名 VALUES (值1,值2,......),(值1,值2,......),(值1,值2,......);
修改数据
UPDATE 表名 SET 字段1=值1,字段2=值2,...... [ WHERE 条件 ]
删除数据
DELETE FROM 表名 [ WHERE 条件 ]
注意
修改删除数据的时候,如果不加where判断条件则调整的整张表的内容。
DQL
语法
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
基本查询
- 查询多个字段
SELECT 字段1,字段2,.... FROM 表名;
SELECT * FRIN 表名;
- 设置别名
SELECT 字段1 [ AS '别名' ],字段2 [ AS '别名2' ] FROM 表名;
输出的时候字段名称会 替换成别名,这段SQL中的AS可以不写,例如
SELECT 字段 '别名' FROM 表名;
- 去除重复记录
SELECT distinct 字段列表 FROM 表名;
条件查询
语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件
比较运算符
运算符 | 功能 |
---|---|
> | 大于 |
\>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN ... AND ... | 在某个范围之内(含最小,最大值) |
IN(...) | 在in之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意多个字符) |
IS NULL | 是NULL |
逻辑运算符
运算符 | 功能 | ||
---|---|---|---|
AND 或 && | 并且(多个条件同时成立) | ||
OR 或 \ | \ | 或者(多个条件任意一个成立) | |
NOT 或 ! | 非,不是 |
聚合函数
语法
SELECT 聚合函数(字段) FROM 表名;
函数
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
分组查询
语法
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ]
排序查询
语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2,排序方式2
排序方式
ASC:升序(默认)
DESC:降序
分页查询
语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
执行顺序
DQL的执行顺序为FROM 表 > WHERE 条件查询 > GROUP BY 分组查询 > SELECT 字段查询 > ORDER BY 排序查询 > LIMIT 分页查询
DCL
用户管理
- 查询用户
USE mysql;
SELECT * FROM user;
- 创建用户
CREATE USER `用户名`@`主机名` IDENTIFIED BY `密码`;
- 修改用户密码
ALTER USER `用户名`@`主机名` IDENTIFIED WITH mysql_native_password BY `新密码`;
- 删除用户
DROP USER `用户名`@`主机名`;
权限管理
权限
常用权限如下表
权限 | 说明 |
---|---|
ALL,ALL PRIVILEGES | 所有权限 |
SELECT | 数据查询 |
INSERT | 插入数据 |
UPDATE | 更新数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库、表、试图 |
CREATE | 创建数据库、表 |
这是常用的 其他的可以去官网查看
管理
- 查询权限
SHOW GRANTS FOR `用户名`@`主机名`;
- 授予权限
GRANT 权限列表 ON 数据库名.表名 TO `用户名`@`主机名`;
- 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM `用户名`@`主机名`;