四、SQL基础知识--约束和视图

--创建约束的方式
--一、在字段创建时将约束添加到字段之后
CREATE TABLE ZYJ_YUESHU(
       ZYJ_ID VARCHAR(20) NOT NULL PRIMARY KEY,   --创建非空、主键约束
       ZYJ_NAME VARCHAR(20) DEFAULT 'jie' NOT NULL,  --创建默认约束
       ZYJ_NO VARCHAR(20) UNIQUE,    --创建唯一约束
       ZYJ_SEX VARCHAR(20) CHECK(ZYJ_SEX IN('男','女')),
       ZYJ_CHENGJI INT CHECK(ZYJ_CHENGJI>10)
);
COMMENT ON TABLE ZYJ_YUESHU IS 'soulsjie ,学习约束创建的数据表';
COMMENT ON COLUMN ZYJ_YUESHU.ZYJ_ID IS '序号字段 非空 主键';
COMMENT ON COLUMN ZYJ_YUESHU.ZYJ_NAME IS '姓名字段 非空 默认为jie';
COMMENT ON COLUMN ZYJ_YUESHU.ZYJ_NO IS '编号字段 唯一约束';
COMMENT ON COLUMN ZYJ_YUESHU.ZYJ_SEX IS '性别字段 只能是男、女';
COMMENT ON COLUMN ZYJ_YUESHU.ZYJ_CHENGJI IS '成绩字段 大于10';

--二、在所有的字段创建之后单独添加约束
CREATE TABLE ZYJ_YUESHU(
       ZYJ_ID VARCHAR(20),   
       ZYJ_NAME VARCHAR(20),
       ZYJ_NO VARCHAR(20),    
       ZYJ_SEX VARCHAR(20),
       ZYJ_CHENGJI INT,
       --在字段创建之后,单独添加约束的格式【constraint 约束名 约束类型(约束的对象字段)】
       CONSTRAINT pk_zhujian PRIMARY KEY(ZYJ_ID), --创建主键约束
       CONSTRAINT not_null UNIQUE(ZYJ_NO),        --创建唯一约束
       CONSTRAINT ch_jiancha CHECK(ZYJ_SEX IN ('男','女'))  
);

--添加约束
       ALTER TABLE ZYJ_YUESHU ADD CONSTRAINT un_unique UNIQUE(ZYJ_CHENGJI);
--删除约束
       ALTER TABLE ZYJ_YUESHU DROP CONSTRAINT ch_jiancha;
--修改约束
       ALTER TABLE ZYJ_YUESHU DROP CONSTRAINT ch_jiancha;--先删除约束
       ALTER TABLE ZYJ_YUESHU ADD CONSTRAINT ch_jiancha CHECK(ZYJ_SEX IN ('1','0'));--重新创建

--视图
--创建一个查看学生平均成绩的视图
CREATE VIEW STU_AVG AS SELECT I.STU_NAME as names ,AVG(S.KECHENG_CHENGJI) as avgsc FROM STU_INFO I ,KECHENG_INFO K,STU_SCORE S WHERE I.STU_ID=S.STU_ID AND S.KECHENG_BIANHAO=K.KECHENG_BIANHAO GROUP BY I.STU_NAME;
--视图的使用
SELECT * FROM STU_AVG WHERE AVGSC>=60 ORDER BY AVGSC DESC;

--约束之创建外键约束的语法格式

--在下例中,将创建一个名为 Skills 的表,其中包含潜在技能列表,然后创建一个与 Skills 表具有外键关系、名为 EmployeeSkills 的表。请注意,EmployeeSkills.SkillID 与 Skills 表的主键列 (Id) 存在外键关系。



CREATE TABLE Skills (
   Id INTEGER PRIMARY KEY,
   SkillName CHAR(40),
   Description CHAR(100) 
);
CREATE TABLE EmployeeSkills (
   EmployeeID INTEGER NOT NULL,
   SkillID INTEGER NOT NULL,
   SkillLevel INTEGER NOT NULL,
   PRIMARY KEY( EmployeeID ),
   FOREIGN KEY (SkillID) REFERENCES Skills ( Id )
);
原文地址:https://www.cnblogs.com/soulsjie/p/8286887.html