大型数据库Oracle(课程作业答案)

练习1:数据库基础

解答参考

一. 单选题(共8题,100分)

    1. (单选题)
      表示数据库的概念模型一般使用 ( ) 。
      A. 用户活动图
      B. 数据流图
      C. E-R 图
      D. 流程图
      正确答案: C
    1. (单选题)实体完整性要求主属性不能取空值,这通常是通过( )
      A. 定义外部键来保证
      B. 用户定义的完整性来保证
      C. 定义主键来保证
      D. 关系多统自动保证
      正确答案: C
    1. (单选题)有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与职称有关,实现这个约束的可行方案是( )。
      A. 在教师表中定义视图
      B. 在教师表中定义存储过程
      C. 在教师表中定义插入和删除的触发器
      D. 在教师表中定义索引
      正确答案: C
    1. (单选题)当从A表(有5行数据)和B表(有6行数据)中查找数据,使用语句“SELECT * FROM A, B”将得到数据行数是.( )。
      A. 5
      B. 6
      C. 11
      D. 30
      正确答案: D
    1. (单选题)“从DEPT中删除部门号=‘01’的行”,该操作违反了( )。

I.实体完整性约束 II.参照完整性约束 III.用户定义完整性约束

A. 仅I
B. 仅II
C. I和III
D. 都违反
正确答案: B

    1. (单选题)下列数据模型中,数据独立性最高的是( )。
      A. 网状数据模型
      B. 关系数据模型
      C. 层次数据模型
      D. 非关系模型
      正确答案: B
    1. (单选题)下列四项中,不属于数据库特点的是( )
      A. 数据共享
      B. 数据完整性
      C. 数据冗余很高
      D. 数据独立性高
      C正确答案: C
    1. (单选题)应用数据库的最主要的目的是为了( )
      A. 解决数据保密问题
      B. 解决数据完整性问题
      C. 解决数据共享问题
      D. 解决数据量大的问题
      正确答案: C

实训报告1:Oracle客户端安装与配置

一. 简答题(共1题,100分)

  1. (简答题) 完成oracle客户端安装并与数据库服务器进行连接,确认能远程正常查询相关数据,并将操作过程进行说明,配合截图进行整理后,撰写相应的实训报告操作说明。
    实训目的:1、掌握安装oracle客户端方法
    2、掌握配置oracle客户方法
    3、通过简单操作验证死锁现象
    操作过程:
    准备:从数据库管理员处获得关于数据库的关键参数(服务器地址、数据库服务名、数据库服务端口);从数据库管理员处获得用户的账号和密码
    具体操作:
    1、启动oracle网络配置助手
    开始–> 程序–> oracle–>application develop–> net configration assistant
    2、选择本地服务名配置
    3、将远程服务器的服务添加为本地服务名
    依次填写管理员提供的数据库关键参数
    address: 10.6.19.227
    sid: orcl
    port: 1521
    4、连接测试通过后填写自定义本地服务名
    5、利用sqlplus连接上服务器进行简单查询操作
    select table_name from user_tables;
    desc emp;
    死锁现象:
    1、用sqlplus连接数据库,执行
    UPDATE dept SET loc=‘LOUDI’ WHERE deptno = 40;
    2、用SQL DEVELOPER连接数据库,执行
    UPDATE emp SET deptno =40 WHERE ename LIKE ‘S%’;
    UPDATE dept SET loc = ‘BEIJING’ WHRE deptno = 40;
    3、返回SQLPLUS ,执行
    UPDATE emp SET deptno=10 WHERE ename LIKE ‘S%’;
    这样就会发生死锁,请解释此现象发生的原因,并分析如何避免此现象。

解答参考

1.已经掌握安装oracle客户端方法与配置oracle客户方法
2.简单查询
在这里插入图片描述
3.死锁
在这里插入图片描述

练习2:Oracle体系结构

解答参考

