栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySql(六) 约束、标识列

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySql(六) 约束、标识列

一、约束 约束是什么?

含义:约束就是一种限制,用于限制表中的数据,为了保证数据的准确性和可靠性

常见的约束有哪些?

六大约束:

  • NOT NULL :      非空约束,用于保证该字段的值不为空 

比如姓名 学号

  • DEFAULT:          默认约束,用于保证该字段有默认值

比如性别,日期

  • PRIMARY KEY: 主键约束,用于保证该字段的值具有唯一性,并且非空

比如身份证,学号,员工编号

特点:一个表的主键最多只能有一个,但是可以用多个列混合组成一个主键

  • UNIQUE :           唯一约束,用于保证该字段的值具有唯一性,但是可以为空

比如座位号

特点:一个表的唯一约束可以有多个,也可以由多个列混合组成混合唯一约束,

并且唯一约束的列最多只能有一个null,当出现两个null就不唯一了,于是报错。

  • check:             检查约束(mysql中不支持,但是语法不报错,就是不起作用)

比如年龄,性别,在插入的时候会先校验是否合法

  • FOREIGN:         外键约束  用于限制两个表的关系,保证该字段值必须来自于主表的关联列的值

特点:要在从表中设置外检;主表中关联列的类型必须与从表中外检列的类型相同或兼容,名称可以不相同;主表中的关联列必须是一个key(一般是主键或者唯一键,外键也可以);插入数据时,先插入主表再插入从表,删除数据时先删除从表,再删除主表。

创建表时添加列级约束

为了测试外键,先创建一个外检引用主表
     CREATE TABLE major(
     id INT PRIMARY KEY, #主表主键
     majorName VARCHAr(20) NOT NULL
     );

开始创建列级约束

CREATE TABLE ljys(
     id  INT  PRIMARY KEY ,#主键约束
     stuName VARCHAr(20) NOT NULL ,#非空约束
     gender char(1) CHECK(gender='男' OR gender='女') ,#检查约束(在mysql中不起作用)
     seat INT UNIQUE ,#唯一约束
     majorID INT  REFERENCES major(id),#外键约束,引用major表中的id
     createdate TIMESTAMP DEFAULT NOW() #默认约束
     );

这时候查看表结构,发现除了外键约束和check约束,其他都添加上并且起作用
     

 

创建表时添加表级约束

为了测试外键,先创建一个外检引用主表
     CREATE TABLE major(
     id INT PRIMARY KEY, #主表主键
     majorName VARCHAr(20) NOT NULL
     );

开始创建表级约束

CREATE TABLE bjys(
     id  INT  ,
     stuName VARCHAr(20),
     gender char(1) ,
     seat INT  ,
     majorID INT ,
     createdate TIMESTAMP ,
     ConSTRAINT pk PRIMARY KEY (id),#主键
     ConSTRAINT uq UNIQUE (stuName),#非空
     ConSTRAINT ck CHECK (gender='男' OR gender='女'),#check   mysql不支持
     ConSTRAINT fk FOREIGN KEY (majorID) REFERENCES major(id)#外检
     
     );

表级约束不支持默认和非空约束

创建约束的通用方法

主键、非空、唯一、默认、检查(mysql不起作用)这四个约束可以在列级约束创建

外检约束在表级约束创建

总结
  • 添加约束的时机:创建表时或者修改表时,必须在数据添加之前添加约束
  • 主键,外键,唯一键,都会自动生成索引
  • 添加约束分类:

列级约束 :六大约束在语法上都支持,但是check和外键约束没有效果

表级约束:除了非空、默认两个约束,其他都支持

二、标识列

标识列又称作自增长列

含义:可以不用手动的插入值,系统提供默认的序列值

创建标识列:

create TABLE bsl(
    id int PRIMARY KEY  auto_increment,
    name varchar(20)    
);
插入数据到表里只需要关心关键数据,添加了自增长的列无需关系

INSERT into bsl value(null,'张三')

特点:

被添加标识列的列必须是一个key(主键,外键,唯一键)

一个表只能有一个自增长列

标识列的数据类型只能是数值型

可以通过set auto_increment_increment = 1 设置步长(每次则增长时增加多少)


     

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号