oracle数据库实验报告

2024-06-29

oracle数据库实验报告(共9篇)

oracle数据库实验报告 篇1

授课学期:2015年度第二学期 课程名称:数据库编程课时安排:专

业:计算机科学与技术班

级:年

级:任课教师:陆汝华

实验 16课时

1班 2013级 实验一 Oracle安装配置与基本操作实验

教学目的要求:

1.掌握Oracle数据库的安装,包括服务器端数据库管理系统安装和客户端工具的安装。2.掌握Oracle数据库的登录、启动和关闭 重点:

Oracle 11g数据库的安装 难点:

服务端和客户端的安装 课时安排:实验2课时

预备知识:

一、安装:

1、选择安装方法:默认为基本安装,一般选择高级安装

2、选择安装类型:企业版 标准版 个人版

一般选择企业版

3、安装位置:即ORACLE基目录和主目录设置

4、先决条件检查

5、选择配置选项:创建数据库

6、选择数据库配置:一般用途/事务处理

7、输入全局数据库名和SID

8、数据库存储选项:数据文件存储位置

9、备份和恢复选项

10、口令

11、概要

点击安装按钮开始安装,直到出现安装结束界面。

二、操作:

1、程序组,系统服务,文件夹目录等的变化

2、从开始进入SQL Plus进行登录操作 用户名:sys as sysdba

3、进入控制台进行操作 https://localhost:1158/em

三、当oracle11g计算机名修改后需要重新配置 1 监听程序配置 本地NET服务名配置 3 控制台重新配置

(1)cmd

(2)emctl start dbconsole 提示:Environment variable ORACLE_SID not defined.Please define it.(3)set oracle_sid=orcl

(4)emctl start dbconsole 提示:OC4J Configuration issue.c:appAdministratorproduct11.1.0db_1/oc4j/j2ee/OC4 J_DBConsole_j1390_orcl not found.(5)复制上述文件改名为:OC4J_DBConsole_j1390_orcl

(6)emctl start dbconsole 提示:EM Configuration issue.c:appAdministratorproduct11.1.0db_1/j1390_orcl not found.(7)emctl start dbconsole 服务已经启动成功。还可以通过修改资料档案库或新建数据库来完成。

实验内容:

1、Oracle服务端软件的安装;

2、Oracle数据库的安装;

3、Oracle数据库客户端的安装;

4、Oracle数据库的登录、启动和关闭等基本操作。实验二 Oracle网络结构与管理实验

教学目的要求:

1.理解Oracle网络服务组成及Oracle NET、监听程序、管理连接器和网络工具的功能和作用;

2.理解服务名、连接描述符、连接标识符等基本概念; 3.掌握Oracle网络在服务器端和客户端的配置方法。重点:

Oracle 服务器端监听程序和网络服务名的配置 难点:

Oracle 服务器端监听程序的配置 课时安排:实验2课时

预备知识:

一、监听程序的配置

1、监听程序配置文件内容

默认路径为%Oracle-Home%networkadmin,存在文件名为listener.ora的配置文件,包含内容:配置监听程序所监听的一个或多个协议地址。配置监听程序所支持的数据库服务信息。设置控制监听程序运行的参数。

2、监听程序配置方法

使用ONCA或Oracle net manager修改配置文件listener.ora的内容,可以配置多个监听程序,ONCA配置方法步骤如下。

(1)欢迎使用(2)监听程序

(3)输入监听程序名称(4)选择协议(5)选择端口(6)配置完成

3、监听程序管理

在Windows环境下,可用命令行程序LSNRCTL(listener control 监听控制)启动、关闭和管理监听程序。

二、命名方法的配置

1、选择命名方法的配置

选择的命名方法记录在sqlnet.ora的文件中,该文件默认路径为networkadmin,默认内容为:

# sqlnet.ora Network Configuration File: D:appAdministratorproduct11.1.0db_1networkadminsqlnet.ora # Generated by Oracle configuration tools.# This file is actually generated by netca.But if customers choose to # install “Software Only”, this file wont exist and without the native # authentication, they will not be able to connect to the database on NT.SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)

2、配置本地命名方法 本地命名方法将连接标识符到连接描述符的映射关系保存在名称为tnsnames.ora文件中,默认内容为:

