首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

表关系

一、表约束:1.非空约束 ((not null))

例子:

createtabletb1(

idintnotnull,#非空约束字段,insert 的时候,必须添加字段,不能省略,空字符不等于null

namevarchar(20)notnull

);

# 如果在创建表时没有添加非空约束

# 后续手动添加非空约束(必须这个字段,没有NULL值)

altertabletb1# 修改表结构

modifyidintnotnull;

# 取消非空约束

altertabletb1

modifyidint;

2.唯一约束 (unique key)

例子:

createtabletb2(

idintuniquekey,# 防止id相同

)

# 如果在创建表时没有添加非空约束

# 后续手动添加唯一约束

altertabletb1# 修改表结构

adduniquekey(name);

# 删除唯一约束

altertabletb1

dropkeyname;

3.自增长 (auto_increment)

createtablestu3(

idintprimarykeyauto_increment,# 自增长,输错时在终端不会占用数据,在其他连接工具如pycharm中就会占用一条数据

namevarchar(10)

)auto_increment100

insertintostu3value('a');

insertintostu3(name)value('bc');

select*fromstu3;

# 如果在创建表时没有添加自动增长

# 后续手动添加自动增长

altertablestu3# 修改表结构

modifyidintauto_increment;

# 删除自动增长

altertablestu3

modifyidint;

4.默认约束 (default)

createtablestu4(

idintprimarykeyauto_increment,

namevarchar(20)notnull,

ageintnotnulldefault18# 默认约束

);

insertintostu4value(1,'张三','18');

insertintostu4value(2,'李四','');#会报错

insertintostu4(id,name)value(2,'玲玲');#设置要输入的字段值,age可为空字符串

insertintostu4value(6,'',19);#空字符串 != null

# 如果在创建表时没有添加默认约束

# 后续手动添加默认约束

altertablestu4# 修改表结构

modifyageintdefault20;

# 删除默认约束

altertablestu4

modifyageint;

5.主键约束 (primary key)

主键作用:

主键特性:

createtablestu2(

idintprimarykey,# id是主键,主键不能为空

namevarchar(10)

);

descstu2# 此时可以看到id的key变为pri,且Null下变为NO

# 如果在创建表时没有添加主键约束

# 后续手动添加主键约束

altertablestu2# 修改表结构

addprimarykey(id);

# 删除主键约束

altertablestu2# 修改表结构

dropprimarykey;

6.外键约束 (foreign key)

# 表a

createtablea(

a_idintprimarykeyauto_increment,

a_namevarchar(20)notnull

);

# 表b

createtableb(

b_idintprimaryke,

b_namevarchar(20)notnull,

fy_idintnotnull,

constraintAB_idforeignkey(fy_id)referencesa(a_id)# 外键约束定义

);

# 说明:

1,通过(fy_id)关联到(a_id)中,然后重新命名为 AB_id(其中constraint 可不写)

2,外键约束定义,B表中的fy_id,只能添加a_id中已有的数据。A表中的a_id 被参照的数据,不能被修改和删除。

# 如果在创建表时没有添加外键约束

# 后续手动添加外键约束

altertableb# 修改表结构

constraintAB_idforeignkey(fy_id)referencesa(a_id);

# 删除外键约束

altertablestu2# 修改表结构

dropforeignkeyAB_id;

二、表关系

1,一对一:

用外键的方式,把两个主键关联

2,一对多:

3,多对多:

#创建学生表

createtablesst(

idintprimarykeyauto_increment,

namevarchar(10)notnull

);

#创建选课表(中间表)

createtablecourse(

s_idintprimarykey,#记录学生的id

course_idint,#用来记录课程id

primarykey(s_id,course_id)#联合主键(此组合为唯一的,防止一个id重复报一个课程)

foreignkey(s_id)referencesstudent(id_v),#关联学生id 外键

foreignkey(course_id)references(course_id)#关联课程id 外键

namevarchar(10)notnull,

);

insertintocoursvalues(001,'py'),(002,'java'),(003,'japan');

insertintosshvalues(11,'a'),(22,'b'),(33,'c');

insertintocoursevalues(22,3),(11,2);# 用中间表来多对多

select*fromcourse;

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180428G1URNM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券