首页 > 精品范文库 > 13号文库
Oracle数据库触发器京桥大学
编辑:青苔石径 识别码:22-906950 13号文库 发布时间: 2024-02-12 00:21:45 来源:网络

第一篇:Oracle数据库触发器京桥大学

京桥大学召开“解放思想、改革开放、创新驱动、科学发展”大讨论活动动员大会 为深入贯彻落实党的十八大精神、5月15日下午,我院在办公楼二楼大会议室召开“解放思想、改革开放、创新驱动、科学发展”大讨论活动动员大会。学院党委书记魏东海作重要讲话,党委副书记张瑾主持会议,学院领导和全体中层干部参加了会议。

魏书记在讲话中指出,开展“解放思想、改革开放、创新驱动、科学发展”大讨论活动,是全面贯彻党的十八精神、深入落实党的十八大精神的重要举措,也是实现我院进位赶超、跨越发展的关键,全体教职员工要真正学深吃透党的十八大精神和市委八届五次全会精神,切实将党的理论创新成果和市委的决策部署转化成促进学院科学发展的自觉行动;要深刻查找与学院科学发展不相适应的思想观念,进一步开创解放思想的新境界;要扎实深入开展对标行动,在学习先进、调查研究、对比分析中,查找差距不足,制定赶超计划;要紧密联系学院实际,着力解决影响学院科学发展的突出问题;要把创新突破贯彻始终,坚持边学习边讨论边实践,把大讨论成果转化为解决问题的科学决策、赶超进位的科学路径、科学发展的实际行动。

魏书记指出,要紧密围绕“解放思想、改革开放、创新驱动、科学发展”这一主题,紧密联系思想和工作实际,从如何在办学理念上解放思想,在培养现代职业人的方法和路径上寻求新突破;如何在人才观念上解放思想,在引进人才、培养人才、用好人才上寻求新突破;如何在体制创新上解放思想,在建立长效动能机制上寻求新突破;如何在服务区域经济社会发展上解放思想,在实现校企的深度合作上寻求新突破;如何在目标管理上解放思想,在推进全面对标,提升学院核心竞争力上寻求新突破;如何在深化改革育人模式上解放思想,在“立德树人”提高人才培养质量上实现新突破;如何在营造发展环境上解放思想,在提升学院发展能力上实现新突破;如何在干部队伍建设上解放思想,在提升学院凝聚力战斗力上实现新突破等八个方面开展讨论,探索促进学院改革发展的新思路、新途径、新举措,努力实现思想上明显解放,作风上明显改善,举措上明显创新,工作上明显突破,为建设人民满意、市内领先、国内知名、特色鲜明的民办院校奠定坚实的基础。

魏副书记在会议结束时强调,各党总支要切实负起责任,认真组织教职员工开展学习讨论,及时对本总支大讨论活动的开展情况、成果转化情况进行自查。全体教职工要以此次大讨论活动为契机,促进教育思想和观念的更新,推动学院又好又快发展。

第二篇:网络数据库讲稿(触发器)

网络数据库讲稿

3/26/202_

触发器

P191

一、触发器概述

1.是一种特殊的存储过程。

2.不能被显式调用,只能由一些特定的操作(命令)引发(激活),这些命令是:INSERT、DELETE、UPDATE、CREATE、ALTER、DROP、GRANT、DENY、REVOKE等。3.每个触发器由三部分组成

①触发器名称:命名规则与变量名、存储过程名相同; ②激活该触发器的操作(命令动词)。③一个存储过程。

4.使用触发器可强制实现数据的一致性和完整性。

二、触发器的分类(按引发命令分类)及其工作原理

1.DML触发器(表级)(1)触发器必须依附于某一个表(触发器必须被包含在某一个表中)。(2)激活该触发器的操作:可以是INSERT、DELETE、UPDATE之一。(3)当上述操作发生在包含触发器的表上时,触发器中的过程被自动执行。(4)支持两种类型的触发器: ①AFTER 可以为同一表的同一操作定义多个该类型的触发器,并可定义执行顺序; ②INSTEAD OF 同一表的同一操作只能定义一个该类型的触发器。(5)工作原理