# tnsnames.ora Network Configuration File: D:appAdministratorproduct11.1.0db_1networkadmintnsnames.ora # Generated by Oracle configuration tools.ORCL =

(DESCRIPTION =

(ADDRESS =(PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)))也可通过ONCA进行配置:

(1)选择“本地Net服务名配置”(2)服务名配置(3)服务名(4)选择协议(5)主机名(6)测试

(7)测试成功,可编辑网络服务名

实验内容:

1、对Oracle 服务器端进行监听程序和网络服务名等配置,并查看listener.ora、sqlnet.ora、tnsnames.ora等相关文件和Net Manager等相关界面的数据信息;

2、修改服务端的计算机名,对Oracle进行重新配置,使其能正常工作,同时查看上述相关数据并与之比较变化;

3、使用命令对监听程序进行操作管理。

实验三 Oracle数据库管理实验

教学目的要求:

1.掌握数据库的建立方法。

2.了解手动建立数据库的基本步骤。3.掌握数据库启动、关闭和删除的方法 重点:

数据库启动、关闭和删除的方法 难点:

手动建立数据库 课时安排:实验2课时

预备知识:

一、数据库的建立

(1)DBCA建立数据库

点击:OracleHome、Configuration And Migration Tools、Database Configuration Assistant进入DBCA界面。

(2)SQL命令建立数据库

1、确定数据库名和实例名SID SQL>setenv Oracle_SID=student

2、确定环境变量设置正确

在启动SQL Plus之前,必须正确设置环境变量。如Oracle_sid,Oracle_hom,PATH等。

3、确定DBA认证方式

新建数据库,必须以DBA身份连接,并具有相应的系统权限。

4、创建初始化参数文件

可复制样本初始化参数文件,也可复制其它数据库的初始化 参数文件。

5、创建实例

C:>oradim –NEW –SID student –STARTMODE MANUAL-PFILE=„„INIT.ORA

6、连接到实例

SQL>CONNECT SYS AS SYSDBA;连接正确,则提示connected to an idle instance.7、建立服务器参数文件

SQL>CREATE SPFILE FROM PFILE;

8、启动实例

SQL>STARTUP NOMOUNT;以非加载方式启动实例

9、执行CREATE DATABASE命令

二、数据库的操作(1)数据库的启动

1、启动实例但不加载数据库(NOMOUNT状态)SQL>STARTUP NOMOUNT;SQL>STARTUP NOMOUNT PFILE=„.init.ora;

2、启动实例并加载数据库(MOUNT状态)SQL>STARTUP MOUNT;SQL>STARTUP MOUNT PFILE=„.init.ora;

3、启动实例并加载、打开数据库(OPEN状态)SQL>STARTUP OPEN;SQL>STARTUP;SQL>STARTUP MOUNT PFILE=„.init.ora;SQL>STARTUP PFILE=„.init.ora;

4、数据库启动模式之间的转换

从NOMOUNT状态到MOUNT状态: SQL>ALTER DATABASE MOUNT; 从MOUNT状态到OPEN状态: SQL>ALTER DATABASE OPEN; 只读模式

SQL>ALTER DATABASE OPEN READ ONLY; 读写模式

SQL>ALTER DATABASE OPEN READ WRITE;(2)数据库的关闭

1、正常关闭方式(NORMAL)SQL>SHUTDOWN NORMAL;

2、立即关闭方式(IMMEDIATE)SQL>SHUTDOWN IMMEDIATE;

3、事务关闭方式(TRANSACTIONAL)SQL>SHUTDOWN TRANSACTIONAL;

4、终止关闭方式(ABORT)SQL>SHUTDOWN ABORT;

三、数据库的删除

启动DBCA,选择删除数据库。单击“下一步”,将显示所有可以被删除的数据库例程。

实验内容:

1、使用DBCA建立数据库;

2、使用命令建立数据库;

3、使用DBCA和命令对所建立的数据库进行修改、删除等操作;

4、练习数据库的启动和关闭等操作,重点练习三种启动模式和三种关闭方式,并了解数据库处于各种打开或关闭状态下所能进行和不能进行的基本操作。实验四 Oracle数据库对象管理实验

