美文网首页
mysql常见约束介绍125-133

mysql常见约束介绍125-133

作者: kevinXiao | 来源:发表于2021-11-03 14:25 被阅读0次

#常见约束

/*

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

分类:六大约束

    NOT NULL:非空,用于保证该字段的值不能为空,比如姓名、学号等

    default:默认,用于保证该字段有默认值,比如性别

    primary key:主键,用于保证该字段的值具有唯一性,并且非空,比如学号等

    unique:唯一,用于保证该字段的值具有唯一性,可以为空,比如座位号

    check:检查约束【mysql中不支持】,比如年龄、性别

    foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某列的值,比如员工表的部门编号,员工表的工种编号

添加约束的时机:

    1.创建表时

    2.修改表时

约束的添加分类:

    列级约束:

        六大约束语法上都支持,但外键约束没有效果

    表级约束:

        除了非空、默认,其他的都支持

主键和唯一的大对比:

                            保证唯一性               是否允许为空                一个表中可以有多少个            是否允许组合

    主键                        Y                                N                                    至多有一个                        可以,不推荐

    唯一                        Y                                Y                                    可以有多个                         可以,不推荐

外键:

    1、要求在从表设置外键关系

    2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求

    3、主表的关联列必须是一个key(一般是主键、唯一键)

    4、插入数据时,先插入主表,再插入从表

    5、删除数据时,先删除从表,再删除主表

*/

CREATE TABLE 表名(

    字段名    字段类型    列级约束,

    表级约束

)

#一、创建表时添加约束

/*

语法:

直接在字段名和类型后面追加 约束类型即可

只支持:

*/

#1.添加列级约束

create table stuinfo (

    id int primary key,  #主键

    stuName  varchar(20) not null unique,   #非空、唯一

    gender char(1)  check(gender='男' OR gender ='女'),  #检查约束

    seat int unique,  #唯一约束

    age  int  default  18,  #默认约束

    majorId int foreign key references major (id)  #外键

)

create table major (

    id int primary key,

    majorName  varchar (20)

)

desc stuinfo   #查看表结构

show index from stuinfo  #查看stuinfo表中所有的索引,包括主键、外键、唯一

#2、添加表级约束

/*

语法:在各个字段的最下面

    【constraint 约束名】 约束类型(字段名)

*/

create table stuinfo (

     id int

    stuName  varchar(20) 

    gender char(1) 

    seat int,

    age  int  , 

    majorId int

    constraint pk primary key (id),  #主键

    constraint  uq unique (seat),  #唯一键

    constraint  ck check (gender = '男' or gender = '女'),   #检查

    constraint  fk_stuinfo_major foreign key(majorid) references major(id)  #外键

)

#通用的写法:

create table if not exists stuinfo (

    id int primary key,

    stuname varchar(20) not null,

    sex char (1).

    age int default 18,

    seat int unique,

    majorid int,

    constraint fk_stuinfo_major foreign key(majorid) references major(id)

)

#二、修改表时添加约束

/*

1、添加列级约束

alter table 表名 modify coulumn 字段名 字段类型 新约束

2、添加表级约束

alter table 表名 add 【constraint 约束名】约束类型(字段名)【外键的引用】

*/

create table stuinfo (

id int ,

stuname ,

sex char (1).

age int ,

seat int,

majorid int,

)

#1.添加非空约束

alter table stuinfo modify column stuname varchar(20) not null;

#2.添加默认约束

alter table stuinfo modify column age int default 18;

#3.添加主键

#列级约束

alter table stuinfo modify column id int primary key;

#表级约束

alter table stuinfo add primary key(id)

#4.添加唯一键

#列级约束

alter table stuinfo modify column seat int unique;

#表级约束

alter table stuinfo add unique(seat)

#5.添加外键

alter table stuinfo add constraint  fk_stuinfo_major foreign key (majorid) references major(id)

#三、修改表时删除约束

#1.删除非空约束

alter table stuinfo modify column stuname varchar(20) null

#2.删除默认约束

alter table stuinfo modify column age int 

#3.删除主键

alter table stuinfo drop primary key

#4.删除唯一

alter table stuinfo drop index seat

#5.删除外键

alter table stuinfo drop foreign key fk_stuinfo_major

#标识列

/*

又称为自增长列

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

特点:

    1、标识列必须和主键搭配吗?不一定,但要求是一个key

    2、一个表中可以有几个标识列?至多一个!

    3、标识列的类型?只能是数值型

    4、标识列可以通过set auto_increment_increment=3设置步长,可以通过手动插入值,设置起始值

*/

#一、创建表时设置标识列

create table tab_identity (

    //id int primary key,

    id int primary key auto_increment,

    name varchar(20),

)

insert into tab_identity values(1,'John')

insert into tab_identity(id, name) values(null,'John')

insert into tab_identity(name) values('John')

set auto_increment_increment=3

#二、修改表时设置标识列

alter table tab_identity modify column id int primary key auto_increment;

#三、修改表时删除表时列

alter table tab_identity modify column id int ;

相关文章

  • mysql常见约束介绍125-133

    #常见约束 /* 含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性 分类:六大约束 NOT...

  • mysql常见约束

    常见约束 /* 含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性 分类:六大约束NOT NUL...

  • MySQL常见约束

    1、含义: 一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性###一、常见的约束 2、分类:六大约束...

  • mysql 约束

    mysql 中常见的约束: 默认约束 非空约束 主键约束 唯一约束 外键约束 自增长约束 顾命思议,主要讲几个容易...

  • MySql笔记

    Mac安装并运行MySql MySql数据库、数据表的操作 MySql数据类型及常见约束 MySql表操作 MyS...

  • MySql 中的约束

    MySql 中的约束 作用:给表添加约束值,从而约束用户操作数据库的行为 数据库常见的约束值如下: 默认值约束(d...

  • mysql DDL语言常见约束

    一、常见的约束NOT NULL:非空,该字段的值必填UNIQUE:唯一,该字段的值不可重复DEFAULT:默认,该...

  • MySQL常见约束条件

    约束 约束是一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。 创建表时可以添加约束 修改表时可以添...

  • MySQL Demo 06

    阅读原文 MySQL Demo 06 1. 常见约束 1.向表emp2的id列中添加PRIMARY KEY约束(m...

  • mysql 学习语句

    MySQL学习笔记 登录和退出MySQL服务器 基本语法 建表约束 主键约束 唯一主键 非空约束 默认约束 外键约...

网友评论

      本文标题:mysql常见约束介绍125-133

      本文链接:https://www.haomeiwen.com/subject/qcsfzltx.html