MySQL通用语法SQL语句可以单行或多行书写以分号结尾SQL语句可以使用空格/缩进来增强语句的可读性MySQL数据库的SQL语句不区分大小写关键字建议使用大写注释单行注释-- 注释内容 或 # 注释内容多行注释/* 注释内容 */MySQL数据类型整数类型类型大小字节有符号范围UNSIGNED无符号范围SIGNEDTINYINT1-128 到 1270 到 255SMALLINT2-32,768 到 32,7670 到 65,535MEDIUMINT3-8,388,608 到 8,388,6070 到 16,777,215INT4-2,147,483,648 到 2,147,483,6470 到 4,294,967,295BIGINT8-9,223,372,036,854,775,808 到 9,223,372,036,854,775,8070 到 18,446,744,073,709,551,615在 MySQL 中数值类型可以指定为无符号UNSIGNED或有符号默认。无符号类型的数值只能存储非负数而有符号类型的数值可以存储正数、零和负数。浮点数类型类型大小 (字节)描述FLOAT(M,D)4单精度浮点数M 是总位数D 是小数点后的位数DOUBLE(M,D)8双精度浮点数M 和 D 含义同上DECIMAL(M,D)可变固定点数M 是总位数D 是小数点后的位数字符串类型类型描述CHAR(N)固定长度字符串N 表示最大长度VARCHAR(N)可变长度字符串N 表示最大长度TEXT长文本数据适合存储大量文本BLOB二进制大对象适合存储图像、文件等二进制数据CHAR 与 VARCHAR 的对比性能1.CHAR插入和更新速度快由于 CHAR 类型的字段长度固定插入和更新操作通常更快因为数据库不需要重新分配存储空间。索引效率高对于固定长度的字段索引的构建和查找通常更高效。2.VARCHAR插入和更新速度较慢由于 VARCHAR 类型的字段长度可变插入和更新操作可能需要重新分配存储空间这可能会导致一些性能开销。索引效率稍低对于可变长度的字段索引的构建和查找可能会稍微复杂一些但影响通常不大。适用场景1.CHAR固定长度的字符串适用于存储长度固定的字符串如邮政编码、电话号码、性别M/F等。短字符串对于非常短的字符串使用 CHAR 类型可以减少存储开销。2.VARCHAR长度不固定的字符串适用于存储长度不固定的字符串如姓名、地址、描述等。长字符串对于较长的字符串使用 VARCHAR 类型可以节省存储空间。查询 (SHOW / SELECT)SHOWSHOW 语句用于显示数据库和表的元数据信息。-- 查看数据库 SHOW DATABASES; -- 查看当前数据库中的表 (需要先使用数据库) SHOW TABLES; -- 查看表的结构 (用 FROM 指定表) SHOW COLUMNS FROM 表名;SELECTSELECT 语句用于从数据库中检索数据SELECT 列1, 列2, ... FROM 表名 [WHERE 条件] [GROUP BY 列1, 列2, ...] [HAVING 条件] [ORDER BY 列1, 列2, ... [ASC 或 DESC【二选一】]] [LIMIT 数量];方括号中的内容为可选内容注正常执行不需要加上方括号SELECT列1, 列2, ...指定要查看表中的哪列FROM表名指定要查询的表WHERE条件类似HAVING在GROUP BY之前执行指定查询的条件GROUP BY列1, 列2, ...将结果集按一个或多个列分组HAVING条件类似WHERE在GROUP BY之后执行用于筛选分组后的结果集ORDER BY列1, 列2, ...[ASC或DESC]用于对查询结果进行升序或降序排序[ASC或DESC]从ASC与DESC中选一个注意不要加方括号ASC升序不填就默认DESC降序LIMIT数量限制返回的行数为数量创建 (CREATE)CREATE-- 创建数据库 CREATE 数据库名; -- 创建表 (需要先使用数据库) CREATE TABLE 表名 ( 字段1 数据类型 [约束条件] [COMMENT 注释], 字段2 数据类型 [约束条件] [COMMENT 注释], ... [表级约束] ) [COMMENT 注释];方括号中的内容为可选内容注正常执行不需要加上方括号[约束条件]NOT NULL字段不能为空PRIMARY KEY字段为主键FOREIGN KEY字段为外键UNIQUE字段值必须唯一CHECK字段值必须满足某个条件[表级约束条件]PRIMARY KEY (字段1, 字段2)定义复合主键FOREIGN KEY (字段1) REFERENCES另一个表名(字段)定义外键[COMMENT 注释]注释插入 (INSERT INTO)INSERT INTO 语句用于向数据库表中插入新的记录INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...),(值1, 值2, ...),(值1, 值2, ...);字段1, 字段2, ...表中的字段名称如果指定了字段列表则VALUES子句中的值必须与字段列表中的顺序和数量一致指定要在哪列插入新行值1, 值2, ...要插入的值。值的类型必须与对应字段的数据类型匹配。删除 (DROP/DELETE)DROPDROP 语句用于删除数据库中的各种对象如表、视图、索引、数据库等-- 删除数据库 DROP DATABASES 数据库名 (WHERE 条件); -- 删除数据库中的表 (需要先使用数据库) DROP TABLE 表名;DELETEDELETE 语句用于从表中删除记录行-- 删除表中的数据 DELETE FROM 表名 [WHERE 条件];WHERE条件修改 (ALTER)ALTER 语句用于修改已存在的表结构它可以用来添加、删除或修改表中的列、索引、约束等-- 添加列 ALTER TABLE 表名 ADD COLUMN 新列名1 数据类型 [约束条件], ADD COLUMN 新列名2 数据类型 [约束条件]; -- 删除列 ALTER TABLE 表名 DROP COLUMN 列名1, DROP COLUMN 列名2; -- 修改列 ALTER TABLE 表名 MODIFY COLUMN 列名1 新数据类型 [新约束条件], MODIFY COLUMN 列名2 新数据类型 [新约束条件]; -- 重命名列 ALTER TABLE 表名 CHANGE COLUMN 旧列名1 新列名1 新数据类型 [新约束条件], CHANGE COLUMN 旧列名2 新列名2 新数据类型 [新约束条件]; -- 添加主键 ALTER TABLE 表名 ADD PRIMARY KEY (列名); -- 删除主键 ALTER TABLE 表名 DROP PRIMARY KEY; -- 添加唯一约束 ALTER TABLE 表名 ADD UNIQUE (列名); -- 删除唯一约束 ALTER TABLE 表名 DROP INDEX 约束名; -- 添加外键 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (列名) REFERENCES 引用表 (引用列); -- 删除外键 ALTER TABLE 表名 DROP FOREIGN KEY 外键名; -- 添加索引 ALTER TABLE 表名 ADD INDEX 索引名 (列名); -- 删除索引 ALTER TABLE 表名 DROP INDEX 索引名;接下来我以以树结构形式来讲解ALTER TABLE方括号中的内容为可选内容注正常执行不需要加上方括号ALTER TABLE表名ADD【添加】添加列COLUMN新列名 数据类型 [约束条件]新列名新列的名称数据类型新列的数据类型[约束条件](可选)NOT NULL字段不能为空PRIMARY KEY字段为主键FOREIGN KEY字段为外键UNIQUE字段值必须唯一CHECK字段值必须满足某个条件添加主键PRIMARY KEY(列名)添加外键CONSTRAINT外键名FOREIGN KEY(列名)REFERENCES引用表 (引用列)DROP【删除】删除列COLUMN列名列名要删除的列的名称删除主键PRIMARY KEY删除外键FOREIGN KEY外键名外键名要删除的外键的名称删除索引INDEX索引索引要删除的索引的名称MODIFY【修改】修改列COLUMN列名新数据类型 [新约束条件]列名要修改的列的名称新数据类型新的数据类型[新约束条件]可选NOT NULL字段不能为空PRIMARY KEY字段为主键FOREIGN KEY字段为外键UNIQUE字段值必须唯一CHECK字段值必须满足某个条件CHANGE【改变】重命名列COLUMN旧列名 新列名 新数据类型 [新约束条件]旧列名要修改的列的名称新列名新列名称新数据类型新的数据类型[新约束条件]可选NOT NULL字段不能为空PRIMARY KEY字段为主键FOREIGN KEY字段为外键UNIQUE字段值必须唯一CHECK字段值必须满足某个条件聚合函数COUNT【数量】-- 记录表中的总的记录行数不管表字段中是否包含NULL值 COUNT(*) -- 计算表中指定字段的记录行数统计时忽略NULL值 COUNT(列名)SUM【求和】-- 求和函数计算指定列的总值 SUM(列名)AVG【平均值】-- 平均值函数计算指定列的平均值 AVG(列名)MAX【最大值】和 MIN【最小值】-- 最大值函数求出指定列的最大值 MAX(列名) -- 最小值函数求出指定列的最大值 MIN(列名)WHERE (条件)条件列表比较运算符功能大于大于等于小于小于等于等于 或 !不等于BETWEEN ... AND ...在某个范围之内最小值最大值IN()匹配IN列表中的值LIKE 占位符模糊匹配 _ 匹配单个字符% 匹配多个字符IS NULLNULL逻辑运算符功能AND 或 与多个条件均满足OR 或 ||或多个条件至少一个满足NOT 或 非不满足INNER JOININNER JOIN 是 SQL 中用于从两个或多个表中返回匹配记录的一种连接类型。具体来说INNER JOIN 只会返回那些在连接条件上匹配的记录SELECT 列名 FROM 表1 INNER JOIN 表2 ON 表1.列 表2.列;
阅读完成 · 觉得有帮助?