教学目的要求:

1.了解各类数据库对象的作用。

2.掌握表、视图、索引、序列、同义词等数据库对象的建立、删除、修改和查询等方法。3.掌握表内容的插入、删除、更新和查询等方法。4.掌握表的约束的使用方法 重点:

表内容的插入、删除、更新和查询等方法 难点:

手动建立表、视图、索引、序列等数据库对象 课时安排:实验4课时 实验内容:

1、使用SQL语句创建表(至少包含三种不同类型的字段),使用SQL语句向表中插入数据、修改表中数据、删除表中数据和查询数据。

2、使用SQL语句创建索引、视图。

3、创建序列,并在插入语句中使用序列。实验五Oracle数据库安全管理实验

教学目的要求:

1.了解数据库用户、权限、事务、概要文件、并发和会话等基本概念。2.掌握建立、删除和修改、查询用户等的方法。3.掌握用户授予和回收权限或角色的方法。4.掌握整个数据库安全的综合管理 重点:

用户授予和回收权限或角色 难点:

用户授予和回收权限或角色 课时安排:实验4课时 实验内容:

1、使用命令创建数据库认证用户。

2、为用户授予和回收权限或角色操作。

oracle数据库实验报告 篇2

名 称: 数据库原理及应用

专 业: 计算机科学与技术 班 级: 计科122 学 号: 20120081421* 学生姓名: 刘** 指导教师: 杜献峰

2014年 10 月 07日

目 录 中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

第1章

概述...........................................................................................................................1 第2章

任务与实现...............................................................................................................3

2.1甲骨文(Oracle)公司的人力资源的设计和实现........................................................3 第3章

总结.........................................................................................................................20 参考文献:.............................................................................................................................20

中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

第1章

概述

任务描述

甲骨文(Oracle)公司的人力资源(Oracle_HR)描述为:

公司的业务遍布全球,这些不同地理位置按区域(regions)划分,如东南亚区域等,每一个区域包括多个国家(countries),区域(region)有区域编号(region_id)和区域名(region_name)属性组成;

在一个国家的多个地点(locations)设置子公司,一个国家有国家编号(country_id)、国家名称(country_name)属性组成;

在一个地点(locations)开设多个子公司(departments),每一个地点(locations)包括地点编号(location_id)、所属州或者省的名称(state_province)、城市名(city)、街道地址(street_address)、邮政编码(postal_code)属性组成;

每一个子公司(departments)有多名雇员(employees),一个子公司(departments)有子公司编号(department_id)、子公司名称(department_name)属性组成;

甲骨文公司设置若干工种(jobs),每一雇员一个时期內只能受聘于一个部门的一个工种,每一工种有多名雇员组成,工种有工种编号(job_id)、工种头衔(job_title)、工种最低工资(min_salary)、工种最高工资(max_salary)属性组成。

每一个雇员有雇员编号(employee_id)、雇员的姓(first_name)、雇员的名(last_name)、雇员电子邮件(email)、雇员电话(phone_number)、雇员被雇佣的起始日期(hire_date)、工资(salary)、工资增长率(commission_pct)。一个子公司雇员有领导和被领导的关系,一个子公司有一名经理(manager)领导其它雇员。对于一个雇员在Oracle公司里都有一个工作经历(job_history),雇员的工作史是指一名雇员从某一时间开始(start_date)、到某一时间结束(end_date)、在某一部门、做某一工种工作的情况。

要求如下:

一、创建Oracle HR数据库及数据库对象

1、创建Oracle HR数据库,例如数据库名取Oracle_HR。

2、画出Oracle HR的ER图。

3、将ER图转换为关系。

4、定义关系中属性及约束。

5、创建表空间。

6、创建用户。

7、给用户授权。

8、创建数据表。

9、导入数据(由老师提供)。

二、使用Java或者C#语言完成应用程序开发。

1、C/S或者B/S均可。

2、前台、后台程序书写规范,能在后台完成的功能不在前台实现。

中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

第2章

任务与实现

2.1甲骨文(Oracle)公司的人力资源的设计和实现

1.使用Java或者C#语言完成应用程序开发。