一. 单选题(共13题,100分)

    1. (单选题)将数据库操作写入到日志文件中的进程是. ( )
      A. DBWR
      B. CKPT
      C. LGWR
      D. SMON
      正确答案: C
    1. (单选题)记录了Oracle数据块缓存区内容的内存区域是.( )
      A. SGA
      B. PGA
      C. UGA
      D. KGA
      正确答案: A
    1. (单选题)以下关于Oracle数据库说法正确的是.( )。
      A. 在创建表时即便使用nologging选项也会产生重做日志
      B. 创建索引总是能提高查询效率
      C. Oracle中不会出现死锁现象
      D. 用户创建的表总是存储在默认表空间中的
      正确答案: A
    1. (单选题)事务日志的用途是.( )。
      A. 事务处理
      B. 完整性约束
      C. 数据恢复
      D. 安全性控制
      正确答案: A
    1. (单选题)ORACLE的临时文件通常用于存放的内容是.( )
      A. 大规模排序的中间结果
      B. 日志的归档内容
      C. 数据字典
      D. 系统的启动参数
      正确答案: A
    1. (单选题)将控制文件放到不同的磁盘上的最大优点是.
      A. 数据库性能
      B. 防止单点错误
      C. 加快归档
      D. 加快控制文件的写操作
      正确答案: B
    1. (单选题)Oracle的数据库管理器中直接关闭数据库的命令是( )
      A. CloseDB
      B. shutdown
      C. startup
      D. exit
      正确答案: B
    1. (单选题)下列对于控制文件正确的描述是.( )
      A. oracle推荐至少存储两个控制文件并分别存储在两个不同的磁盘上
      B. oracle推荐至少在一个磁盘上存储两个控制文件
      C. oracle推荐只存储一个控制文件
      D. 一个控制文件无法启动一个oracle数据库
      正确答案: B
    1. (单选题)系统全局区SGA包括下列哪些内容.( )
      A. buffer cache
      B. shared pool
      C. redolog buffer
      D. 以上全部
      正确答案: D
    1. (单选题)将修改后的数据块写入到数据文件中的进程是.( )
      A. DBWR
      B. CKPT
      C. LGWR
      D. SMON
      正确答案: A
    1. (单选题)当一个oracle实例启动并完成数据库打开操作,操作次序正确的是.( )
      A. OPEN,NOMOUNT,MOUNT
      B. NOMOUNT,MOUNT,OPEN
      C. NOMOUNT,OPEN,MOUNT
      D. MOUNT,OPEN,NOMOUNT
      正确答案: B
    1. (单选题)Oracle中段segment的一个集合又称为.( )
      A. 区Extent
      B. 段Segment
      C. 表空间Tablespace
      D. 数据库Database
      正确答案: A
    1. (单选题)数据库处于打开状态时,以下表空间必须处于在线online状态的是.( )
      A. SYSTEM
      B. TEMPORARY
      C. ROLLBACK
      D. USERS
      正确答案: A

实训报告2:Oracle客户端软件的使用

一. 论述题(共1题,100分)

  1. (论述题)
    实训目的:
    1、了解客户端连接数据库的方法
    2、掌握在客户端编写及运行SQL脚本的方法
    3、掌握自定义变量&符号的应用
    实训步骤:
    1、利用客户端连接oracle数据库
    SQLPLUS oracle SQL DEVELOPER TOAD
    2、使用客户端查询员工及部门信息
    查询所有员工信息
    查询所有部门信息
    查询ALLEN所在部门名称
    3、使用常用的命令进行操作
    DD: Data Dictionary
    a.通过DD了解自己有哪些表等对象
    b.了解要使用的特定表的结构
    c.查询或存储所需要的数据
    利用describe命令查看dept表的表结构
    4、使用&替换变量
    5、编写及运行SQL脚本
    利用SQLPLUS编写一段查询脚本,并保存在计算机的合适位置
    利用记事本编写一段查询脚本,并保存在计算机的合适位置
    利用SQLPLUS中的命令运行上述脚本
    附加内容:
    写出以下查询语句
    列出薪水在2500以上的所有员工的信息
    列出薪水在2500以上的所有员工的姓名及部门名称
    列出总收入在2500以上的所有员工的信息
    列出总收入在2500以上的所有员工的姓名及部门名称
    查出各部门的名称、总人数及总月薪
    查出在芝加哥上班的所有员工的姓名
    sal+nvl(comm,0)

