#是一种限制,是通过对表的行或列的数据作出限制
#来确保表的数据的完整性和唯一性
#用于非空约束
#用于确保当前列的数据不可为空值null
#非空的约束只能作用于表对象的列上,null适用于所有数据类型
#唯一性约束(unique)
#是指定的表的列或者列的组合不能重复,确保数据的唯一性
#唯一性约束中允许出现null,且可以出现多个null=null FALSE
#同一个表中可以有多个唯一约束,多个列组和的约束
#唯一约束的名称如果不确定,则和列名相同
#唯一约束可以在表中创建,也可以多个表创建组合的唯一约束
#主键约束相当于是唯一的约束,非空约束的组合,主键约束列不允许重复
#也不允许出现空值,每张表中只能有一个主键,建立主键约束可以在
#列级别,也可以在表级别创建,当穿件主键约束的时候,系统默认
#在所在的列和列的组合上创建唯一索引
#是用于加强两张表(主表和从表)的一列或者多列之间的数控链接
#用于保证一个或者两个表之间的参照完整性,外键是构建于一个表的
#两个字段或是两个表的两个字段之间的参照关系
#创建外键的顺序是先定义表的主键,然后定义表的外键
#只有主表才能被从表用来作为外键使用,被约束的从表中的列可以
#不是主键,主表限制了从表的更新和插入操作
#默认值约束
#如果用户在插入数据的时候,没有给该列制定数据,这系统将会
#把默认值赋值给该列,如果没有默认值,则赋值null
#检查约束(自学)
#例子
#添加单列主键
#语法(定义字段的同时指定主键):
#create table 表名(字段名 数据类型 primary key)
create table table_xy_01(id int PRIMARY key,name varchar(20));
#语法
#create table 表名(字段名 数据类型, ...,
#constract 主键名 PRIMARY key (主键列))
create table table_xy_02(
id int ,
name varchar(20),
constraint pk1 PRIMARY key(id)
)
#语法:
#create table 表名(字段1 类型, 字段2 类型 ...,
#primary key(字段1,自断2..))
CREATE table table_xy_03(
id int ,
name VARCHAR(20),
age int ,
PRIMARY key(id,name)
)
#语法
#alert table 表名 drop PRIMARY
alter table table_xy_02 drop PRIMARY key
ALTER table table_xy_03 drop PRIMARY key
#表创建完成后在添加主键
#语法 :alert table 表名 add PRIMARY key (字段列表)
ALTER table table_xy_02 add PRIMARY key(id)
ALTER table table_xy_03 add PRIMARY key(id,name)
#语法
CREATE TABLE 表名(字段名 类型 auto_increment)
create table table_xy_04(
id int PRIMARY key auto_increment,
name varchar(20)
);
#语法
#create table 表名(字段 类型 auto_increment)
#auto_increment =起始值
create table table_xy_06(
id int primary key auto_increment,
name varchar(20)
)auto_increment=50
#语法(创建的时候添加非空约束)
#create table 表名(字段 类型 not null,...)
create table table_xy_07(
id int PRIMARY key auto_increment,
name VARCHAR(20) not null)
#语法 (创建表完成后添加)
#ALTER table 表名 modify 字段名 类型 not null;
CREATE table table_xy_08(
id int PRIMARY key auto_increment,
name varchar(20)
)
alter table table_xy_08 modify name VARCHAR(20) not null;
#语法
ALTER table table_xy_08 modify name VARCHAR(20)
#语法(创建表的时候指定)
#CREATE table 表名 (字段名 类型 unique)
CREATE table table_xy_09(
id int primary key auto_increment,
name varchar(20) unique not NULL)
#语法(创建表的完成时候指定)
#CREATE table 表名 add constraint 约束名称 unique(字段)
CREATE TABLE table_xy_10(
id int PRIMARY key auto_increment,
name varchar(20)
)
alter table table_xy_10
add constraint my_unique unique(name)
#语法 alter table 表名 drop index 约束名
alter table table_xy_10 drop index my_unique
#alter table 表名 modify 列名 类型 default 默认值
CREATE table table_xy_12(
id int primary key auto_increment,
name varchar(20)
)
alter table table_xy_12
modify name varchar(20) default ‘李四’
#语法
#alter table 表名 modify 列名
#varchar(20) default NULL
alter table table_xy_12
modify name varchar(20) default NULL
#语法(创建表的同时指定)
···
#create table 表名(字段名 类型,字段2 类型,…)
#constraint 外键名 foreigin key(字段名)
#references 主表名(主键)
#)
CREATE table table_xy_13(
id int PRIMARY key auto_increment,
name varchar(20)
)
#从表
CREATE table table_xy_14(
id int primary key atuo_increment,
score int,
oid int
constraint fk_14_13_oid foreign key(oid)
references table_xy_13(id)
)
#语法
#alter table 表名 add foreigin key(字段名)
#references 主表(字段) [on delete restricit]
#[on update cascade]