数据库实验三
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
属性名称
PROJID EMPNO A_START_DATE A_END_DATE BILL_RATE ASSIGN_TYPE
5)、Check 约束 CHECK 约束定义了每条记录必须满足的条件 语法: [CONSTRAINT constraint_name] CHECK (condition)
6. ALTER TABLE 命令 ALTER TABLE 命令可用来修改数据表的定义。 命令格式: ALTER TABLE tablename [ADD 或 MODIFY 或 DROP options ](column_spec [column_constraint]) [ENABLE clause
DEPTNO NUMBER(2) NOT NULL);
用 SQL*PLUS 命令 DESCRIBE 来看生成的 EMP2 表的列明细清单:
输入命令:DESCRIBE EMP2
EMP 生成的数据表结构显示如下:
Name
Null?
Type
EMPNO ENAME JOB MGR HIREDATE SAL COMM
属性名称
PROJID P_DESC P_START_DATE P_END_DATE BUDGET_AMOUNT MAX_NO_STAFF
数据类型
NUMBER VARCHAR2 DATE DATE NUMBER NUMBER
长度 4 20
7,2 2
3.生成一个数据表 ASSIGNMENTS,其属性定义如下,其中 PROJID 是外键引自 PROJECTS 数据表,EMPNO 是数据表 EMP 的外键,并且要求 PROJID 和 EMPNO 不能为 NULL。
NOT NULL
NUMBER(4) VARCHAR2(10) VARCHAR2(10) NUMBER(4) DATE NUMBER(7,2) NUMBER(7,2)
DEPTNO
NOT NULL NUMBER(2)
2. 从其他表中抽取属性生成数据表 CREATE TABLE EMP_PART AS SELECT EMPNO,ENAME,JOB,SAL,COMM FROM EMP2;
基于单条记录的,NULL 是允许的。 表约束命令格式: ,[CONSTRAINT constraint_name] UNIQUE (Column, Column, …) 属性约束命令格式:
[CONSTRAINT constraint_name] UNIQUE 例如:
CREATE TABLE DEPT2 (DEPTNO NUMBER, DNAME VARCHAR2(9), LOC VARCHAR2(10), CONSTRAINT UNQ_DEPT_LOC UNIQUE(DNAME,LOC)); UNQ_DEPT_LOC 是一个表约束。
SC (S#,C#,GRADE) 对应的中文为: [学习(学号,课程号,成绩)]
C(C#,CNAME,TEACHER) 对应的中文为: [课程(课程号,课程名,任课教师)]
注:以后要用到这三个基本表。
2.生 成 一 个 数 据 表 PROJECTS , 其 属 性 定 义 如 下 , 其 中 PROJID 是 主 键 并 且 要 求 P_END_DATE 不能比 P_START_DATE 早。
三.上机内容
1. 创建表 EMP2
CREATE TABLE EMP2
(EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB
VARCHAR2(10),
MGR
NUMBER(4),
HIREDATE DATE,
SAL
NUMBER(7,2),
COMM NUMBER(7,2),
DROP 关键字可以用来删除已存在数据表的约束。 如:把 EMP 中主键删除 ALTER TABLE EMP1 DROP PRIMARY KEY;
7. DROP TABLE 命令 用 DROP TABLE 命令删除 Oracle 数据表的定义。 命令格式:
DROP TABLE table_name [CASCADE CONSTRAINT] 例如: DROP TABLE EMP1; CASCADE CONSTRAINT 选项说明了也把完整性约束一起删除。 注意: DROP TABLE 也把数据表中的数据删除。 数据表的 VIEWS 和 SYNOMNYMS 保留下来,但它们变成了不合法的。 任何悬而未决的事务将被提交。 只有数据表的生成者或 DBA 才有权删除它。
Null? NOT NULL
NOT NULL
5. 用 ALTER 的 MODIFY 命令修改已存在的属性的定义 ALTER TABLE EMP2 MODIFY (ENAME VARCHAR2(12));
输入命令:DESCRIBE EMP2
EMP 生成的数据表结构显示如下:
Name EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SPOUSES_NAME
3)、主键约束(Primary Key Constraint) 主键约束强制属性和属性集合的唯一性,并且用一个唯一索引来管理它。每个表中只能
用一个主键,这样可以通过主键来标识表中的每条记录。NULL 值不允许在主键属性出现。 表约束命令格式: ,[CONSTRAINT constraint_name] PRIMARY KEY (Column, Column, …) 属性约束命令格式:
二.预备知识
DDL 是 SQL 命令的子集,用来创建、修改、删除 Oracle 数据库结构。这些命令能立即
影响数据库和数据字典属性信息。
1. 表名命名规则
所用的表名必须满足下面的条件:
a) 名字必须以 A-Z 或 a-z 的字母开始;
b) 名字可以包括字母、数字和特殊字母(_)。字符$和#也是合法的,但是这种用法不提倡;
3. CREATE TABLE 命令 1)、CREATE TABLE table_name( column_name type(size), column_name type(size), …);
例如:
CREATE TABLE DEPT1
(DEPTNO NUMBER(2),
DNAME VARCHAR2(12),
输入命令:DESCRIBE EMP_PART
EMP_Part 生成的数据表结构结果显示如下:
Name
Null?
EMPNO
NOT NULL
ENAME
JOB
SAL
Type NUMBER(4) VARCHAR2(10) VARCHAR2(10) NUMBER(7,2)
COMM
3. DROP 命令删除数据表 DROP TABLE EMP_PART;
《数据库原理》 实验教学指导书
实验三 数据表的创建
撰写人:郭云飞
湘潭大学 信息工程学院 二○一三年十月五日
实验三 数据表的创建
Байду номын сангаас
一.上机目的
1.了解并掌握 Oracle 中表结构的定义。 2.了解并掌握 Oracle 中的用 Create 命令定义表的方法,以及表的完整性定义。 3.了解并掌握 Oracle 中的用 Alter 命令 和 Drop 命令对表的修改和删除。
Null? NOT NULL
NOT NULL
6. 用 ALTER 的 DROP 命令删除数据表中已存在的约束 ALTER TABLE EMP2 DROP PRIMARY KEY;
NUMBER(7,2)
Type NUMBER(4) VARCHAR2(10) VARCHAR2(10) NUMBER(4) DATE NUMBER(7,2) NUMBER(7,2) NUMBER(2) CHAR(10)
或 DISABLE clause] ADD 关键字可以用来给已存在的数据表增加一个属性或约束。 如:给 EMP 增加一个属性 ALTER TABLE EMP1 ADD (SPOUSES_NAME CHAR(10));
MODIFY 关键字可以用来修改已存在的数据表定义。 如:把 EMP 中 ENAME 长度改为 25 个字符 ALTER TABLE EMP1 MODIFY (ENAM CHAR(25));
[CONSTRAINT constraint_name] PRIMARY KEY 例如:用属性约束定义 DEPTNO 为主键 CREATE TABLE DEPT3
(DEPTNO NUMBER(2) CONSTRAINT DEPT_PRIM PRIMARY KEY, …);
4)、外键约束 外键提供表内或表间的完整性规则。外键必须依赖于一个 primary 或 unique key。
LOC
VARCHAR2(12));
2)、CREATE TABLE table_name [(column_name,…)] AS SELECT statement; 新建一张表,用于保存将查询结果。 例如: CREATE TABLE DEPTNO10(NAME,LOCATION) AS SELECT DNAME,LOC FROM DEPT WHERE DEPTNO = 10;
Type NUMBER(4) VARCHAR2(12) VARCHAR2(10) NUMBER(4) DATE NUMBER(7,2) NUMBER(7,2) NUMBER(2) CHAR(10)
四.上机作业
1.创建如下三个基表:
S (S#,SNAME,AGE,SEX) 对应的中文为: [学生 (学号,姓名,年龄,性别)]
YES NO(包含空格) NO(SQL 保留字)
2. 属性类型
数据类型 VARCHAR2(w) CHAR(w) NUMBER NUMBER(w) NUMBER(w,s)
INTEGER SMALLINT DATE LONG RAW 和 LONG RAW
表 3-2 属性类型 描述 变长字符长度为 w。最长为 2000 个字符。 定长字符长度为 w。默认为 1 个字符;最长为 255 个字符 38 位有效数字的浮点数 W 位精确度的整数,范围从 1 至 38 W 是精度,或总的数字书,范围从 1 至 38。S 是比例,或是小 数点右边的数字位。比例的范围从-84 至 127 整数类型 短整数类型 日期值,范围从公元前 14712 年 1 月到公元 314712 年 12 月 变长字符串,其最大长度为 2G(或 231-1 个字节) 面向字节数据,可存储字符串、浮点数,二进制数据等
c) 名字大小写是一样的;例如 EMP、emp 和 eMp 是表示同一个表;
d) 名字最长不超过 30 个字符;
e) 表名不能和其它的对象重名;
f) 表名不能是 SQL 保留字。
表 3-1 表名命名举例
名字
合法
EMP85 85EMP FIXED_ASSETS FIXED ASSETS UPDATE
YES NO(开始不是字母)
表约束命令格式: ,[CONSTRAINT constraint_name] FOREIGN KEY (Column, Column, …) REFERENCE
table (column, column, …) 属性约束命令格式: [CONSTRAINT constraint_name] FOREIGN KEY table (column) 例如: CREATE TABLE EMP1 (… CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCE DEPT(DEPTNO));
4.完整性约束 Oracle 允许用户为表和列定义完整性约束来增强一定的规则。 可分为:表约束和属性约束
5.约束类型 1)、NOT NULL 约束
NOT NULL 约束保证属性值不能为 NULL。没有 NOT NULL 约束的属性,值可以为 NULL。
2)、UNIQUE 约束 指定一个属性或者属性的集合为唯一键。在表中没有两行具有相同的值。如果唯一键是
4. 给数据表 EMP2 增加一个属性 SPOUSES_NAME
ALTER TABLE EMP2
ADD (SPOUSES_NAME CHAR(10));
输入命令:DESCRIBE EMP2
EMP 生成的数据表结构显示如下:
Name EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SPOUSES_NAME