GENEARE BY SD
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 TABLEA
LIKEB;

修改表

修改表时都需要加上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 字段名