1.1、C/S或者B/S均可。

1.2、前台、后台程序书写规范,能在后台完成的功能不在前台实现。1.3、前台:将class编译成为jar包或者dll程序集,调用Jar包或者dll程序。

1.4、后台:过程、函数、游标、触发器、视图等代码。1.5、按不同条件实现下面功能:

插入数据、修改数据、删除数据、查询数据(复合查询、动态查询)。数据统计及报表(表格、饼图、直方图)。数据备份与还原。

中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

2.2、E-R图

中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

(6)雇员表

(7)工作经历表

中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

功能实现:查询(按区域名查询)

功能实现:修改

修改前(我要修改区域编号7的记录)

中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

增加后:

功能实现:数据备份(将数据库中数据写入到region.xls的Excel文件中)要写入的数据如下:

数据备份如下:

1中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

子公司表:

工种表:

3中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

功能实现:删除前(删除编号为200的记录)

删除后:

5中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

public static class SqlHelper { //运行时从配置文件中把name=conStr的结点,所对应的值读出来 private static string conStr = ConfigurationManager.ConnectionStrings[“conStr”].ConnectionString;

#region 1连接通道属性

private static SqlConnection conn;

public static SqlConnection Conn { get { if(conn == null || conn.State == ConnectionState.Broken){ conn = new SqlConnection(conStr);} return conn;}

} #endregion

#region 2 获取数据表 ///

/// 获取数据表 /// ///

查询语句 ///

参数数组 /// 结果表 public static DataTable GetDataTable(string sqlStr, params SqlParameter[] paras){ //创建命令对象,查询语句可能带有参数,通过command对象传递过来

SqlCommand cmd = new SqlCommand(sqlStr, Conn);if(paras!= null && paras.Length > 0){ cmd.Parameters.AddRange(paras);}

7中原工学院计算机学院数据库课程设计报告

班级计科122

姓名刘**

catch(Exception ex){

throw ex;} finally { CloseDB();}

return res;} } 数据的连接字符串保存在App.config文件中:通过读取配置文件获取连接字符串,主要代码如下:

数据库实验报告 篇3

一、题目要求

某银行准备开发一个银行业务管理系统,通过调查,得到以下的主要需求:

银行有多个支行。各个支行位于某个城市,每个支行有唯一的名字。银行要监控每个支行的资产。银行的客户通过其身份证号来标识。银行存储每个客户的姓名及其居住的街道和城市。客户可以有帐户,并且可以贷款。客户可能和某个银行员工发生联系,该员工是此客户的贷款负责人或银行帐户负责人。银行员工也通过身份证号来标识。员工分为部门经理和普通员工,每个部门经理都负责领导其所在部门的员工,并且每个员工只允许在一个部门内工作。每个支行的管理机构存储每个员工的姓名、电话号码、家庭地址及其经理的身份证号。银行还需知道每个员工开始工作的日期,由此日期可以推知员工的雇佣期。银行提供两类帐户——储蓄帐户和支票帐户。帐户可以由2个或2个以上客户所共有,一个客户也可有两个或两个以上的帐户。每个帐户被赋以唯一的帐户号。银行记录每个帐户的余额、开户的支行以及每个帐户所有者访问该帐户的最近日期。另外,每个储蓄帐户有其利率,且每个支票帐户有其透支额。每笔贷款由某个分支机构发放,能被一个或多个客户所共有。每笔贷款用唯一的贷款号标识。银行需要知道每笔贷款所贷金额以及逐次支付的情况(银行将贷款分几次付给客户)。虽然贷款号不能唯一标识银行所有为贷款所付的款项,但可以唯一标识为某贷款所付的款项。对每次的付款需要记录日期和金额。

二、需求分析

这一部分主要是根据实验需求对银行系统需求中的实体、实体属性以及实体之间的关联进行确认,以便画出正确的概念模型。

2.1 实体确认

根据需求分析确认实体:银行员工、银行支行、客户、账户(其中:储蓄账户、支票账户是继承实体账户而来)、贷款、支付(弱实体)。

2.2 实体属性确认

银行员工:身份证号(pi)、姓名、电话号码、家庭地址、开始工作日期 银行支行:支行名、资产、城市

