D、SELECT DISTINCT(class), AVG(score) FROM test WHERE class<3 14. 观察STUDENT表的表结构: STD_ID NUMBER(4) COURSE_ID VARCHAR2(10) START_DATE DATE END_DATE DATE
下面聚合函数的使用正确的有?(请选出两项) A、SUM(start_date) B、AVG(start_date) C、COUNT(start_date) D、AVG(start_date, end_date) E、MIN(start_date) F、MAXIMUM(start_date)
MAX(column_name)、MIN(column_name)、COUNT(column_name):它们的聚合对象可以是日期(DATE)、字符(VARCHAR/VARCHAR2)、数值类型(NUMBER); SUM(column_name)、AVG(column_name):它们的聚合对象只能是数值(NUMBER) 15. 哪些字段适合建立索引?( ) A、在select子句中的字段 B、外键字段 C、主键字段
D、在where子句中的字段
三、填空(每题4分 * 15 = 60分)
1、添加约束SQL语法:alter Table table add[Constraint cname] type(column) 2、修改表结构SQL语法:
添加列:alter table 表名 add (列名 数据类型 [,列名 数据类型] ...); 修改列:alter table 表名 modify (列名 数据类型 [,列名 数据类型] ...); 3. 授权的Sql关键字grant,收回权限的Sql关键字revoke。
4、在oracle中,权限分为2类,分别为:系统权限、对象权限;(3类要加上角色) 5、连接的3种类型,分别为FULL/outer JOIN、inner join、cross join交叉连接; 6、标谁的SQL语句类型可分为:、 DQL、DML、DCL、DDL; 7、序列包含两个伪例可分为:、nextval、currval。
8、创建索引使用:create index indexName on tname(value)、创建视图使用: create view emp-view as select employee-id,last-name,salary from tname
9、事务的4个特性:ACID特性原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持久性( Durability )。
10、Oracle数据库常用数据类型:char varchar number(p,s) date timestamp(时间戳) clob blob rownum
在表中_rowid_____伪列记录了行的物理地址,而__rownum____伪列是对行的动态编号 四、SQL编程(每题5分 共80分)
1.说明:以下题,如无特别说明,以scott账号下的4张表(EMP,DEPT,SALGRADE, BONUS)为操作对象 1、列出所有办事员的姓名、编号和部门 2、找出部门10中所有经理和部门20中的所有办事员的详细资料 3、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料 select * from emp where deptno =10 and job='MANAGER' UNION select * from emp where deptno =20 and job='CLERK' UNION SELECT * FROM EMP WHERE JOB NOT IN('MANAGER' ,'CLERK') AND SAL>=2000 4、找出早于25年之前受雇的雇员 SELECT * FROM EMP where (SYSDATE-HIREDATE)/365>25 5、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,将最早年份的项目排最前面 select ename,to_char(hiredate,'yyyy'),to_char(hiredate,'MM') FROM EMP ORDER BY to_char(hiredate,'yyyy'),to_char(hiredate,'MM') 6、以年、月和日显示所有雇员的服务年限 SELECT trunc((SYSDATE-HIREDATE)/365)||'年', trunc(mod((SYSDATE-HIREDATE),365)/30)||'月', trunc(mod(mod((SYSDATE-HIREDATE),365),30))||'日' FROM EMP 7、列出从事同一种工作但属于不同部门的雇员的 8、列出分配有雇员数量的所有部门的详细信息, select * from dept,( select deptno from emp group by deptno) t where dept.deptno=t.deptno 9列出每个部门的信息以及该部门中雇员的数量 select * from dept,( select deptno,count(*) num from emp group by deptno )t where dept.deptno=t.deptno 10列出至少有一个员工的所有部门 select * from dept,( select deptno from emp group by deptno) t where dept.deptno=t.deptno 11列出各个部门的MANAGER(经理)的最低薪金 select MIN(SAL) from emp where job='MANAGER' GROUP BY DEPTNO 12、复制emp表结构及数据(备分表名称为empback); create table empback as select * from emp 13、创建一张与emp表结构一样的表(不需要emp表数据)、 create table empback as select * from emp where null=null 14、查询emp表中第31条到40条之间的数据(分页) select * from ( select rownum n,t.* from ( select * from emp ) t where rownum <=20) where n>=10 15 已知表tabA结构如下,删除表tabA中属性t_name值重复的行 Create table tabA( t_id number, t_name varchar2(20) ) Insert into tabA (‘1’,’a); Insert into tabA (‘2’,’a); Insert into tabA (‘3’,’b); Insert into tabA (‘4’,’b); Insert into tabA (‘5’,’c); delete from tabA where t_id not in( select min(t_id) from tabA group by t_name having count(*)>=2 ) and t_name in( select t_name from tabA group by t_name having count(*)>=2 ) 16、显示雇员表中雇员的姓名,职务,薪水,部门表中的部门名称、地址以及工资等级表中的工资等级 select * from emp e,dept d,salgrade s where e.deptno=d.deptno and e.sal between losal and hisal
2.某学校要对学生成绩进行计算机管理。该学校有若干学生,每个学生有学号(sno)、班级(sclass)、姓名(sname)、性别(ssex)、出生日期(sbirthday)、地址(saddr)。开设的课程
需要管理课程编号(cno)、课程名称(cname)、学分(credit)和学生选修该课程后的成绩(score)等信息。该学校规定:一个学生可以有选修多门课程,一门课程可以有多名学生选修。
(1)画出此管理系统的ER模型。
(2)将以上ER模型转化为关系模式,包括主键、外键。 学生表(学号 班级 姓名 性别 出生年月 地址) 主键:学号 课程表(课程编号 课程名称 学分)主键:课程编号
选课表(学号 课程编号 成绩)主键:学号 课程编号 外键:学号→学生表.学号 课程编号→课程便.课程编号
(3)试用SQL语句表示以下数据编辑:
a)将新生“张三”插入学生表(其它属性自设); b)删除学号为“0001”的学生的选课信息; 删除delete选课表即可。
如果删除“001”学生,要先删除子表选课表,再删除学生表。 c)将所有选修了“数据库”课程的学生成绩提高5%。
五、简答题(共20分)
1、简述数据库三大范式,并举例说明 ①列不可再分②非主键列完全依赖于主键(表中所有列都必须依赖主键)③非主键列不依赖于其他非主属性(每列只与主键直接相关) 2、简述Oracle的五种约束条件
默认主外非空唯一①default②primary key③not null④unique⑤foreign key 3、请说明你有哪些办法提高SQL执行效率? 尽量全值匹配,索引多列时遵循左前缀法则; 不在索引上做计算、函数、类型转换操作; select子句中避免使用“*”;
避免使用耗费资源的操作:distinct/union/minus/intersect/order by; 范围条件后索引失效; 尽量使用覆盖索引; 慎用不等于;
Like查询注意以通配符开头索引失效; Or改union效率高; Exist替换in;
4、请简介数据库事务的四个特性。 ACID:
原子:所包含的操作,要么全部成功,要么全部失败回滚;
一致:执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态; 隔离:一个事务的执行不能干扰其他事务; 持久:事务一旦提交,改变为永久。
5、简述DML DDL DQL DCL分别包含哪些具体的操作。 DML:upadate/insert/delete DQL:select/from/where
DDL:create/table/view/sequence/index/produce/function/syn/cluster DCL: grant/rollback/commit