SQL分类

类别全称概述
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行删增改查
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData 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)概述
TINYINT1 byte(-128,127)(0,255)小整数值
SMALLINT2 byte(-32768,32767)(0,65535)大整数值
MEDIUMINT3 byte(-8388608,8388607)(0,16777215)大整数值
INT或INTEGER4 byte(-8388608,8388607)(0,4294967295)大整数值
BIGINT8 byte(-2^63,2^63-1)(0,2^64-1)极大整数值
FLOAT4 byte(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E38,3.402823466 E+38)单精度浮点数值
DOUBLE8 byte(-1.7976931348623157E+308,1.7976931348623157E+308)0 和(2.2250738585072014E-308,1.7976931348623157E+308)双精度浮点数值
DECIMAL 依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确定点数)

字符串类型

类型大小概述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes 极极大文本数据

日期类型

类型大小范围格式概述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至9999-12-31 23:59:59YYYY-MM-DDHH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至2038-01-19 03:14:07YYYY-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 `用户名`@`主机名`;
最后修改:2023 年 08 月 10 日
如果觉得我的文章对你有用,请随意赞赏