客户:身份证号、姓名、街道、所在城市 账户:账户号、余额、最近访问日期 支票账户:透支额 储蓄账户:利率 2.3 实体关系确认

账户和支行:N:1定义关系为Relationship_accout_bank 客户和贷款:M:N定义关系为Relationship_client_loan 客户和员工:M:1 定义关系为 Relation_client_staff 贷款和支行:1:N 定义关系为 Relationship_loan_bank 客户和账户:M:N 定义关系为 client__accout 贷款发放信息和贷款:N:1 定义关系为 Relationship_loan_pay 支行和员工:1:N 定义关系为Relationship_staff_bank

员工和员工:1:N 定义关系为 Relationship_lead

三、概念模型(CDM)

根据sybase power designer画出概念模型(CDM),如下图所示:

四、物理模型(PDM)

oracle数据库实验报告 篇4

姓名:莫鸿斌

学号:201601030137

班级:2016级计算机科学与技术

实验日期: 2018-3-23

一、实验项目

T-SQL创建修改数据库和表

二、实验目的

1.掌握SQL Server Management Studio的运用; 2.掌握T-SQL语句的执行操作;

3.如何使用T-SQL创建修改数据库和表。

三、实验内容

1.使用T-SQL创建数据库factory,要求将数据库文件factory_data.MDF存放在E:data下面,其文件初始大小5MB,自动按5MB增长,将事务日志文件factory_log.LDF存放在E:data目录下,其文件大小按1MB自动增长。

2.使用T-SQL在数据库factory下创建如下表: 职工表(职工号(int),姓名(char(10)),性别(char(2)),出生日期(datetime),党员否(bit),参加工作时间(datetime),部门号(int)),其中职工号作为主键。部门表(部门号(int),部门名(char(10)),其中部门号作为主键。工资表(职工号(int),发放年份(int),发放月份(int),工资(decimal(6,1))),其中职工号、年份、月份作为主键。

3.使用T-SQL建立创建的表之间的参照完整性规则。4.在上述表中输入数据,每个表至少10条记录。

四、实验环境

安装有SQL Server2008的PC一台。

五、实验步骤及结果

1.使用T-SQL创建数据库factory

2.将数据库文件factory_data.MDF存放在E:data下面,其文件初始大小5MB,自动按5MB增长,将事务日志文件factory_log.LDF存放在E:data目录下,其文件大小按1MB自动增长。

4.使用T-SQL在数据库factory下创建 职工表(职工号(int),姓名(char(10)),性别(char(2)),出生日期(datetime),党员否(bit),参加工作时间(datetime),部门号(int)),其中职工号作为主键。部门表(部门号(int),部门名(char(10)),其中部门号作为主键。工资表(职工号(int),发放年份(int),发放月份(int),工资(decimal(6,1))),其中职工号、年份、月份作为主键。

5.使用T-SQL建立创建的表之间的参照完整性规则

5.在上述表中输入数据,每个表至少10条记录

实验报告五数据库 篇5

《数据库原理应用及应用》实验报告

题目:

实验五:1、表的更新

2、视图的创建、查询及更新

日期

2014-04-08

班级

学号 2 姓名

成绩

实验环境:在已安装的安全的 0 SQL Server 2000 上

实验内容与完成情况:

一、

表的更新

1.插入 Insert into Values

或 Insert into

Select

2.修改

Update

Set

Where

3.删除

DELETE

WHERE 二、视图的创建

create view s(sno,sname,cno,cname,grade)as select student.sno,sname ,sc.cno,cname,grade from student,sc,course where student.sno=sc.sno and sc.cno=course.cno 查询

select * from s 视图删除

Drop view s 视图的更新 Update s Set Grade=grade+3

P.115:

一、插入元组 例 1

结果:

例 2

结果:

例 3

结果:

例 4

二、修改数据 例 5

结果:

例 6

结果:

例 7

结果:

三、删除数据 例 8

结果:

例 9

结果:

例 10

结果:

建立视图 例 1

例 2

例 3

例 4

例 5

例 6

例 7

例 8

例 9

例 10

例 11

更新视图 例 12

结果:

例 13

结果:

例 14

结果:

出现的问题及解决方法:

oracle数据库索引失效 篇6

今天一个同事突然问我索引为什么失效。说实在的,失效的原因有多种:

但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况:

1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表)

2. 统计信息失效需要重新搜集统计信息

3. 索引本身失效需要重建索引

下面是一些不会使用到索引的原因

索引失效

1) 没有查询条件,或者查询条件没有建立索引

