MySQL 表主/外键 相关语句

2023-05-29  本文已影响0人  寻心_0a46

表主键

主键:指示表中数据唯一性的字段,这个唯一性的字段也可以是多个表字段组合而成的,一个表中只有一个主键。
主键约束:主键自带非空和唯一约束,起到保证主键非空且唯一的作用。

创建表时指定主键

语句格式:

CREATE TABLE test (数据唯一性字段名 字段类型 PRIMARY KEY,其它字段名 字段类型,其它字段名 字段类型,其它字段名 字段类型); 

使用 MySQLWorkbench 执行实例:

// 创建表并指定主键
CREATE TABLE test (id BIGINT PRIMARY KEY,name VARCHAR(255),address VARCHAR(255),phone_number VARCHAR(255)); 
// 插入一条数据,但不插入主键值
INSERT INTO test (name) VALUES("阿刚");
截屏2023-05-20 15.53.07.png
// 插入一条数据,并插入主键值
INSERT INTO test (id,name) VALUES(1,"阿刚");
截屏2023-05-20 15.59.07.png

对主键设置自增

主键自增:

语句格式:

ALTER TABLE 表名 MODIFY 主键名 字段类型 AUTO_INCREMENT;

使用 MySQLWorkbench 执行实例:

// 设置主键 id 自增
ALTER TABLE test MODIFY id BIGINT AUTO_INCREMENT;
// 由于已经插入一条数据,设置自增的数值偏倚到2开始
ALTER TABLE test AUTO_INCREMENT = 2;
// 插入一条数据,但不插入主键值
INSERT INTO test (name) VALUES("阿全");
截屏2023-05-20 16.21.28.png

创建表时指定主键并且主键自增

语句格式:

CREATE TABLE 表名 (数据唯一性字段名 字段类型 PRIMARY KEY AUTO_INCREMENT,其它字段名 字段类型,其它字段名 字段类型,其它字段名 字段类型); 

使用 MySQLWorkbench 执行实例:

// 创建带有主键自增的表
CREATE TABLE test (id BIGINT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(255),address VARCHAR(255),phone_number VARCHAR(255)); 
// 插入数据,但都未插入主键值
INSERT INTO test VALUES(null,"阿全","秦皇岛","16666666666"),(null,"阿峰","秦皇岛","19999999999");
截屏2023-05-20 16.34.12.png

创建表后添加主键

语句格式:

ALTER TABLE 表名 ADD PRIMARY KEY (数据唯一性字段名,数据唯一性字段名...);

使用 MySQLWorkbench 执行实例:

// 创建表,但不指定主键字段
CREATE TABLE test (id BIGINT,name VARCHAR(255),address VARCHAR(255),phone_number VARCHAR(255)); 
// 将 id  字段指定为主键
ALTER TABLE test ADD PRIMARY KEY (id);

删除主键

语句格式:

ALTER TABLE 表名 DROP PRIMARY KEY;

使用 MySQLWorkbench 执行实例:

// 删除主键
ALTER TABLE test DROP PRIMARY KEY;
// 重置 NOT NULL约束
ALTER TABLE test MODIFY id BIGINT;
截屏2023-05-21 14.51.44.png

表外键

外键是关系型数据库中的一个概念,用于建立两个表之间的关联关系。一个表中的一个或多个字段可以被指定为外键,它们的值与另一个表中的字段值相对应,用来表示两个表之间的关联关系。通常情况下外键会与另一个表的主键相关联。

外键自身的约束保持着数据的一致性

注意:使用外键必须要求两张表相同的 InnoDB 引擎,Myisam 引擎不支持外键。

创建表时设置外键

语法格式:

CONSTRAINT 外键名 FOREIGN KEY 从表名 (从表字段) REFERENCES 主表名 (主表唯一字段)

放置在需要被约束的外键字段类型后。注意,外键名是唯一的。

使用 MySQLWorkbench 执行实例:

CREATE TABLE user_role2(user_role_id INT PRIMARY KEY AUTO_INCREMENT,
user_foreign_key INT,
CONSTRAINT u_f_k FOREIGN KEY user_role2 (user_foreign_key) REFERENCES user (user_id),
role_foreign_key INT
);
截屏2023-05-28 16.02.19.png

创建表后指定外键

语法格式:

ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY(从表字段) REFERENCES 主表名(主表唯一字段);

使用 MySQLWorkbench 执行实例:

ALTER TABLE user_role2 ADD CONSTRAINT r_f_k FOREIGN KEY(role_foreign_key) REFERENCES role(role_id);
截屏2023-05-28 16.10.23.png

删除外键约束

语法格式:

ALTER TABLE 从表名 DROP FOREIGN KEY 外键名;

使用 MySQLWorkbench 执行实例:

ALTER TABLE user_role2 DROP FOREIGN KEY r_f_k;
截屏2023-05-28 16.19.10.png
上一篇下一篇

猜你喜欢

热点阅读