解答参考

--2、使用客户端查询员工及部门信息
--查询所有员工信息

select *
from emp;

--查询所有部门信息

select *
from dept;

--查询ALLEN所在部门名称

select ename,deptno
from emp
where ename = 'ALLEN';

--附加内容:
--写出以下查询语句
--列出薪水在2500以上的所有员工的信息

select *
from emp
where sal > 2500;

--列出薪水在2500以上的所有员工的姓名及部门名称

select ename,sal,deptno
from emp
where sal > 2500;


--列出总收入在2500以上的所有员工的信息

select *
from emp
where nvl(sal,0)+ nvl(comm,0)> 2500;

--列出总收入在2500以上的所有员工的姓名及部门名称

select ename,sal,comm,deptno
from emp
where nvl(sal,0)+ nvl(comm,0)> 2500;

--查出各部门的名称、总人数及总月薪
select dname,sum(sal)
from dept,emp;

--查出在芝加哥上班的所有员工的姓名

--sal+nvl(comm,0)
select  ename
from emp
where deptno = 30;

练习3:数据库查询

解答参考

一. 单选题(共8题,100分)

    1. (单选题)下列语言可以完成对数据库数据的查询与更新的是( )
      A. DCL
      B. DDL
      C. DML
      D. DQL
      正确答案: C
    1. (单选题)当使用多表进行数据查询时,应该在以下哪个子句中指定各表的名称.( )
      A. HAVING
      B. GROUPBY
      C. WHERE
      D. FROM
      正确答案: D
    1. (单选题)查询语句“SELECT dname, ename FROM dept d, emp e where d.deptno=e.deptno order by d.dname, e.ename;”中使用了下列哪种连接.( )
      A. 自连接
      B. 等值连接
      C. 外连接
      D. 非等值连接
      正确答案: B
    1. (单选题)当从A表(有3行数据)和B表(有4行数据)中查找数据,使用语句”select*fromA,B”将得到几行数据.( )
      A. 7
      B. 1
      C. 0
      D. 12
      正确答案: D
    1. (单选题)查询日期格式的字段时,具体的显示情况不仅与默认的日期格式字符串有关,会受到下列因素的影响.( )。
      A. 操作系统
      B. 用户帐号
      C. NLS_ CHARACTERSET
      D. NLS_LANGUAGE
      正确答案: C
    1. (单选题)有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值与职称有关,实现这个约束的可行方案是( )。
      A. 在教师表中定义视图
      B. 在教师表中定义存储过程
      C. 在教师表中定义插入和删除的触发器
      D. 在教师表中定义索引
      正确答案: C
    1. (单选题)下列函数中能返回一个字符串的子串的函数是.( )
      A. INSERT
      B. SUBSTR
      C. LPAD
      D. NVL
      正确答案: B
    1. (单选题)如果要对GROUP分组查询后的数据进行筛选,应使用的子句是( )
      A. WHERE
      B. HAVING
      C. ORDER BY
      D. 以上都不对
      正确答案: B

实训报告3: 数据操作语句实训