2) 在查询条件上没有使用引导列

3) 查询的数量是大表的大部分,应该是30%以上。

4) 索引本身失效

5) 查询条件使用函数在索引列上(见12)

6) 对小表查询

7) 提示不使用索引

8) 统计数据不真实

9) CBO计算走索引花费过大的情况。其实也包含了上面的情况,这里指的是表占有的block要比索引小。

10)隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),

但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.

错误的例子:select * from test where tu_mdn=13333333333;

正确的例子:select * from test where tu_mdn=‘13333333333‘;

11)对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)

错误的例子:select * from test where id-1=9;

正确的例子:select * from test where id=10;

12)使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.

错误的例子:select * from test where round(id)=10;

说明,此时id的索引已经不起作用了 正确的例子:首先建立函数索引,

create index test_id_fbi_idx on test(round(id));

然后 select * from test where round(id)=10; 这时函数索引起作用了 1, 2,单独的>,<,(有时会用到,有时不会)

3,like “%_” 百分号在前.

4,表没分析.

5,单独引用复合索引里非第一位置的索引列.

6,字符型字段为数字时在where条件里不添加引号.

7,对索引列进行运算.需要建立函数索引.

8,not in ,not exist.

9,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况,

10, 索引失效。

11,基于cost成本分析(oracle因为走全表成本会更小):查询小表,或者返回值大概在10%以上

12,有时都考虑到了 但就是不走索引,drop了从建试试在

13,B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null 都会走

14,联合索引 is not null 只要在建立的索引列(不分先后)都会走,

in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,

其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),

或者=一个值;当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值),

数据库课程上机实验报告 篇7

二、实验环境

WINDOWS XP 和 SQLServer200

5三、实验内容:

参照完整性定义

参照完整性检查和违约处理

属性上的约束条件的定义(1.不允许去控空值 2.劣质唯一 3.用CHECK短语指定列值应该满足的条件)

属性上的约束条件检查和违约处理

元祖上的约束条件的定义

完整性约束命名子句

修改表中的完整性限制

定义触发器

激活触发器

四、程序源码与运行结果

一、定义SC中的参照完整性。

CREATE TABLE SC

(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),FOREIGN KEY(Cno)REFERENCES Course(Cno));

二、显式说明参照完整性的违约处理示例。

CREATE TABLE SC

(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno)

ON DELETE CASCADE

ON UPDATE CASCADE

FOREIGN KEY(Cno)REFERENCES Course(Cno)

ON DELETE NO ACTION

ON UPDATE CASCADE);

三、在定义SC表时,说明Sno,Cno,Grade属性不允许取空值。

CREATE TABLE SC