P193 临时逻辑表INSERTED和DELETED。2.DDL触发器(数据库级和服务器级)(1)触发器必须依附于某一个数据库(触发器必须被包含在某一个数据库中)。

(2)激活该触发器的操作:可以是CREATE、ALTER、DROP、GRANT、DENY、REVOKE等之一。

(3)当上述操作发生在包含触发器的数据库上时,触发器中的过程被自动执行。(4)只有AFTER型触发器。

三、创建DML触发器

P194 用命令CREATE TRIGGER创建 例: 1.

CREATE TRIGGER 增加学生学分 ON 成绩

//只能增加一条记录

FOR INSERT AS DECLARE @XH CHAR(6),@KCH CHAR(8),@FS DECIMAL(4,1)SELECT @XH=学号,@KCH=课程编号,@FS=分数 FROM INSERTED IF @FS>=60

网络数据库讲稿

3/26/202_

UPDATE 学生 SET 已修学分

=已修学分+(SELECT 学分 FROM 课程 WHERE 课程编号=@KCH)

WHERE 学号=@XH 2.

CREATE TRIGGER 减少学生学分 ON 成绩 FOR DELETE AS UPDATE 学生 SET 已修学分=已修学分-(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60)3.CREATE TRIGGER 修改学生学分 ON 成绩 FOR UPDATE AS UPDATE 学生 SET 已修学分=已修学分-(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60)UPDATE 学生 SET 已修学分=已修学分+(SELECT SUM(学分)FROM 课程WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM INSERTED WHERE 学生.学号=INSERTED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM INSERTED WHERE 学生.学号=INSERTED.学号 AND 分数>=60)

4.“修改学生学分”也可改为:

CREATE TRIGGER 修改学生学分 ON 成绩 FOR UPDATE AS UPDATE 学生 SET 已修学分=(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN

网络数据库讲稿

3/26/202_(SELECT 课程编号 FROM 成绩

WHERE 学生.学号=成绩.学号 AND 分数>=60))

然后可执行下列命令,并检验执行结果。

--INSERT INTO 成绩 VALUES('200202','L2020308',83)--INSERT INTO 成绩 VALUES('200202','L2030501',80)--INSERT INTO 成绩 VALUES('200202','L2030506',75)--DELETE FROM 成绩 WHERE 学号='200202' AND LEFT(课程编号,1)='L'--UPDATE 成绩 SET 分数=80 WHERE 学号='200202' AND LEFT(课程编号,1)='L'

四、创建DDL触发器

P198 例: 1.P199 2.CREATE TRIGGER 禁删数据库ON ALL SERVER FOR DROP_DATABASE AS PRINT '请不要删除数据库!' ROLLBACK TRANSACTION

DROP DATABASE 订货管理

五、嵌套触发器和递归触发器

P199, P200

六、管理触发器

P201 1.查看 2.修改 3.禁用 4.删除

--根据成绩表计算每个学生的已修学分

update 学生set 已修学分=(select sum(学分)from 课程 where 课程编号in(select 课程编号from 成绩where 学生.学号=成绩.学号 and 分数>=60))

--修改插入触发器,使得向成绩表中插入多条记录,也能成功执行 CREATE TRIGGER 插入学生学分ON 成绩 FOR insert

网络数据库讲稿

