第三章 多表操作2(主外键约束)

1怎么区分主表和子表?

        父表设置一个主键, 子表设置一个外键

       两个表建立一对多关系的时候,"一"的那一端是父表,"多"的那一端是子表.

比如 学生和班级

一个学生属于哪个班级        学生表是子表   班级表是主表

一个员工属于哪个部门        员工表是子表   部门表是主表

 

2怎么建立主外建约束

FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
 外键 p_id 参照 主表Persons 的主键 (P_Id)

3主外建约束创建表和数据更改时需要事项

-- 创建班级表
CREATE TABLE class(
c_id INT NOT NULL AUTO_INCREMENT,
c_name VARCHAR(22) ,
c_type INT ,
c_desc VARCHAR(122),
PRIMARY KEY(c_id)
);

-- 创建子表
/**
 先创建主表,在创建 子表
 先删除子表,在删除主表
*/ 
CREATE TABLE student(
s_id INT NOT NULL AUTO_INCREMENT,
s_name VARCHAR(22),
s_sex CHAR(2),
s_address VARCHAR(122),
c_id INT ,
PRIMARY KEY(s_id),
FOREIGN KEY(c_id) REFERENCES class(c_id)	
);

-- 插入数据
/*
在子表插入数据时,保证外键,在主表有数据的存在
*/
INSERT INTO class VALUES (NULL,'3班',2,'xxxxxxxx');
INSERT INTO student VALUES (NULL,'张三','男','北京市,xxxx,',1);
INSERT INTO student VALUES (NULL,'张三2','男','北京市,xxxx,',2);

-- 删除数据
/*
删除数据时,如果是主表,那么在子表中没有关联的数据才可以删除
*/
DELETE FROM class WHERE c_id=1;
DELETE FROM student WHERE s_id =3 ;

-- 更新
/*
更新子表中的外键,要保证主表中有对应的数据
*/
UPDATE class SET c_name='3班' WHERE c_id=3;
UPDATE student SET c_id=4 WHERE s_id=4;

 

4其他约束

NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。(上面讲解过)
CHECK - 保证列中的值符合指定的条件。
DEFAULT - 规定没有给列赋值时的默认值。

详情 : 

http://www.w3school.com.cn/sql/sql_constraints.asp

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值