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)//外键约束语法;
- );