青软实训-锐聘学院-Oracle作业

做的不一定对,有错误可以告诉我。

Excise 1.1

理论练习

1、Oracle是__ 对象关系型 __数据库管理系统。

2、Oracle 9i中的i和Oracle 10g、Oracle11g中的g各代表什么意思。

I:Internet,因特网
G:grid,网格计算

3、Oracle11g中的g表示(C)。

A 网络 B 数据库 C 网格计算 D 版本

面试笔试题

1、Oracle跟SQL Server 2005的区别?

1. 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windows平台的稳定性和安全性影响了sql server的稳定性和安全性
2. oracle使用的脚本语言为PL-SQL,而sql server使用的脚本为T-SQL

2、对数据库SQL2005、Oracle熟悉吗?

3、数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间的关系是___A___。(选择1项)

A)DBS包括DB和DBMS B)DBMS包括DB和DBS

C)DB包括DBS和DBMS D)DBS就是DB,也就是DBMS

Excise 1.2

理论练习

1、 完全卸载Oracle 11g时,需要进行的第一步操作是( A )。

A 停止所有的Oracle服务 B 启动Oracle的卸载向导

C 删除磁盘上的Oracle文件 D 删除数据库Orcl

2、 安装Oracle数据库过程中SID指的是什么( B )。

A 系统标识号 B 数据库名 C 用户名 D 用户口令

上机练习

1、 下载Oracle安装包,在本机安装Oracle数据库

登录U+账号后,点击此处下载。

2、 在本机卸载Oracle数据库

1. 停用oracle服务:进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止
2. 在开始菜单中,找到Universal Installer,运行Oracle Universal Installer,单击卸载产品
3. 在产品清单窗口中,单击全部展开,除了OraDb11g_home1外,勾选其他项目,单击删除
4. 按Windows徽标键和R键,打开运行窗口,输入regedit,打开注册表,依次展开HKEY_LOCAL_MACHINE\SOFTWARE,找到oracle,删除
5. 依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中,删除所有oracle开头的项
6. 依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除所有oracle开头的项;
7. 重启电脑,删除oracle目录,删除Oracle的安装目录app等

Excise 1.3

理论练习

1、 Oracle网络配置分为服务器端和客户端,监听程序的配置是在__服务器端___ 。

2、 监听程序与Net服务名的关系是怎样的?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDcPq32Y-1609048919433)(img/p1.3.1.png)]
监听程序:Oracle…TNSListener
Net服务名:OracleService…

上机练习

1、完成Oracle数据库监听器及客户端的配置

Excise 1.4

理论练习

1、 要开启Oracle服务器,必须开启的两个服务是( D )。

A.OracleHOME_NAMETNSListener和OracleHOME_NAMEAgent

B.OracleServiceSID和OracleHOME_NAMEHTTPServer

C.OracleHOME_NAMEAgent和OracleServiceSID

D.OracleHOME_NAMETNSListener和OracleServiceSID

上机练习

1、 查看Oracle数据库安装后,系统的服务增加了哪些,开启相关服务,启动Oracle数据库

2、 关闭相关服务,关闭Oracle数据库

Excise 1.5

理论练习

1、 Oracle服务器的两个主要组件:_ 文件_、__ 内存__ 。

2、 实例由__Oracle DB___ 和___Oralce Server__ 组成。

3、 Oracle的物理结构包括___数据文件___、___控制文件___、___日志文件___。

4、 当Oracle服务器启动时,下列哪种文件不是必须的( D )。

A 数据文件 B 控制文件 C 日志文件 D 归档日志文件

5、 在Oracle中,一个用户拥有的所有数据库对象统称为( B )。

A 数据库 B 模式 C 表空间 D 实例

6、 在Oracle数据库的逻辑结构中有以下组件:ABCD

A 表空间 B 数据库 C 区 D 段

这些组件从大到小依次是( B-A-D-C

A A->B->C->D B A->D->C->B C A->C->B->D D D->A->C->B

7、 在Windows操作系统中,Oracle的( B )服务器监听并接受来自客户端应用程序的连接请求。

A OracleHOME_NAMETNSListener B OracleServiceSID

C OracleHOME_NAMEAgent D OracleHOME_NAMEHTTPServer

8、 关于模式的描述下列哪一项不正确?( C

A 表或索引等模式对象一定属于某一个模式

B 在Oracle数据库中,模式与数据库用户是一一对应的

C 一个表可以属于多个模式

D 一个模式可以拥有多个表

9、判断:Oracle数据库的表空间内存的逻辑对象为段,段由盘区组成,而盘区又由多个数据块组成。(

面试笔试题

1、介绍一下oracle的体系结构?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ORWBREpW-1609048919438)(img/p1.5.1.png)]

2、下列不属于Oracle逻辑结构的是( C )。

A 区 B 段 C 数据文件 D 表空间

3、Oracle中有哪几种文件?

数据文件、控制文件、日志文件

4、解释data block , extent , segment和tablespace的区别?

@import “img\数据库存储总图.png”

block:块,最小的数据管理单位
extent:区:存储分配的最小单位
segment:段,一个或多个连续的区组成
tablespace:表空间

数据库由一个或多个表空间组成
表空间由一个或多个数据文件组成,一个表空间包含多个段
段由一个或多个区组成
区是数据文件中一个连续的分配空间,由一个或多个块组成
块是数据库中最小、最基本的单位,是数据库使用的最小的I/O单元
每个用户都有一个对应的方案

Excise 1.6

上机练习

1、 使用Oracle 11g特有的企业管理器连接Oracle数据库

2、 使用Oracle自带的客户端工具sqlplus连接Oracle数据库

@import “img/p1.6.2.png”

3、 安装PLSQL Developer图形化工具,并使用该客户端工具连接Oracle数据库

@import “img/p1.6.3.png”

Excise 2.1

理论练习

1、 判断:表空间是Oracle最大的逻辑组成部分。Oracle数据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。( 数据库

2、 判断:表空间分为永久表空间和临时表空间两种类型。( 系统/非系统

3、 判断:Oracle数据库的逻辑存储结构主要由表空间构成。(

上机练习

1、 在Web版企业管理器中,创建名称为mytablespace的表空间。为表空间增加一个名为datafile01的数据文件,大小为100M。然后编辑该表空间,为其添加一个datafile02的数据文件,大小为50M。

2、 在PLSQL Developer中创建用户myname,密码为123456,将其默认的表空间修改为mytablespace。

@import “code\2.1.1.ans.sql”

3、 在sqlplus中创建名称为user_data的表空间,为表空间增加一个名为user_data的数据文件,大小为50M;创建名称为user_temp的临时表空间,并增加一个名为user_temp的数据文件,大小为50M。
删除创建成功的表空间与临时表空间。

@import “code\2.1.2.ans.sql”

面试笔试题
1、在Oracle中创建用户时,若未提及DEFAULT TABLESPACE关键字,则Oracle就将___C___

表空间分配给用户作为默认表空间。

A)HR B)SCOTT C)SYSTME D)SYS

Excise 2.2

理论练习

1、 下面哪个用户不是Oracle缺省安装后就存在的用户( A )。

A SYSDBA B SYSTEM

C SCOTT D SYS

上机练习

1、 在SQL*PLUS下创建用户qst,密码为123456,默认表空间为user_data,临时表空间为user_temp;

修改用户qst密码为123;

锁定和解锁用户qst;

删除用户qst

@import “code/2.2.2.sql”

2、 在PLSQL Developer中创建用户qst1,密码为123456,默认表空间为user_data,临时表空间为user_temp;

修改用户qst1密码为123;

锁定和解锁用户qst1;

