693 字
3 分钟
MySQL 数据库语句教程(2)
2025-10-10

这里,我们将探索如何在 MySQL 中使用语句式语言。提供的示例基于官方文档下载链接,您可以参考官方文档获取更多详细信息。

MySQL 表与约束#

表是存储数据的核心结构。在建表时,可以通过 约束(Constraints) 保证数据的完整性。


常见约束类型#

约束类型关键字说明示例
主键约束PRIMARY KEY唯一标识每一行,不允许 NULL,值必须唯一id INT PRIMARY KEY
非空约束NOT NULL列不能为 NULLname VARCHAR(50) NOT NULL
唯一约束UNIQUE列(或组合)值必须唯一,MySQL 允许多个 NULLemail VARCHAR(100) UNIQUE
默认值约束DEFAULT插入数据时未指定该列值时,自动使用默认值status TINYINT DEFAULT 1
检查约束CHECK限制列的取值范围(MySQL 8.0.16+ 有效)age INT CHECK (age >= 0)
外键约束FOREIGN KEY确保引用的数据在主表中存在(仅 InnoDB 支持)FOREIGN KEY (dept_id) REFERENCES departments(id)

创建表#

CREATE TABLE users (
id INT,
name VARCHAR(50),
email VARCHAR(100)
);

👉 创建一个名为 users 的表,包含 idnameemail 三列。


查看所有表#

SHOW TABLES;

👉 查看当前数据库中有哪些表。


查看表结构#

DESCRIBE users;

👉 显示表的列名、数据类型和约束。


删除表#

DROP TABLE users;

👉 删除整个 users 表,数据也会一并删除。


添加列#

ALTER TABLE users
ADD COLUMN age INT;

👉 在 users 表中新增 age 列。


删除列#

ALTER TABLE users
DROP COLUMN age;

👉 删除 users 表中的 age 列。


修改列#

ALTER TABLE users
MODIFY COLUMN name VARCHAR(100);

👉 修改 name 列的最大长度为 100。


添加唯一索引#

ALTER TABLE users
ADD UNIQUE INDEX idx_email (email);

👉 为 email 列添加唯一索引,保证邮箱不重复。


删除索引#

ALTER TABLE users
DROP INDEX idx_email;

👉 删除名为 idx_email 的索引。


重命名表#

ALTER TABLE users
RENAME TO user_profiles;

👉 将 users 表改名为 user_profiles


添加外键约束#

ALTER TABLE user_profiles
ADD CONSTRAINT fk_dept_id
FOREIGN KEY (dept_id) REFERENCES departments(id);

👉 为 dept_id 添加外键,引用 departments 表的 id 列。


删除外键约束#

ALTER TABLE user_profiles
DROP FOREIGN KEY fk_dept_id;

👉 删除 fk_dept_id 外键。


添加检查约束#

ALTER TABLE user_profiles
ADD CONSTRAINT chk_age
CHECK (age BETWEEN 0 AND 120);

👉 确保 age 值必须在 0 到 120 之间。


删除检查约束#

ALTER TABLE user_profiles
DROP CONSTRAINT chk_age;

👉 删除 chk_age 约束。


添加主键#

ALTER TABLE user_profiles
ADD CONSTRAINT pk_id
PRIMARY KEY (id);

👉 为 id 列添加主键约束。


删除主键#

ALTER TABLE user_profiles
DROP PRIMARY KEY;

👉 删除主键约束。


添加普通索引#

ALTER TABLE user_profiles
ADD INDEX idx_name (name);

👉 给 name 列添加普通索引,提高查询效率。


删除普通索引#

ALTER TABLE user_profiles
DROP INDEX idx_name;

👉 删除 idx_name 索引。


添加全文索引#

ALTER TABLE user_profiles
ADD FULLTEXT INDEX idx_name (name);

👉 添加全文索引,用于全文搜索(适合长文本)。


添加空间索引#

ALTER TABLE user_profiles
ADD SPATIAL INDEX idx_location (location);

👉 添加空间索引,用于地理位置类型查询。


MySQL 数据库语句教程(2)
https://fuwari.vercel.app/posts/mysql语句2/
作者
李钧宇
发布于
2025-10-10
许可协议
CC BY-NC-SA 4.0