约束

农民  金牌会员 | 2022-10-26 21:35:31 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 668|帖子 668|积分 2004

创建表的时候可以给字段添加相应的约束,约束的目的:保证表中数据的合法性,唯一性,有效性。
非空约束(not null):约束字段不能为NULL
唯一约束(unique):约束字段不能重复
主键约束(primary key):约束字段既不能为NULL也不能重复
外键约束(foreign key):阿里巴巴手册,已经禁止使用外键了
检查f约束(check):Oracle数据库有check约束,但是Mysql没有。
注意:我们主要还是记住英文,平时使用的都是英文!
1.非空约束 not null
  1. CREATE TABLE mytable(
  2.    id  INT(10),
  3.    username VARCHAR(30) NOT NULL,    #添加非空约束
  4.    PASSWORD VARCHAR(30)
  5. );
复制代码
测试
  1. insert into mytable(id,password) values(1,'123') ;  #由于我们的的用户字段要求非空,所以会执行失败
  2. ERROR 1364(HY000) : Filed 'username' doesn't have a default value
复制代码
2.唯一约束(unique)
测试

列级约束
测试

表级约束
测试
 
3.主键约束(primary key) *
必须记住:一张表的主键约束只有一个 ;最好与别的字段不相关,仅仅代表唯一标识 !
  1. CREATE TABLE mytable(
  2.    id  INT(10) PRIMARY KEY,       #添加主键约束【属于列级约束】
  3.    username VARCHAR(30),
  4.    email VARCHAR(30)
  5. );
复制代码
测试
 
【表级约束】
主键值自增:在primary key后面添加auto_increment(从1开始,递增);
了解:Oracle也提供一个自增序列叫做序列(sequence);
4.外键约束(foreign key)
关于外键约束的相关术语


  • 外键约束:foreign key
  • 外键字段:添加有外键约束的字段
  • 外键值:外键字段中的每一个值。
t_student中的classno字段引用t_class表中的cno字段,此时t_student表叫做子表。t_class表叫做父表。
顺序要求:

  • 删除数据的时候,先删除子表,再删除父表。
  • 添加数据的时候,先添加父表,在添加子表。
  • 创建表的时候,先创建父表,再创建子表。
  • 删除表的时候,先删除子表,在删除父表。
使用外键【Alibaba规范不推荐使用】
  1. create table t_class(
  2.     cno int ,<br>    cname varchar(255) ,    #被引用:父表
  3.     primary key(cno)
  4. );
  5. create table t_student(
  6.     sno int ,
  7.     sname varchar(255) ,   #子表
  8.     classno int ,  
  9.     foreign key(classno) reference t_class(cno)
  10. );
  11. #t_student中的classno字段引用t_class表中的cno字段,此时t_student表叫做子表。t_class表叫做父表
复制代码
 

  • reference是引用;
  • 外键可以为NULL;
  • 此时classno中的数据来自cno;
  • 外键引用的字段不一定是主键,但是起码是被unique约束;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表