oracle表约束的操作语法和实例

oracle表约束的操作语法和实例_第1张图片

oracle表约束的操作语法和实例_第2张图片

--oracl
 数据库表约束操作的语法与实例--操作素材学生表如下:create table student( stuno CHAR(11) , 
stuname VARCHAR2(50), stuage NUMBER(3), stusex CHAR(2), stubir DATE, 
stuid VARCHAR2(18), stucid NUMBER(3))SELECT * FROM 
student--1.建表是直接添加非空约束--CREATE TABLE 表名(-- 字段名称 字段类型 NOT 
NULL)--修改添加非空约束--这个是最特殊的,不用关键字constrint--实例:--2.添加非空约束语法--ALTER TABLE 
表名--MODIFY 列名 NOT NULL--添加非空约束实例:ALTER TABLE studentMODIFY stuno NOT 
NULL--如果列值唯一,可以添加唯一约束。--比如身份证号,学号,银行卡号等。--添加唯一约束的语法:--ALTER TABLE 表名 -- 
ADD CONSTRAINT 约束名 -- UNIQUE (列名)--添加唯一约束的实例:ALTER TABLE student ADD 
CONSTRAINT 
uq_stuidUNIQUE(stuid)--如果一个字段即要求唯一又不能为null,--可使用主键约束,一般都是第一列--添加主键约束语法:--ALTER
 TABLE 表名 --ADD CONSTRAINT 约束名 PRIMARY KEY(列名)--添加主键约束实例:ALTER TABLE 
studentADD CONSTRAINT pk_stunoPRIMARY 
KEY(stuno)--添加检查约束,相当于条件约束,--一般要符合常理与设定条件--添加检查约束语法:--ALTER TABLE 表名 -- 
ADD CONSTRAINT 约束名 
--CHECK(具体的约束说明)--添加检查约束实例1:--性别只能是男或女或者女妖--这个时候突然出现了问题,--因为建表的时候sex的数据类型为char(2)--两个字节,只能储存一个字符,女妖存不进去--所以改为varchar2(10)ALTER
 TABLE studentADD CONSTRAINT ck_sexCHECK(STUSEX 
IN('男','女','女妖'))--添加检查约束实例2:--年龄在15-40之间ALTER TABLE student ADD 
CONSTRAINT ck_ageCHECK(STUAGE>=15 AND STUAGE<=40)--或者ALTER TABLE 
studentADD CONSTRAINT ck_age2CHECK(stuage BETWEEN 20 AND 
50)--这个时候发现同列的两个检查约束都添加进去了--最好删除一个约束条件--删除约束语法:--ALTER TABLE 表名 -- DROP 
CONSTRAINT 约束名 --删除约束实例:ALTER TABLE student DROP CONSTRAINT 
ck_age2--添加检查约束实例3:--省份证号码必须在18位ALTER TABLE student ADD CONSTRAINT 
ck_stuidCHECK(LENGTH(stuid)=18)--出现提示,违反检查约束条件。--stuid建过一个唯一约束条件,--但不是检查约束啊?--问题在哪里?--于是只好在stucid建立约束了ALTER
 TABLE student ADD CONSTRAINT 
ck_stucidCHECK(LENGTH(stucid)=18)--stucid的数据类型是number(3)--所以必须修改ALTER 
TABLE studentMODIFY stucid NUMBER(20)--这个时候18位数字才能提交--留待上面那个问题,请教大家ALTER
 TABLE student DROP CONSTRAINT 
ck_stucid----外键约束--为了验证外键约束,创建第二份有关的表CREATE TABLE myclass(mid 
NUMBER(4),mname VARCHAR2(20))--并添加一个相关的列ALTER TABLE studentADD classNo 
NUMBER(4)--student学生表和班级表--一个班级有多个学生--所以班级对学生是一对多的关系。--学生表示子表,他的外键是班级的某列。--学生(子表)
 班级表(父表,被引用的表)--被引用的表的列必须是主键--子表和父表中的列的数据类型必须一致--在父表中添加一些数据SELECT * FROM
 myclassINSERT INTO myclass(mid,mname)VALUES(1001,'JAVA班') INSERT INTO 
myclass(mid,mname)VALUES(1002,'php班') INSERT INTO 
myclass(mid,mname)VALUES(1003,'pytion班') --添加外键约束语法:--ALTER TABLE 
子表名--ADD CONSTRAINT 约束名 FOREIGN KEY(子表的列名)--REFERENCES 父表名(父表的列名) 
--添加外键约束实例:ALTER TABLE studentADD CONSTRAINT fk_classNoFOREIGN 
KEY(classno)REFERENCES myCLASS(mid);--唯一关键字或主键不匹配--查找原因,原来是主表必须设置主键ALTER
 TABLE myclassADD CONSTRAINT pk_midPRIMARY 
KEY(mid)--这个时候在查看学生表的班级列,--外键约束小三角就出现了

oracle表约束的操作语法和实例_第3张图片

--不过这样可能不符合约束条件的数据就被添加了进来,

--导致不安全与数据表奔溃。所以要慎用

--至此表的约束全部完成。

本文为头条号作者发布,不代表今日头条立场。

你可能感兴趣的:(oracle表约束的操作语法和实例)