693 字
3 分钟
MySQL 数据库语句教程(2)
这里,我们将探索如何在 MySQL 中使用语句式语言。提供的示例基于官方文档和下载链接,您可以参考官方文档获取更多详细信息。
MySQL 表与约束
表是存储数据的核心结构。在建表时,可以通过 约束(Constraints) 保证数据的完整性。
常见约束类型
| 约束类型 | 关键字 | 说明 | 示例 |
|---|---|---|---|
| 主键约束 | PRIMARY KEY | 唯一标识每一行,不允许 NULL,值必须唯一 | id INT PRIMARY KEY |
| 非空约束 | NOT NULL | 列不能为 NULL | name VARCHAR(50) NOT NULL |
| 唯一约束 | UNIQUE | 列(或组合)值必须唯一,MySQL 允许多个 NULL | email 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 的表,包含 id、name、email 三列。
查看所有表
SHOW TABLES;👉 查看当前数据库中有哪些表。
查看表结构
DESCRIBE users;👉 显示表的列名、数据类型和约束。
删除表
DROP TABLE users;👉 删除整个 users 表,数据也会一并删除。
添加列
ALTER TABLE usersADD COLUMN age INT;👉 在 users 表中新增 age 列。
删除列
ALTER TABLE usersDROP COLUMN age;👉 删除 users 表中的 age 列。
修改列
ALTER TABLE usersMODIFY COLUMN name VARCHAR(100);👉 修改 name 列的最大长度为 100。
添加唯一索引
ALTER TABLE usersADD UNIQUE INDEX idx_email (email);👉 为 email 列添加唯一索引,保证邮箱不重复。
删除索引
ALTER TABLE usersDROP INDEX idx_email;👉 删除名为 idx_email 的索引。
重命名表
ALTER TABLE usersRENAME TO user_profiles;👉 将 users 表改名为 user_profiles。
添加外键约束
ALTER TABLE user_profilesADD CONSTRAINT fk_dept_idFOREIGN KEY (dept_id) REFERENCES departments(id);👉 为 dept_id 添加外键,引用 departments 表的 id 列。
删除外键约束
ALTER TABLE user_profilesDROP FOREIGN KEY fk_dept_id;👉 删除 fk_dept_id 外键。
添加检查约束
ALTER TABLE user_profilesADD CONSTRAINT chk_ageCHECK (age BETWEEN 0 AND 120);👉 确保 age 值必须在 0 到 120 之间。
删除检查约束
ALTER TABLE user_profilesDROP CONSTRAINT chk_age;👉 删除 chk_age 约束。
添加主键
ALTER TABLE user_profilesADD CONSTRAINT pk_idPRIMARY KEY (id);👉 为 id 列添加主键约束。
删除主键
ALTER TABLE user_profilesDROP PRIMARY KEY;👉 删除主键约束。
添加普通索引
ALTER TABLE user_profilesADD INDEX idx_name (name);👉 给 name 列添加普通索引,提高查询效率。
删除普通索引
ALTER TABLE user_profilesDROP INDEX idx_name;👉 删除 idx_name 索引。
添加全文索引
ALTER TABLE user_profilesADD FULLTEXT INDEX idx_name (name);👉 添加全文索引,用于全文搜索(适合长文本)。
添加空间索引
ALTER TABLE user_profilesADD SPATIAL INDEX idx_location (location);👉 添加空间索引,用于地理位置类型查询。
MySQL 数据库语句教程(2)
https://fuwari.vercel.app/posts/mysql语句2/