- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) 表的创建: Create命令: CREATE TABLE table_name( column_name type(size), column_name type(size), …);或 CREATE TABLE table_name [(column_name,…)] AS SELECT statement; 表名命名规则 所用的表名必须满足下面的条件: a) 名字必须以A-Z 或a-z的字母开始; b) 名字可以包括字母、数字和特殊字母(_)。字符$和#也是合法 的,但是这种用法不提倡; c) 名字大小写是一样的;例如EMP、emp和eMp是表示同一个表; d) 名字最长不超过30个字符; e) 表名不能和其它的对象重名; f) 表名不能是SQL保留字。 字段类型:
CREATE TABLE student_range( sno NUMBER(6) PRIMARY KEY, sname VARCHAR2(10), sage int, birthday DATE
) PARTITION BY RANGE(birthday) ( PARTITION p1 VALUES LESS THAN
(TO_DATE('1980-1-1', 'YYYY-MM-DD')) TABLESPACE ORCLTBS1,
PARTITION p2 VALUES LESS THAN (TO_DATE('1990-1-1', 'YYYY-MM-DD')) TABLESPACE ORCLTBS2,
PARTITION p3 VALUES LESS THAN(MAXVALUE) TABLESPACE ORCLTBS3 STORAGE(INITIAL 10M NEXT 20M)) STORAGE(INITIAL 20M NEXT 10M MAXEXTENTS 10
CREATE TABLE new_emp( empno PRIMARY KEY,ename) ORGANIZATION INDEX
AS SELECT empno,ename FROM emp; 4. 分区表的管理
创建分区表
(1)范围分区
范围分区是按照分区列值的范围来对表进行分区的。 通过PARTITION BY RANGE子句说明根据范围进行分区,其后括号中 列出分区列。 每个分区以PARTITION关键字开头,其后是分区名。VALUES LESS THAN子句用于设置分区中分区列值的范围。 示例: 创建一个分区表,将学生信息根据其出生日期进行分区,将1980年1 月1日前出生的学生信息保存在ORCLTBS1表空间中,将1980年1月1日 到1990年1月1日出生的学生信息保存在ORCLTBS2表空间中,将其他学 生信息保存在ORCLTBS3表空间中。
表5 字段类型
数据类型
描述
VARCHAR2(w) 变长字符长度为w。最长为2000个字符。
CHAR(w)
定长字符长度为w。默认为1个字符;最长为 255个字符
NUMBER
38位有效数字的浮点数
NUMBER(w) W位精确度的整数,范围从1至38
NUMBER(w,s)
W是精度,或总的数字书,范围从1至38。S 是比例,或是小数点右边的数字位。比例的 范围从-84至127
[CONSTRAINT constraint_name] FOREIGN KEY table (column) 例如:
CREATE TABLE EMP (…CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCE DEPT(DEPTNO)); 5)Check约束 CHECK约束定义了每条记录必须满足的条件 语法:
DROP TABLE也把数据表中的数据删除。 数据表的VIEWS和SYNOMNYMS保留下来,但它们变成了不合法 的。 任何悬而未决的事务将被提交。 只有数据表的生成者或DBA才有权删除它。 2.索引的管理
(1)创建索引
语法
CREATE [UNIQUE]|[BITMAP] INDEX index_name ON table_name([column_name[ASC|DESC],…]| [expression]) [REVERSE] [parameter_list];
ALTER TABLE EMP MODIFY (ENAM CHAR(25)); (3)删除表
用DROP TABLE命令删除Oracle数据表的定义。 命令格式: DROP TABLE table_name [CASCADE CONSTRAINT] 例如:
DROP TABLE EMP; CASCADE CONSTRAINT选项说明了也把完整性约束一起删除。 注意:
创建函数索引 CREATE INDEX idx ON employee(UPPER(ename));
(2)删除索引
语法
DROP INDEX index_name;
3.索引化表的管理
在CREATE TABLE语句中指定ORGANIZATION INDEX关 键字。
CREATE TABLE new_student( sno NUMBER PRIMARY KEY , sname CHAR(11), sage NUMBER, sex CHAR(2)) ORGANIZATION INDEX TABLESPACE USERS ; 可以通过子查询创建索引化表
实验二 模式对象的管理
【开发语言及实现平台或实验环境】
Oracle10g 【实验目的】
(1)学习基本数据库表的创建,表结构的修改与删除等命令;
(2)学习索引的管理命令; (3)学习索引化表的管理命令 (4)学习分区表的管理命令 (5)学习簇、视图、序列、同义词等的管理命令 【实验原理】 1.基本表的管理
CREATE TABLE DEPT (DEPTNO NUMBER(2) CONSTRAINT DEPT_PRIM PRIMARY KEY, …); 4)外键约束 外键提供表内或表间的完整性规则。外键必须依赖于一个primary或 unique key。 表约束命令格式: ,[CONSTRAINT constraint_name] FOREIGN KEY (Column, Column, …) REFERENCE table (column, column, …) 字段约束命令格式:
);
(2)列表分区
概述
如果分区列的值并不能划分范围(非数值类型或日期类型),
同时分区列的取值范围只是一个包含少数值的集合,则可以对
表进行列表分区(LIST),如按地区、性别等分区。
通过PARTITION BY LIST子句说明根据列表进行分区,其后 括号中列出分区列。每个分区以PARTITION 关键字开头,其 后是分区名。VALUES子句用于设置分区所对应的分区列取 值。
创建非惟一性索引 CREATE INDEX employee_ename ON employee(ename)TABLESPACE users STORAGE (INITIAL 20K NEXT 20k PCTINCREASE 75); 创建惟一性索引 CREATE UNIQUE INDEX deptartment_index ON department(dname); 创建位图索引 CREATE BITMAP INDEX student_sex ON student(sex); 创建反序索引 CREATE INDEX player_sage ON player(sage) REVERSE;
DATE
日期值,范围从公元前14712年1月到公元 314712年12月
LONG
变长字符串,其最大长度为2G(或231-1个字 节)
RAW RAW
和LONG 面向字节数据,Fra Baidu bibliotek存储字符串、浮点数,二 进制数据等
完整性约束: Oracle允许用户为表和列定义完整性约束来增强一定的规则。 可分为:表约束和字段约束 约束类型如下: 1)NOT NULL约束 NOT NULL约束保证字段值不能为NULL。没有NOT NULL约束的字 段,值可以为NULL。 2)UNIQUE约束 指定一个字段或者字段的集合为唯一键。在表中没有两行具有相同 的值。如果唯一键是基于单条记录的,NULL是允许的。 表约束命令格式: ,[CONSTRAINT constraint_name] UNIQUE (Column, Column, …) 字段约束命令格式: [CONSTRAINT constraint_name] UNIQUE 例如: CREATE TABLE DEPT (DEPTNO NUMBER, DNAME VARCHAR2(9), LOC VARCHAR2(10),CONSTRAINT UNQ_DEPT_LOC UNIQUE(DNAME,LOC)); UNQ_DEPT_LOC是一个表约束。 3)主键约束(Primary Key Constraint) 主键约束强制字段和字段集合的唯一性,并且用一个唯一索引来管 理它。每个表中只能用一个主键,这样可以通过主键来标识表中的每条
记录。NULL值不允许在主键字段出现。 表约束命令格式: ,[CONSTRAINT constraint_name] PRIMARY KEY (Column,
Column, …) 字段约束命令格式:
[CONSTRAINT constraint_name] PRIMARY KEY 例如:用字段约束定义DEPTNO为主键
[CONSTRAINT constraint_name] CHECK (condition) (2)修改表
ALTER TABLE命令可用来修改数据表的定义。 命令格式:
ALTER TABLE tablename [ADD或MODIFY或DROP options ](column_spec [column_constraint]) [ENABLE clause 或DISABLE clause] ADD关键字可以用来给已存在的数据表增加一个字段或约束。 如:给EMP增加一个字段 ALTER TABLE EMP ADD (SPOUSES_NAME CHAR(10)); MODIFY关键字可以用来修改已存在的数据表定义。 如:把EMP中ENAME长度改为25个字符
示例 创建一个分区表,将学生信息按性别不同进行分区,男学生信息保存 在表空间ORCLTBS1中,而女学生信息保存在ORCLTBS2中。 CREATE TABLE student_list( sno NUMBER(6) PRIMARY KEY, sname VARCHAR2(10), sex CHAR(2) CHECK(sex in ('M', 'F')) ) PARTITION BY LIST(sex) (PARTITION student_male VALUES('M') TABLESPACE ORCLTBS1, PARTITION student_female VALUES('F') TABLESPACE ORCLTBS2 );
(3)散列分区
概述
散列分区(HASH)是在指定数量的分区中均等地分配数据。 为了创建散列分区,需要指定分区列、分区数量或单独的分区
描述。
通过PARTITION BY HASH指定分区方法,其后的括号指定分
区列。使用PARTITION子句指定每个分区名称和其存储空 间。或者使用PARTITIONS子句指定分区数量,用STORE IN 子句指定分区存储空间。
示例 创建一个分区表,根据学号将学生信息均匀分布到ORCLTBS1和 ORCLTBS2两个表空间中。 CREATE TABLE student_hash (
sno NUMBER(6) PRIMARY KEY, sname VARCHAR2(10) ) PARTITION BY HASH(sno) (PARTITION p1 TABLESPACE ORCLTBS1, PARTITION p2 TABLESPACE ORCLTBS2 ); CREATE TABLE student_hash2 ( sno NUMBER(6) PRIMARY KEY, sname VARCHAR2(10) ) PARTITION BY HASH(sno) PARTITIONS 2 STORE IN(ORCLTBS1,ORCLTBS2);