删除用户qst1

@import “code/2.2.2.ans.sql”

面试笔试题
1、 Oracle有哪些用户?其默认口令和权限是什么?

sys system scott
manager manager tiger

Excise 2.3

理论练习

1、 判断:DBA角色具有全部系统权限。(

2、 判断:每一个数据库用户必须具有RESOURCE角色才能登录到Oracle数据库中,所以RESOURCE角色用户是权限最低的用户。(

上机练习

1、 在SQL*PLUS下为用户qst赋予连接数据库的权限,以及访问scott中emp表的权限;

@import “code/2.3.1.ans.sql”

2、 在SQL*PLUS下对用户qst回收连接数据库的权限,以及访问scott中emp表的权限;

@import “code/2.3.2.ans.sql”

3、 在SQL*PLUS下为用户qst赋予连接并访问数据库的角色:connect,resource;

@import “code/2.3.3.ans.sql”

4、 在SQL*PLUS下实现权限的传递:scott用户中对emp表的访问权限通过权限传递授予qst,用户qst再把该权限授予qst1;
@import “code/2.3.4.ans.sql”

5、 在SQL*PLUS下创建角色、删除角色;
@import “code/2.3.5.ans.sql”

6、 在PLSQL Developer中为用户qst1赋予连接并访问数据库的角色:connect,resource

SQL> grant connect,resource to qst1;

Grant succeeded

面试笔试题

1、下面哪个操作会导致用户连接到Oracle数据库,但不能创建表( A )。

A 授予了CONNECT的角色,但没有授予RESOURCE的角色

B 没有授予用户系统管理员的角色

C 数据库实例没有启动

D 数据库监听没有启动

2、授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是( C )。

A GRANT CHANGE ON SCOTT.EMP TO SA

B GRANT UPDATE ON SCOTT.EMP(SAL) TO SA

C GRANT UPDATE (SAL) ON SCOTT.EMP TO SA

D GRANT MODIFY ON SCOTT.EMP(SAL) TO SA

Excise 3.1

理论练习

1、 SQL缩写的含义是__结构化查询语言,_Structured_Query_Language___。

2、 SQL语言的组成包括___数据定义语言(DDL) 数据操作语言(DML)_、___数据控制语言(DCL)___、___事务控制语言(TCL)___四种。

3、 简述DDL、DML、DCL、TCL缩写分别代表的含义是什么,其包含的SQL语句分别有哪些?

数据定义语言(DDL,Data Definition Language):创建或删除表格。也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
CREATE/ALTER DATABASE、CREATE/DROP/ALTER TABLE、CREATE/DROP INDEX

数据操作语言(DML,Data Manipulation Languag):供用户实现对数据的增删改查等操作。
SELECT、UPDATE、DELETE、INSERT INTO
数据控制语言(DCL):
事务控制语言(TCL):

4、常用的伪列有哪两个,他们之间的区别是怎样的?

面试笔试题

1、 用来存放可变长度字符串的类型是:____VARCHA2

2、 关于类型定义Number(9,2)说法正确的有___B___。

A)整数部分9位,小数部分2位,共11位 B)整数部分7位,小数部分2位,共9位
C)整数部分6位,小数点一位,小数部分2位,共9位 D)以上说法均不正确

3、 在PL/SQL块中定义一个名为PI值为3.14的常量的语法是____D___。

A)PI Const number=3.14; B)PI Real number =3.14;
C)Constant PI number:=3.14 D)PI Constant number:=3.14

4、 ___C__consta_是指组成表的各列的名称及数据类型,也就是日常表格的“栏目信息”。

A)表型 B)记录 C)字段 D)关键字

Excise 3.2

理论练习

1、 数据定义语言,缩写为____DDL____ ,用于改变数据库结构,包括创建、_____删除____ 和 _____ 更改____数据库对象。

2、 用于操纵表结构的数据定义语言命令有哪些?

create/drop/alter/truncate

3、 Truncate与Drop的区别是什么?

TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。DROP删除表定义及其数据。

上机练习

1、 某学校要建立一个学生选课系统,分为以下三张表:

1.s学生表:

字段名称 数据类型 是否可为空
学号(PK)sno varchar2(10)
学生姓名sname varchar2(20)

2.c课程表:

字段名称 数据类型 是否可为空
课程号(PK)cno varchar2(5)
课程名称cname varchar2(20)
任课老师cteacher varchar2(20)

3.sc学生选课表

字段名称 数据类型 是否可为空
学号sno(FK) varchar2(10)
课程号cno(FK) varchar2(5)
成绩scgrade varchar2(20)

①请依次创建这三张表。

SQL> 
SQL> create table s(
  2      sno varchar2(10) primary key,
  3      sname varchar2(20)
  4  );

Table created


SQL> create table c(
  2      cno varchar2(5) primary key,
  3      cname varchar2(20),
  4      cteacher varchar2(20)
  5  );

Table created


SQL> create table sc(
  2      sno varchar2(10),
  3      cno varchar2(5),
  4      scgrade varchar2(20) not null,
  5      foreign key(sno) references s(sno),
  6      foreign key(cno) references c(cno)
  7  );

Table created

②修改表s,为其增加一列stel(电话);

SQL>  alter table s add tel varchar2(11);

Table altered

③修改表c,将其“课程名称”列的数据类型长度增加一倍;


SQL> alter table c modify cname varchar2(40);

Table altered
 

④修改表sc,将其“成绩”列名改为“总分”;
@import “code\3.2.4.sql”

⑤删除表c;
@import “code\3.2.5.sql”

⑥重命名表s为ss;
@import “code\3.2.6.sql”

面试笔试题

1、 表userInfo中有三个字段(userID、userName、userAddress),现在要删除字段 userAddress,正确的命令是____B___。

A)UPDATE userInfo DROP COLUMN userAddress

B)ALTER TABLE userInfo DROP COLUMN userAddress

C)ALTER userInfo DROP COLUMN userAddress

D)ALTER TABLE userInfo DELETE COLUMN userAddress

2、要将表userInfo从数据库中删除,所用的命令是:______drop table userInfo;_________。

3、SQL语言中,用来创建、修改及删除数据库对象的语言被称为:数据库操作语言_。

4、比较truncate、delete和drop命令。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。
新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。
如果要删除表定义及其数据,请使用 DROP TABLE 语句。

Excise 3.3

理论练习

1、 根据数据完整性机制所作用的数据库对象和范围不同,数据完整性可分为____ 实体完整性 __ 域完整性 ______、 ____ 参照完整性 ____ 、______用户自定义完整性____四种类型。

2、 对实体完整性进行约束的方法有___非空约束___、___唯一约束___。

3、 对引用完整性进行约束的方法可以是____ 添加外键约束____。

4、 在数据完整性当中,____域完整性____可以用检查约束、非空约束,或者默认值方法进行约束。

5、 在数据完整性当中,可以用触发器进行约束的是________。

6、 常见的五大约束分别为____主键约束非空约束唯一约束检查约束__、默认约束。

上机练习

1、 结合视频和综合设计题1,完成表的创建,并添加相应的约束。

2、 在3.2章节“上机练习”中,为表s的sno,表c的cno添加主键约束;为表sc中的sno和cno添加外键约束,scgrade列添加非空约束;为 表s中新添加的的stel列添加唯一约束。


SQL> alter table s add constraint PK_s_sno primary key(sno);

Table altered


SQL> alter table c add constraint PK_c_cno primary key(cno);

Table altered


SQL> alter table sc add constraint FK_sc_sno foreign key(sno) references s(sno);

Table altered


SQL> alter table sc add constraint FK_sc_cno foreign key(cno) references c(cno);

