(6)以强制方式启动数据库。
(7)利用OEM进行数据库的关闭与启动操作。 3.选择题
(1) The Database must be in this mode for the instance to be started: A. MOUNT B. OPEN C. NOMOUNT D. None
(2) When Oracle startups up, what happens if a datafile or redo log file not available or corrupted
due to OS Problems?
A. Oracle returns a warning message and opens the database.
B. Oracle returns a warning message and does not open the database. C. Oracle returns a warning message and starts the database recovery. D. Oracle ignores those files and functions normally.
(3) The RESTRICTED SESSION system privilege should be given to
A. Users, who need extra security while transfering the data between client and the server through SQL*NET or NET8.
B. DBA, who perform structural maintenance exports and imports the data.
第11章 模式对象
例题
1、模式的选择与切换 P159 (1)进入同名模式(默认) SQL>CONNECT SCOTT/TRIGER SQL>SHOW USER (2)进入SYS模式
SQL>CONNECT /AS SYSDBA SQL>SHOW USER
(3)进入PUBLIC模式
SQL>CONNECT SYS/TRIGER AS SYSOPEN (用户 sys,口令 tiger) SQL>SHOW USER 2、创建员工表 P160
CREATE TABLE employee(
empno NUMBER(5) PRIMARY KEY, ename VARCHAR2(15),
deptno NUMBER(3) NOT NULL CONSTRAINT fk_emp REFERENCES dept(deptno) )
TABLESPACE USERS
PCTFREE 10 PCTUSED 40
STORAGE(INITIAL 50K NEXT 50K MAXEXTENTS 10 PCTINCREASE 25); 3、创建临时表 P160
事务级别的临时表是在事务提交时系统自动删除表中所有记录。 CREATE GLOBAL TEMPORARY TABLE tran_temp( ID NUMBER(2) PRIMARY KEY, name VARCHAR2(20) )
ON COMMIT DELETE ROWS;
会话级别的临时表是在会话终止时系统自动删除表中所有记录 。 CREATE GLOBAL TEMPORARY TABLE sess_temp( ID NUMBER(2) PRIMARY KEY, name VARCHAR2(20) )
ON COMMIT PRESERVE ROWS;
4、创建一个标准表,保存工资高于3000的员工的员工号、员工名和部门号。 P163 CREATE TABLE
emp_select(emp_no,emp_name,dept_no) AS
SELECT empno,ename,deptno FROM employee WHERE sal>3000;
5、创建一个会话级临时表,保存部门号、部门人数和部门的平均工资。P163 CREATE GLOBAL TEMPORARY TABLE ept_temp ON COMMIT PRESERVE ROWS AS
SELECT deptno,count(*) num,avg(sal) avgsal FROM emp GROUP BY deptno;
6、创建一个student表。 P165 CREATE TABLE student(
sno NUMBER(6) CONSTRAINT S_PK PRIMARY KEY, sname VARCHAR2(10) NOT NULL, sex CHAR(2) CONSTRAINT S_CK1 CHECK(sex in('M', 'F')), sage NUMBER(6,2),
CONSTRAINT S_CK2 CHECK(sage between 18 and 60));
7、创建一个course表,同时为主键约束列上的唯一性索引设置存储位置和存储参数,语句为 P165
CREATE TABLE course(
cno NUMBER(6) PRIMARY KEY,
cname CHAR(20) UNIQUE USING INDEX TABLESPACE indx STORAGE( INITIAL 64K NEXT 64K) );
8、创建一个SC表,语句为 P165 CREATE TABLE SC(
sno NUMBER(6) REFERENCES student(sno), cno NUMBER(6) REFERENCES course(cno),
grade NUMBER(5,2),
CONSTRAINT SC_PK PRIMARY KEY(sno, cno) );
8、添加和删除约束 创建一个player表
CREATE TABLE player( ID NUMBER(6), sno NUMBER(6), sname VARCHAR2(10), sage NUMBER(6,2), resume VARCHAR2(1000) );
添加主键约束
ALTER TABLE player ADD CONSTRAINT P_PK PRIMARY KEY(ID); 添加惟一性约束
ALTER TABLE player ADD CONSTRAINT P_UK UNIQUE(sname); 添加检查约束
ALTER TABLE player ADD CONSTRAINT P_CK CHECK(sage BETWEEN 20 AND 30); 添加外键约束
ALTER TABLE player
ADD CONSTRAINT P_FK FOREIGN KEY(sno)REFERENCES student(sno) ON DELETE CASCADE;
添加空/非空约束
为表列添加空/非空约束时必须使用MODIFY子句代替ADD子句 ALTER TABLE player MODIFY resume NOT NULL; ALTER TABLE player MODIFY resume NULL; 9、删除约束 P166
使用ALTER TABLE?DROP语句删除已经定义的约束。
可以通过直接指定约束的名称来删除约束,或指定约束的内容来删除约束。 删除指定内容的约束
ALTER TABLE player DROP UNIQUE(sname); 删除指定名称的约束
ALTER TABLE player DROP CONSTRAINT P_CK; 删除主键约束、唯一性约束的同时将删除唯一性索引,如果要在删除约束时保留唯一性索引,则必须在ALTER TABLE?DORP 语句中指定KEEP INDEX 子句。 ALTER TABLE player DROP CONSTRAINT P_UK KEEP INDEX;
如果要在删除约束的同时,删除引用该约束的其他约束,则需要在ALTER TABLE?DORP语句中指定CASCADE关键字。
ALTER TABLE player DROP CONSTRAINT P_PK CASCADE; 10、设置约束状态 P167 (1)创建表时禁用约束
CREATE TABLE S (SNO CHAR(11) PRIMARY KEY DISALBE,?); 利用ALTER TABLE?DISABLE禁用约束
ALTER TABLE STUDENT DISABLE CONSTRAINT S_CK1;
ALTER TABLE STUDENT DISABLE UNIQUE (sname);
禁用主键约束、惟一性约束时,会删除其对应的惟一性索引,而在重新激活时,Oracle为它们重建惟一性索引。若在禁用约束时,保留对应的惟一性索引,可使用ALTER TABLE?DISABLE?KEEP INDEX语句。
ALTER TABLE STUDENT DISABLE UNIQUE (sname) KEEP INDEX; ALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP INDEX;
若当前约束(主键约束、惟一性约束)列被引用,则需要使用ALTER TABLE?DISABLE?CASCADE语句同时禁用引用该约束的约束。
ALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP INDEX CASCADE; 激活约束
创建或添加约束时,默认为激活状态。
利用ALTER TABLE?ENABLE?语句激活约束
ALTER TABLE STUDENT ENABLE UNIQUE (sname);
禁用主键约束、惟一性约束时,会删除其对应的惟一性索引,而在重新激活时,Oracle为它们重建惟一性索引,可以为索引设置存储位置和存储参数(索引与表尽量分开存储)。 ALTER TABLE STUDENT ENABLE PRIMARY KEY
USING INDEX TABLESPACE indx STORAGE(INITIAL 32K NEXT 16K); 通过ALTER TABLE ? MODIFY ? DISABLE| ENABLE 语句改变约束状态 ALTER TABLE STUDENT MODIFY CONSTRAINT S_CK2 DISABLE; 11、创建两个表,其约束都是可延迟的。P168 CREATE TABLE new_dept(
deptno NUMBER PRIMARY KEY DEFERRABLE INITIALLY IMMEDIATE, dname CHAR(11) UNIQUE );
CREATE TABLE new_emp(
empno NUMBER PRIMARY KEY, ename CHAR(11),
deptno NUMBER CONSTRAINT NE_FK REFERENCES new_dept(deptno) ON DELETE CASCADE DEFERRABLE );
12、将new_emp表的外键约束检查延迟。 P168
ALTER TABLE new_emp MODIFY CONSTRAINT NE_FK INITIALLY DEFERRED;
14、将new_emp表外键约束延迟到事务结束后进行检查,因此可以先向new_emp中插入数据,而后向new_dept中插入数据。 P168 INSERT INTO new_emp VALUES(1,'ZHANG',11); INSERT INTO new_dept VALUES(11,'COMPUTER'); COMMIT;
15、操作完后,应将new_emp外键约束检查恢复原来状态。 P169
ALTER TABLE new_emp MODIFY CONSTRAINT NE_FK INITIALLY IMMEDIATE; 注意
在修改约束的检查延迟性时,如果无法确定约束的名称或需要设置多个约束的延迟性,可以一次性将所有可延迟的约束延迟或恢复。 SET CONSTRAINT ALL DEFERRED;
SET CONSTRAINT ALL IMMEDIATE; 17、查看student表中的所有约束。 P169 SELECT CONSTRAINT_NAME,
CONSTRAINT_TYPE,DEFERRED,STATUS FROM USER_CONSTRAINTS
WHERE TABLE_NAME='STUDENT';
18、查看student表中各个约束所作用的列。 P169 SELECT CONSTRAINT_NAME, COLUMN_NAME
FROM USER_CONS_COLUMNS WHERE TABLE_NAME='STUDENT'; 18、列的添加、删除、修改 P170 (1)添加列:ALTER TABLE employee
ADD(phone VARCHAR2(11),hiredate DATE DEFAULT SYSDATE NOT NULL); (2)修改列的类型
ALTER TABLE employee MODIFY ename CHAR(20); ALTER TABLE employee MODIFY phone NUMBER; (3)修改列名
ALTER TABLE employee RENAME COLUMN ename TO employee_name; (4)删除列
ALTER TABLE sc DROP COLUMN sno CASCADE CONSTRAINTS; ALTER TABLE employee DROP (phone,hiredate); (5)将列标记为UNUSED,然后进行删除。
ALTER TABLE player SET UNUSED COLUMN sage; ALTER TABLE player SET UNUSED (sname,resume); ALTER TABLE player DROP UNUSED COLUMNS; 19、表的参数修改 P171
例如:修改表employee的存储参数 ALTER TABLE employee
PCTFREE 30 PCTUSED 60 STORAGE(NEXT 512K PCTINCREASE 11); 20、表的重命名 P172
例如,为employee 表重命名
SQL>RENAME EMPLOYEE TO NEW_EMPLOYEE;
Sql>ALTER TABLE NEW_EMPLOYEE RENAME TO EMPLOYEE; 21、删除表 P172
SQL>drop table tablename; 22、创建非惟一性索引 P177
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); 创建反序索引
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典教育范文教材例题 - 习题(6)在线全文阅读。
相关推荐: