数据完整性(约束操作)

    xiaoxiao2026-01-19  6

    数据完整性(约束操作)

    实体完整性:主键约束、唯一键约束域完整性:默认值约束、检查约束、非空参照(引用)完整性:外键约束

    创建数据表时定义约束

    语法

    create table 数据表名 ( 列名1 数据类型1 [constraint 约束名1][约束1] 列名2 数据类型2 [constraint 约束名2][约束2] …… 列名n 数据类型n [constraint 约束名n][约束n][,] [constraint 约束名n+1][约束n+1][,] --表级约束 …… ) (1)列级约束:在表的列名之后直接定义的约束,只约束这一列的数据 (2)表级约束:在表定义的所有列之后,单独一行代码定义的约束,这个约束可以只约束一个列, 也可以约束多个列。同时约束多个列的必须是表级约束。 (3)注意:constraint 约束名:要求在一个数据库里面,约束名称必须唯一:如果不指定,则系统默认指定。 (4)用表级约束添加主键时,声明列时要提前声明非空 (not null),不然要报错 # 命名格式通常可以采用:表名_约束名_序号

    代码

    例:定义学生表,学号为主键,性别默认为女,只能取值男或女,电话号码唯一。 create table tbStudent ( sno char(10) constraint stu_pk_01 primary key, sname varchar(8) not null, sex char(2) default('女') check(sex='男' or sex='女'), birthday datetime, class varchar(20), telephone char(20) unique ) go 向学生表里添加值 insert into tbStudent(sno,sname,sex,birthday,class,telephone) values('1000000001','张三丰','男','1992-1-1','计应1031','10001') insert into tbStudent(sno,sname,sex,birthday,class,telephone) values('1000000003','公孙止','田','1992-1-1','计应1031','10003')--出错:sex:田:不符合检查约束 insert into tbStudent(sno,sname,sex,birthday,class,telephone) values('1000000004','杨过','男','1989-11-1','计应1031','10002')--出错:telephone:10002:不符合唯一约束 go 例:定义学生表,学号为主键,性别默认为女,只能取值男或女,电话号码唯一。 create table tbStudent ( sno char(10) not null,--非空很重要 sname varchar(8) not null, sex char(2) default('女') , birthday datetime, class varchar(20), telephone char(20), --表级约束形式定义相关约束 constraint stu_pk_01 primary key(sno),--主键约束: check(sex='男' or sex='女'), constraint stu_uq_01 unique(telephone) ) go

    修改数据表定义约束

    语法

    alter table 数据表 add [constraint 约束名] 约束(列名1,列名2), [constraint 约束名] 约束(列名1,列名2)

    代码

    例:在课程表上课程编号上定义主键约束 alter table tbcourse add constraint course_pk_01 primary key(cno) go
    最新回复(0)