Table altered


SQL> alter table sc modify scgrade constraint NN_sc_scgrade not null;

Table altered


SQL> alter table s add constraint UN_s_tel unique(tel);

Table altered



3、 新创建一张带有约束的雇员表emptest,表结构如下:

属性 数据类型 相应约束
员工编号 number(3) 主键
姓名 varchar2(20) 非空
性别 varchar2(2) 默认为“男”,且性别只能为“男”或“女”
生日 date

请问该如何创建这张表?

@import “code\3.3.3.sql”

面试笔试题

1、唯一约束与主键约束的一个区别是___D____?

A)唯一约束的列的值不可以有重复值 B)唯一约束的列的值可以不是唯一的

C)唯一约束的列不可以为空值 D)唯一约束的列可以为空值

2、在关系数据库中,建立数据库表时,将年龄字段值限制在12~40岁之间的这种约束属于___B___。

A)视图完整性约束 B)域完整性约束 C)参照完整性约束 D)实体完整性约束

3、假设需要为表 customer 添加主键约束,主键列为 customer_id,可以使用如下____BD____

方式。(选择2项)
A)Alter table CUSTOMER ADD pk_customer primary key (“customer_id”);
B)Alter table CUSTOMER ADD primary key (“customer_id”);
C)Alter table CUSTOMER ADD constraint pk_customer (“customer_id”);
D)Alter table CUSTOMER ADD constraint pk_customer primary key (“customer_id”);

4、Oracle会为______主键________约束自动建立索引。
5、 已知关系:厂商(厂商号,厂名)PK=厂商号

产品(产品号,颜色,厂商号)PK=产品号,FK=厂商号,表如下:

厂商号 厂名
C01 宏达
C02 利仁
C03 广源
产品号 颜色 厂商号
P01 C01
P02 C03

若再往产品表中插入如下记录:

I(P03,红,C02)
II(P01,蓝,C01)
III(P04,白,C04)
IV(P05,黑,null)

能够插入的记录是___D____。

A)I,II,IV B)I,III C)I,II D)I,IV

6、在以下哪几种情况下使用唯一约束而不使用主键约束:AB_ (选择2项)

A)列或几个列的组合不是主键 B)列的值允许为空值

C)列有外键引用 D)列的值不允许为空值

Excise 3.4

理论练习

1、 数据操纵语言,缩写为____DML,主要用于增加___、____删除更改____数据。

2、 ______查询_____是最常见的SQL命令。

3、 数据操纵语言命令包括___INSERT___ 、__ DELETE 、_UPDATE、___。

上机练习

1、 在3.2章节的“上机练习”中,向s表中插入数据。插入内容如下:

学号 姓名 电话
10001 王晓明 13112341118
10002 王涵 13212341118
10003 李有才 13312341118
10004 张小小 13412341118
10005 董强 13512341118
SQL> insert into s values(10001,'王晓明',1312341118);

1 row inserted


SQL> insert into s values(10002,'王涵',1312341118);

1 row inserted


SQL> insert into s values(10003,'李有才',1312341118);

1 row inserted


SQL> insert into s values(10004,'张小小',1312341118);

1 row inserted


SQL> insert into s values(10005,'董强',1312341118);

1 row inserted

2、 生成一个新的表s1,表结构与s表基本一致,有“学号”和“姓名”两列,表中内容如下:

学号 姓名
10001 王晓明
10002 王涵

要求用旧表s生成新表s1去实现。

从旧表变成新表,需要从三列变两列。旧表非空,所以需要先使用truncate清空表。删除的列无外部约束,可以直接删除。

SQL> create table s1 as select * from s;

Table created

SQL> truncate table s1;

Table truncated

SQL> alter table s1 drop column tel;

Table altered

-- ORA-12988: 无法删除属于 SYS 的表中的列(可能报错,换个用户就好了)

3、 修改s表中的数据,将董强的电话改为13612341118。


SQL> update s set tel='13612341118' where SNAME='董强';

1 row updated

4、 查询修改后的s表中的全部信息。


SQL> select * from s;

SNO        SNAME                TEL
---------- -------------------- -----------
10001      王晓明               1312341118
10002      王涵                 1312341118
10003      李有才               1312341118
10004      张小小               1312341118
10005      董强                 13612341118

5、 删除s1表中的学号列。


SQL> alter table s1 drop column sno;

Table altered

面试笔试题

1、 比较Truncate和Delete命令。

delete:删除表中的某些记录
trancate:删除表中的所有记录,仅保留表结构。

2、 简述oracle中,dml、ddl、dcl的使用。

DML:SELECT、INSERT、UPDATE、DELETE

DDL:CREATE TABLE、 ALTER TABLE、DROP TABLE、CREATE INDEX、DROP INDEX

DCL :ALTER、GRANT、REVOKE、CREATE

3、下列哪些语句属于DML语句___AD____?(选择2项)

A)select count(*) from dba_tables; B)create table test (a number);

C)alter table test nologging; D)delete from test;

4、UPDATE-SQL语句的功能是___D____。

A)属于数据定义功能 B)属于数据查询功能

C)可以修改表中某些列的属性 D)可以修改表中某些列的内容

5、使用SQL命令将STUDENT中的学生年龄AGE字段值增加1岁,应该使用的命令是___D____。

A)REPLACE AGE WITH AGE+1 B)UPDATE STUDENT AGE WITH AGE+1

C)UPDATE SET AGE WITH AGE+1 D)UPDATE STUDENT SET AGE=AGE+1

6、要删除表userInfo中的所有记录,用_________trancate table userInfo;_delete * from userInto;________两个命令实现?

Excise 3.5

理论练习

1、 为用户提供权限控制命令的语言是___数据控制语言_____,其缩写为____DCL _____。

2、 用于权限控制的命令有____REVOKRGRANT____。

上机练习

1、 假设用户student2创建了表s,表s的表结构和数据参见3.3、3.5章节。现要求把查询、修改表s的权限赋予普通用户student1,该如何操作?
切换用户sys,

grant select,update on s to studente1;

2、 收回student1对表s进行修改的权限,该如何操作?

revoke select,update on s from studente1;

面试笔试题

1、REVOKE 是属于__C___语句?

A)DQL B)DML C)DDL D)DCL

2、GRANT 语句是___C__语句?

A)DQL B)DML C)DDL D)DCL

Excise 3.6

理论练习

1、 _____事务____是指作为一个逻辑单元整体进行工作的一系列操作。

2、 用于事务控制的语句有___BEGIN______ 、____ ROLLBACK _____ 、____COMMIT_____。

3、 事务应该具有四个属性,分别为___原子性____ 、 ____ 一致性___ 、 ___ 隔离性 ____ 、 ___ 持续性____。这四个属性通常称为事务的 ____ 四大 ____特性。

上机练习

1、 向3.2章节“上机练习”中的s表添加两行数据,添加后设置保存点p1,应该如何操作?添加的数据内容如下

学号 姓名 电话
10010 孙燕姿 18600001111
10020 周杰伦 18900002222

SQL> insert into s values(10010,'孙燕姿','18600001111');

1 row inserted


SQL> insert into s values(10020,'周杰伦','18900002222');

1 row inserted


SQL> savepoint p1;

Savepoint created

2、 更新学号为10020的电话为18000000000,更新后设置保存点p2,应该如何操作?


SQL>  update s set tel='18000000000' where sno='10020';

1 row updated


SQL> savepoint p2;

Savepoint created


3、 删除学号为10010的学生记录,删除后设置保存点p3,应该如何操作?


SQL>  delete from s where sno='10010';

1 row deleted


SQL>  savepoint p3;

Savepoint created

4、 分别回滚到p1,p2,p3的状态,查看表s中数据的变化;

错了,应该是分别回到p3,p2,p1的状态。这是p1,p2,p3的情况:因为回到了p1,所以p2和p3就不存在了。
报错:  ORA-01086: 从未在此会话中创建保存点 'P2' 或者该保存点无效

SQL> select * from s;

SNO        SNAME                TEL
---------- -------------------- -----------
10020      周杰伦               18000000000

SQL> rollback to p3;

Rollback complete


SQL> select * from s;

SNO        SNAME                TEL
---------- -------------------- -----------
10020      周杰伦               18000000000

SQL> rollback to p2;

Rollback complete


SQL> select * from s;

SNO        SNAME                TEL
---------- -------------------- -----------
10010      孙燕姿               18600001111
10020      周杰伦               18000000000

SQL> rollback to p1;

Rollback complete


SQL> select * from s;

SNO        SNAME                TEL
---------- -------------------- -----------
10010      孙燕姿               18600001111
10020      周杰伦               18900002222

  

5、 最后提交操作,查看表s中数据的变化。

SQL> commit;

Commit complete


SQL> select * from s;

SNO        SNAME                TEL
---------- -------------------- -----------
10010      孙燕姿               18600001111
10020      周杰伦               18900002222

面试笔试题

1、________包含了一组数据库操作命令,并且所有的命令作为一个整体一起向系统提交或撤消操作请求。

Excise 4.1

理论练习

1、在属性前添加_____unique_____关键字可以保证表中该属性下没有重复的字段。

2、对查询结果进行排序的关键字是_____order by_____。

3、模糊查询中,’%’和’_’的区别是什么?

%:代表一或多个字符
_:代表一个字符

上机练习

1、 下面的语句是否可以执行成功?

select ename , job , sal as salary from emp;

2、 下面的语句是否可以执行成功?

select * from emp;

3、 找出下面语句中的错误:

select empno , ename sal * 12 ANNUAL SALARY from emp

改:
select empno , ename,sal*12 “ANNUAL SALARY” from emp;

4、 显示表dept的结构,并查询其中的全部数据。

@import “code/4.1.4.sql”

5、 显示出表emp中的不重复的岗位job。
@import “code/4.1.5.sql”
6、 选择员工姓名的第三个字母是A的员工姓名。
@import “code/4.1.6.sql”

7、 选择姓名中有字母A和E的员工姓名。
@import “code/4.1.7.sql”

面试笔试题

1、在表authors中查找以 ean 结尾的所有4个字母的作者所在的行。

请选择以下正确的语句____A___。

A)SELECT * FROM authors WHERE au_fname LIKE ‘_ean’

B)SELECT * FROM authors WHERE au_fname LIKE ‘%ean’

C)SELECT * FROM authors WHERE au_fname LIKE ‘[_ean]’

D)SELECT * FROM authors WHERE au_fname LIKE ‘[%]ean’

2、下列的哪个子句在SELECT语句中用于排序结果集___D____?

A)Having子句 B)Where子句 C)From子句 D)Order by子句

3、使用SQL语句从表STUDENT中查询所有姓王的同学的信息,正确的命令是___A____。

A)SELECT * FROM STUDENT WHERE LEFT(姓名,2)=’王’

B)SELECT * FROM STUDENT WHERE RIGHT(姓名,2)=’王’

C)SELECT * FROM STUDENT WHERE TRIM(姓名,2)=’王’

D)SELECT * FROM STUDENT WHERE STR(姓名,2)=’王’

4、___unique_____能够去掉查询中重复的行。

5、‘P%’表示__C____。

A)以P开头 B)以P结束 C)第二个字母是P D)右面第二个字母是P。

6、在表emp中查找字段empno中以两个数字开头第三个字符是下画线“_”的所有记录。

请选择以下正确的语句___D____:

A)SELECT * FROM employee WHERE empid LIKE ‘[0-9][0-9]_%’

B)SELECT * FROM employee WHERE empid LIKE ‘[0-9][0-9]_[%]’

C)SELECT * FROM employee WHERE empid LIKE ‘[0-9]9[_]%’

D)SELECT * FROM employee WHERE empid LIKE ‘[0-9][0-9][_]%’

Excise 4.2

上机练习

1、 对scott用户下的表进行多表链接查询:

① 在一张表中,显示所有员工的姓名ename,部门号deptno和部门名称dname。
@import “code\4.2.1.sql”

② 查询20号部门员工的job和20号部门的loc。

@import “code\4.2.2.sql”

③ 选择所有有奖金comm的员工的ename , dname , loc。
@import “code\4.2.3.sql”

④ 选择在DALLAS工作的员工的ename , job , deptno, dname。
@import “code\4.2.4.sql”

⑤ 选择所有员工的姓名ename,员工号deptno,以及他的管理者mgr的姓名ename和员工号deptno,结果类似于下面的格式

employees Emp manager Mgr
SMITH 7369 FORD 7902

@import “code\4.2.5.sql”

⑥ 查询各部门员工姓名和他们所在位置,结果类似于下面的格式

Deptno Ename Loc
20 SMITH DALLAS

@import “code\4.2.6.sql”

Excise 4.3

理论练习
1、 聚合函数中,表示最小值的函数是____ MIN() ____ ,表示最大值的函数是____MAX()_____ ,求和函数是___SUM()_____ ,求平均值的函数是____AVG()____ ,用来计数的函数是___COUNT()_____ 。

2、 对记录的分组是通过关键字_____GROUP BY_____实现的。

3、 分组查询时,用于过滤掉不符合条件的组的子句是____HAVING____。

上机练习

1、 基于scott.emp表进行一下查询:

① 查询公司员工工资的最大值,最小值,平均值,总和
@import “code\4.3.1.sql”

② 查询各种job的员工工资的最大值,最小值,平均值,总和
@import “code\4.3.2.sql”

③ 查询各种job的员工人数(提示:对job进行分组)
@import “code\4.3.3.sql”

④ 查询员工最高工资和最低工资的差距(DIFFERENCE)
@import “code\4.3.4.sql”

⑤ 查询各个管理者手下员工的最低工资,其中最低工资不能低于800,没有管理者的员工不计算在内
@import “code\4.3.5.sql”

⑥ 查询所有部门的名字dname,所在位置loc,员工数量和工资平均值
@import “code\4.3.6.sql”

⑦ 查询公司的人数,以及在1980-1987年之间,每年雇用的人数,结果类似下面的格式

total 1980 1981 1982 1987
30 3 4 6 7

@import “code\4.3.7.sql”

面试笔试题

1、____GROUP BY____子句实现对一个结果集进行分组和汇总。

2、假定Emp表*有14行记录,有三条记录Comm字段为NULL,则Select count(*) from emp和Select count(Comm) from emp分别返回___14_11____。

3、____AVG()____函数返回的是满足给定条件的平均值。

4、下面有关HAVING子句描述错误的是___B____。

A)HAVING子句必须与GROUPBY子句同时使用,不能单独使用。

B)使用HAVING子句的同时不能使用WHERE子句。

C)使用HAVING子句的同时可以使用WHERE子句。

D)使用HAVING子句的作用是限定分组的条件。

5、____COUNT____函数返回的是满足给定条件的记录数。

Excise 4.4

上机练习

1、 查询和scott相同部门的员工姓名ename和雇用日期hiredate;

@import “code\4.4.1.sql”

2、 查询工资比公司平均工资高的所有员工的员工号empno,姓名ename和工资sal;

@import “code\4.4.2.sql”

3、 查询和姓名中包含字母u的员工在相同部门的员工的员工号empno和姓名ename;
@import “code\4.4.3.sql”

4、 查询在部门的loc为NewYork的部门工作的员工的员工姓名ename,部门名称dname和岗位名称job;
@import “code\4.4.4.sql”

5、 查询管理者是king的员工姓名ename和工资sal。
@import “code\4.4.5.sql”

面试笔试题

1、 rowid,rownum的定义分别是什么?

rowid 是物理地址,用于定位 oracle 中具体数据的物理存储位置, 查询中不会发生变化
rownum 是根据 sql 查询出的结果给每行分配一个逻辑编号,sql 不同可能会导致 rownum 不同

Excise 5.1

理论练习

1、 在Oracle中,表示不等于的操作符有两种,分别是___<>
_!=_____。

2、在Oracle中,连接操作符用____||___表示。

3、在Oracle中,集合操作符有四种,分别为___MINUS ____ 、____ INTERSECT ____、 ___ UNION ALL _______、 ___ UNION_____。

上机练习

1、 查询工资大于1600的员工姓名和工资;

select ename, sal from emp  where sal>1600;

2、 选择工资不在4000到5000的员工的姓名和工资;

select ename,sal  from emp  where sal  not between 4000 and 5000;

3、 选择雇用时间在1981-2-19到1981-12-3之间的员工姓名,JOB和雇用时间HIREDATE;

Select ename, job, hiredate 
from emp  where hiredate
between to_date('1981-2-19','YYYY-mm-dd')
and  to_date('1981-12-3','YYYY-mm-dd');

4、 选择在20和30号部门工作的员工姓名和部门号;

select ename,deptno from emp where deptno in(20,30);

5、 选择在1987年雇用的员工的姓名和雇用时间;


Select ename,hiredate

from emp

where hiredate  between to_date('1987-1-1','YYYY-mm-dd')

and  to_date('1987-12-31','YYYY-mm-dd');

6、 选择公司中没有管理者的员工姓名及JOB;


select ename,job

from emp

where mgr is null;

7、 选择公司中有奖金的员工姓名,工资和奖金级别;


select ename,sal,comm

from emp

where comm is not null

and comm>0;

8、 连接表emp的全部列,各个列之间用逗号连接,列头显示成OUT_PUT(提示:使用连接符||)。

select EMPNO|| ',' || ENAME || ',' || JOB || ',' || MGR || ',' || HIREDATE || ',' || SAL || ',' || COMM || ',' || DEPTNO as "OUT_PUT" from emp;

面试笔试题

1、 Oracle中字符串用什么符号链接?
||

2、设字段变量"工作日期"为日期型,"工资"为数值型,则要表达"工龄大于30年,工资高于1500,且低于1800元"这命令,其表达式是___C____。

A)工龄>30.AND.工资>1500.AND.工资<1800

B)工龄>30.AND.工资>1500.OR.工资<1800

C)INT((DATE()-工作日期)/365)>30.AND.工资>1500.AND.工资

D)INT((DATE()-工作日期)/365)>30.AND.(工资>1500.OR.工资<1800)

3、oracle中的操作符包括哪些类型?

算术,逻辑,比较,集合,连接

Excise 5.2

理论练习

1、 SQL函数分为单行函数、____ 分析函数 ____ 、___聚合函数_____三种。

2、 常用的分析函数有____ row_number() ____ 、____ rank() ____ 、 ____ dense_rank() ____三种。

面试笔试题

1、 说说Oracle中经常使用到的函数。

字符串常用函数、处理数值类型的函数、格式转换函数、日期函数

2、获得当前系统时间的查询语句是___C____。

A)Sysdate B)Select Sysdate

C)Select Sysdate from dual D)以上都可以

Excise 6.1

理论练习

1、数据库用来控制共享资源并发访问的机制是____数据库并发控制____。

Excise 6.2

理论练习

1、 按照锁的粒度进行分类,锁分为____表级锁____、 ____行级锁____和数据库级锁。

2、 锁的粒度和系统开销成________比例关系。

面试笔试题

1、 Oracle的锁有几种,定义分别是什么?
按照锁的粒度进行分类,锁分为表级锁和行级锁和数据库级锁。

2、关于For update 子句和For update of 字段说法正确是__C__。

A)没有区别

B)前者只锁定当前表中的相关行,而后者锁定所有相关表的行

C)前者锁定所有相关表中的行,而后者锁定当前表的相关行

D)以上说法均不正确

Excise 6.3

理论练习

1、 两个事务相互等待对方释放资源时,就会形成___死锁_____。

面试笔试题

1、 解释什么是死锁,如何解决Oracle中的死锁?

是指两个会话,每个会话都持有另外一个会话想要的资源,因争夺资源而造成的一种互相等待的现象,此时就会出现死锁,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。Oracle对于“死锁”采取的策略是回滚其中一个事务,让另外一个事务顺利进行。

2、Oracle中用来释放锁的语句有___A____。(选择2项)

A)Rollback B)Commit C)Drop Lock D)Unlock

Excise 6.4

理论练习

1、 Oracle表有哪几种类型?
1)堆表:heap table :数据存储时,行是无序的,对它的访问采用全表扫描。
2)分区表 表>2G
3)索引组织表(IOT)
4)簇表
5)临时表
6)压缩表
7)嵌套表

Excise 6.5

理论练习

1、 什么是表分区技术?

数据分区是一种物理数据库的设计技术,它的目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。

分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中,实际上还是一张表。

Excise 6.6

理论练习

1、 常用的分区方法有4中,分别为___范围分区__ 哈希分区间隔分区列表分区____。

2、 依据HASH函数执行操作的表分区技术为___哈希分区_____。

面试笔试题

1、Oracle分区是怎样优化数据库的?

Oracle的分区可以分为:列表分区、范围分区、散列分区、复合分区。
1). 增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍可以使用;
2). 减少关闭时间:如果系统故障只影响表的一部份分区,那么只有这部份分区需要修复,可能比整个大表修复花的时间更少;
3). 维护轻松:如果需要得建表,独产管理每个公区比管理单个大表要轻松得多;
4). 均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能;
5). 改善性能:对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快
6). 分区对用户透明,最终用户感觉不到分区的存在。

Excise 6.7

理论练习

1、 有哪几种常用的分区维护操作?

添加分区、删除分区、截断分区、合并分区、拆分分区、接合分区、重命名分区

Excise 7.1

理论练习

1、 Oracle数据库对象又称为___模式对象_____对象。

2、数据库对象是逻辑结构的集合,最基本的数据库对象是____表和视图,其他常用的数据库对象包括约束__、___序列、__函数、___存储过程___。

Excise 7.2

理论练习

1、 同义词有两种类型,其中,只能在模式内访问,且不能与当前模式对象同名的同义词称为____私有同义词____,可被所有的数据库用户访问的是 ___ 公有同义词_____。

2、 创建同义词的语法关键字是___synonym_____。

Excise 7.3

理论练习

1、 用来生成唯一、连续序号的对象是___序列_____。

2、 创建序列的语法关键字是____sequence____。

面试笔试题

1、在下列各选项中,关于序列的描述哪一项是不正确的___D___?

A)序列是Oracle提供的用于产生一系列唯一数字的数据库对象

B)序列并不占用实际的存储空间

C)使用序列时,需要用到序列的两个伪列NEXTVAL与CURRVAL。其中,NEXTVAL 将返回序列生成的下一个值,而CURRVAL返回序列的当前值

D)在任何时候都可以使用序列的伪列CURRVAL,以返回当前序列值

Excise 7.4

理论练习

1、 视图的本质是一个____select____语句,被编译后存储在数据字典里。

2、 创建视图所依据的表称为____视图____。

3、 视图的优点有哪些?

4、 创建视图的语法关键字是___create view_____。

5、 _____with check option______语句可以帮助检查更新视图数据时,是否符合视图查询事实的一些规范。

面试笔试题

1、 在视图上使用DML语句有哪些限制?

a)可以在简单视图中执行 DML操作
b)当视图定义中包含以下元素之一时不能使用delete:
i.组函数
ii.GROUP BY子句
iii.DISTINCT关键字
iv.ROWNUM 伪列 DUAL伪表
c)当视图定义中包含以下元素之一时不能使用update:
i.组函数
ii.GROUP BY子句
iii.DISTINCT关键字
iv.ROWNUM 伪列
v.列的定义为表达式
d)当视图定义中包含以下元素之一时不能使用insert:
i.组函数
ii.GROUP BY子句
iii.DISTINCT关键字
iv.ROWNUM 伪列
v.列的定义为表达式
vi. 中非空的列在视图定义中未包括

2、 怎样创建一个视图,视图的好处是什么,视图可以控制权限么?

创建:
create or replace view [viewname] as …
好处:
1.封装查询
2.灵活的控制安全性
控制权限:
可以

3、关于创建视图的正确的说法是___BC____。(选择2项)

A)只能基于基表创建视图

B)定义视图的查询不能包含Order By, Compute By 和 Into子句

C)不能将默认值、规则和触发器与视图相关联

D)在视图中修改列名会影响基表的列名

Excise 7.6

理论练习

1、 从索引的特性上进行划分,索引类型分为普通索引、反向索引唯一索引____、全文索引、函数索引、位图索引。

2、 创建索引的语法关键字是___create index_____。

3、 _____唯一___索引确保在定义索引的列中没有重复值。

4、 在低基数的列上,以及经常使用聚合函数的操作上创建索引,通常选择创建____位图索引____。

面试笔试题

1、 怎样创建一个索引?索引使用的原则有哪些?有什么优点和缺点?

创建索引:create index

使用原则:
1. 最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整;
2. =和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式;
3. 尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录;
4. 索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp(’2014-05-29’);
5. 尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。

优点:

  • 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
  • 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
  • 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
  • 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
  • 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

缺点:

  • 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
  • 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
  • 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

Excise 8.1

理论练习

1、 过程语言与结构化查询语言结合而成的编程语言简称为____ PL/SQL ____ 。

2、 ____PL / SQL块____是构成PL/SQL程序的基本单元。

3、 PL/SQL块分为三部分,包括____ declare ______ 、 ____ begin _____、 ____ exception _____。

4、 在PL/SQL中,赋值操作符用______:表示,’||’表示连接操作符,单行注释用#表示,多行注释用_/* */_表示,标签用<< >>表示,’…’表示范围____操作符。
5、 判断:PL/SQL区分大小写。(

面试笔试题

1、PL/SQL块中不能直接使用的SQL命令是___A____。(选择1项)

A)SELECT B)INSERT C)UPDATE D)DROP

Excise 8.2

理论练习

1、 在PL/SQL当中,_____属性类型_____用于引用数据库列的数据类型,以及表示表中一行的记录类型的。

2、 属性类型有两种,其中,引用变量和数据库列的数据类型称为___ 列类型 _____ ,用____ %type ____ 表示;提供表示表中一行的记录类型称为____ 行类型 ____ ,用_____ %row type ___表示。

3、 使用属性类型的优点有哪些?

不需要知道被引用的表列的具体类型
如果被引用对象的数据类型发生改变, PL/SQL 变量的数据类型也随之改变

面试笔试题

1、声明%TPYE类型的变量时,服务器将会做什么操作____ A ___?

A)为该变量检索数据库列的数据类型 B)复制一个变量

C)检索数据库中的数据 D)为该变量检索列的数据类型和值

2、定义SQL块%TYPE有什么好处

使得 PL/SQL 更加灵活,更加适应于对数据库定义的更新

3、在PL/SQL块中定义一个名为PI值为3.14的Real型常量的语法是____D___。

A)Pi Const Real=3.14; B)Pi Real Const =3.14;
C)Constant Pi Real:=3.14 D)Pi Constant Real:=3.14

Excise 8.3

理论练习

1、 PL/SQL支持的流程控制结构包括___顺序控制_____、 ____ 条件控制 ____ 、____循环控制____三种。

2、 在PL/SQL语言当中,条件控制包括___if ____ 和 ____ case ____ 两种语句;循环控制包括 ___ loop _____ 、 ____ for ____ 、___ while _____ 三种循环结构。

3、 跳转结构语句包括____ goto ____ 、 ____ null ____ 两种,其中,____ goto ____语句实现无条件转到标签指定的语句, ___ null ____语句是什么也不做的空语句。

面试笔试题

1、举例说明while…loop/for…loop循环语句,如插入1…10的值到一个单字段数据表(结构自定义)。

i:=1;
while i<=10 loop
insert into test(id) values(i);
i:=i+1;
end loop;
commit;

2、判断下面不完整的 loop语句:

LOOP

INSERT INTO inventory (id_number, description)

VALUES (v_id_number, v_description);

v_counter := v_counter +1;

________END LOOP_________命令应被加入,为了有条件的停止 loop 执行?

3、有一段PL/SQL程序如下所示:


var1 := 10;

LOOP

EXIT WHEN var1 > 12;

var1 := var1 +1;

DBMS_OUTPUT.PUT_LINE(‘A’);

END LOOP;

输出为________AAA______________。

Excise 8.4

理论练习

1、 在PL/SQL中,运行程序时出现的错误称为___异常_____。

2、 PL/SQL的异常有两种类型,其中,当程序违反Oracle规则或者超越系统限制时隐式引发的异常称为____预定义异常______;用户在声明部分定义的异常称为 _____ 用户定义异常 _____ ,该异常可以通过 ____ RAISE____语句显式引发。

3、 表示“除数为0错误”的系统异常的关键字为 ___ ZERO_DIVIDE_____ ,表示“查询多行错误”的系统异常的关键字为 ___ No_rows_found _____ ,表示“非法数字”的系统异常关键字为___Invalid_Number _____ ,表示“未查到数据”的异常关键字为___ No_Data_rows_found _____。

面试笔试题

1、当Select语句没有返回行时,将引发下列哪个异常___A____?

A)No_rows_found B)No_data_found C)No_Data_rows_found D)Invalid_Number

2、以零作除数时会引发___B____异常。

A)VALUE_ERROR B)ZERO_DIVIDE C)STORAGE_ERROR D)SELF_IS_NUL

Excise 8.5

理论练习

1、 PL/SQL语言的优点有哪些?

1、SQL 的支持
2、面向对象的支持
3、良好的性能
4、高效性
5、可移植性
6、与SQL 紧密结合
7、高度安全

面试笔试题

1、 下面哪个操作会导致用户连接到Oracle数据库,但不能创建表( A )。

A 授予了CONNECT的角色,但没有授予RESOURCE的角色

B 没有授予用户系统管理员的角色

C 数据库实例没有启动

D 数据库监听没有启动

Excise 9.1

理论练习

1、PL/SQL用____游标____来管理SQL的SELECT语句。

2、什么是游标?

L/SQL 是用游标来管理 SQL 的 SELECT 语句的 . 游标是为了处理这些语句而分配的一大块内存 . 它提供了对一个结果集进行逐行处理的能力 , 可看作是一种特殊的指针 . 它与某个查询结果集相关联 , 可以指向结果集的任意位置 , 以便对指定位置的数据进行处理 . 使用它可以在查询数据的同时对数据进行处理