3/26/202_ AS UPDATE 学生SET 已修学分=已修学分+(SELECT SUM(学分)FROM 课程 WHERE 课程编号IN(SELECT DISTINCT 课程编号FROM inserted WHERE 学生.学号=inserted.学号AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号FROM inserted WHERE 学生.学号=inserted.学号AND 分数>=60)

select * from 成绩

select 学号,已修学分from 学生

INSERT INTO 成绩VALUES('200202','L2020308',83)INSERT INTO 成绩VALUES('200202','L2030501',80)INSERT INTO 成绩VALUES('200202','L2030506',75)INSERT INTO 成绩VALUES('200201','L2020308',83)INSERT INTO 成绩VALUES('200201','L2030501',80)INSERT INTO 成绩VALUES('200201','L2030506',75)

select * into 备份成绩from 成绩 //备份成绩表 select 学号,姓名,已修学分from 学生

insert into 成绩 select * from 成绩

INSERT INTO 成绩VALUES('200212','L2030506',75)

第三篇:ORACLE数据库工作总结

202_-202_学第一学期ORACLE教学工作总结

班级:13高软班

数据库技术是计算机科学技术中发展最快的领域之一,也是应用最为广泛的技术之一,它已经成为计算机信息系统与应用的核心技术和重要基础。所以在学习这门课时,注重学生实际操作能力,安排了理论与上机操作相结合。以下是我的工作总结:

1、课前准备:备好课。认真学习贯彻教学大纲,钻研教材。了解教材的基本思想、基本概念、结构、重点与难点,掌握知识的逻辑。

了解学生原有的知识技能的质量,他们的兴趣、需要、方法、习惯,学习新知识可能会有哪些困难,采取相应的措施。

考虑教法,解决如何把已掌握的教材传授给学生,包括如何组织教学、如何安排每节课的活动。

2、课堂上的情况。组织好课堂教学,关注全体学生,注意信息反馈,调动学生的注意力,使其保持相对稳定性。同时,激发学生的情感,使他们产生愉悦的心境,创造良好的课堂气氛,课堂语言简洁明了,课堂提问面向全体学生,注意引发学生学习的兴趣,课堂上讲练结合,布置好课外作业,减轻学生的负担。

3、上机操作情况。让学生复习操作上节课的学习内容,布置一定的作业,做到每个学生的每个SQL语句,每个操作抖完全掌握。总之,作为一名教师,教学是我的基本工作,而教与学是一个良性互动的过程,在教中学,在学中教,才能实现自己在业务上的进步与飞跃。实施素质教育对教师的素质要求更高,在今后的教育教学中,我将严格要求自己,努力工作,发扬优点,开拓进取,为教育事业奉献自己的力量。

第四篇:Oracle数据库总结范文

创建表及命名规则?

表名和列名:

必须以字母开头 必须在1–30个字符之间

必须只能包含A–Z, a–z, 0–9, _, $, 和# 必须不能和用户定义的其他对象重名 必须不能是Oracle 的保留字 Oracle默认存储是都存为大写

增删改查语法?

增加: 例如:使用INSERT语句往customers表中插入数据,指定相关列和值 INSERT INTO customers(customer_id, first_name, last_name, dob, phone)VALUES(6, 'Fred', 'Brown', '01-1月-1970', '800-555-1215');

如果为表所有列都指定值,那么可以忽略列清单

INSERT INTO customersVALUES(6, 'Fred', 'Brown', '01-1月-1970', '800-555-1215');

可以使用NULL为某些列指定空值

INSERT INTO customersVALUES(8, 'Sophie', 'White', NULL, NULL);

查询:select * fromcustomers;或者select字段 fromcustomerswhere条件 删除:deletefromcustomerswhere条件

更改:update customersset name = 'xiaoming',age = ‘16’(更改多个字段时候用逗号隔开)where 条件

对查询结果进行排序?

语句:select * fromcustomersorderby字段 desc;

(asc(升序),desc(降序)如果不写,默认升序)

NULL值了解么?

NULL值表示未知的值。它是一个特殊的值,但并不是空字符串,NULL值表示该列是未知的。当某些查询语句在输出结果列上看不到值的时候,可能就是NULL值

NVL()和NVL2():

NULL值被查询出来的时候没有显示信息,如何告知用户这是空字符串还是NULL,这可以通过NVL()函数来进行处理

NVL(x,value)是有value显示本身,null显示为替换的value NVL2(x,value1,value2)是如果x不为NULL值,返回value1,否则返回value2 例程:

select name,nvl2(email,'已知','未知')from student;【代码含义:代表如果email字段中有值,则显示已知,null则显示未知,如果想显示本来的查询结果select name,nvl(email,'未知')from student;】 update student set name = replace(name,'小','大');【代码含义:代表将STUDENT表中NAME 字段中如果含有小字,那么就将小字替换为大字(操作的不是显示结果,而是将表中数据进行更改)】

Oracle中的简单函数?

字符串函数

 concat:将x和y拼接起来,并返回新字符串

例程:

select concat(first_name,'-'||last_name)姓名 from customers; Instr字符查找,从1开始。

select instr('asdbcrdbewqrbmde','b')from dual;select instr('asdbcrdbewqrbmde','b',5,2)from dual;【代表从第5个字符开始,第二个b所在的位置】

 Ltrim : LTRIM(x,[trim_string])从x字符串左侧去除所有的trim_string字符串,如果没有指定trim_string字符串,则默认为去除左侧空白字符

 Rtrim RTRIM(x,[trim_string])从x字符串右侧去除所有的trim_string字符串,如果没有指定trim_string字符串,则默认为去除右侧空白字符  Trim TRIM(trim_string FROM x)从x字符串两侧去除trim_string字符串

 Replace REPLACE(x, search_string, replace_string)从字符串x中搜索search_string字符串,并使用replace_string字符串替换。用select执行并不会修改数据库中原始值,但是用update执行可以修改。

 Substr SUBSTR(x, start,[length])返回字符串中的指定的字符,这些字符从字符串的第start个位置开始,长度为length个字符;如果start是负数,则从x字符串的末尾开始算起;如果length省略,则将返回一直到字符串末尾的所有字符

例程:

select substr('abcd月fg',4,2)from dual;(结果:d月)select substr('abcdefg',-2)from dual;(结果:fq)

日期函数

 Sysdate 例程:

Selectsysdatefromdual;

Select to_char(sysdate, 'yyyy-mm-dd-hh-mm-ss')from dual;

 Add_months(d1,n1) last_day():

转换函数

 To_char TO_CHAR(x,[ format])将x转化为字符串。format为转换的格式,可以为数字格式或日期格式

select to_char(sysdate,'yyyy-mm-dd')from dual;【一般在查询时候使用,使返回的值成为指定格式】

 to_date TO_DATE(x,[format])将x字符串转换为日期

insert into student values(seq_stu.nextval,'小明',to_date('1992-2-18','yyyy-mm-dd'),default,'北京',null);【一般在添加使用】 返回所查询的值中最后一个日期数据。

聚合函数

 Avg:平均数  Sum:求和  Max:最大值  Min:最小值  Count:返回统计的行数  Round:四舍五入

例程:

select round(avg(bid),1)from bug;分组了解么?

有时需要对表中的行进行分组,然后统计每组的信息,可以使用GROUP BY进行分组,然后再对每组进行统计。

(1)可以使用GROUP BY对多个列进行分组

例:

SELECT product_id, avg(customer_id)FROM purchases GROUP BY product_id;

(2)可以对分组后的行使用聚集函数,聚集函数会统计每组中的值,对于每组分别统计后返回一个值 例:

SELECT

product_type_id,BY

COUNT(ROWID)FROM

BY

productsGROUP product_type_id;注意:

product_type_idORDER a)如果查询中使用了聚集函数,被查询的列未使用聚集函数处理,那么这些列必须出现在GROUP BY子句后,否则,会提示ORA-00937错误

