SQL语句常⽤约束类型
常⽤五类约束:
c++bool函数怎么用    not null:⾮空约束,指定某列不为空
    unique:唯⼀约束,指定某列和⼏列组合的数据不能重复
    primary key:主键约束,指定某列的数据不能重复、唯⼀
    foreign key:外键,指定该列记录属于主表中的⼀条记录,参照另⼀条数据
    check:检查,指定⼀个表达式,⽤于检验指定数据
  注意: MySQL不⽀持check约束,但可以使⽤check约束,⽽没有任何效果;
根据约束数据列限制,约束可分为:
    单列约束:每个约束只约束⼀列
    多列约束:每个约束约束多列数据
1、not null
  ⾮空约束⽤于确保当前列的值不为空值,⾮空约束只能出现在表对象的列上。
    *Null类型特征:所有的类型的值都可以是null,包括int、float等数据类型空字符串””是不等于null,0也不等于null
create table temp(
id int not null,
name varchar(255) not null default ‘abc’,
sex char null
)
上⾯的table加上了⾮空约束,也可以⽤alter来修改或增加⾮空约束
增加⾮空约束
  alter table temp modify sex varchar(2) not null;
取消⾮空约束
  alter table temp modify sex varchar(2) null;
取消⾮空约束,增加默认值
  alter table temp modify sex varchar(2) default ‘abc’;
2、unique
  唯⼀约束是指定table的列或列组合不能重复,保证数据的唯⼀性。虽然唯⼀约束不允许出现重复的值,但是可以为多个null,同⼀个表可以有多个唯⼀约束,多个列组合的约束。在创建唯⼀约束的时候,如果不给唯⼀约束名称,就默认和列名相同。 MySQL会给唯⼀约束的列上默认创建⼀个唯⼀索引;
create table temp (
id int not null,
name varchar(25),
password varchar(16),
constraint uk_name_pwd unique(name, password)
);
unique(name, password)表⽰⽤户名和密码组合不能重复
  添加唯⼀约束
    alter table temp add unique(name, password);
  修改唯⼀性约束
    alter table temp modify name varchar(25) unique;
  删除约束
    alter table temp drop index name;
3、primary key
  主键约束相当于唯⼀约束+⾮空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。每个表最多只允许⼀个主键,建⽴主键约束可以在列级别创建,也可以在表级别上创建。
  MySQL的主键名总是PRIMARY,当创建主键约束时,系统默认会在所在的列和列组合上建⽴对应的唯⼀索引。
列模式:
  create table temp(
  id int primary key,
  name varchar(25)
  );
  create table temp2(
  id int not null,
  name varchar(25),
  pwd varchar(15),
  constraint pk_temp_id primary key(id)
  );
组合模式:
  create table temp2(
  id int not null,
  name varchar(25),
  pwd varchar(15),
  constraint pk_temp_id primary key(name, pwd)
  );
alter删除主键约束
  alter table temp drop primary key;
alter添加主键
java用switch成绩等级
  alter table temp add primary key(name, pwd);
alter修改列为主键
plsql怎么导出sql脚本
  alter table temp modify id int primary key;
设置主键⾃增
  create table temp(
  id int auto_increment primary key,
  name varchar(20),
  pwd varchar(16)
  );
auto_increment⾃增模式,设置⾃增后在插⼊数据的时候就不需要给该列插⼊值了。
4、foreign key
  外键约束是保证⼀个或两个表之间的参照完整性,外键是构建于⼀个表的两个字段或是两个表的两个字段之间的参照关系。也就是说从表的外键值必须在主表中能到或者为空。当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据,然后才可以删除主表的数据。还有⼀种就是级联删除⼦表数据。
注意:外键约束的参照列,在主表中引⽤的只能是主键或唯⼀键约束的列,假定引⽤的主表列不是唯⼀的记录,那么从表引⽤的数据就不确定记录的位置。同⼀个表可以有多个外键约束。
创建外键约束:
主表
数据库原理及应用第三次在线作业
  create table classes(
  id int auto_increment primary key,
  name varchar(20)
  );
从表
  create table student(
  id int auto_increment,
  name varchar(22),
  constraint pk_id primary key(id),
  classes_id int references classes(id)
  );
通常先建主表,然后再建从表,这样从表的参照引⽤的表才存在。
表级别创建外键约束:
  create table student(
mysql语句分类  id int auto_increment primary key,
  name varchar(25),
  classes_id int,
  foreign key(classes_id) references classes(id)
  );
上⾯的创建外键的⽅法没有指定约束名称,系统会默认给外键约束分配外键约束名称,命名为student_ibfk_n,其中student是表名,n是当前约束从1开始的整数。
指定约束名称:
  create table student(
  id int auto_increment primary key,
  name varchar(25),
  classes_id int,
  constraint fk_classes_id foreign key(classes_id) references classes(id)
  );
多列外键组合,必须⽤表级别约束语法:
  create table classes(
  id int,
  name varchar(20),
  number int,
  primary key(name, number)
  );
  create table student(
  id int auto_increment primary key,
  name varchar(20),
  classes_name varchar(20),
  classes_number int,
  foreign key(classes_name, classes_number) references classes(name, number)
  );
删除外键约束:
  alter table student drop foreign key student_ibfk_1;
  alter table student drop foreign key fk_student_id;
增加外键约束:
wordpress英文企业网站模板
  alter table student add foreign key(classes_name, classes_number) references classes(name, number);
⾃引⽤、⾃关联(递归表、树状表)
  create table tree(
  id int auto_increment primary key,
  name varchar(50),
  parent_id int,
  foreign key(parent_id) references tree(id)
  );
级联删除:删除主表的数据时,关联的从表数据也删除,则需要在建⽴外键约束的后⾯增加on delete cascade 或on delete set null,前者是级联删除,后者是将从表的关联列的值设置为null。
  create table student(
  id int auto_increment primary key,
  name varchar(20),
  classes_name varchar(20),
  classes_number int, /*表级别联合外键*/
  foreign key(classes_name, classes_number) references classes(name, number) on delete cascade
  );
5、check
  MySQL可以使⽤check约束,但check约束对数据验证没有任何作⽤。
  create table temp(
  id int auto_increment,
  name varchar(20),
  age int,
  primary key(id),
  check(age > 20)
  );
上⾯check约束要求age必须⼤于20,但没有任何作⽤。但是创建table的时候没有任何错误或警告。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。