- Published on
MySQL学习-表操作
约束
PRIMARY KEY 约束: 用于唯一标识表中的每一行记录。 一个表只能有一个主键约束。 主键列不能为NULL。 示例: CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
FOREIGN KEY 约束: 用于建立两个表之间的关联关系。 外键列的值必须在关联表的主键列或唯一约束列中存在。 示例: CREATE TABLE orders (id INT PRIMARY KEY, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id));
UNIQUE 约束: 确保列中的所有值是唯一的。 一个表可以有多个唯一约束。 允许NULL值,但只允许一个NULL值。 示例: CREATE TABLE users (id INT PRIMARY KEY, email VARCHAR(50) UNIQUE);
NOT NULL 约束: 确保列不接受NULL值。 示例: CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50) NOT NULL);
CHECK 约束:
用于验证列中的值是否满足指定的条件。 示例: CREATE TABLE users (id INT PRIMARY KEY, age INT CHECK (age >= 18));
DEFAULT 约束: 用于在没有提供值时为列赋予默认值。 注意,BLOB、TEXT、GEOMETRY和JSON列不能有默认值。 示例: CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50) DEFAULT 'Guest');
AUTO_INCREMENT 自增约束
默认情况下,自增值从 1 开始,每次递增 1。可以使用 ALTER TABLE 表名 AUTO_INCREMENT = 100;
指定起始值。 自增值会一直递增,即使中间有记录被删除。 自增值会占用系统资源,因此不应该过度使用。 示例 CREATE TABLE users (id INT AUTO_INCREMENT, name VARCHAR(20));
创建表
create table 表名 (
字段名 类型 [约束1] [约束2] ...
)
其中 DEFAULT 和 CHECK 还需要定义对应的值,也就是设置对应的默认值和检查规则
create table 表名 (
id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
)
复制表
CREATE TABLE 表A
LIKE 表B;
修改表
修改表时都需要加上Alter Table 表名
添加字段
Alter Table ADD COLUMN 字段名 类型 [约束1] [约束2] [AFTER 其他字段名 / FIRST ]
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
name VARCHAR(20)
)
//id后加上A
ALTER TABLE users ADD COLUMN A TEXT AFTER id;
//第一列加上B
ALTER TABLE users ADD COLUMN B TEXT FIRST;
修改字段
CHANGE COLUMN 可以用于重命名列、改变列定义和列顺序。 MODIFY COLUMN 只能用于改变列的定义和顺序。
修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;
//修改字段名
ALTER TABLE users CHANGE COLUMN B BB TEXT;
//修改字段名并改变顺序
ALTER TABLE users CHANGE COLUMN BB BB1 TEXT AFTER A;
//只改变顺序
ALTER TABLE users CHANGE COLUMN BB1 BB1 TEXT FIRST;
//还可以改变字段类型
ALTER TABLE users CHANGE COLUMN BB1 BB1 VARCHAR(20) FIRST;
修改字段类型
ALTER TABLE 表名 MODIFY 字段名 字段类型 [AFTER 其他字段名 / FIRST ];
//修改字段类型
ALTER TABLE users MODIFY COLUMN A TEXT;
//修改顺序
ALTER TABLE users MODIFY COLUMN A TEXT AFTER BB1;
删除字段
Alter Table 表名 DROP COLUMN 字段名