b)不能使用聚集函数作为WHERE子句的筛选条件,否则,会提示ORA-00934错误

c)可以使用HAVING子句过滤分组后的行

SELECT...FROM...WHERE GROUP BY...HAVING...ORDER BY...;(GROUP BY使用时可以不使用HAVING,但是使用HAVING时必须有GROUP BY才有意义)

(3)同时使用WHERE, GROUP BY和HAVING

a)首先,执行WHERE筛选掉不符合条件的行 b)然后,将符合条件的行使用GROUP BY进行分组 c)最后,使用HAVING对分组统计的结果进行再次筛选 例:

SELECT product_type_id, AVG(price)FROM products

WHERE price < 15

GROUP BY product_type_id HAVING AVG(price)> 13 ORDER BY product_type_id;

表的约束条件?

目的:

确保表中数据的完整性。

常用的约束类型: 主键约束(PRIMARY KEY):要求主键列数据唯一,并且不允许为空 非空约束(NOT NULL):指定的列的值不允许为空

唯一键约束(UNIQUE):要求该列唯一,允许为空,但只能出现一个空

检查约束(CHECK):指定表中一列或多列可以接受的数据值格式 默认约束(DEFAULT):指定某列的默认值

外键约束(FOREIGN KEY):用于建立和加强两个表数据之间连接的一