一. 论述题(共1题,100分)

  1. (论述题) 数据库SQL语言基础编程
    实验目的:
    掌握数据库查询语句的编写方法
    掌握利用查询语言完成基本查询
    掌握利用SQL语句完成数据的添加、删除、修改操作
    实验内容:
    一、简单查询
    编写简单查询语句,理解笛卡尔积、选择、投影的概念及其在SQL中的实现
    查询员工表与部门表的笛卡尔积
    在上述操作的基础上完成连接的选择操作和投影操作
    对查询数据进行排序操作
    编写查询语句,完成对员工信息、部门情况等的基本查询
    查询工资超过2500的员工基本信息
    查询月总收入超过2500的员工基本信息
    查询工资超过2500的员工的姓名及其所在部门名称
    查询所有员工的工资、奖金、总收入,并按部门编号排序
    查询全公司的平均工资、最高工资、最低工资和总奖金数。
    二、分组查询
    编写分组查询语句,理解分组查询的意义
    编写分组查询语句,实现分组查询的应用
    查询各部门的平均工资和最高月收入和总资金数
    查询部门号大于10且平均工资大于1500的部门名称、部门平均工资和部门人数
    三、增删改语句
    添加数据
    在部门表中添加一个部门,编号为50,名称为 TRAIN 地点在 LOUDI
    修改数据
    将刚才添加了部门的编号修改为80
    删除数据
    删除刚才添加了部门

解答参考

--实验内容:
--一、简单查询
--编写简单查询语句,理解笛卡尔积、选择、投影的概念及其在SQL中的实现
--    查询员工表与部门表的笛卡尔积

SELECT *
FROM dept,emp;

--    在上述操作的基础上完成连接的选择操作和投影操作
--选择操作
SELECT *
FROM dept,emp
WHERE dept.deptno = emp.deptno;

--投影操作
SELECT dname,ename
FROM dept,emp
WHERE DEPT.DEPTNO = EMP.DEPTNO;

--    对查询数据进行排序操作
SELECT dname,ename
FROM dept,emp
WHERE dept.deptno = emp.deptno
ORDER BY ename desc;
--不写默认升序升序 desc降序
--ORDER BY排序的意思


--编写查询语句,完成对员工信息、部门情况等的基本查询
--    查询工资超过2500的员工基本信息

SELECT empno,
       ename,
       sal,
       comm,
       hiredate,
       deptno
FROM emp
WHERE sal>2500;


--    查询月总收入超过2500的员工基本信息
SELECT empno,
       ename,
       sal,
       comm,
       (nvl(sal,0)+nvl(comm,0)) incoming,
       hiredate,
       deptno
FROM emp
WHERE (nvl(sal,0)+nvl(comm,0))>2500;


--    查询工资超过2500的员工的姓名及其所在部门名称
SELECT ename,
       sal,
       dname
FROM emp,dept
WHERE nvl(sal,0)>2500 AND dept.deptno = emp.deptno;

--    查询所有员工的工资、奖金、总收入,并按部门编号排序
SELECT ename,
       sal,
       comm,
       (nvl(sal,0)+nvl(comm,0)) incoming,
       deptno
FROM emp
ORDER BY deptno asc;

--    查询全公司的平均工资、最高工资、最低工资和总奖金数。
SELECT avg(sal) avg_Sal,
       max(sal) max_Sal,
       min(sal) min_Sal,
       sum(sal) sum_Sal
FROM emp;

--二、分组查询
--编写分组查询语句,理解分组查询的意义
--编写分组查询语句,实现分组查询的应用
--查询各部门的平均工资和最高月收入和总资金数
SELECT min(dname) dname,
       avg(sal) avg_Sal,
       max(nvl(sal,0)+nvl(comm,0)) max_incoming,
       sum(comm) sum_comm
FROM emp,dept
WHERE emp.deptno = dept.deptno
GROUP BY emp.deptno;

--查询部门号大于10且平均工资大于1500的部门名称、部门平均工资和部门人数
SELECT min(dname) dname,
       avg(sal) avg_Sal,
       count(empno) emp_count
FROM emp,dept
WHERE emp.deptno > 10 AND emp.deptno = dept.deptno
GROUP BY emp.deptno
HAVING avg(sal) > 1500;

--三、增删改语句

--添加数据
--在部门表中添加一个部门,编号为50,名称为 TRAIN  地点在  LOUDI
INSERT INTO dept(loc,dname,deptno)
VALUES('LOUDI','TRAIN',50);
INSERT INTO dept
VALUES(50,'TRAIN','LOUDI');
--以上两种插入数据方式均可