3、游标与某个查询结果集相关联,可以指向结果集的任意位置,可以看作是一种特殊的____ 指针 ____。

4、游标的类型分为___ 隐式游标 ____ 、 ____ 显式游标 ____ 、 __ REF 游标 _______三种。

面试笔试题

1、如何使用Oracle的游标?

声明游标
打开游标(将数据存储到游标)
根据游标提取数据
关闭游标

2、在定义游标时使用的FOR UPDATE子句的作用是____C___。

A)执行游标 B)执行SQL语句的UPDATE语句

C)对要更新表的列进行加锁 D)都不对

Excise 9.2

理论练习

1、 自动声明、打开和关闭的游标称为___ 隐式游标 _____。

2、 什么情况下自动创建隐式游标?

使用 DML 语句(增删改)和单行查询语句(赋值)时

3、 隐式游标的属性有哪些?

%FOUND – SQL 语句影响了一行或多行时为 TRUE
%NOTFOUND – SQL 语句没有影响任何行时为 TRUE
%ROWCOUNT – SQL 语句影响的行数,没有影响任何行,返回 0 ,在执行任何 DML 语句前,值为 NULL
%ISOPEN - 游标是否打开,隐式游标始终为 FALSE( 隐式游标执行时打开,结束时立即关闭 )

Excise 9.3

理论练习

1、 由PL/SQL程序员定义和命名的游标称为___ 显式游标 _____。

2、 需要手动打开,手动关闭的游标是____ 显式游标____。

3、 当用户需要从游标中提取多行记录时,经常使用的游标是____ 显式游标____。

面试笔试题

1、 简述使用带参数显式游标的四个步骤。

声明游标、打开游标、提取游标指向数据给变量、关闭游标

–>

2、 作家信息表Auths包含两个字段

Author_Code VARCHAR2(50)
Salary NUMBER(10)

其中Author_Code为作家代码,主键。Salary为作家工资额,非空。

现由于工资调整,对于作家代码在‘A00001′和‘A00006′;之间的作家工资少于或等于五百,则给该作家增加15%的工资,对于大于500到1000之间则增加12%,其它则增加10%。如下程序是通过游标方式实现的,请填写程序中相应的空格。

DECLARE

– 声明两个变量,用来接收游标返回的工资和作家代码
v_Salary __ NUMBER(10) ______
v_Code ___ VARCHAR2(50)_____
v_ErrText __ VARHCAR(200) __ ;
– 声明游标 c_Salary ,该游标的结果集是 Auths 表中作家代码 (Author_Code) 值是
– ‘A00001′ 到 ‘A00006′ 的工资值 (Salary ) 和作家代码值 (Author_Code)
CURSOR c_Salary IS
SELECT Salary,
Author_Code
FROM Auths
WHERE Author_Code >=’A00001′
AND Author_Code <=’A00006′;
BEGIN
– 打开游标
open __ c_Salary ; _____
LOOP
– 游标循环,将游标查询结果集中的一行保存到两个临时变量中
select
c_Salary INTO v_Salary, v_Code ___;
– 当结果集中没有行是退出
EXIT WHEN ___ NO_DATA_FOUND _____ ;
– 如果该作家的工作少于或等于五百,则给该作家增加 15% 的工资
– 500 到 1000 之间则增加 12%, 其他增加 10%
IF v_Salary <= 500 THEN
UPDATE Auths
SET Salary = _ Salary+Salary*0.15 _______
WHERE Author_Code = v_Code;
ELSIF v_Salary <= 1000 THEN
UPDATE Auths
SET Salary = Salary + Salary * 0.12
WHERE Author_Code = v_Code;
___ THEN UPDATE Auths
SET Salary = Salary + Salary * 0.1
WHERE Author_Code = v_Code;
END IF;
END LOOP;
_ CLOSE _c_Salary
_;
________;
EXCEPTION
WHEN OTHERS THEN
CLOSE c_Salary;
ROLLBACK;
v_E rrText := ________;
DBMS_OUTPUT.PUT_LINE(‘ 程序异常终止,出现一下错误 :’||v_ErrText);
END;

Excise 9.5

理论练习

1、 游标变量的优点和限制有哪些?

游标变量的优点有:
可从不同的 SELECT 语句中提取结果集
可以作为过程的参数进行传递
可以引用游标的所有属性
可以进行赋值运算
使用游标变量的限制:
不能在程序包中声明游标变量
FOR UPDATE 子句不能与游标变量一起使用
不能使用比较运算符

Excise 10.1

理论练习

1、____存储过程是一组为了完成为了完成特定功能的SQL语句集 _的符合数据库程序脚本规范的程序,经过编译后存储在数据库_中,然后由一个应用程序或者其他PL/SQL程序执行_____。

2、从根本上讲,过程就是___存储在数据库中的____的PL/SQL程序块。

3、创建过程的语法关键字是____create procedure_____。

4、创建带有输出参数的过程,参数前面要加参数类型为____out____。

面试笔试题

1、 谈谈存储过程的优缺点。

优点:
1.执行速度比普通sql快。
2.减少网络传输
3.可维护性更好
4.安全性更强
5.可扩展性更强
缺点:
1.面对复杂的业务逻辑,过程化的处理会很吃力
2.开发调试复杂
3.无法应用缓存。
4.不支持群集

2、下面哪些关于存储过程的描述是正确的___ABD____?(选择3项)

A)存储过程是一组预编译的SQL语句 B)存储过程可加快查询的执行速度

C)不可以在存储过程内引用临时表 D)帮助实现模块化、编程

3、PL/SQL过程的参数模式有____ABC___。(选择3项)

A)In B)Out C)In Out D)Ref

4、存储过程中的传出参数使用____out/inout____关键字。

Excise 10.2

理论练习

1、 有返回值的,命名的PL/SQL子程序称为____函数____。
2、 定义函数的限制有哪些?

3、 访问函数有哪两种方式,对应的语法是怎样的?
plsql语句调用 fun()
dual调用:用dual伪表进行显示,select 函数名(参数) from dual;

4、 创建函数的语法关键字是____create function_____。

面试笔试题

1、Oracle中function和procedure,以
及游标的区别?

1). 可以理解函数是存储过程的一种
2). 函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值
3). 函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程
4). 在sql数据操纵语句中只能调用函数而不能调用存储过程

Excise 10.3

理论练习

1、 将相关的过程、函数、变量、游标和异常等对象进行封装,得到___程序包_____。

2、 程序包由_____ 包元素 ___ 和____ 包体 ___ 两部分组成,其中,在 ___ 包元素 _____ 中声明程序包中的公共对象,在___ 包体 ____中声明程序包中的私有对象,以及实现在包规范中声明的子程序和游标。

3、 创建程序包的语法关键字是___create package_____。