列或多列。通过将表中的主键列添加到另一个表中。可以创建两个表之间的连接。这个主键的列就称为第二个表的外键。外键约束就可以确保添加到外键表中的任何行都在主表中都存在相应的行

多表查询?

不同的数据存储在不同的表中,通常要查询多张表才能找到需要的数据

例程: SELECT products.name, product_types.name FROM products, product_types WHERE

products.product_type_id

= product_types.product_type_id AND products.product_id = 3;

products表和product_types表相关字段会用在SELECT语句及WHERE子句上,可以给表起别名,提高代码可读性、降低书写难度 例程:

SELECT p.name, pt.name FROM products p, product_types pt WHERE p.product_type_id = pt.product_type_id AND p.product_id = 3 注意:

如果查询两张表,并且没有定义连接条件,那么查询的结果集是两表相乘的结果,这样的情况称之为笛卡尔乘积。总结:多表查询WHERE时,连接次数=查询时连接表的数量-1

常见的三种连接类型:

内连接:

内连接返回的行只有满足连接条件才会返回。如果连接条件的列中有NULL值,那么该行则不会返回 外连接:

外连接返回的行满足连接条件,也包括在连接条件的列包含空值的行

自连接:

连接的表为同一张表

子查询?

子查询是嵌入到另一个SELECT语句中的一个SELECT语句。通过使用子查询,可以使用简单的语句组成强大的语句。当需要从表中选择行,而选择条件却取决于该表自身中的数据时,子查询非常有用。

单行子查询:(1)可以将另外一个查询作为WHERE子句的子查询

例:查询尾名是‘Brown’的首名和尾名

SELECT first_name, last_name FROM customers

WHERE customer_id =

(SELECT customer_id FROM customers WHERE last_name = 'Brown');(2)在单行子查询还可以使用其他比较运算符,如<>、<、>、<=和>= 例:查询价格大于平均价格的商品编号、名称及价格

WHERE子句中使用>,以及子查询中使用AVG()聚集函数

SELECT product_id, name, price FROM products WHERE price >(SELECT AVG(price)FROM products);(3)在HAVING子句中使用子查询

HAVING是在分组统计后用于过滤行,同样在HAVING子句后面可以跟子查询。单行子查询将返回结果用于HAVING子句过滤分组统计的行

例如:查询平均价格小于最大平均值的商品编号及平均值

SELECT product_type_id, AVG(price)FROM products GROUP BY product_type_id HAVING AVG(price)<(SELECT MAX(AVG(price))FROM products GROUP BY product_type_id)ORDER BY product_type_id;

分页查询?

可以通过ROWNUM来实现。

序列?

序列是一个数据库对象,用于生成一系列的整数。

索引?

索引是与表关联的可选结构。可以创建索引以加快对表执行SQL语句的速度。就像书的索引可以帮助我们更快速的查找信息一样,Oracle中的索引也提供了一种更快地访问表数据的途径。

视图?

视图是基于一张表或多张表或另外一个视图的逻辑表。视图不同于表,视图本身不包含任何数据。表是实际独立存在的实体,是用于存储数据的基本结构。而视图只是一种定义,对应一个查询语句。视图的数据都来自于某些表,这些表被称为基表。数据库中只在数据字典中存储对视图的定义。

第五篇:Oracle数据库实验报告

中南林业科技大学

实验报告

课程名称:

Oracle数据库 专业班级: 姓名:

学号:

****年**月**日

实验一

安装和使用Oracle数据库

【实验目的】

1.掌握Oracle软件安装过程,选择安装组件 2.掌握建立Oracle数据库,配置网络连接 3.掌握Oracle企业管理器的基本操作 4.使用SQL*Plus,登录到实例和数据库 5.掌握命令方式的关闭和启动实例及数据库 【实验内容】