(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT NOT NULL,PRIMARY KEY(Sno,Cno),四、建立部门表 DEPT,要求部门名称 Dname列取值唯一,部门编号Deptno列为主码。(列值唯一)

CREATE TABLE DEPT

(Deptno NUMERIC(2),Dname CHAR(9)UNIQUE,Location CHAR(10),PRIMARY KEY(Deptno)

五、Student表中Ssex只允许“男”或“女”。(用 CHECK 短语指定列值应该满足的条件)CREATE TABLE Student

(Sno CHAR(9)PRIMARY KEY,Sname CHAR(8)NOT NULL,Ssex CHAR(2)CHECK(Ssex IN(„男‟,„女‟)),Sage SMALLINT,Sdept CHAR(20)

六、当学生的性别是男时,其名字不能以 MS.打头。(元组上的约束条件的定义)CREATE TABLE Student

(Sno CHAR(9),Sname CHAR(8)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno),CHECK(Ssex=„女‟ OR Sname NOT LIKE „ MS.% ‟));

七、完整性约束命名子句

CONSTRAINT <完整性约束条件名> [PRIMARY KEY 短语ㄧCHECK 短语]

例1:建立学生登记表Student,要求学号在90000-99999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。

CREATE TABLE Student

(Sno NUMERIC(6)

CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND 99999),Sname CHAR(20)

CONSRAINT C2 NOT NULL,Sage NUMERIC(3)

CONSTRAINT C3 CHECK(Sage < 30),Ssex CHAR(2)

CONSTRAINT C4 CHECK(Ssex IN(„男‟,„女‟)),CONSTRAINT StudentKEY PRIMARY KEY(Sno));

例2:建立教师表 TEATHER,要求每个教师的应发工资不低于3000元。应发工资实际上就是实发工资例Sal与扣除项Deduct之和。

CREATE TABLE TEATHER

(Eno NUMERIC(4)PRIMARY KEY,Ename CHAR(10),Job CHAR(8),Sal NUMERIC(7,2),Deduct NUMERIC(7,2),Deptno NUMERIC(2),CONSTRAINT EMPFKey FOREIGN KEY(Deptno)REFERENCES DEPT(Deptno),CONSTRAINT C1 CHECK(Sal+Deduct >=3000));

八、限制修改表Student中的约束条件,要求学号改在900000-999999之间,年龄由小于30改为小于40。(修改表中的完整性)

可以先删除原来的约束条件,再增加新的约束条件。

ALTER TABLE Student

DROP CONSTRAINT C1;

ALTER TABLE Student

ADD CONSTRAINT C1 CHECK(Sno BETWEEN 900000 AND 999999),ALTER TABLE Student

DROP CONSTRAINT C3;

ALTER TABLE Student

ADD CONSTRAINT C3 CHECK(Sage <40);

九、SQL 使用 CREATE TRIGGER 命令建立触发器,其一般格式为

CREATE TRIFFER <触发器名>

{ BEFORE AFTER } <触发事件> ON <表名>

FOR EACH {ROW STATEMENT}

[WHEN <触发条件>]

<触发动作体>

例:定义一个BEFORE 行级触发器,为教师表Teacher定义完整性规则“教授的工资不得低于4000元,如果低于40000元,自动改为4000元”。

CREATE TRIGGER Insert_Or_Sal

BEFORE INSERT OR UPDATE ON Teacher

FOR EACH ROW

AS BEGIN

IF(new.Job=‟教授‟)AND(new.Sal<4000)THEN

new.Sal :=4000;

END IF;

END;

十、执行修改某个教师工资SQL语句,激活上述定义的触发器。

UPDATE Teacher SET Sal=800 WHERE Ename=„陈平‟;

执行顺序是:

 执行触发器 Insert_Or_Update_Sal;

 执行SQL语句“UPDATE Teacher SET Sal=800 WHERE Ename="陈平";"  执行触发器Insert_Sal;

 执行触发器Update_Sal.十一、删除触发器的SQL语法如下:

DROP TRIGGER <触发器名> ON <表名>;

触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户的删除.例: 删除教师表 Teacher 上的触发器 Insert_Sal。

DROP TRIGGER Insert_Sal ON Teacher;

五、实验总结

在实验过程中我对于创建和修改触发器和完整性约束的语法搞不明白

ORACLE数据库的部分试题 篇8

1怎样查看数据库引擎的报错

解答:alert log.

2比较truncate和delete 命令

解答:两者都可以用来删除表中所有的记录,区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间.

3使用索引的理由

解答:快速访问表中的data block

4. 给出在STAR SCHEMA中的两种表及它们分别含有的数据

解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放对fact table 某些属性描述的信息

10. FACT Table上需要建立何种索引?

北工大 数据库实验报告 篇9

专业:电子信息工程 学号:14020019 姓名:康文杰

一,实验内容:

本章介绍关系数据库标准语言SQL。主要内容包括:1数据定义、2数据操纵、3数据控制和数据约束等。

实验目标:

(1)SQL数据库的体系结构,SQL的组成。

(2)SQL的数据定义:SQL模式、基本表和索引的创建和撤销。(3)SQL的数据查询:

SELECT语句的句法,SELECT语句的几种形式及各种限定,基本表的联接操作。

(4)SQL的数据更新:插入、删除和修改语句。

(5)视图的创建和撤消,对视图更新操作的限制。(6)嵌入式SQL: 预处理方式,使用规定,使用技术,卷游标,动态SQL语句。

上课内容: 1)SQL的发展历程

SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统System R上实现。

1986年10月,经美国国家标准局(ANSI)的数据库委员会批准了SQL作为关系数据库语言的美国标准,并公布了标准SQL文本。

1987年6月国际标准化组织(ISO)将其采纳为国际标准,称为“SQL86”。相继出现了“SQL89”、“SQL2(SQL92)”、“SQL3”。2)SQL已成为关系数据库领域中的一个主流语言:

首先,各个数据库产品厂家纷纷推出了自己的支持SQL的软件或与SQL接口的软件。

其次,SQL在数据库以外的其他领域也受到了重视。不少软件产品将SQL的数据检索功能与面向对象技术、图形技术、软件工程工具、软件开发工具、人工智能语言等相结合,开发出功能更强的软件产品。

3)SQL数据库的体系结构的特征:

一个SQL模式是表和约束的集合。

一个表(TABLE)是行的集合。每行是列的序列,每列对应一个数据项。一个表可以是一个基本表,也可以是一个视图。一个基本表可以跨一个或多个存储文件,一个存储文件也可存储一个或多个基本表。

用户可以用SQL语句对视图和基本表进行查询等操作。SQL用户可以是应用程序,也可以是终端用户。4)SQL的组成

(1)数据定义语言(Data Definition Language,简称DDL)用于定义SQL模式、基本表、视图和索引。(2)查询语言(Query Language,简称QL)用于数据查询。

(3)数据操纵语言(Data Manipulation Language,简称DML)用于数据的增、删、修改。

(4)数据控制语言(Data Control Language,简称DCL)用于数据访问权限的控制。

二,实验过程:

1)定义基本表 : CREATE TABLE<表名>(<属性名1 ><类型1>[NOT NULL] [UNIQUE]

[,<属性名2><类型2+ *NOT NULL+ *UNIQUE+ +…)

[其他参数];

一个关系的主关键字由一个或几个属性构成,在CREATE TABLE中使用保留字PRIMARY KEY声明主关键字:

(1)在列出关系模式的属性时,在属性及其类型后加上保留字PRIMARY KEY,表示该属性是主关键字;

(2)在列出关系模式的所有属性后,再附加一个声明:

PRIMARY KEY(<属性1>[,<属性2>…+)如果关键字由多个属性构成,则必须使用方法(2)

2)基本表的修改和删除 1 增加新的属性

ALTER TABLE [<表的创建者名.>] <表名>

ADD<属性名><类型>; 2基本表的删除

在SQL中删除一个无用表的操作是非常简单的,其语句格式为:

DROP TABLE <表名>;

3)查询语句格式

查询语句的基本部分:

SELECT <属性列表>

FROM <基本表>(或视图)

[WHERE <条件表达式>];

4)元组插入,修改和删除

1元组插入语句的一般格式是:

INSERT INTO <表名>[(<属性名1> [,<属性名2>,…+)+

VALUES(<常量1>[,<常量2>,…]);

2删除元组的语句格式是:

DELETE

FROM <表名>

[WHERE <条件>]; SQL中用数据修改(UPDATE)来修改元组的值。其语句格式是:

UPDATE <表名>

SET <属性1>=<表达式1>[,<属性2>=<表达式2>,…]

[WHERE <条件>];

5)简单查询

最简单的SQL查询只涉及到一个关系,类似于关系代数中的选择运算。

三,实验感悟

总结:1SQL是关系数据库的标准语言,已广泛应用在商用系统中。

2SQL的数据定义部分包括对SQL模式、基本表、视图、索引的创建和撤消。

3SQL的数据操纵分成数据查询和数据更新两部分。4SQL的数据查询是用SELECT语句实现,兼有关系代数和元组演算的特点。5SQL的数据更新包括插入、删除和修改等三种操作,在视图中只有行列子集视图是可以更新的。

6嵌入式SQL涉及到SQL语句的宿主语言程序中的使用规定,以解决两种语言的不一致和相互联系的问题。

上一篇:煤矿地面环保管控措施下一篇:王庙小学总务工作总结