4、 判断:语句:drop package package_name;,删除的是程序包的主体。(

5、 程序包的优点有哪些?

简化应用设计、提高应用性能、实现信息隐藏、子程序重载。

Excise 11.1

理论练习

1 、特定事件出现时,自动执行的存储过程称为 __ 触发器 ______ 。
2 、判断:触发器可以自动触发,也可以被显式调用。(
3 、判断:触发触发器的特定事件可以是执行查询的 DML 语句。(
4 、触发器由 ___ 触发事件 _____ 、 ____ 触发条件 ____ 、 __ 触发操作 ______ 三部分组成。
5 、按触发事件的不同,触发器分为 ___DML触发器 _____ 、 ___ INSTEAD OF 触发器 _____ 、 ___ 系统触发器 _____ 三大类。

面试笔试题

1、能够自动执行操作的存储对象是: ___ 触发器 ___ 。

Excise 11.2

理论练习

1、 DML触发器分为____ 行级触发器 ____和 ____ 语句级触发器 ____两类。

面试笔试题

1、 怎样创建一个触发器?触发器的定义是怎样的?触发器的游标怎样定义?

创建触发器:
CREATE TRIGGER trigger_name {INSERT | DELETE | UPDATE} ON table_name
PL/SQL_BLOCK | CALL procedure_name;

触发器的定义:
当某个事件发生时自动地隐式运行

定义触发器的游标:
ALTER TRIGGER [dbo].[deleteClassSetTrigger] --新建触发器
ON [dbo].[t_d_ExercitationClassSet] --在某个表中新建的触发器
for delete --做的什么操作触发触发器
AS
BEGIN
declare @id int --定义变量id
declare cur_delete cursor --定义游标
for
select ExercitationClassSetId from deleted --从删除的数据中找到某个字段值
open cur_delete --打开游标
fetch next from cur_delete into @id
while @@fetch_status=0
begin
delete t_d_ExercitationClass where ExercitationClassSetId=@id --执行符合条件的SQL语句
fetch next from cur_delete into @id --查找下一条数据
end
close cur_delete --关闭游标
deallocate cur_delete --删除游标引用
end

Excise 11.3

理论练习

1 、INSTEAD OF 触发器是定义在 __ 视图 ______ 上的触发器,该触发器只能是 ____ 行级 ____ (行级 or 语句级)触发器,定义该触发器必须加上 ____ FOR EACH ROW ______ 语句。

2、 INSTEAD OF 触发器不能包含 ___ WHEN _____ 子句,不能包含 __ BEFORE ______ 和 ____ AFTER ____ 选项。

Excise 11.4

理论练习

1、 被Oracle系统事件自动触发的触发器称为____系统触发器 _____。

2、 执行哪些操作可以触发系统触发器?

启动和关闭触发器
用户登录和退出
DDL操作

综合设计题

主观题 (100.0)
1、在某软件公司里,要建立一个数据库来管理员工和项目,其中职员的信息包括(员工编号、姓名、性别、生日、祖籍、工资),要求员工编号不能重复,姓名必须填写,性别如果不做特别说明默认为男,而且不能填写除‘男’或‘女’之外的其它任何字;工资必须大与0;项目的信息包括(项目编号、项目名称、起始日期、结束日期、预算),要求项目编号从1001号起每个项目递增1,项目名称不能重复且不可空着。注意:职员是要做项目的!!

要求:

  1. 在sqlplus环境中使用system用户登录到服务器

C:\Users\62531>sqlplus sys/1@orcl as sysdba;

SQL*Plus: Release 11.2.0.2.0 Production on 星期四 12月 24 16:34:16 2020

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

连接到:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

  1. 使用自己名字的缩写创建一个数据库用户(如张三丰:zhangsf第一个字全拼,其它字只写第一个字母)

  2. 授予用户create table 、create session 权限和resource 角色

  3. 在PL/SQL Developer 中使用创建的用户登录并打开一个SQL窗口

  4. 创建用户及表,并创建相应的约束

SQL> create user xvbn identified by 1;

User created


SQL> grant create table,create session  to xvbn;

Grant succeeded


SQL> grant resource to xvbn;

Grant succeeded

的信息包括(员工编号、姓名、性别、生日、祖籍、工资),要求员工编号不能重复,姓名必须填写,性别如果不做特别说明默认为男,而且不能填写除‘男’或‘女’之外的其它任何字;工资必须大与0;项目的信息包括(项目编号、项目名称、起始日期、结束日期、预算),要求项目编号从1001号起每个项目递增1,项目名称不能重

create table clerk(
  cno number unique,
  cname varchar2(10) not null,
  csex varchar2(2) default '男' check(csex in ('男','女')),
  cbir date,
  chome varchar(10),
  csalary check(csalary>0)
);

create seqeunce PNO_SEQ
  start with 1 
  increment by 1;

create table project(
  no varchar2,
  cname,
  csex,
  cbir,
  chome,
  csalary
);

create or replace trigger "TRIG_SEQ_PNO" before insert on project
for each row
 when (new."pno" is null)
begin
  :new.pno := PNO_SEQ.nextval;
end;

create table cp(
cno number;
pno number;
);

  1. 使用语句插入以下员工信息和项目信息
EMPNO ENAME ESEX BIRTHDAY ADDRESS SALARY
1 王晓明 1980/1/3 山东青岛 8900
2 王涵 1978/6/12 广东佛山 760
3 李有才 1978/5/23 上海 7800
4 张小小 1982/9/7 山东济南 4500
insert into clerk values(1,'王晓明','女',1980/1/3,'山东青岛',8900)
insert into clerk values(2,'王涵	' ,'男',1978/6/12,'广东佛山',760)
insert into clerk values(3,'李有才','男',1978/5/23,'上海'	,7800)
insert into clerk values(4,'张小小','女',1982/9/7,'山东济南',4500)
ITEMID ITEMNAME STARTDATE ENDDATE MONEY
1001 小型监控系统 2009/8/6 2010/1/1 100000
1002 办公网络安全 2009/12/30 2010/10/1 450000
1003 电子购物广场 2009/11/30 2010/12/31 12000
insert into project values(1001,'小型监控系统',2009/8/6,2010/1/1,100000);
insert into project values(1002,'办公网络安全',2009/12/30,2010/10/1,450000);
insert into project values(1003,'电子购物广场',2009/11/30,2010/12/31,12000);

9.员工参与项目的信息如下:王晓明三个项目都参加了,王涵参与了电子购物广场和办公室安全项目,李有才参与了小型监控系统和办公网络安全项目,张小小只参与了小型监控系统一个项目

EMPNO ITEMID
1 1001
1 1002
1 1003
2 1002
2 1003
3 1001
3 1002
4 1001
insert into values cp(1,1001);
insert into values cp(1,1002);
insert into values cp(1,1003);
insert into values cp(2,1002);
insert into values cp(2,1003);
insert into values cp(3,1001);
insert into values cp(3,1002);
insert into values cp(4,1001);

2、一个简单图书管理系统包括图书馆内书籍信息、学校在校学生信息以及学生借阅信息此系统功能。分为以下三张表:|
1.图书信息表

字段名称 数据类型 是否可为空
图书编号(PK) varchar2(10)
书名 varchar2(50)
作者 varchar2(12)
出版社 varchar2(50)
出版日期 date
介绍 varchar2(200)

2.读者信息表

字段名称 数据类型 是否可为空
读者学号(PK) number
读者姓名 varchar2(10)
读者性别(男/女) varchar2(2)
所在系 varchar2(12)
生效时间 date
失效时间 date
累计借书 number

3.借阅表

字段名称 数据类型 是否可为空
图书编号 varchar2(10)
读者学号 number
借书日期 date
还书日期 date

题目:(假设表已经创建,数据已经添加)

  1. 查询没有借过书的学生有哪些
select distinct 读者姓名 from 读者信息表 join 借阅表 on 借阅表.读者学号=读者信息表.读者学号 where 借书日期 is null;
  1. 将计算机专业的读者借书的还书日期再加30天
update 借阅表 set 还书日期=还书日期+30 where 所在系='计算机';
  1. 查询借书最多的读者有哪些
select 读者姓名 
from 读者学号,读者信息表 join 借阅表 
on 借阅表.读者学号=读者信息表.读者学号
group by 读者学号 count(图书编号)=max(count(图书编号) );
上一篇:肖sir高级讲师___rf000


下一篇:Pre标签-代码块 自动换行