Http://www.kingbase.com.cn
在不特别声明的情况下,非码属性的值是允许取空值的。 CREATE TABLE SC(
SNO CHAR(7) NOT NULL, /*列值非空的约束NOT NULL*/ CNO CHAR(4) NOT NULL, GRADE SMALLINT NOT NULL);
[例6-2]列值唯一。建立部门表DEPT,要求部门名称Dname 取值唯一,部门编号Deptno 属 性为主码。
CREATE TABLE DEPT(
DEPTNO NUMERIC(7) PRIMARY KEY,
DNAME VARCHAR(9) UNIQUE, /*UNIQUE 约束要求Dname 取值唯一*/ LOCATION VARCHAR(10));
[例6-3]CHECK 短语指定列值应该满足的条件。定义表Student,属性Ssex 的值只允许取“男” 或“女”;定义表SC,属性Grade 的值定义在0-100 之间。 CREATE TABLE STUDENT( SNO CHAR(7) PRIMARY KEY, SNAME CHAR(8) NOT NULL,
SSEX CHAR(2) CHECK(SSEX IN(?男?,?女?)), /*CHECK 语句约束条件*/ SAGE SMALLINT, SDEPT CHAR(20)); CREATE TABLE SC( SNO CHAR(7) NOT NULL, CNO CHAR(4) NOT NULL,
GRADE SMALLINT CHECK (GRADE>0 AND GRADE<100), /*CHECK 语句约束 条件*/
PRIMARY KEY (SNO,CNO),
FOREIGN KEY (SNO) REFERENCES STUDENT(SNO), FOREIGN KEY (CNO) REFERENCES COURSE(CNO)); 【例7】用户定义的元组上的约束条件。
46
____________________________________________________________________________________
联系方式:北京市海淀区上地西路8号上地科技大厦4号楼601 电话:86-010-58851118 邮箱:Training@kingbase.com.cn
Http://www.kingbase.com.cn
CHECK 短语不光能够定义属性列上的约束条件,还允许用户定义元组级的约束条件。 定义表Student,要求当学生性别为男时,其名字不能以Ms.打头。 CREATE TABLE STUDENT( SNO CHAR(7) PRIMARY KEY, SNAME CHAR(8) NOT NULL, SSEX CHAR(2), SAGE SMALLINT, SDEPT CHAR(20),
CHECK (SSEX = ?女? OR SNAME NOT LIKE ?Ms.%?)); /*定义了Sname 和Ssex 之间的约束条件*/
任务4. CONSTRAINT 完整性约束命名子句
【例8】在定义表时利用约束命名子句对完整性约束条件命名,能够灵活地增加或删除一个 完整性约束条件。
[例8-1]定义表Student,要求学号在90000-99999 之间,姓名不能取空值,年龄小于30, 性别只能是“男”或“女”。要求全部用约束命名子句实现。 CREATE TABLE STUDENT( SNO NUMERIC(5)
CONSTRAINT C1 CHECK (SNO BETWEEN 90000 AND 99999), SNAME VARCHAR(20) CONSTRAINT C2 NOT NULL, SAGE NUMERIC(3)
CONSTRAINT C3 CHECK (SAGE < 30), SSEX VARCHAR(2)
CONSTRAINT C4 CHECK (SSEX IN (?男?,?女?)), CONSTRAINT StudentKey PRIMARY KEY(SNO));
在表Student 上共定义了5 个约束条件,包括主码约束以及C1、C2、C3、C4 四个列级 约束。
____________________________________________________________________________________
联系方式:北京市海淀区上地西路8号上地科技大厦4号楼601 电话:86-010-58851118 邮箱:Training@kingbase.com.cn
47
Http://www.kingbase.com.cn
[例8-2]修改表Student 中的完整性限制,去掉对性别的限制,并将年龄的限制由小于30 改 为小于40。
ALTER TABLE STUDENT /*去掉对性别的限制条件C4*/ DROP CONSTRAINT C4;
ALTER TABLE STUDENT /*先删掉原来的约束条件再增加一个新的约束条件*/ DROP CONSTRAINT C3; ALTER TABLE STUDENT
ADD CONSTRAINT C3 CHECK(SAGE <40);
任务5. 触发器
触发器可以看成是一类特殊的存储过程,在满足某个特定条件时自动触发执行,是提高 数据库服务器性能的有力工具。
触发器分为三类,更新触发器、插入触发器和删除触发器。 能够定义触发器的用户有: 1) 表的所有者; 2) 系统管理员;
3) 拥有创建触发器的权限,且拥有对操作对象的相应的操作权限的用户。
【例9】定义表TAB,并在其上定义触发器TRI,在对TAB 的插入和更新前检查,如果插入 或更新的值在100-1000 之间的话,将值置为50;如果值大于1000 的话,则给出新值不允 许大于1000 的提示。 CREATE TABLE tab (col int); INSERT INTO tab VALUES(10); INSERT INTO tab VALUES(20);
CREATE TRIGGER tri BEFORE UPDATE OR INSERT ON tab FOR EACH ROW AS BEGIN
IF new.col > 100 AND new.col < 1000 THEN
48
____________________________________________________________________________________
联系方式:北京市海淀区上地西路8号上地科技大厦4号楼601 电话:86-010-58851118 邮箱:Training@kingbase.com.cn
Http://www.kingbase.com.cn
new.col := 50; END IF;
IF new.col > 1000 THEN
RAISE EXCEPTION ?New values can not more than 1000?; END IF; END;
检测:1)向表TAB 插入数据(150)。 执行:INSERT INTO TAB VALUES(150);
结果:插入的数据为150。值在100-1000 之间,触发器TRI 自动执行,将插入 的值置为50。
2)对表中的数据进行更新,将20 更新为1500。 执行:UPDATE TAB SET COL = 1500 WHERE COL = 20; 结果:系统报出?New values can not more than 1000?的错误,
对表进行查询后发现,表中的数据并没有发生改变。说明在更新数据时,值大于1000 则触发触发器TRI 自动执行,系统报错,更新无效。 【例10】删除触发器TRI。 DROP TRIGGER TRI ON TAB;
删除触发器TRI 之后,在对TAB 进行插入和更新就不再有以上限制了。
实验(十):应用管理系统部署
一、实验目的:通过对金仓数据库KingbaseES数据库的学习,使学员能够掌握应用程序的部署。
二、实验平台:装有windows操作系统的PC机;数据库管理系统:KingbaseES v6.1安装包(这里以KingbaseES v6.1.1版本为例)。证书管理系统(简称:CMS)应用源程序。 三、实验内容及要求
1、数据库部署。包括:数据库的设计、安装数据库、创建数据库对象、数据导入等。 2、安装JDK插件。
3、tomcat中间件服务安装及配置。 4、系统登录及功能测试。
____________________________________________________________________________________ 联系方式:北京市海淀区上地西路8号上地科技大厦4号楼601 电话:86-010-58851118 邮箱:Training@kingbase.com.cn
49
Http://www.kingbase.com.cn
证书查询系统部署步骤
任务1:KingbaseES数据库部署
1、 安装KingbaseES6.1.1(校园版)数据库。
2、 创建数据库CMS 【注释:在数据库安装时创建的第一个数据库可以命名为CMS】。
3、 创建模式CMS;在查询分析器中的创建方式:CREATE SCHEMA \在企业管理器
中的创建方式参见下图:
4、 创建所需要的表:CERTI_INFO、CERTI_INFO_BACKUP、MANAGER_INFO、
MANAGER_INFO_BACKUP
注释:CERTI_INFO表为证书信息存放表;
CERTI_INFO_BACKUP表为证书信息备份表; MANAGER_INFO表为管理员信息和用户信息存放表; MANAGER_INFO_BACKUP表为管理员和用户信息备份表;
--1.创建表CERTI_INFO,用以存储证书信息 CREATE TABLE \
50
\
____________________________________________________________________________________
联系方式:北京市海淀区上地西路8号上地科技大厦4号楼601 电话:86-010-58851118 邮箱:Training@kingbase.com.cn