--修改数据
--将刚才添加了部门的编号修改为80
UPDATE dept
SET deptno = 80
WHERE deptno = 50;

--删除数据
--删除刚才添加了部门 
DELETE FROM dept
WHERE deptno = 80;

实训报告4:管理表实训

一. 论述题(共1题,100分)

  1. (论述题) 实训四 管理表 DDL
    实训目的:
    掌握创建表、修改表、删除表的方法
    掌握创建主键约束、外键约束、用户自定义约束的方法
    掌握创建查询表的方法及使用截断表的方法
    理解约束在数据库中的作用
    实训内容:
    一、创建表
    创建图书馆管理系统所涉及的表
    创建产品销售系统所涉及的表
    图书表book(bid,bname,price,qty)
    书库表lib(lid,lname,address)
    读者表reader(rid,rname,dept)
    借阅表loan(bid,rid,loanDate)
    二、修改表
    1、为各表创建约束
    DBMS自动实现数据的完整性—借助于约束的作用:保证数据库中永久数据的正确性(主键唯一,不能引用不存在的对象,满足用户定义的条件)
    创建主键约束(为图书表、读者表、借阅表创建主键)
    主键:唯一标识,该字段的值必须与别的实体必须是不一样的
    由dbms保证数据的正确性
    创建外键约束(为借阅表创建外键)
    创建用户自定义约束(指定图书表中价格必须为正值)
    2、对各表进行字段调整操作
    添加新字段
    在图书表中添加“是否热门”字段
    修改字段类型
    修改图书表中书名字段为变长字符串
    删除不用的字段
    删除图书表中“是否热门”字段
    三、删除表
    删除无关联表
    删除包含外键引用的表

四、创建查询表
创建所有昂贵书籍表
五、对借阅情况表进行截断操作
delete * from loan
dml 日志多
ddl 日志少
truncate loan;

select * from book where bid in(
select bid
from book
group by bid
having count(bid)>1);

解答参考

--1. (论述题) 实训四 管理表 DDL
--实训目的:
--掌握创建表、修改表、删除表的方法
--掌握创建主键约束、外键约束、用户自定义约束的方法
--掌握创建查询表的方法及使用截断表的方法
--理解约束在数据库中的作用
--实训内容:
--一、创建表
--创建图书馆管理系统所涉及的表
--创建产品销售系统所涉及的表
--图书表book(bid,bname,price,qty)
--书库表lib(lid,lname,address)
--读者表reader(rid,rname,dept)
--借阅表loan(bid,rid,loanDate)

create table bookSurface(
    bid char(20) NOT NULL Primary Key,
    bname char(20) NOT NULL,
    price int NOT NULL,
    qty char(20) 
)



create table libSurface(
    lid char(20) NOT NULL ,
    lname char(20) NOT NULL,
    address char(40) NOT NULL 
)

create table readerSurface(
    rid char(20) NOT NULL,
    rname char(20) NOT NULL,
    dept char(30) NOT NULL 
)



create table loanSurface(
    bid char(20) NOT NULL,
    rid char(20) NOT NULL,
    loanDate char(20) NOT NULL
)

--二、修改表
--1、为各表创建约束
--DBMS自动实现数据的完整性---借助于约束的作用:保证数据库中永久数据的正确性(主键唯一,不能引用不存在的对象,满足用户定义的条件)
--创建主键约束(为图书表、读者表、借阅表创建主键)
--主键:唯一标识,该字段的值必须与别的实体必须是不一样的
--由dbms保证数据的正确性

 alter table libSURFACE add primary key(lid);

 alter table readerSURFACE add primary key(rid);

 alter table loanSURFACE add primary key(bid);

 alter table loanSURFACE drop primary key;

--创建外键约束(为借阅表创建外键)

alter table loanSURFACE add constraint book_FK foreign key(bid) references bookSurface(bid);

alter table loanSURFACE add constraint book_FK2 foreign key(rid) references readerSurface(rid);

--创建用户自定义约束(指定图书表中价格必须为正值)

