SQL 主键 外键

这里先罗列一下两者的区别和作用

主键:为了标识数据的唯一性 不能为空

外键:为了保证数据的准确跟一致性  可以为空

===========================================

SQL PRIMARY KEY 约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录。

主键必须包含唯一的值。

主键列不能包含 NULL 值。

每个表都应该有一个主键,并且每个表只能有一个主键。

MySQL:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

======================================

外键:

CREATE TABLE user_info(
  id CHAR(36) PRIMARY KEY,
  user_name VARCHAR(30) not null,
  password VARCHAR(30) not null
)
INSERT INTO user_info (id,user_name,password) VALUES('1','fuliuqingfeng','123456');

CREATE TABLE address(
  id CHAR(36) PRIMARY KEY,
  user_info_id CHAR(36),
  real_name VARCHAR(8) not null,
  mobile CHAR(11) not null,
  address VARCHAR(150) not null,
  CONSTRAINT address_user_info_id_fk FOREIGN KEY(user_info_id) REFERENCES user_info(id)
)
INSERT INTO address (id,user_info_id,real_name,mobile,address) VALUES('1','1','张三','18920120206','河南安阳');
INSERT INTO address (id,user_info_id,real_name,mobile,address) VALUES ('2','1','李四','18617297545','北京海淀');
INSERT INTO address (id,user_info_id,real_name,mobile,address) VALUES ('3','1','王五','17694976949','山西大同');
其中FOREIGN KEY约束用于预防破坏表之间连接的动作,即在address中有user_info_id为1的信息时,不允许删除user_name中id为1的信息,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。也就是说,不允许在address中插入user_info_id的值在user_name不存在的地址信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值