数据库原理B实验报告完整版4-6
- 格式:doc
- 大小:88.50 KB
- 文档页数:12
数据库原理与技术实验报告
一、实验目的
本次实验的主要目的是了解和学习数据库原理与技术,具体要求是:
1.熟悉数据库系统的基本概念;
2.理解数据库管理系统(DBMS)的核心功能;
3.掌握数据库系统的创建,维护和应用技术;
4.掌握基于SQL查询语言(SQL)的SQL语句的使用;
5.学习SQL语言的基本知识;
6.学习和应用数据库的实用技术;
7.掌握数据库的安全保护技术;
8.熟悉数据的事务处理;
9.掌握数据的并发控制等。
二、实验环境
本次实验所使用的系统环境为Oracle Database,版本为11g。
三、实验内容
1.概念部分:
(1)数据库概念:数据库概念主要是指数据库的概念、特点、应用领域、数据库结构与模式等;
(2)数据库管理系统:数据库管理系统(DBMS)是一种综合的数据管理软件,它有助于保护组织内的数据,并帮助实现全面的数据管理;
(3)数据库应用:数据库应用是一种以数据库管理系统为基础的应用程序,它主要是用来收集、组织、存储、操作和检索数据,以满足组织内的信息需要;
(4)SQL查询语言:SQL查询语言(SQL)是一种关系型数据库管理系统的标准化数据库查询语言。
《数据库原理及应用》实验报告实验报告:《数据库原理及应用》一、实验目的通过本次实验,掌握数据库原理及应用的相关知识,并能够熟练运用数据库软件进行数据的存储、查询和管理。
二、实验内容1.数据库的概念和基本原理的学习2.数据库设计和规范化的理解和实践3.数据库的建立和配置4.数据的插入、查询和删除操作5.数据库的备份和恢复操作三、实验步骤及结果1.数据库的概念和基本原理的学习根据教材和相关资料,了解数据库的概念和基本原理,并能够用自己的语言进行简单的表述。
2.数据库设计和规范化的理解和实践根据所学知识,对给定的需求进行数据库设计和规范化的实践,包括实体、属性和关系的定义,并通过ER图进行可视化展示。
3.数据库的建立和配置使用数据库软件,如MySQL或Oracle,按照设计要求建立数据库并进行相应的配置。
4.数据的插入、查询和删除操作通过SQL语句,将设计好的数据插入到数据库中,并进行相关的查询和删除操作,验证数据的正确性和完整性。
5.数据库的备份和恢复操作学习数据库的备份和恢复操作方法,并进行实践,保证数据库的安全性和可靠性。
四、实验结果分析根据实验步骤进行数据库的建立、数据插入和查询操作,并比对预期结果,可以得出实验结果的正确性和可行性。
五、实验总结通过本次实验,我对数据库原理及应用有了更深入的了解和掌握,熟练运用相关数据库软件进行数据的存储、查询和管理。
同时,我也发现了在实际操作中可能出现的问题和解决方法,在数据库的设计和维护方面有了更深入的认识和思考。
六、实验心得本次实验让我对数据库有了更直观和深入的认识,通过实际操作和实践,我逐渐掌握了数据库的设计和管理方法,并学会了利用SQL语句进行数据的插入、查询和删除操作。
通过对数据库的备份和恢复操作的实践,我也认识到了数据库的安全性和可靠性的重要性。
总之,本次实验让我收获颇丰,通过实际操作和实践,我对数据库原理及应用有了更深入的了解和掌握,也提高了自己的实际操作能力和问题解决能力。
一、实验目的1. 掌握数据库的基本概念和原理;2. 熟悉数据库的创建、修改和删除操作;3. 掌握SQL语句的使用,包括数据查询、数据插入、数据更新和数据删除;4. 学会使用数据库管理系统进行数据管理。
二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:Visual Studio Code三、实验内容1. 创建数据库和表(1)创建数据库```sqlCREATE DATABASE testdb;```(2)选择数据库```sqlUSE testdb;```(3)创建表```sqlCREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,gender CHAR(1),class VARCHAR(50));```2. 插入数据```sqlINSERT INTO students (name, age, gender, class) VALUES ('张三', 20, '男', '计算机科学与技术');INSERT INTO students (name, age, gender, class) VALUES ('李四', 21, '女', '软件工程');INSERT INTO students (name, age, gender, class) VALUES ('王五', 22, '男', '电子信息工程');```3. 查询数据(1)查询所有学生信息```sqlSELECT FROM students;```(2)查询年龄大于20岁的学生信息```sqlSELECT FROM students WHERE age > 20;```(3)查询性别为“男”的学生信息```sqlSELECT FROM students WHERE gender = '男';```4. 更新数据```sqlUPDATE students SET age = 21 WHERE name = '张三';```5. 删除数据```sqlDELETE FROM students WHERE name = '李四';```6. 删除表```sqlDROP TABLE students;```四、实验结果与分析1. 创建数据库和表:实验过程中成功创建了名为testdb的数据库,并在该数据库下创建了students表,包含id、name、age、gender和class五个字段。
数据库原理及应用实验报告数据库原理及应用实验报告一、引言数据库是计算机科学中的重要概念,它是用于存储、管理和检索大量有组织数据的系统。
数据库的应用广泛,从个人电脑上的简单数据文件到大型企业级数据仓库,都离不开数据库的支持。
本实验报告将介绍数据库的原理和应用,并通过实际实验来验证其有效性。
二、数据库原理1. 数据库的定义和特点数据库是一个有组织的数据集合,它具有持久性、共享性、独立性和可变性等特点。
持久性指数据可以长期保存;共享性指多个用户可以同时访问和使用数据库;独立性指数据库的逻辑结构和物理结构相互独立;可变性指数据库可以随时更新和修改。
2. 数据库管理系统(DBMS)数据库管理系统是用于管理数据库的软件,它提供了数据定义、数据操纵、数据控制和数据查询等功能。
常见的DBMS有MySQL、Oracle和SQL Server等。
3. 数据库模型数据库模型是用于描述数据库的结构和组织方式的概念模型。
常见的数据库模型有层次模型、网络模型和关系模型等。
其中,关系模型是最为常用的模型,它使用表格来表示数据,表格中的每一行表示一个记录,每一列表示一个属性。
三、数据库应用实验为了验证数据库的应用效果,我们进行了以下实验。
1. 数据库设计首先,我们根据实际需求设计了一个简单的学生信息管理系统。
该系统包含了学生的基本信息、课程信息和成绩信息。
2. 数据库创建在MySQL数据库中,我们创建了一个名为"student"的数据库,并在其中创建了三张表格,分别是"student_info"、"course_info"和"score_info"。
3. 数据库插入通过SQL语句,我们向数据库中插入了一些样本数据,包括学生的姓名、学号、课程名称和成绩等信息。
4. 数据库查询为了验证数据库的查询功能,我们编写了一些SQL查询语句,如查询某个学生的所有成绩、查询某门课程的平均成绩等。
《数据库原理与应⽤》实验报告完整版数据库原理与应⽤实验报告实验课程:数据库原理及应⽤专业:学号:学⽣姓名:年⽉⽇实验⼀创建和维护数据库⼀、实验⽬的1. 掌握在Windows 平台下安装与配置MySQL 5.7 的⽅法。
2. 掌握启动服务并登录MySQL 5.7 数据库的⽅法和步骤。
3. 了解⼿⼯配置MySQL 5.7 的⽅法。
4. 掌握MySQL 数据库的相关概念。
*5. 掌握使⽤Navicat ⼯具和SQL 语句创建数据库的⽅法。
*6. 掌握使⽤Navicat ⼯具和SQL 语句删除数据库的⽅法。
⼆、实验要求1. 学⽣提前准备好实验报告,预习并熟悉实验步骤;2. 遵守实验室纪律,在规定的时间内完成要求的内容。
三、实验内容及步骤1. 在Windows 平台下安装与配置MySQL 5.7 版。
2. 在服务对话框中,⼿动启动或者关闭MySQL 服务。
3. 使⽤Net 命令启动或关闭MySQL 服务。
*4. 分别⽤Navicat ⼯具和命令⾏⽅式登录MySQL。
5.在my.ini ⽂件中将数据库的存储位置改为D:\MYSQL\DATA。
6. 创建数据库。
*①使⽤Navicat 创建学⽣信息管理数据库gradem。
②使⽤SQL 语句创建数据库MyDB。
7. 查看数据库属性。
*①在Navicat 中查看创建后的gradem 数据库和MyDB 数据库的状态,查看数据库所在的⽂件夹。
②利⽤SHOW DATABASES 命令显⽰当前的所有数据库。
8. 删除数据库。
*①使⽤Navicat 图形⼯具删除gradem 数据库。
②使⽤SQL 语句删除MyDB 数据库。
③利⽤SHOW DATABASES 命令显⽰当前的所有数据库。
10. 配置Path 变量,确保MySQL 的相关路径包含在Path 变量中。
四、思考题MySQL的数据库⽂件有⼏种?扩展名分别是什么?格式⽂件.frm 描述表的结构(列、列类型、索引,等等)数据⽂件.ISD(ISAM) 或.MYD (MyISAM) 包含表的数据─即它的⾏索引⽂件ISD(ISAM) 或.MYI (MyISAM) 包含数据⽂件中任何索引的索引树。
数据库实验报告姓名学号目录一.实验标题:2二.实验目的:2三.实验内容:2四.上机软件:3五.实验步骤:3(一)SQL Server 2016简介3(二)创建数据库 4(三)创建数据库表 7(四)添加数据17六.分析与讨论: 19一.实验标题:创建数据库和数据表二.实验目的:1.理解数据库、数据表、约束等相关概念;2.掌握创建数据库的T-SQL命令;3.掌握创建和修改数据表的T-SQL命令;4.掌握创建数据表中约束的T-SQL命令和方法;5.掌握向数据表中添加数据的T-SQL命令和方法三.实验内容:1.打开“我的电脑”或“资源管理器”,在磁盘空间以自己的姓名或学号建立文件夹;2.在SQL Server Management Studio中,使用create database命令建立“学生-选课”数据库,数据库文件存储在步骤1建立的文件夹下,数据库文件名称自由定义;3.在建立的“学生-选课”数据库中建立学生、课程和选课三张表,其结构及约束条件如表所示,要求为属性选择合适的数据长度;4.添加具体数据;四.上机软件:SQL Server 2016五.实验步骤:(一)SQL Server 2016简介1.SQL Server 2016的界面2.启动和退出SQL Server 20161)双击图标,即出现SQL Server2016的初始界2)选择“文件”菜单中的“退出”命令,或单击控制按钮中的“×”即可注意事项:1.在退出SQL Server 2016之前,应先将已经打开的数据库进行保存,2.如果没有执行保存命令,系统会自动出现保存提示框,根据需要选择相应的操作(二)创建数据库方法一:1.点击“新建查询”,出现如下对话框2.在空白区域输入创建数据库“学生选课”的代码命令,点击“执行”3.消息框中出现“命令已成功完成”即表示数据库创建成功,在“对象资源管理器”中,右击“数据库”,打开快捷菜单,选择“刷新”命令,在“数据库”向下会出现新创建的数据库“学生选课”方法二:1.右击数据库,在弹出的快捷菜单中选择“新建”2.在弹出的对话框中输入“学生选课”3. 在“对象资源管理器”中,右击“数据库”,打开快捷菜单,选择“刷新”命令,在“数据库”向下会出现新创建的数据库“学生选课”注意事项:数据库名称在服务器中必须唯一,并且符合标识符的规则(三)创建数据库表1.左键点击“学生选课”数据库,再点击“新建查询”,在出现的空白对话框中输入如图代码后点击“执行”,消息框中出现“命令已成功执行”即成功建立好学生、课程、选课三张表2.建立成功后的表格如图所示注意事项:1.T-SQL中创建数据库表的指令格式为:Create table 表名(字段名1 数据类型{identify | not null | null},字段名2 数据类型{identify | not null | null},……)null表示该字段的值可以为控制,空值意味着没有任何存储数据,这是默认参数,当所定义的字段允许空值时,参数null可以忽略not null表示该字段的值不能为空值identify称为计数器,表示该字段的值是一组递增的证书数据。
实验六数据库原理综合实验1实验目的(1)运用所学的数据库设计技术,针对一个具体的应用系统,完成系统数据库的概念模型、逻辑模型和物理模型的设计。
以巩固理论课程上所学的知识,更好地掌握数据库设计技术方法。
(2)对前面章节所学的知识加以综合应用。
2实验内容给定一个应用环境,如学生选课系统、超市管理系统、某企业库存管理系统、学校图书管理系统、学校综合积分管理系统等等。
(同学们课从上述选定一个题目,也可以选取一个自己较熟悉的应用环境)。
完成下面的工作2.1 数据库概念模型设计(1)进行需求分析。
-对系统的语义进行描述(包括功能、所需的数据及他们之间的关系和处理方法)(2)识别系统中的实体及实体的属性,分析实体之间的联系。
(3)设计数据库概念模型,画出E-R图。
2.2 数据库逻辑模型设计(1)根据数据库概念模型设计数据库的逻辑模型。
-将E-R模型转化到逻辑模型(2)根据应用需要和规范化理论对逻辑模型进行优化。
2.3 数据库物理模型设计(1)针对某种DBMS,设计数据库物理模型,包括表空间、表和索引等于物理存储有关的设计。
(2)优化物理模型(3)生成某种DBMS的SQL语句,创建数据库及其表。
2.4 装载数据(1)收集真实数据或者生成模拟数据。
(2)批量加载数据到数据库中。
(3)设计一系列SQL语句,尤其是连接查询、嵌套查询等SQL语句,以测试数据库性能。
3实验要求(1)可以借助POWERDESIGNER等系统分析与设计辅助工具进行数据库设计,也可以使用WORD文件直接生成各种设计文档。
(2)选择的数据库应用系统应该规模适中,不宜太大太复杂,可能做不完;也不宜太小太简单,甚至仅有三两个表组成。
(3)要设计良好的数据库完整性约束。
(4)思考题:数据库设计通常由哪些辅助工具?各有哪些优缺点?4实验步骤4.1 数据库概念模型设计(1)进行需求分析。
学生需要有学号、姓名、性别、年龄、专业等信息。
选课需要有学号、课号、成绩等信息课程需要有课程号、课程名、先修课、学分等信息(2)设计数据库概念模型,画出E-R图。
计算机工程系实验报告学生信息系别计算机学院专业计算机科学与技术班级17计科2+2 姓名徐浩俊学号2017031601025实验信息课程名称数据库原理与应用实验名称实验4 数据操作实验时间指导教师文琦批改情况成绩评阅教师文琦实验目标:1.掌握各种录入数据至数据库表的方法。
2.掌握修改数据库表中数据的方法。
3.掌握删除数据库表中数据的方法。
4.掌握复制数据库表的方法。
实验结果:利用shiyan4.sql文件中的脚本生成相应的数据库及数据表。
1.根据实验3.1步骤完成从Eecel工作表(非SQL Server数据源数据)导入SQL Server数据库表的方法(注意学生表S结构已存在),回答以下问题。
①请从素材中选择自己班级的Excel表格,若表格不满足数据库中的关系则需要稍加修改,再将表里的数据导入学生表S中。
导入是否会遇到问题?如何解决?无法直接映射,需要修改表格。
只保留一行名称。
②请将最后导入在数据库的数据截图。
③有无更简单的方法?有,直接在编辑表中粘贴数据。
2.将数据库表T的数据交互式录入并截图说明。
(P46)3.请使用SQL语句完成数据库表C的数据录入,将相应的SQL语句及最终存储的数据截图说明。
可否用一条insert into语句一次插入多行数据,如有,请描述相应的SQL语句。
USE jxskGOINSERT INTO C VALUES('C1','程序设计','60')GOUSE jxskGOINSERT INTO C VALUES('C1','课程1','60'),('C1','课程2','80'),('C1','课程3','100')GO4.完成实验3.2后,思考利用SQL语句完成以下问题。
①现将信息系归为计算机系,数据表T中哪些数据需要修改,请使用SQL 语句完成,并将最终修改后的数据截图。
《数据库原理》实验报告学号:姓名:班级:指导教师:***中国矿业大学计算机科学与技术学院2012 年 3 月数据库原理教师成绩评定表评定成绩的依据:①基础理论及基本技能的掌握②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果⑤工作态度及工作量;⑥成绩采用优良中差四个等级评定成绩表实验一:SQL数据定义功能一、实验内容及要求1. 使用SQL语句建立学生管理系统相关的表,同时完善各表的相关完整性约束。
其中带有下划线的为主码学院(学院代码,学院名称)学生(学号,姓名,性别,学院代码),学院代码为外码教师(教师号,教师姓名,学院代码),学院代码为外码课程(课程号,课程名,学时)学习(学号,课程号,成绩),学号为外码,课程号为外码开课(教师号,课程号),教师号为外码,课程号为外码2. 对各表进行增加、删除、修改属性操作添加操作:对学生表添加出生日期字段,和家庭地址字段,教师表增加性别字段,出生日期字段,对课程表增加先修课程字段等。
删除操作:删除学生表家庭地址字段,删除教师表出生日期字段修改操作:修改学生姓名字段,该字段值不允许取空值3. 建立索引为学生表在学生姓名上建立名为sname-index 的索引,在学院代码字段上建立名为dept-index,降序。
4. 删除表操作删除上述表的定义,并重新执行定义表的查询再次建立各表5. 利用ACCESS 2003 /2007完善各表的数据内容二、实验目的熟练掌握SQL的各种数据定义功能,包括1.定义表的功能,包括主码和外码的定义2.修改表的定义功能,包括增加属性,删除属性,修改属性类型4.建立和删除索引操作,理解索引的作用5.删除表功能三、实验步骤及运行结果1. 使用SQL语句建立学生管理系统相关的表,同时完善各表的相关完整性约束。
其中带有下划线的为主码(1)学院(学院代码,学院名称)CREATE TABLE 学院(学院代码CHAR(4) NOT NULL UNIQUE,学院名称CHAR(15));(2)学生(学号,姓名,性别,学院代码),学院代码为外码CREATE TABLE 学生(学号CHAR(8) PRIMARY KEY,姓名CHAR(8),性别CHAR(2),学院代码CHAR(15),FOREIGN KEY (学院代码) REFERENCES 学院(学院代码));(3)教师(教师号,教师姓名,学院代码),学院代码为外码CREATE TABLE 教师(教师号CHAR(8) PRIMARY KEY,教师姓名CHAR(8),学院代码CHAR(15),FOREIGN KEY (学院代码) REFERENCES 学院(学院代码));(4)课程(课程号,课程名,学时)CREATE TABLE 课程(课程号CHAR(8) PRIMARY KEY,课程名CHAR(15),学时SMALLINT);(5)学习(学号,课程号,成绩),学号为外码,课程号为外码CREATE TABLE 学习(学号CHAR(8),课程号CHAR(8),成绩SMALLINT,PRIMARY KEY (学号,课程号),FOREIGN KEY(学号) REFERENCES 学生(学号),FOREIGN KEY(课程号) REFERENCES 课程(课程号));(6)开课(教师号,课程号),教师号为外码,课程号为外码CREATE TABLE 开课(教师号CHAR(8),(7)课程号CHAR(8),PRIMARY KEY (教师号,课程号),FOREIGN KEY(教师号) REFERENCES 教师(教师号),FOREIGN KEY(课程号) REFERENCES 课程(课程号));2. 对各表进行增加、删除、修改属性操作添加操作:对学生表添加出生日期字段,和家庭地址字段:ALTER TABLE 学生ADD 出生日期DATETIME,家庭地址CHAR(50);教师表增加性别字段,出生日期字段:ALTER TABLE 教师ADD 性别CHAR(2),出生日期DATETIME;对课程表增加先修课程字段等:ALTER TABLE 课程ADD 选修课程CHAR(20);删除操作:删除学生表家庭地址字段:ALTER TABLE 学生DROP 家庭地址;删除教师表出生日期字段:ALTER TABLE 教师DROP 出生日期;修改操作:修改学生姓名字段,该字段值不允许取空值:ALTER TABLE 学生ALTER 姓名CHAR(8) NOT NULL;3. 建立索引为学生表在学生姓名上建立名为sname-index 的索引:CREATE INDEX sname_index ON 学生(姓名);在学院代码字段上建立名为dept-index,降序:CREATE INDEX dept_index ON 学生(学院代码DESC);4. 删除表操作删除上述表的定义,并重新执行定义表的查询再次建立各表四、实验体会本次实验的第一体会就是熟悉了对数据库上机的初步操作,在简单的建表等操作中逐渐掌握SQL的各种数据定义功能,其中包括定义表的功能,包括主码和外码的定义;修改表的定义功能,包括增加属性,删除属性,修改属性类型;建立和删除索引操作,理解索引的作用;删除表功能等。
数据库原理实验报告引言:数据库是现代信息系统中不可或者缺的组成部份。
它为我们存储、管理和检索数据提供了高效的手段。
在本次数据库原理实验中,我们深入学习了数据库的基本概念和操作原理,并通过实际操作加深了对数据库的理解。
本报告将介绍我们的实验过程、实验结果以及对数据库原理的一些思量。
一、实验环境和实验目的在实验开始前,我们搭建了一个实验环境,包括安装数据库管理系统(DBMS)和相关工具。
我们选择了MySQL作为我们的DBMS,并使用了Navicat这个可视化工具来操作数据库。
实验目的是通过实际操作,了解数据库的基本概念和操作原理。
二、实验过程和实验结果在实验过程中,我们首先学习了数据库的基本概念,包括数据模型、数据结构、数据操作等。
然后,我们创建了一个简单的数据库,包含了几个表格和一些数据。
我们通过Navicat工具进行表格的创建、数据的插入和查询操作。
在创建表格时,我们需要定义表格的结构和属性。
我们学习了各种数据类型的使用方法,如整数、字符、日期等。
我们还了解了主键和外键的概念,并在表格中设置了相应的约束。
在插入数据时,我们学习了SQL语句的基本用法。
我们通过INSERT INTO语句向表格中插入了一些测试数据。
我们还学习了如何使用SELECT语句查询数据,并通过WHERE子句对数据进行筛选。
通过实验,我们成功地创建了表格并插入了数据。
我们还通过查询语句验证了插入的数据是否正确。
实验结果显示,我们的操作是成功的。
三、对数据库原理的思量通过本次实验,我们对数据库原理有了更深入的理解。
首先,数据库的设计和操作需要遵循一定的规范和约束。
我们学习了表格的结构和属性的定义,以及各种约束的使用方法。
这些规范和约束可以保证数据的完整性和一致性。
其次,数据库的查询操作是数据库应用中最常用的操作之一。
我们学习了SELECT语句的基本用法,并通过WHERE子句对数据进行筛选。
查询语句的优化对于提高数据库的性能至关重要。
实验四完整性日期 2011-4-6一实验目的1. 熟悉通过SQL对数据进行完整性控制。
2. 深入理解数据库系统的完整性概念。
二、实验原理为维护数据库的完整性,DBMS必须:1.提供定义完整性约束条件的机制2.提供完整性检查的方法3.违约处理Create table 语法中包含了对完整性的定义。
CREATE TABLE[ database_name.[ owner ] .| owner.] table_name( { < column_definition >| column_name AS computed_column_expression| < table_constraint > ::= [ CONSTRAINT constraint_name ] } | [ { PRIMARY KEY | UNIQUE } [ ,...n ])[ ON { filegroup | DEFAULT } ][ TEXTIMAGE_ON { filegroup | DEFAULT } ]< column_definition > ::= { column_name data_type }[ COLLATE < collation_name > ][ [ DEFAULT constant_expression ]| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ] ][ ROWGUIDCOL][ < column_constraint > ] [ ...n ]< column_constraint > ::= [ CONSTRAINT constraint_name ]{ [ NULL | NOT NULL ]| [ { PRIMARY KEY | UNIQUE }[ CLUSTERED | NONCLUSTERED ][ WITH FILLFACTOR = fillfactor ][ON {filegroup | DEFAULT} ] ]]| [ [ FOREIGN KEY ]REFERENCES ref_table [ ( ref_column ) ][ ON DELETE { CASCADE | NO ACTION } ][ ON UPDATE { CASCADE | NO ACTION } ][ NOT FOR REPLICATION ]]| CHECK [ NOT FOR REPLICATION ]( logical_expression )}< table_constraint > ::= [ CONSTRAINT constraint_name ]{ [ { PRIMARY KEY | UNIQUE }[ CLUSTERED | NONCLUSTERED ]{ ( column [ ASC | DESC ] [ ,...n ] ) }[ WITH FILLFACTOR = fillfactor ][ ON { filegroup | DEFAULT } ]]| FOREIGN KEY[ ( column [ ,...n ] ) ]REFERENCES ref_table [ ( ref_column [ ,...n ] ) ][ ON DELETE { CASCADE | NO ACTION } ][ ON UPDATE { CASCADE | NO ACTION } ][ NOT FOR REPLICATION ]| CHECK [ NOT FOR REPLICATION ]( search_conditions )}三、实验仪器和设备1. 计算机2. SQL Server 2000四、预习要求复习完整性相关的SQL语句的基本语法。
五、实验内容及步骤1. 实体完整性定义表的主码关系模型的实体完整性在 CREATE TABLE 中用 PRIMARY KEY 定义。
定义主码的方法分为定义为列级约束条件和定义为表级约束条件两种。
[例 4-1]定义表 Student,并将其中的 Sno 属性定义为主码。
CREATE TABLE STUDENT(SNOCHAR(7) PRIMARY KEY,SNAME CHAR(8) NOT NULL,SSEX CHAR(2),SAGE SMALLINT,SDEPT CHAR(20));[例 4-2]定义表 SC,将其中的属性 Sno,Cno 定义为主码。
对于多个属性构成的码,只能够将其定义为表级约束条件,而无法用列级约束条件来实现。
CREATE TABLE SC(CNO CHAR(4) NOT NULL,GRADE SMALLINT,PRIMARY KEY (SNO,CNO));2. 参照完整性定义表的外码关系模型的参照完整性是在 CREATE TABLE 中用 FOREIGN KEY 语句来定义的,并用REFERENCES 来指明外码参照的是哪些表的主码。
定义表 SC,其中 Sno 参照表 Student 的主码 Sno,Cno 参照表 Course 的主码 Cno。
CREATE TABLE SC(SNO CHAR(7) 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));3. 用户定义完整性用户定义的属性上的约束条件[例 6-1]列值非空。
在定义 SC 表时,Sno、Cno 和 Grade 属性都不允许取空值。
在不特别声明的情况下,非码属性的值是允许取空值的。
CREATE TABLE SC(SNO CHAR(7) NOT NULL, /*列值非空的约束 NOT NULL*/CNO CHAR(4) NOT NULL,GRADE SMALLINT NOT NULL);[例 6-2]列值唯一。
建立部门表 DEPT,要求部门名称 Dname 取值唯一,部门编号 Deptno 属性为主码。
CREATE TABLE DEPT(DEPTNO NUMERIC(7) PRIMARY KEY,DNAME VARCHAR(9) UNIQUE, /*UNIQUE 约束要求 Dname 取值唯一*/LOCATION VARCHAR(10));[例 6-3]CHECK 短语指定列值应该满足的条件。
定义表 Student,属性Ssex 的值只允许取“男”或“女”;定义表 SC,属性 Grade 的值定义在 0-100 之间。
CREATE TABLE STUDENT(SNOCHAR(7) PRIMARY KEY,SNAME CHAR(8) NOT NULL,SSEX CHAR(2) CHECK(SSEX IN(‘男’,’女’)), /*CHECK 语句约束条件*/SAGE SMALLINT,SDEPT CHAR(20));CREATE TABLE SC(SNO CHAR(7) NOT NULL,GRADE SMALLINT CHECK (GRADE>0 AND GRADE<100), /*CHECK语句约束条件*/PRIMARY KEY (SNO,CNO),FOREIGN KEY (SNO) REFERENCES STUDENT(SNO),FOREIGN KEY (CNO) REFERENCES COURSE(CNO));用户定义的元组上的约束条件CHECK 短语不光能够定义属性列上的约束条件,还允许用户定义元组级的约束条件。
定义表 Student,要求当学生性别为男时,其名字不能以 Ms.打头。
CREATE TABLE STUDENT(SNOCHAR(7) PRIMARY KEY,SNAME CHAR(8) NOT NULL,SSEX CHAR(2),SAGE SMALLINT,SDEPT CHAR(20),CHECK (SSEX = ‘女’ OR SNAME NOT LIKE ‘Ms.%’));/*定义了 Sname 和 Ssex 之间的约束条件*/4. CONSTRAINT 完整性约束命名子句。
在定义表时利用约束命名子句对完整性约束条件命名,能够灵活地增加或删除一个完整性约束条件。
[例 8-1]定义表 Student,要求学号在 90000-99999 之间,姓名不能取空值,年龄小于 30,性别只能是“男”或“女”。
要求全部用约束命名子句实现。
CREATE TABLE STUDENT(SNO NUMERIC(5)CONSTRAINT C1 CHECK (SNO BETWEEN 90000 AND 99999),SNAME VARCHAR(20)CONSTRAINT C2 NOT NULL,SAGE NUMERIC(3)CONSTRAINT C3 CHECK (SAGE < 30),SSEX VARCHAR(2)CONSTRAINT C4 CHECK (SSEX IN (‘男’,’女’)),CONSTRAINT StudentKey PRIMARY KEY(SNO));在表 Student 上共定义了 5 个约束条件,包括主码约束以及 C1、C2、C3、C4 四个列级约束。
[例 8-2]修改表 Student 中的完整性限制,去掉对性别的限制,并将年龄的限制由小于 30 改为小于 40。
ALTER TABLE STUDENT /*去掉对性别的限制条件 C4*/DROP CONSTRAINT C4;ALTER TABLE STUDENT /*先删掉原来的约束条件再增加一个新的约束条件*/DROP CONSTRAINT C3;ALTER TABLE STUDENTADD CONSTRAINT C3 CHECK(SAGE <40);5. 触发器。
触发器可以看成是一类特殊的存储过程,在满足某个特定条件时自动触发执行,是提高数据库服务器性能的有力工具。
触发器分为三类,更新触发器、插入触发器和删除触发器。
能够定义触发器的用户有:1)表的所有者;2)系统管理员;3)拥有创建触发器的权限,且拥有对操作对象的相应的操作权限的用户。
定义表 TAB,并在其上定义触发器 TRI,在对 TAB 的插入和更新前检查,如果插入或更新的值在 100-1000 之间的话,将值置为 50;如果值大于 1000 的话,则给出新值不允许大于 1000 的提示。