alter table bookSurface add constraint ck_booksSurface Check (price > 0);

--2、对各表进行字段调整操作
--添加新字段
--在图书表中添加“是否热门”字段

  alter table bookSurface add (popular varchar(30) default '是否热门' not null);

--修改字段类型
alter table bookSurface modify (popular varchar(30) default 'IsPopular');

--修改图书表中书名字段为变长字符串

alter table bookSurface 
modify (bname varchar(30));

alter table bookSurface 
modify (bid char(10));

alter table bookSurface 
modify (bname varchar(20));


--删除不用的字段
--删除图书表中“是否热门”字段
alter table bookSurface
drop column popular;


--三、删除表
--删除无关联表
--删除包含外键引用的表

drop table bookSurface cascade constraints;
drop table readerSURFACE cascade constraints;


--四、创建查询表
--创建所有昂贵书籍表

create table expensivebook 
as
select *
from bookSurface
where price>300;

 
--五、对借阅情况表进行截断操作

delete * from loan
dml  日志多
ddl 日志少


truncate loan;
select * from book where bid in(
select bid
from book
group by bid
having count(bid)>1);

实训报告5:权限管理实训

一. 论述题(共1题,100分)

  1. (论述题) 撰写权限管理的实训报告
    实训5 安全管理
    实训目的:
    1、理解用户与模式的概念,掌握oracle中用户管理的基本方法
    2、理解系统权限、对象权限的概念,掌握分配权限的方法
    3、理解角色的概念,掌握角色的应用方法
    实训内容:
    一、用户管理与应用
    1、查看用户与模式
    2、创建用户
    3、给予新用户基本权限 create session , create any table
    4、调整用户的密码、锁定状态、配额等
    5、删除用户!!

二、权限管理与应用
系统权限system privilege
对象权限object privilege 多 on objectName
1、授予或回收系统权限
2、授予或回收对象权限
3、转交管理权限或收回管理权限(权限传递)

三、角色管理与应用
role 一系列权限的命名集合,目的是简化权限管理的复杂性
1、创建角色
2、将各类权限放入角色
3、将角色授予某用户

解答参考

. 论述题(共1题,100分)
1. (论述题) 撰写权限管理的实训报告
实训5 安全管理

实训目的:

	1、理解用户与模式的概念,掌握oracle中用户管理的基本方法

	2、理解系统权限、对象权限的概念,掌握分配权限的方法

	3、理解角色的概念,掌握角色的应用方法	

实训内容:

一、用户管理与应用

1、查看用户与模式

select * from dba_users; 
select * from all_users; 
select * from user_users;
select * from user_sys_privs;

2、创建用户

create user u1 identified by "1234";

3、给予新用户基本权限  create session ,  create any table

grant connect,resource to u1;

4、调整用户的密码、锁定状态、配额等

调整密码:
alter user u1 identified by "newPassWord";

锁定状态:
alter user u1 account lock;
alter user u1 account unlock;

配额:
alter user test_quota  quota 100M on u1;
alter user test_quota quota unlimited on u1;

5、删除用户!!

drop user u1;

二、权限管理与应用

系统权限system privilege 

对象权限object privilege    多   on objectName

1、授予或回收系统权限

grant create session to u1;
grant create table to u1;
grant unlimited tablespace to u1;

revoke create session from u1;
revoke create table from u1;
revoke unlimited tablespace from u1;


2、授予或回收对象权限
grant object_privilege on object  to  u1;
revoke privilege  on object from u1;

3、转交管理权限或收回管理权限(权限传递)

grant alter any table to u1 with admin option;


三、角色管理与应用

role   一系列权限的命名集合,目的是简化权限管理的复杂性

1、创建角色 

create role newRole;

2、将各类权限放入角色

grant privilege to newRole;

3、将角色授予某用户

将角色授予用户u1:
grant newRole to u1;

