☰
MySQL的SQL语句快速入门
2026/10/31 10:42:29 网站建设 项目流程

MySQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾
  2. SQL语句可以使用空格/缩进来增强语句的可读性
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  4. 注释:
  • 单行注释:-- 注释内容 或 # 注释内容
  • 多行注释:/* 注释内容 */

MySQL数据类型

整数类型

类型大小(字节)有符号范围(UNSIGNED)无符号范围(SIGNED)
TINYINT1-128 到 1270 到 255
SMALLINT2-32,768 到 32,7670 到 65,535
MEDIUMINT3-8,388,608 到 8,388,6070 到 16,777,215
INT4-2,147,483,648 到 2,147,483,6470 到 4,294,967,295
BIGINT8-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)

SHOW

SHOW 语句用于显示数据库和表的元数据信息。

-- 查看数据库 SHOW DATABASES; -- 查看当前数据库中的表 (需要先使用数据库) SHOW TABLES; -- 查看表的结构 (用 FROM 指定表) SHOW COLUMNS FROM 表名;

SELECT

SELECT 语句用于从数据库中检索数据

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)

DROP

DROP 语句用于删除数据库中的各种对象,如表、视图、索引、数据库等

-- 删除数据库 DROP DATABASES 数据库名 (WHERE 条件); -- 删除数据库中的表 (需要先使用数据库) DROP TABLE 表名;

DELETE

DELETE 语句用于从表中删除记录(行)

-- 删除表中的数据 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 NULL

NULL
逻辑运算符功能
AND 或 &与(多个条件均满足)
OR 或 ||或(多个条件至少一个满足)
NOT 或 !非(不满足)

INNER JOIN

INNER JOIN 是 SQL 中用于从两个或多个表中返回匹配记录的一种连接类型。具体来说,INNER JOIN 只会返回那些在连接条件上匹配的记录

SELECT 列名 FROM 表1 INNER JOIN 表2 ON 表1.列 = 表2.列;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询