详细的描述了MySQL中的基础语法。
SQL语法
SQL通用语法
- 1.SQL语句可以单行或多行书写,以分号结尾。
- 2.SQL语句可以使用空格/缩进来增强语句的可读性。
- 3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
- 4.注释:
- 单行注释:—注释内容或#注释内容(MySQL特有)
- 多行注释:/注释内容/
SQL分类
分类 |
全称 |
说明 |
DDL |
Data Definition Language |
数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML |
Data Manipulation Language |
数据操作语言,用来对数据库表中的数据进行增删改 |
DQL |
Data Query Language |
数据查询语言,用来查询数据库中表的记录 |
DCL |
Data Control Language |
数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
DDL(Data Definition Language 数据定义语言)
数据库操作
查询
创建
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
|
删除
DROP DATABASE [IF EXISTS] 数据库名;
|
使用
表操作
查询
创建
CREATE TABLE表名( 字段1 字段1类型[COMMENT 字段1注释], 字段2 字段2类型[COMMENT 字段2注释], 字段3 字段3类型[COMMENT 字段3注释], ...... 字段n 字段n类型[COMMENT 字段n注释] )[COMMENT 表注释];
|
最后一个字段后面没有逗号
字段类型如下
数值类型
类型 |
大小 |
有符号(SIGNED)范围 |
无符号(UNSIGNED)范围 |
描述 |
TINYINT |
1 byte |
(-128,127) |
(0,255) |
小整数值 |
SMALLINT |
2 bytes |
(-32768,32767) |
(0,65535) |
大整数值 |
MEDIUMINT |
3 bytes |
(-8388608,8388607) |
(0,16777215) |
大整数值 |
INT或INTEGER |
4 bytes |
(-2147483648,2147483647) |
(0,4294967295) |
大整数值 |
BIGINT |
8 bytes |
(-2^63^,2^63^-1) |
(0,2^64^-1) |
极大整数值 |
FLOAT |
4 bytes |
(-3.402823466 E+38,3.402823466351 E+38) |
0和(1.175494351 E-38,3.402823466 E+38) |
单精度浮点数值 |
DOUBLE |
8 bytes |
(-1.7976931348623157 E+308,1.7976931348623157 E+308) |
0和(2.2250738585072014 E-308,1.7976931348623157 E+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-DD HH:MM:SS |
混合日期和时间值 |
TIMESTAMP |
4 |
1970-01-01 00:00:01 至 2038-01-19 03:14:07 |
YYYY-MM-DD HH:MM:SS |
混合日期和时间值 时间戳 |
修改
字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束];
|
修改
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
|
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释][约束];
|
删除
表
ALTER TABLE 表名 RENAME TO 新表名;
|
删除
DROP TABLE [IF EXISTS] 表名;
|
DML(Data Manipulation Language 数据操作语言)
添加数据
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 条件];
|
注意
- DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
- DELET语句不能删除某一个字段的值(可以使用UPDATE)
DQL(Data Query Language 数据查询语言,用来查询数据库中表的记录)
语法
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数
|
基本查询
SELECT 字段1, 字段2, 字段3 ... FROM 表名;
|
SELECT 字段1 [AS 别名1],字段2[AS 别名2] ... FROM 表名;
|
SELECT DISTINCT 字段列表 FROM 表名;
|
条件查询(WHERE)
聚合函数(count、max、min、avg、sum)
分组查询(GROUP BY)
排序查询(ORDER BY)
分页查询(LIMIT)