收回角色:
revoke  newRole  from  u1;
  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实验一 SQL*PLUS练习 【实验目的】 (1) 了解Oracle的工作环境和基本使用方法。 (2) 练习标准SQL的数据操作,查询命令及其查询优化。 (3) 学会使用高级SQL命令,排序、分组、自连接查询等。 (4) 学会使用SQL*PLUS命令显示报,存储到文件等。 【实验内容】 一、 准备使用SQL*PLUS 1. 进入SQL*PLUS 2. 退出SQL*PLUS 3. 显示结构命令DESCRIBE SQL>DESCRIBE emp 使用DESCRIBE(缩写DESC)可以列出指定的基本结构,包括各字段的字段名以及类型、长度、是否非空等信息。 4. 使用SQL*PLUS显示数据库中EMP的内容 输入下面的查询语句: SQL>SELECT * FROM emp; 按下回车键执行查询 5. 执行命令文件 START或@命令将指定文件调入SQL缓冲区中,并执行文件内容。 SQL>@ 文件名(文件后缀缺省为.SQL)或 SQL>START 文件名 文件中每条SQL语句顺序装入缓冲区并执行。 二、 数据库命令——有关、视图等的操作 1. 创建表employee 例1 定义一个人事信息管理系统中存放职工基本信息的一张。可输入如下命令: SQL>CREATE TABLE employee (empno number(6) PRIMARY KEY, /* 职工编号 name varchar2(10) NOT NULL, /* 姓名 deptno number(2) DEFAULT 10, /* 部门号 salary number(7,2) CHECK(salarycreate table emp2 as select * from emp where 1=2; 在命令的where子句中给出1=2,示条件不可能成立,因而只能复制结构,而不能复制任何数据到新中去。另外,还可以复制一个的部分列定义或部分列定义及其数据。 三、 Oracle数据库数据查询 1、单查询 2、多查询 、 SQL*PLUS常用命令 1 常用报格式化名命令 命令 定义 Btitle 为报的每一页设置底端标题 Column 设置列的标题和格式 Compute 让SQL*PLUS计算各种值 Remark 将某些字标记为注释 Set linesize 设置报的行宽字符数 Set newpage 设置报各页之间的行数 Spool 使SQL*PLUS将输出写入文件中 Start 使SQL*PLUS执行一个sql文件 Ttitle 设置报每页的头标题 Break 让SQL*PLUS进行分组操作 例3 建立一个批命令文件对查询到的数据以报的形式输出并将其保存到指定的文件中。 处理方法:利用SQL*PLUS语言工具(也可以使用其他文本编辑器)建立批命令的.SQL文件。在“SQL>”提示符下,使用EDIT命令在”E:\”中建立SCGB.SQL文件。 SCGB.SQL文件中的命令组如下: SQL>EDIT E:\ SCGB.SQL SET echo off SET pagesize 30 SET linesize 75 TTITLE’2008年4月10号’CE’公司职员基本情况登记’R’Page:’ FORMAT 99- >SQL.PNO SKIP 1 CE’===========================’ BTITLE COL 60 ’制标单位’ TAB 3 ‘人事部’ COLUMN empno heading ‘职工|编号’ COLUMN ename format a10 heading ‘姓 名’ COLUMN job heading ‘工 种’ COLUMN sal format $99,990 heading 工 资’ COLUMN comm Like sal heading ‘奖 金’ COLUMN deptno format 9999 heading ‘部门|编号’ COLUMN hiredate heading ‘参加工作时间’ SPOOL e:\sjbb /*在E盘中建立格式报输出文件,默认属性为LST BREAK on deptno skip 1 COMPUTE sum of sal comm on deptno SELECT empno,ename,job,hiredate,sal,comm,deptno from emp ORDER BY deptno,sal; SPOOL off /*终止SPOOL功能,关闭其文件。注意,此命令不可省,否则将建立空文件。 五、 实验内容 1、以cs+学号为用户名创建用户,并授予用户创建数据对象的权限。 2、复制emp,复制名为emp_学号,然后将emp中工资低于$2000 的职工插入到复制的中。 3、对复制的emp插入一行只包含有职工号,职工名,工资与部门号个数据 项值的记录。 4、在复制的emp中将雇员ALLEN提升为经理,工资增至$2500, 奖(佣 )金增加40%。 5、删除复制的emp中工资低于500的记录行。 6、列出10号部门中既不是经理,也不是秘书的职工的所有信息。 7、查找出部门所在地是CHICAGO的部门的职工姓名、工资和工种。 8、统计各部门中各工种的人数、工资总和及奖金总和。 9、查找出工资比其所在部门平均工资高的职工姓名、工种与工资情况。 实验3 Oracle数据库开发环境下PL/SQL编程 【实验目的】 (1)掌握 PL/SQL 的基本使用方法。 (2)在SQL*PLUS环境下运行PL/SQL的简单程序。 (3)应用 PL/SQL 解决实际问题 【实验内容与步骤】 PL/SQL块中的可执行部分是由一系列语句组成的(包括对数据库进行操作的SQL语句,PL/SQL语言的各种流程控制语句等)。在块中对数据库查询,增、删、改等对数据的操作是由SQL命令完成的。在PL/SQL块中,可以使用SQL的数据查询命令,数据操纵命令和事务控制命令。可使用全部SQL函数。PL/SQL中的SQL语句,可使用SQL的比较操作等运算符。但不能使用数据定义语句。 在PL/SQL块中使用SELECT语句时注意几点: (1)SELECT语句必须含有INTO子句。 (2)INTO子句后的变量个数和位置及数据类型必须和SELECT命令后的字段名相同。 (3)INTO子句后可以是简单类型变量或组合类型变量。 (4)SELECT语句中的WHERE条件可以包含PL/SQL块中定义的变量及达式,但变量名不要同数据库列名相同。 (5)在未使用显式游标的情况下,使用SELECT语句必须保证只有一条记录返回,否则会产生异常情况。 [例3-1] 问题:编写一个过程,求和运算。 SET SERVEROUTPUT ON; DECLARE a number:=1; BEGIN a:=a+5; DBMS_OUTPUT.PUT_LINE('和为:'||TO_CHAR(a)); END; / 【例3-2】:使用%TYPE声明变量,输出制定中的相关信息。 DECLARE my_name student.sname%TYPE; BEGIN SELECT sname INTO my_name FROM student WHERE no=’01203001’; DBMS_OUTPUT.PUT_LINE(my_name); END; / 【例3-3】问题:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。 declare v_sal emp.sal%type; begin select sal into v_sal from emp where ename=spName; if v_sal :NEW.sal THEN DBMS_OUTPUT.PUT_LINE('工资减少'); ELSIF :OLD.sal < :NEW.sal THEN DBMS_OUTPUT.PUT_LINE('工资增加'); ELSE DBMS_OUTPUT.PUT_LINE('工资未作任何变动'); END IF; DBMS_OUTPUT.PUT_LINE('更新前工资 :' || :OLD.sal); DBMS_OUTPUT.PUT_LINE('更新后工资 :' || :NEW.sal); END; / --执行UPDATE查看效果 UPDATE emp SET sal = 3000 WHERE empno = '7788'; 6、需要对在上进行DML操作的用户进行安全检查,看是否具有合适的特权。 Create table foo(a number); Create trigger biud_foo Before insert or update or delete On foo Begin If user not in (‘DONNY’) then Raise_application_error(-20001, ‘You don’t have access to modify this table.’); End if; End; / 即使SYS,SYSTEM用户也不能修改foo。 2、 利用PL/SQL编写程序实现下列触发器 1)、编写一个数据库触发器,当任何时候某个部门从dept中删除时,该触发器将从emp中删除该部门的所有雇员。(要求:emp、dept均为复制后的) 2)、创建一个触发器,当客户下完订单后,自动统计该订单的所有图书的价格总额。 3)、创建一个触发器,禁止客户在非工作时间(早上8:00前,晚上17:00后)下订单。 五、实验心得

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

所恋皆洛尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值