1.查看已安装的Oracle组件

2.查看服务,记录下和数据库有关的服务名,将他们设为手动方式,启动相关服务。

3.配置监听器,查看是否在服务中有LISTENER,是否能启动。4.配置本地net服务,提示:设置正确的服务器地址和端口号。5.打开SQL*Plus,用SYS和SYSTEM用户名和密码登录。6.思考题:有几种打开SQL*Plus的方法?分别是什么? 7.用命令关闭实例和数据库,记录命令

8.用命令以NOMOUNT的方式启动实例,再加载数据库,打开数据库。

【实验结论】

1.查看已安装的Oracle组件

2.查看服务,记录下和数据库有关的服务名,将他们设为手动方式,启动相关服务。

3.配置监听器,查看是否在服务中有LISTENER,是否能启动。

4.配置本地net服务,提示:设置正确的服务器地址和端口号。

5.打开SQL*Plus,用SYS和SYSTEM用户名和密码登录。

6.思考题:有几种打开SQL*Plus的方法?分别是什么?(1)直接打开 sql plus 即窗口方式(2)cmd 命令行方式

(3)WEB 页面中 iSQL*Plus 方式 7.用命令关闭实例和数据库,记录命令 SQL>shutdown immediate

8.用命令以NOMOUNT的方式启动实例,再加载数据库,打开数据库。

sql>startup nomount sql>alter database mount;sql>alter database open;sql>startup

(1).用SQLplus 命令:show parameters参数名

(2).用select [列名] from 表名

2.初始化文件有几种?默认的保存位置在哪里?

初始化文件有三种:数据文件,日志文件,控制文件; 默认的保存位置E:oracleproduct10.2.0oradataorcl

4.打开OEM,查看三类物理文件信息

三类物理文件:数据文件、控制文件、日志文件 数据文件:.DBF存储表、索引及数据结构信息

日志文件:.LOG记录对数据库的所有修改信息,用于恢复

控制文件:.CTL二进制文件,记录数据库名、文件标识、检查点

5.分别用select命令查询V$parameter动态性能视图,用show命令查看全局数据库名、实例名、是否启动自动归档、标准数据块大小这四个参数的值,记录命令和结果。用select命令查询V$parameter动态性能视图

用show命令查看全局数据库名、实例名

用show命令查看是否启动自动归档、标准数据块大小

6.如何用命令查看数据文件、控制文件的文件名、存储位置和状态信息?

(1).查看数据文件的文件名、存储位置和状态信息

(2).查看控制文件的文件名、存储位置和状态信息

0

和服务器型文件都要找到),查看各类默认位置并记录下来(包括物理文件所在目录,该数据库相关的各个目录等),登录到mydb数据库。

2.用命令方式手工创建数据库testorcl

(1)创建批处理文件,建立必需的各级目录,参考第一题MYDB数据库的默认目录。

(4)运行数据库建立脚本,更改相关服务为手动启动方式

(5)运行数据字典等创建脚本

3.在DBCA中删除MYDB数据库。

Enter valuefor 4:runner Specify log path as parameter 5: Enter valuefor 5: D:oracleproduct10.2.0db_2RDBMSlog

二、完成下面的查询,记录查询命令和结果。1.查询HR方案种有哪些表,列出表名 2.设置行宽为160,每页行数为40 3.查询employees表中所有薪水在3000到6000元之间的员工编号、姓、名、受聘日期、工作代号、薪水、经理代号、部门号,按部门号升序排列,同一部门按员工编号降序排列

4.查询每个部门的人数、平均薪水、最高薪水、最低薪水,按部门编号升序排列

5.查询first_name的第三个字母是t的员工编号,first_name,电话号码,部门编号,部门名称

6.在job_history表中查询任职时间超过1年的员工编号,任职历时月份(保留整数),工作代号,部门代号。

7.查询每个部门经理的员工编号、姓名、薪水、部门号。

【实验结论】

一、需要访问HR示例方案中的表,如果机器上没有该示例方案,则运行相关包和相应配置装入HR方案。

