mysql-DDL定义语言(create、drop、alter)-约束

一、约束包含:

  •      非空约束:not null
  •      唯一性约束:unique
  •      主键约束:primary key     primary key auto_increment,表示自增,从一开始,以一自增;  
  •      外键约束:foreign key(子表约束字段)  references 父表表名(父表约束字段)
  •      检查约束:check (mysql不支持;oracle支持)

1、非空约束:not null:非空约束:not null;只能列级约束,没有表约束;not null 约束的字段不能为null

  • drop table if exists t_vip;
  • create table t_vip(
  •      id int ,
  •     name varchar(255) not null
  •     );
  •     insert into t_vip (id,name) values(1,'zhangsan');
  •     insert into t_vip (id,name) values(2,'lisi');

2、唯一性约束:uniquqe:唯一性约束unique 约束字段不能重复,但是可以为null

  • drop table if exists t_vip;
  • create table t_vip(
  •      id int ,
  •     name varchar(255) unique ,
  •     email varchar(255)
  •     );
  • 需求:name 和email 两个字段联合起来具有唯一性!
  • create table t_vip(
  •      id int,
  •     name varchar(255) ,
  •     email varchar(255),
  •     unique(name,email)
  •     );

3、not null unique联合使用:在mysql中,一个字段同时被not null 和unique 约束的话;该字段自动变成主键字段(oracle中不一样)!

  •  create table t_vip(
  •            id int,
  •            name varchar(255) not null unique,
  •            email varchar(255)    
  •     );

 

4、主键约束简称pk:primary key ( primary key auto_increment,表示自增,从一开始,以一自增;)

  • 1、术语: 主键约束;主键字段:主键值;主键特征:not null+ unique ;主键值不能为:null,同时也不能重复
  • 2、主键值分类:单一主键(列级)、复合主键(联合使用表级)自然主键(使用较多推荐使用)
  • 3、主键值:是每一行记录的唯一标识。 任何一张表都有主键,没有主键表无效!一张表主键约束只能添加一个;
  •       建议使用类型:int、bigint、char;因为主键值是定长;
  • 4、如何给一张表添加主键约束:单一主键
  •   create table t_vip(
  •    id int primary key  auto_increment, //列级约束
  •    name varchar(255)
  •    );

 

5、外键约束简称FK:fpreign key

  • 1、外键约束语法:foreign key  (外键:子表中和父表关联字段名) reference   父表表名(父表和子表关联的字段名)
  • 2、父表、子表:先创建父表在创建子表---先删子表后删父表;
  • 业务背景: 请设计数据库表。来描述“班级和学生”的信息
  •   drop table if exists t_student;
  •   drop table if exists t_class;
  •   create table t_class(
  •    cno int,
  •    cname varchar(255),
  •    primary key(cno)
  •   );
  •   create table t_student(
  •    sno int,
  •    sname varchar(255),
  •    classno int,
  •    foreign key(classno) references t_class(cno)//外键约束语法;
  •   );

 

posted @ 2022-04-13 22:15  280887072  阅读(59)  评论(0编辑  收藏  举报