加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网_ASP源码网 (https://www.1asp.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle和Mysql数据库技术

发布时间:2020-12-30 23:15:27 所属栏目:站长百科 来源:网络整理
导读:1.查资料,回答下面问题: a.Oracle公司的诞生和发展 (1)1977年程序员埃里森和另外两名程序员创建了软件开发实验室(Software Development Laboratories)。 (2)1970年IBM的一名研究人员写了一篇名为《大型共享数据库的关系数据模型》的论文,埃里森3人受到


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源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读