1.将hr.rar解压到D:oracleproduct10.2.0db_2demoschema human_resources目录下,然后在SQL*PLUS 中执行 hr_main.sql

二、完成下面的查询,记录查询命令和结果。1.查询HR方案种有哪些表,列出表名

5.查询first_name的第三个字母是t的员工编号,first_name,电话号码,部门编号,部门名称

738

实验五

PL/SQL编程

【实验目的】

1.熟悉PL/SQL的数据类型和书写规则 2.熟悉控制结构和游标的使用 3.编写和运行函数、过程和触发器 【实验内容】

编写脚本文件,调试运行脚本文件,并记录结果。

1.在SQL*Plus中编写一个PL/SQL块,功能用于打印学生信息 在DECLARE部分完成:

(2)建立学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。均为可变长字符类型(3)编写本地子过程:学生信息打印过程PrintStuRecord,把(1)中定义的记录类型作为参数(4)定义学生信息记录变量stu_record 在BEGIN…END部分完成:

(1)为stu_record变量的各个元素赋值如下: 学号:‘2001001’ 姓名:’李新’

性别:‘m’

籍贯:‘黑龙江省哈尔滨市’ 学习成绩:‘Excellent’

0

(1)建立学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。均为可变长字符类型

set serveroutput on declare type stu_record_type is record

(s_no varchar2(8), s_name varchar2(10), s_sex varchar2(2), s_address varchar2(20), s_studyscore varchar2(10), s_activescore varchar2(10));(2)编写本地子过程:学生信息打印过程PrintStuRecord,把中定义的记录类型作为参数

procedure PrintStuRecord as begin dbms_output.put_line('学号:'|| stu_record.s_no);dbms_output.put_line('姓名 :'|| stu_record.s_name);dbms_output.put_line('性别:'|| stu_record.s_sex);dbms_output.put_line('籍贯:'|| stu_record.s_address);dbms_output.put_line('学习成绩:'|| stu_record.s_studyscore);dbms_output.put_line('活动成绩:'|| stu_record.s_activescore);end PrintStuRecord;(3)定义学生信息记录变量stu_record stu_record stu_record_type;在BEGIN…END部分完成:

(4)为stu_record变量的各个元素赋值如下: 学号:‘2001001’ 姓名:’李新’

性别:‘m’

籍贯:‘黑龙江省哈尔滨市’

2.建立对bookinfo表的DML触发器,一旦bookinfo表发生了任何变化,立即触发,对bookinfo表的数据进行统计,结果存储在数据统计表中

(1)如果没有则建立bookinfo表,选择建立在scott用户下,表结构为(bookno varchar2(36)Primary key, bookname varchar2(40)not null, authorname varchar2(10)not null, publishtime date, bookprice float)

create table bookinfo(bookno varchar2(36)Primary key,4

Selectcount(bookno),count(distinct authorname)from bookinfo;end;/

(4)在bookinfo表中插入、删除和更新信息,再查看major_stats表中数据的变化 <1>插入

647

实验六

模式对象管理与安全管理

【实验目的】

1.了解模式对象的类型

2.掌握在OEM中操作模式对象的方法

3.掌握命令方式建立表、视图、索引等常见对象的方法 4.熟悉Oracle中权限分类和设置,理解系统提供用户的角色和权限

5.熟练使用建立用户、角色,为用户授权、授予角色的命令

【实验内容】

1.创建一个TESTUSET用户,密码为test,默认表空间为user表空间

2.创建用户后为其授予登录数据库和创建数据库对象的权限 3.用TESTUSER用户登录数据库

4.创建学生信息表(学号,姓名,性别,入学成绩),定义主键和输入数据(至少5条数据),提交添加的数据。并完成下面的题目:

(1)再继续添加2条数据,设置一个保存点savepoint,再添加1条数据,执行回退到保存点的回退命令。查看此时表中数据(2)查询入学成绩大于480的学生信息(3)建立男生信息视图

(4)在“成绩”字段上建立B-树索引

5.创建一个表簇,名为empl_dep,容纳empl表和dep表,有公

Oracle数据库触发器京桥大学
TOP