网站搭建一般要多少钱,重庆网站建设eyouc,个人建什么网站比较好,高端网站建设 上海完整性约束 数据完整性是指存储在数据库中的数据要能正确反映实际情况#xff0c;规定输入的数据不能是无效值、错误值 或者乱码等。 一、非空约束#xff1a; 非空约束关键字#xff1a; not null 1、非空约束的创建 create table teacher(
t_id int not null, -- 为教… 完整性约束 数据完整性是指存储在数据库中的数据要能正确反映实际情况规定输入的数据不能是无效值、错误值 或者乱码等。 一、非空约束 非空约束关键字 not null 1、非空约束的创建 create table teacher(
t_id int not null, -- 为教师编号添加非空约束
t_name varchar(20),
t_age int,
t_sex varchar(4)
);
insert into teacher(t_name,t_age,t_sex) values(小李,18,男);
-- 错误非空约束规定插入的属性值不能为空如t_id
insert into teacher values(1,小王,18,男); 2、非空约束的添加 以修改表的方法添加非空约束 alter table teacher modify column t_name varchar(30) not null;
insert into teacher(t_id,t_age,t_sex) values(3,20,女);-- 报错 二、唯一约束 唯一约束关键字 unique 1、创建唯一约束 创建表时添加唯一约束 create table teacher(
t_id int not null unique, -- 为教师编号添加非空且唯一的约束
t_name varchar(20),
t_age int,
t_sex varchar(4)
); 2、修改表添加唯一约束 alter table teacher add constraint uni_tid unique(t_id);
-- constraint关键字给约束unique(t_id)取一个别名为 uni_tid 若表中没有规定主键那么表中第一个非空且唯一的属性自动添加主键约束 3、给约束取别名 通过 constraint 关键字给约束取别名 alter table teacher add constraint uni_tname unique(t_name); 4、删除唯一约束 根据约束名称删除唯一约束 alter table teacher drop index uni_tid; 根据属性名称删除唯一约束 alter table teacher drop index t_name; 5、复合唯一约束(联合唯一约束) ①创建复合唯一约束 create table teacher(
t_id int not null, -- 为教师编号添加非空约束
t_name varchar(20),
t_age int,
t_sex varchar(4),
constraint uni_tidname unique(t_id,t_name) -- 对多个字段创建复合唯一约束使字段不能同时一致
); ②修改表添加复合唯一约束 alter table teacher add constraint uni_tidname unique(t_id,t_name); 复合唯一约束不允许约束的属性列同时相同至少要有一个不同。 三、主键约束 主键约束关键字 primary key 1、创建表时添加主键约束 create table teacher(
t_id int primary key, -- 为教师编号创建主键约束
t_name varchar(20),
t_age int,
t_sex varchar(4)
); 2、修改表添加主键约束 alter table teacher add primary key(t_id); 由于表中第一个非空且唯一的属性会默认成为主键所以创建主键前要先删除这个属性的唯一约束: alter table teacher drop index uni_tidname; 3、删除主键约束 alter table teacher drop primary key;
-- 由于一个表的的主键只有一个直接丢掉即可只要规定表名可以不写约束名 4、创建联合主键 alter table teacher add primary key(t_id,t_name); 四、自增列 自增列约束关键字 auto_increment 1、创建自增列 创建表时添加自增列约束 create table teacher(
t_id int primary key auto_increment, -- 为教师编号创建主键和自增列约束默认从100开
始
t_name varchar(20),
t_age int,
t_sex varchar(4)
)auto_increment 100;-- 设置自增列的默认初始值从100开始 2、添加自增列 修改表添加自增列 alter table teacher modify column t_id int auto_increment; 3、删除自增列 alter table teacher modify column t_id int;
-- 在修改表时不添加自增列就是删除自增列,跟删除非空约束一样 五、检查约束 检查约束关键字 check 检查约束演示示例 ①创建表时添加检查约束 create table student(
id int primary key,
s_name varchar(20),
age int check(age0 and age150),
-- 约束年龄的取值范围为0~150之间
sex varchar(2) check(sex男 or sex女)
-- 约束性别的取值范围为男或女
);
六、默认值约束
1、创建表时添加默认值约束 默认值约束关键字 default create table teacher(
t_id int primary key auto_increment, -- 为主键创建默认值约束
t_name varchar(20),
t_age int default 男,
t_sex varchar(4)
)auto_increment 100; -- 设置自增列的默认初始值从100开始 2、修改表添加默认值约束 alter table teacher modify column t_sex varchar(4) default 男; 3、删除默认值约束 alter table teacher modify column t_sex varchar(4);
-- 在修改表时不添加默认值约束就是删除默认值约束 七、外键约束 外键约束关键字 foreign key 1、创建表添加外键约束 学生、教师和班级的外键联系 创建被参考表 class create table class(
class_id int primary key,
c_name varchar(20) not null,
c_num int, -- 班级人数
c_tid varchar(20) -- 外键约束参考与教师表
constraint for_ctid foreign key(c_tid) references teacher(t_id)
);
insert into class(class_id,c_name) values(1,数据库),
(2,C),(3,java),(4,python);
创建参考表student:
create table student(
s_id int primary key,
s_name varchar(20) not null,
s_cid int not null,
s_age int,
s_sex varchar(4),
constraint for_scid foreign key(s_cid) references class(class_id)
); insert into student(s_id,s_name,s_cid) values(1,张三,1),(2,李四,3),(3,王五,2); 学生表中的班级编号参考班级表中的班级编号学生不能给属于不存在的班级 insert into student(s_id,s_name,s_cid) values(4,赵六,5); 2、级联更新/删除 级联更新 / 删除是指父表中的元组更新或删除等操作对子表的处理方法其有三种处理方法 在更新 / 删除中 on update/on delete -- ① cascade父表中的元组更新或删除在子表中跟着更新或者删除
# 在外键约束后加上on update cascade/on delete cascade
-- ② no action无动作若子表中有匹配的记录就不允许更新/删除父表的数据
# 在外键后加上on update no action/on delete no action
-- ③ set null设置为空若子表中有匹配的记录更新/删除父表中的数据子表中对应数据设置为
空
# 在外键约束后加上on update set null/on delete set null 学生表中存在有 3 号班级的学生不允许删除 3 号班级 delete from class where class_id 3; 创建参考表 student1 create table student1(
s_id int primary key,
s_name varchar(20) not null,
s_cid int not null,
s_age int,
s_sex varchar(4),
constraint for_scid1 foreign key(s_cid) references class(class_id) on update
cascade on delete no action -- 级联更新和删除
); insert into student1(s_id,s_name,s_cid) values(1,张三,1),
(2,李四,3),(3,王五,2);
delete from class where class_id 2;
update class set class_id 6 where class_id 1;
drop table student;