|
Union: 是将两个或者两个以上的结果集合并在一起; Minus: 是从一个结果集中减去一部分结果集。
26.Oracle中, union、 minus和intersect?的作用。
27.【上机】Oracle中,用minus的办法求薪水最高的第6到第10名雇员。
select * from ((select ename,rownum from (select ename,rownum as rn from emp order by sal desc) t where rownum<=10) minus (select ename,rownum as rn2 fromemp order by sal desc) d where rownum<=5)) order by sal desc;
28.【上机】使用create table empCopy as Select * from emp;复制一张新表出来。
29.【上机】为新表增加记录,测试一下。
insert into empCopy values (7787,‘amenda‘,‘secretary‘,7788,to_date(‘1988/04/08‘,‘YYYY/MM/DD‘),3000,1500,10);
30.【上机】将新表中所有人的薪水翻番。
update empCopy set sal=sal*2;
31.【上机】将表中薪水大于5000的人全部删掉。
delete empCopy where sal>5000;
32.truncate和delete有什么区别?
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同: 二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 TRUNCATE TABLE:删除内容不删除定义,释放空间。 DELETE TABLE:删除内容不删除定义,不释放空间。
33.【上机】练习使用DML语句,完成如下一系列操作:
a)创建班级表: id为主键 班级名称 班级成立时间 班级毕业时间 班级所在教室 create table sclass( classid number not null primary key, classname varchar(50) not null, classstarttime date not null, classgraduatetime date not null, classroom varchar(50)not null ) b)创建学生表: 建立一张用来存储学生信息的表,表中的字段包含了学生的学号、姓名、年龄、入学日期、年级、班级、email等信息,并且为grade指定了默认值为1,如果在插入数据时不指定grade得值,就代表是一年级的学生. 姓名不能为空。 email必须唯一,不能重复。 id为主键 classId作为外键关联到班级表的主键上。 create table STUDENT ( STUID NUMBER not null, SNAME VARCHAR2(20) not null, AGE NUMBER, SEX VARCHAR2(2), ENTERDATE DATE, CLASSID NUMBER, GRADE VARCHAR2(50) default 1, EMAIL VARCHAR2(50) )
alter table STUDENT add constraint PK_STUID primary key (STUID)
alter table STUDENT add constraint UNIQUE_EMAIL unique (EMAIL) alter table STUDENT add constraint FK_CLASSID foreign key (CLASSID) references CLASSGROUP (CLASSID); c)增加2个班级 insert into sclass values(1,‘百合班‘,to_date(‘2009/08/08‘,to_date(‘2012/08/08‘,‘101‘); insert into sclass values(2,‘牵牛花班‘,to_date(‘2010/08/08‘,to_date(‘2013/08/08‘,‘202‘); d)增加4个学生,并且每个学生都放到相应班级里面 举例: insert into student values(9,‘赵照‘,22,‘男‘,to_date(‘2010/08/09‘,1,‘[email?protected]‘); insert into student values(10,‘孙黎‘,22,‘[email?protected]‘); e)如何删除其中某个班级 (1)先要解除学生表中对班级的外键约束: alter table STUDENT1 drop constraint FK_CLASSID1 (2)删除某个班级,如: delete sclass where classid=1; f)为班级表增加新的字段:教室地址 alter table sclass add address varchar(50) g)删除学生表 drop table student
34.什么是事务?为什么需要事务?(查资料说明)
事务是指作为单个逻辑工作单元执行的一组相关操作,这些操作要求全部完成或者全部不完成。事务使使数据库从一种状态变换成为另一种状态,是数据库所特有的。 使用事务的原因:保证数据的安全有效。
35.说出事务的特点?
事务的特性有四个:简称ACID即 1、原子性(Atomic):事务中所有数据的修改,要么全部执行,要么全部不执行。 2、一致性(Consistence):事务完成时,要使所有的数据都保持一致的状态,换言之:通过事务进行的所有数据修改,必须在所有相关的表中得到反映。 3、隔离性(Isolation):事务应该在另一个事务对数据的修改前或者修改后进行访问。 4、持久性(Durability):保证事务对数据库的修改是持久有效的,即使发生系统故障, 也不应该丢失。
36.一个事务,什么时候开启?什么时候结束?
?
Oracle的事务开始于一个DML(数据库管理语句,如:create、drop、rename、alter)语句。
当以下情况发生时,事务结束:
1、COMMIT/ROLLBACK
2、执行了DDL(数据库定义语句)/DCL(数据库控制语句)语句
3、客户端主动断开数据库的连接(DISCONNECT)
4、数据库关闭(宕机)
另外,一个DDL/DCL语句实际上就是一个事务,其中隐含了COMMIT。
Oracle不需要特别的去指定事务的开始和结束。一个事务的结束就是下一个事务的开始。
37.回退后,是不是指回退到事务执行前数据库的状态?
如果设置了savepoint,则回滚到上一个savepoint;如没设置savepoint,则回滚到事务执行前的状态。
38.简述事务提交和事务回退之后,数据库的状态。
39.事务没有提交。其他用户会不会看到事务的执行结果?
不会。
40.【上机】模仿老师课堂代码,做实验测试事务。
41.索引有什么作用?
索引是一种供服务器在表中快速查找一个行的数据库结构。合理使用索引能够大大提高数据库的运行效率,具体如下: (1)快速存取数据。 (2)既可以改善数据库性能,又可以保证列值的唯一性。 (3)实现表与表之间的参照完整性 (4)在使用orderby、groupby子句进行数据检索时,利用索引可以减少排序和分组的时间。
42.数据库的索引是什么?为什么使用索引之后查询数据会很快?
43.什么字段适合做索引?什么字段不适合做索引?
应该建索引列的特点: 1) 在经常需要搜索的列上,可以加快搜索的速度;? 2) 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;? 3) 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;? 4) 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;? 5) 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;? 6) 在经常使用在WHERE 子句中的列上面创建索引,加快条件的判断速度。? 不应该建索引列的特点: 1)对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。? 2)对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。? 3)对于那些定义为blob数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。? 4)当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。?
?
44.选取索引的字段有什么技巧,什么字段适合做索引?
45.【上机】针对emp表的ename创建索引。然后删除。
创建:create index index_on_emp on emp(ename); 删除:drop index index_on_emp;
46.序列也是一种数据库对象,不只Oracle有,其他数据库也有。
是oacle提供的用于产生一系列唯一数字的数据库对象。
?
47.简述序列的作用,并说明哪些数据库包含序列?
48.【上机】创建一个序列(初始值从1000开始,按照10递增). 然后,使用这个序列维护emp表的empno字段的值。
create sequence seq_emp increment by 10 start with 1000 cache 20;
49.【上机】删除5题中创建的序列
drop sequence seq_emp;
50.列出视图的几个作用?
1.视图是什么? (1)视图只是一条select语句,并不会存储表对应数据。 (2)查询视图就是查询表,添加视图就是向数据库表中添加数据。 2.视图作用 (1)安全,只读,只操作部分行部分列。 (2)简化操作。
?
51.解释说明什么叫做视图并说明视图的作用。
见上题。
52.【上机】使用视图重构下面的代码,以前的作业(求平均薪水的等级最低的部门)
select dname,grade from (select deptno,avg_sal,avg(sal) avg_sal from emp group by deptno) t, salgrade s where t.avg_sal between s.losal and s.hisal ) t1, dept where t1.deptno = dept.deptno and t1.grade = (select min(grade) from (select deptno, salgrade s where t.avg_sal between s.losal and s.hisal ) );
添加创建视图的语句即可: create view dname_with_lowest_sal_grade as select语句……(略)
?
53.Power Designer软件是用来做什么的?上网查询资料,说明这个软件的历史。
(编辑:安卓应用网_ASP源码网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|