实验三 索引和约束

合集下载

实验三 索引和约束

实验三 索引和约束

实验3 索引和约束实验目的:1.掌握索引的使用方法2.掌握约束的实现方法。

实验要求:了解索引和约束的相关知识,掌握表结构修改的方法。

实验内容:1.创建和删除索引2.创建和删除约束实验步骤:说明:按实验步骤对数据库YGGL中的三个表进行操作,三个表结构如下(具体参看实验2):Departments (DepartmentID,DepartmentName,Note)Employees(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,Department ID)Salary(SalaryID,InCome,OutCome,Time, EmployeeID)要求:完成实验步骤中的SQL。

1. 使用CREATE INDEX语句创建索引和约束(1)对YGGL数据库上的Employees表中的Birthday列建立索引in_birth。

(2)在Employees表的Name列和Address列上建立复合索引in_name。

(3)在Departments表的DepartmentName列建立唯一性索引in_depname。

(4)使用SHOW INDEX语句查看Employees表的索引。

(5)使用SHOW INDEX 语句查看Departments 表的索引。

2.使用ALTER TABLE 语句向表中添加索引和约束(1)向Employees 表中的出生日期列添加一个唯一性索引,姓名列和性别列添加一个复合索引。

(2)删除表Departments 的主键。

(3)将表Departments 的DepartmentID 列设为主键。

(4)删除表salary 的现有的外键。

(5)为表salary 添加适合的外键。

3.在创建表时创建索引和约束 创建与表Departments 表相同结构的表Departments1,将DepartmentName 列设为主键,DepartmentID列上建立一个索引实验3 索引和约束实验目的:1.掌握索引的使用方法2.掌握约束的实现方法。

西安石油大学数据库实验3索引及视图操作

西安石油大学数据库实验3索引及视图操作

实验报告课程名称:学院名称:数据原理与应用计算机学院专业班级:计1201学生姓名:张文江学号:201107010122实验3 索引及视图操作一、实验目的1. 加深对索引和视图概念的理解。

2. 熟练掌握索引的创建和删除。

3. 熟练掌握视图的创建、修改和删除。

4. 熟练运用视图进行各种检索操作。

二、实验环境硬件环境:PC机软件环境:操作系统为Microsoft Windows 2000或以上版本。

数据库管理系统为Microsoft SQL Server 2000标准版或企业版。

三、实验内容1. 熟悉运用SQL Server企业管理器和查询分析器进行索引的创建和删除。

2. 熟悉运用SQL Server企业管理器和查询分析器进行视图的创建、删除和修改。

四、实验步骤1. 利用实验1已经建立并保存过的学生表、课程表,学生表按学号建立惟一索引,课程表按课程名建立惟一索引;create index S_sno on S(sno)create index C_cno on C(cno)2. 利用实验1已经建立并保存过的学生表和选课表建立一个“网络工程”专业学生成绩视图JSGV(sno,cno,grade);create view JSGV(sno,cno,grade)as select S.sno,cno,gradefrom SC,Swhere dept='网络工程'and S.sno=SC.sno利用视图JSGV查询“网络工程”专业的学生选课多于2门的学生学号;select distinct snofrom JSGVgroup by sno having (count(*)>2)验证能否利用视图JSGV中插入一条“网络工程”专业学生选修“高等数学”课程的记录,并查询结果信息;insert into JSGV values('20080205','c03','85')删除视图JSGV。

实验三_视图和索引

实验三_视图和索引

实验三视图和索引一、实验目的使学生掌握SQL SERVER中的视图创建、查看、修改和删除的方法;索引的创建和删除方法二、实验内容在学生-课程数据库中(1)用图形工具和T-SQL两种方法创建视图,取名为view_stu_grade,要求查看学生的学号,姓名,课程名和成绩。

(2)若发现视图定义的结构不能很好满足要求,还可以对它进行修改。

(3)删除视图(4)尝试分别为student表的每一个属性列添加一个惟一索引,将出现的现象和原因分析一下。

(5)删除索引三、实验过程要求个人填写(要求有文字描述和适当的图片辅助说明)注:图片需要上机运行SQL Server软件之后,可用QQ的抓图工具把运行窗口抓下来,粘贴在word文档中。

(1)①用图形工具创建视图:展开stud_course数据库,右键单击“视图”,在弹出的快捷菜单中有“新建视图”菜单项,单击“新建视图”,就会出现新建视图对话框,保存视图,给视图取名为view_stu_grade.②用T-SQL创建视图:查看结果:(2)若发现视图定义的结构不能很好满足要求,还可以对它进行修改。

如需要修改则点击视图选中view_stu_grade右键修改例如将视图修改为显示出计算机科学系男生的情况,并要求加密(3)删除视图①用图形工具删除视图②用T-SQL删除视图(4)①选中Student表打开索引,右键新建索引,如图操作②创建索引问题1(未选择要添加到索引键的表列)解决办法问题2(记录相同不能建立唯一索引)解决办法:不建立唯一结果(5)删除索引①图形工具删除索引单击鼠标右键要删除的索引,选择“删除”命令,然后弹出“删除对象”对话框,单击确定按钮,即可删除索引。

②用T-SQL语句删除索引四、实验总结要求个人填写(实验中发现的问题和解决的办法)本次实验练习了视图创建、查看、修改和删除的方法;索引的创建和删除方法。

通过这次实验我认识到视图的作用,能够简化用户的操作,视图使用户能以多钟角度看待同一数据,适当的利用视图可以更清晰的表达查询。

数据库原理及应用实验教案

数据库原理及应用实验教案

数据库原理及应用实验教案一、实验目的1. 理解数据库的基本概念,掌握数据库的基本操作。

2. 熟悉数据库管理系统,了解数据库设计原则。

3. 学会使用SQL语言进行数据的增、删、改、查等操作。

4. 掌握数据库的索引、视图和存储过程等高级功能。

5. 培养实际操作数据库的能力,提高解决实际问题的技能。

二、实验内容1. 数据库的创建与管理创建新数据库打开现有数据库数据库的备份与恢复2. 表的创建与管理表的创建表结构的修改表的删除表的数据插入、删除和修改3. SQL语言基础数据定义语句(CREATE、ALTER、DROP)数据查询语句(SELECT)数据操纵语句(INSERT、UPDATE、DELETE)数据控制语句(GRANT、REVOKE)4. 索引与约束索引的创建、修改和删除主键、外键的设置与维护唯一约束和检查约束的设置5. 视图与存储过程视图的创建、修改和删除存储过程的创建、修改和删除存储过程的调用三、实验环境1. 硬件环境:计算机实验室,每台计算机配备数据库管理系统软件。

2. 软件环境:数据库管理系统软件(如MySQL、Oracle、SQL Server 等),编程语言环境(如Python、Java等),文本编辑器或集成开发环境(如Visual Studio Code、Eclipse等)。

四、实验步骤1. 实验准备:安装并配置数据库管理系统软件,了解实验内容和要求。

2. 实验一:数据库的创建与管理创建一个名为“实验数据库”的新数据库。

打开已存在的数据库,进行备份和恢复操作。

3. 实验二:表的创建与管理创建一个名为“学生”的表,包括学号、姓名、年龄、性别等字段。

插入、删除和修改表中的数据。

4. 实验三:SQL语言基础使用SELECT语句查询学生表中的数据。

使用INSERT、UPDATE和DELETE语句操作学生表数据。

5. 实验四:索引与约束为学生表的学号字段创建索引。

设置主键、外键、唯一约束和检查约束。

数据库原理实验报告-实验三-数据完整性与安全性控制

数据库原理实验报告-实验三-数据完整性与安全性控制

《数据库原理》实验报告题目:实验三数据完整性与安全性控制学号班级日期2016.10.18一、实验容、步骤以及结果1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。

(18分,每小题3分)(1)非空约束:为出生日期添加非空约束。

非空约束:取消表S中sbirth的勾。

可能需要重建表。

(2)主键约束:将学号(sno)设置为主键,主键名为pk_sno。

设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择‘修改’命令-->对话框中右击sno-->选择‘设置主键’-->修改主键名为‘pk_sno’-->保存(3)唯一约束:为(sname)添加唯一约束(唯一键),约束名为uk_sname。

唯一约束:单击数据库Student-->单击表-->单击S-->右击sname-->选择‘修改’命令→右击sname-->选择‘索引和键’命令-->打开‘索引和键’框图-->添加-->是否唯一改为‘是’-->名称改为‘us_sname’-->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为“男”。

设默认约束:单击数据库Student→单击表→单击S→右击sno→选择‘修改’命令→单击cno-->在默认值栏输入‘男’→保存(5)CHECK约束:为SC表的成绩(grade)添加CHECK约束,约束名为ck_grade,其检查条件为:成绩应该在0-100之间。

(6)外键约束:为SC表添加外键约束,将sno,cno设置为外键,其引用表分别是S表和C表,外键名称分别为fk_sno,fk_cno。

2.在图形用户界面中删除以上小题中已经创建的各种约束,用SQL语言分别重新创建第1题中的(2)-(6)小题.(15分,每小题3分,提示:alter table add constraint)删除约束:单击数据库Student-->表-->单击S-->展开键、约束。

实验三 索引

实验三 索引

实验三索引实验内容:1)使用对象资源管理器创建、管理索引①为学生表创建一个索引名为“stu_id”的唯一性非聚集索引,索引关键字是“学号”,填充因子80 % 。

②重命名索引,将索引“stu_id”重命名为“学生表_学号”。

③删除索引“学生表_学号”。

2)使用T-SQL语句创建、管理索引①为员工表创建一个索引名为“stu_id”的唯一性非聚集索引,索引关键字是“学号”,填充因子80 % 。

②重命名索引,将索引“stu_id”重命名为“学生表_学号”。

③为学期成绩表创建一个索引名为“学生_成绩_index”的非聚集复合索引,索引关键字为“学号”,升序,课程编号,降序,填充因子50%。

④删除索引“学生表_学号”和“学生_成绩_index”。

3)索引前后的执行计划①删除学生表中学号上的主键。

按学生姓名和课程名称查询对应的成绩,然后观察执行计划信息,计算总的I/O和CPU开销。

(学生表和学期成绩表中的学号都没有索引)即I/O和CPU开销分别为:0.003125和0.0001691。

②为学期成绩表创建一个索引名为“学期成绩_学号”的非聚集索引,索引关键字为“学号”,升序;按学生姓名和课程名称查询对应的成绩,然后观察执行计划信息,计算总的I/O和CPU开销。

(学生表中学号没索引,学期成绩表中的学号有非聚集索引)即I/O和CPU开销分别为:0.003125和0.0001658③重建学生表中学号上的主键,删除“学期成绩_学号”的非聚集索引。

按学生姓名和课程名称查询对应的成绩,然后观察执行计划信息,计算总的I/O和CPU开销。

(学生表中学号有聚集索引,学期成绩表中的学号没有非聚集索引)即I/O和CPU开销分别为:0.003125和0.0001592。

数据库原理与设计(MySQL版)实验指导

数据库原理与设计(MySQL版)实验指导

数据库原理与设计(MySQL版)附录A MySQL实验指导实验一数据库和表的管理一、实验目的1. 了解MySQL数据库的逻辑结构和物理结构的特点。

2. 学会使用SQL语句创建、选择、删除数据库。

3. 学会使用SQL语句创建、修改、删除表。

4. 学会使用SQL语句对表进行插入、修改和删除数据操作。

5. 了解MySQL的常用数据类型。

二、实验内容1. 使用SQL语句创建数据库studentsdb。

2. 使用SQL语句选择studentsdb为当前使用数据库。

3. 使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示。

表1 student_info表结构表2 curriculum表结构列名数据类型允许NULL值主键课程编号char(4) 否是课程名称varchar(50) 是否学分int 是否表3 grade表结构列名数据类型允许NULL值主键学号char(4) 否是课程编号char(4) 否是分数int 是否4. 使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade 表插入数据,各表数据如表4-表6所示。

表4 student_info表的数据表6 grade表的数据学号课程编号分数0001 0001 800001 0002 910001 0003 880001 0004 850001 0005 770002 0001 730002 0002 680002 0003 800002 0004 790002 0005 730003 0001 840003 0002 920003 0003 810003 0004 820003 0005 755.使用SQL语句ALTER TABLE修改curriculum表的“课程名称”列,使之为空。

6. 使用SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为decimal(5,2)。

数据库原理 实验三 创建数据库表与索引

数据库原理 实验三 创建数据库表与索引

实验报告课程名称数据库原理实验项目名称创建数据库表与索引班级与班级代码 09信管2班 092511012 实验室名称(或课室)SS1-204专业信息管理与信息系统任课教师朱树人学号: 09251101208 姓名:陈运亮实验日期: 2011年4月28日广东商学院教务处制姓名陈运亮实验报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,实验报告交院(系)办公室保存。

第3章创建数据库表与索引一.实验预备知识关系模式的完整性约束包括实体完整性、参照完整性和用户自定义完整性;索引的定义、建立和特点,应注意作为一般规则,不应该在一个表上建立太多的索引。

二.实验目的掌握表和索引的建立方法及表结构的修改方法,了解表关系建立的条件和作用,并实践数据库管理系统提供的数据完整性功能,加深对数据完整性的理解。

要求建立表、修改表结构、建立索引、进行数据完整性描述。

三.实验要求1.在已经建立的数据库中创建表2.了解表与表之间的逻辑依赖关系3.修改表结构4.建立索引四.实验内容与步骤6张表的具体设计内容:“课程信息表”包括课程名称、课程类别、学分和学时等;“教师档案表”和“学生档案表”记录了教师和学生的基本情况;“教学任务表”包括课程ID、任课教师ID、学期和年度;“学生选课表”给出了学生与课程之间的关系;“学生成绩表”则给出了学生成绩的计算方法。

准备:使用Transact-SQL语句创建“教学管理”数据库第1步:从“开始”菜单中打开“查询分析器”,连接进入“查询”窗口。

第2步:在“查询”窗口中,创建指定数据文件和事务日志文件的“教学管理”数据库,要注意这两个文件路径所需的文件夹应先创建好,不然会有错误提示。

1. 在“教学管理”数据库中使用Transact-SQL命令创建表(1)创建“课程信息表”第1步:在“查询分析器”窗口的上部,选择“教学管理”数据库。

并在查询框中输入建立“课程信息表”的命令第2步:执行,但是出现错误提示根据提示进行修改,再执行第3步:刷新“SQL查询分析器”界面左边的“对象浏览器”中的“教学管理”数据库,这时在“教学管理”数据库的“用户表”中可以看到新建的“课程信息表”(2)创建“教师档案表”(因为“教师档案表”中的“任课教师ID”字段需作为“教学任务表”中的外键,所以要先创建此表)第1步:输入建立“教师档案表”的命令,执行第2步:刷新,查看表(3)创建“教学任务表”第1步:输入建立“教学任务表”的命令,执行第2步:刷新,查看表(4)创建“学生档案表”第1步:输入建立“学生档案表”的命令,执行第2步:刷新,查看表(5)创建“学生选课表”第1步:输入建立“学生选课表”的命令,执行第2步:刷新,查看表(6)创建“学生成绩表”第1步:输入建立“学生成绩表”的命令,执行第2步:刷新,查看表2. 修改表结构将“学生档案表”中的“姓名”字段的数据类型改为varchar(8);为学生成绩表增加一个新的字段“总成绩”,类型是real,默认是空值;学生成绩表“平时成绩”字段的取值为小于等于100的正数,输入命令,执行3.使用Transact-SQL命令创建索引第1步:输入创建索引的命令,执行,出现错误提示第2步:修改后执行,在对象浏览器中查看索引的创建情况第3步:,在“学生档案表”的“籍贯”字段上创建普通升序索引,输入命令,执行4.创建数据库表之间的关系图第1步:在企业管理器的“控制台根目录”中,单击左端“+”号层层展开,直到在屏幕上看到数据库下的各个数据库,点开“教学管理”数据库,看到该数据库下的子项第2步:在“关系图”子项上,单击右键,选择“新建数据库关系图”,单击“下一步”,之后添加6张表到右边的文本框中第3步:单击“下一步”,单击“完成”五.实验心得这次实验主要使用Transact-SQL语句在查询分析器中实现表和索引的创建,还有表的修改,通过实验对相应的SQL语句有了更深的了解和学习。

实验三、四创建表及输入数据及完整性约束

实验三、四创建表及输入数据及完整性约束

实验三、四 创建表及输入数据及完整性约束本实验需要4学时。

一、实验目的要求学生熟练掌握和使用Transact-SQL、SQL Server企业管理器创建表、索引和修改表结构,并学会使用SQL Server 查询分析器接收Transact-SQL语句和进行结果分析。

学生熟练掌握使用 SQL、Transact-SQL和SQL Server企业管理器向数据库输入数据、修改数据和删除数据的操作。

二、实验内容1 创建表、确定表的主码和约束条件。

为主码建索引。

2 查看和修改表结构。

3 输入数据、修改数据和删除数据三、实验步骤(1)通过企业管理器,在建好的图书借阅数据库中建立图书、读者和借阅3个表,其结构为;图书(书号,类别,出版社,作者,书名,定价,作者).读者(编号,姓名,单位,性别,电话).借阅(书号,读者编号,借阅日期)要求为属性选择合适的数据类型,定义每个表的主码.是否允许空值和默认值等列级数据约束。

(2)在企业管理器中建立图书、读者和借阅3个表的表级约束.每个表的主码约束.借阅表与图书表间、借阅表与读者表之间的外码约束,要求按语义先确定外码约束表达式.再通过操作予以实现.实现借阅表的书号和读者编号的惟一性约束:实现读者性别只能是“男”或“女”的Check(检查)约束。

(3)通过企业管理器,在图书借阅数据库的图书、读者和借阅3个表中各输入10条记录。

要求记录不仅满足数据约束要求.还要有表间关联的记录。

(4)通过企业管理器实现对图书借阅数据库的图书、读者和借阅3个表中数据的插入。

删除和修改操作。

(5)通过企业管理器实现对学生选课库的数据增加、数据删除和数据修改操作、要求学生、课程和选课表中各有10条以上的记录。

四、实验方法1 新建表在 SQL Serve 2000的数据库中,文件夹是按数据库对象的类型建立的.文件夹名是该数据库对象名。

当在企业管理器中选择服务器和数据库文件夹,并打开已定义好的图书.读者数据库后,会发现它自动设置了关系图、表、视图、存储过程、用户、角色、规则、默认等文件夹。

实验三索引的建立与使用

实验三索引的建立与使用

实验三索引的建立与使用实验三索引的建立与使用姓名:学号:班级:一、实验目的1.理解索引的概念以及Visual FoxPro 6.0支持的索引文件类型。

2.理解Visual FoxPro 6.0中的四种索引类型及其特点。

3.掌握Visual FoxPro 6.0中创建表索引的多种方法。

4.掌握索引文件的打开、关闭、更新、删除等操作。

5.掌握设置主控索引的方法。

6.掌握如何通过索引进行索引查询。

7. 掌握常用的数据统计命令。

二、实验要求1.调试命令要记录调试过程中出现的问题及解决办法。

2.命令运行结果要求记录完整。

3.做完实验后认真撰写实验报告。

三、实验内容与步骤1.建立表索引文件(1)请写出菜单方式操作步骤,对自由表XSDA.dbf建立结构复合索引文件,其中以“学号”字段建立候选索引,索引标识名为XH;以“姓名”字段建立普通索引,索引标识名为XM。

(2)完成第(1)个实验内容后,再次打开“表设计器”对话框窗口,仔细观察所建立的索引,并回答如下问题:①根据“学号”建立的索引保存在哪个索引文件中?②若表中的“学号”字段值有重复值,仍然根据“学号”字段建立索引且指定索引类型为“侯选索引”会出现什么现象?为什么?③是否能在当前的“表设计器”对话框窗口中指定所建立的索引类型为“主索引”?为什么?(3)请写出索引命令,对自由表XSDA.dbf以“姓名”字段建立索引,索引标识名为XM。

(4)完成第(3)个实验内容后,在“表设计器”对话框窗口中选择“索引”选项卡,仔细观察所建立的索引,然后回答如下问题:①命令“INDEX ON 姓名TAG XM”所建立的索引类型是什么?②该索引保存在哪个索引文件中?(5)请写出索引命令,对表XSDA.dbf按“姓名”字段建立降序索引,索引标识名为XM。

2.设置主控索引(1)请写出菜单方式操作步骤,指定xsda.dbf表中的XM 索引为主控索引,并观察浏览窗口中记录的排列顺序。

(2)请写出命令,指定xsda.dbf表中的XM 索引为主控索引,并观察浏览窗口中记录的排列顺序。

5、索引和约束条件

5、索引和约束条件
5、索引和约束条件
使用索引和约束条件
查找的特定数据在哪一行上。由于索引比引用它的表
要小得多,因此用索引查找表中的数据比不用索引的 表明赤地快。在一个拥有百万条记录的表中选择与某 值相匹配的记录花了18.9秒,当建立该表的索引后, 同样的查询只需要0.6秒就能完成。在一个大表中增加 索引能使查询速度快几十倍。看图1中的一个索引表:
删除索引的语法如下:
DROP INDEX index_name
使用索引和约束条件
➢ 索引何时有用
对于必须读取表中内容的命令,索引改善了它们的响应时 间。这意味着SELECT、UPDATE和DELETE命令都能够更 快地进行运行,如果该表有对应于这些命令的列的索引。
但是增加表的索引并不能提高INSERT命令的输入数据的速 度,相反还要降低运行速度。因为索引本身实际上是一个表, 因此当对表添加一个记录时,Oracle必须做两次插入。这样, 组表增加一个索引将导致插入操作要两倍多的时间(两倍的 时间用于两次插入,另外还需要一点时间处理二表之间的同 步)。增加两个索引将使用插入操作花三倍时间,三个索引 使插入操作花四倍的时间,等等。因此索引的使用要权衡利 弊。它们会使数据输入花费更长的时间,但却使读取数据的 速度提高。所以,需要快速进行数据输入的应用程序最好不
;
使用索引和约束条件
完成以下操作认真观察运行结果: 例1: create table test(age number(2)); alter table test add( constraint test_check check( age is not null and age>10) ); insert into test values(12); insert into test values(10); insert into test values(9); commit;

实验三 索引、管理数据表数据

实验三 索引、管理数据表数据

实验三:建立索引、管理数据表数据一、实验目的1.掌握数据表结构及使用特点;2.理解索引的作用、掌握建立索引的方法;3.掌握使用T-SQL语句管理数据表数据。

二、实验学时2学时三、实验要求1.了解SQL Server数据表及索引的管理方法;2.了解SQL Server数据类型;3.完成实验报告(写出T-SQL 语句)。

四、实验内容1.在对象资源管理器中,利用图形化的方法创建和管理下列索引:1)对数据表student中字段sname建立非聚集索引idx_name;2)针对student表的sno和sname列创建复合索引idx_no_name;3)删除数据表student的索引idx_name;2. 利用T-SQL语句创建和管理以下索引:1)对course表的cname列创建非聚集索引idx_cname;2)对sc表的sno和cno列创建复合索引idx_sno_cno;3)利用系统存储过程sp_helpidex查看索引idx_cname信息;4)删除索引idx_cname。

3.依据实验二建立的数据表结构(student、course、sc),向student表中插入如下记录:(请尝试使用三种方法添加:界面方式、命令方式、导入方式)Student表Course表SC表4*.使用T-SQL 语句查看数据表信息1)查看数据表Student所有记录2)查看数据表Student中字段sno、sname的所有记录3)按照院系、学号、姓名、性别、年龄的顺序显示学生信息表中前10个同学记录,要求在结果集中列标题按照上述内容显示;4)按照“院系,学号,姓名,年龄”的顺序显示院系不明的所有学生记录;5)显示学号最后一位为1或者2或者3的学生的学号、姓名、性别年龄及院系;6)查询所有院系不是CS、IS的男同学信息。

实验三:创建视图、存储过程和实现数据安全_mysql

实验三:创建视图、存储过程和实现数据安全_mysql

实验三:创建视图、存储过程和实现数据安全_mysql实验三:完整性约束、视图、存储过程和数据安全[⽬的和意义]掌握创建各种完整性约束的⽅法;掌握创建和使⽤视图、存储过程和索引的⽅法;掌握实现数据安全的基本⽅法;掌握数据库的基本备份和恢复技术。

[实验内容]本实验在mysql数据库平台上进⾏操作,实验中的各种数据都来⾃于实验⼆中的各个表。

实验主要内容如下:1.学习创建完整性约束的⽅法。

2.学习创建视图、存储过程和索引的⽅法。

3.学习利⽤⽤户管理和视图实现数据安全。

4.学习mysql数据库的基本备份和恢复技术。

[实验步骤]1 完整性约束1.1 实体完整性约束主键⼀定是⾮空的,⽽且具有唯⼀性,即不能重复。

能够唯⼀标识实体,保证实体完整性。

虽然,上⾯已经成功创建了主键,但是,我们还是要学习⼀下主键的写法。

第⼀种:在建表的时候就加上主键:还是以上⾯course表的创建为例:CREATE TABLE course (cno V ARCHAR(10) NOT NULL,dno CHAR(8) NOT NULL,cname V ARCHAR(20) NOT NULL,hours INTEGER NOT NULL,term INTEGER NOT NULL,credit INTEGER NOT NULL,CONSTRAINT pk_course PRIMARY KEY (cno));其中最后⼀句话就是将cno设为主键。

如果主键包含多个字段,可以在括号内添加所包含字段名,如取cno和dno为主键,则语句为:CONSTRAINTpk_course PRIMARY KEY(cno,dno)。

第⼆种:若建表的时候没有将cno设为主键,表建⽴成功以后,可以加上主键约束:ALTER TABLE course ADD CONSTRAINT pk_course PRIMARY KEY(cno) ;1.2 参照完整性约束建⽴外键:例如,在course表中建⽴和department表之间的外键,语句如下:ALTER TABLE courseADD CONSTRAINT fk_course_departmen_departme FOREIGN KEY (dno) REFERENCES department (dno);在student表中建⽴和department表之间的外键,语句如下:ALTER TABLE studentADD CONSTRAINT fk_student_departmen_departme FOREIGN KEY (dno) REFERENCES department (dno);1.3 业务规则约束有时候,不同系统会有⼀些特定的业务规则;例如这⾥,要求在删除teacher表之前⼀定要先删除teacher_course与student_course_teacher中的相关信息,这⾥,我们⽤触发器实现⼀下:DELIMITER //#修改分隔符CREATE TRIGGER tri_del_teacherAFTER DELETE ON teacherFOR EACH ROWBEGINDELETE FROM teacher_courseWHERE tno=old.tno;DELETE FROM student_course_teacherWHERE tno=old.tno;END //DELIMITER ; #修改回原分隔符建⽴成功以后,如果我们在teacher表中删除⽼师编号为'2004-213'的⽼师的信息,那么teacher_course和student_course_teacher两表中包含此⽼师信息的相关数据都会删除掉(慎⽤!)。

创建表、索引和约束

创建表、索引和约束

创建表的SQL语句
```sql
CREATE TABLE students (
创建表的SQL语句
id INT, name VARCHAR(50),
创建表的SQL语句
• age INT
创建表的SQL语句
);
```
VS
创建表的过程与步骤
3. 编写SQL语句
2. 设计表格结构
使用`CREATE TABLE`语句创建表。
与单列和复合索引类似, 唯一索引不允许两行拥
有相同的索引值。
创建索引的SQL语句
单列索引创建示例
CREATE INDEX index_name ON table_name (column_name);
复合索引创建示例
CREATE INDEX index_name ON table_name (column1, column2, ...);
01
1. 确定需要创建约束的列和约束 类型。
02
2. 在创建表或修改表结构的SQL 语句中,使用相应的约束语法。
3. 执行SQL语句,创建或修改表 结构。
03
4. 验证约束是否成功创建或修改 ,可以使用数据库管理工具或查
询语句来验证。
04
04 表、索引和约束的关系与 影响
表、索引和约束的关系
01 表是存储数据的结构,是数据库中存储数据的逻 辑单位。
限制列中的值范围,确保数据 满足特定条件。
主键约束
唯一标识表中的每条记录,确 保每行数据的唯一性。
唯一约束
确保某列或多列的组合值唯一, 但允许NULL值。
非空约束
确保列中的值不为NULL。
创建约束的SQL语句
主键约束

数据库实验3:连接查询、索引实验报告

数据库实验3:连接查询、索引实验报告

数据库实验3:连接查询、索引实验报告GDOU-B-11-112广东海洋大学学生实验报告书实验名称实验3:连接查询、索引课程名称数据库原理及应用成绩学院(系)信息学院专业软件工程班级学生姓名学号实验地点实验日期实验目的:1.使用内连接2.使用外连接3.索引的创建完成在在GlobalToyz数据库上的查询,按要求完成给出的下列题目,要求写出相应数据库的查询语句(SELECT)。

1.使用连接实现查询,查询订单号为‘000005’的订单订购的玩具的名称及其品牌名称。

(两种连接语法:交叉连接、内连接)SELECT DISTINCT toy.vToyName, brand.cBrandNameFROM OrderDetail AS detail CROSS JOIN Toys AS toy CROSS JOIN ToyBrand AS brandWHERE detail.cOrderNo = '000005' AND detail.cToyId = toy.cT oyId AND toy.cBrandId = brand.cBrandId;SELECT toy.vToyName, brand.cBrandNameFROM OrderDetail AS detail INNER JOIN T oys AS toy ON (detail.cT oyId = toy.cToyId AND detail.cOrderNo = '000005') INNER JOIN ToyBrand AS brand ON toy.cBrandId = brand.cBrandId;2.使用连接实现查询,查询订购了类别为‘Infant’的玩具的订单详情。

SELECT detail.*FROM Category AS cate, Toys AS toy, OrderDetail AS detailWHERE /doc/f511630846.html,ategory = 'infant' AND /doc/f511630846.html,ategoryId = /doc/f511630846.html,ategoryId AND detail.cToyId = toy.cToyId;3.使用连接实现查询,查询订单号为‘000001’的订单的包装描述和附言内容。

数据库实验报告三索引和数据完整性的使用

数据库实验报告三索引和数据完整性的使用

数据库实验报告三索引和数据完整性的使用第一部分:索引1. 索引的概念数据库中的索引指的是对数据表中一列或多列的值进行排序的结构。

其作用在于提高查询速度和数据检索的效率。

常见的索引包括主键索引、唯一索引、普通索引和全文索引等。

主键索引:用于标识数据表中每一行的唯一性,在创建表时可以定义一个主键,也可以在表创建后添加主键索引。

主键索引是数据库中一种建立索引的方式,也是性能最优的索引。

唯一索引:唯一索引是用来保证数据表中某一列的唯一性。

与主键索引不同,唯一索引列的值可以为空。

普通索引:普通索引只是按照指定的列进行排序,无特殊要求。

可以对任何列进行普通索引,但一个表中最多只能有一个主键索引,可同时创建多个普通索引。

全文索引:全文索引是基于全文搜索的索引,用于在大数据量的文本信息中进行高效率的搜索。

其搜索键值不是行而是文本字符串中的单词。

3. 索引的创建和删除索引的创建和删除操作,首先需要指定要操作的表和列名,然后通过 SQL 语句进行执行。

创建索引的语法:CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX {index_name} ON {table_name} ({column_name} [ASC | DESC]);删除索引的语法:DROP INDEX {index_name} ON {table_name};4. 索引的优缺点索引的优点在于提高查询速度和数据检索的效率,使得数据库操作更加高效。

同时,索引可以帮助数据表中的列保持唯一性,防止重复数据的插入。

索引的缺点在于占用大量的磁盘空间和增加了数据库操作的复杂度。

每个索引都需要独立占用一定的磁盘空间,如果数据表中的列较多,建立索引过程对磁盘的压力也较大。

第二部分:数据完整性的使用数据完整性是指数据库中的数据是准确、一致、合法和有效的。

数据完整性包括实体完整性、域完整性、参照完整性和用户自定义完整性等几个方面。

实验三 索引和视图

实验三 索引和视图

实验三索引和视图一、实验目的1.掌握利用SSMS和T—SQL语句创建和删除索引的两种方法。

2.掌握利用SSMS和T—SQL语句创建、查询、更新及删除视图的方法。

ssex char(3)constraint ssex_ch check (ssex in('男','女')),sage int not null constraint sage_ch check (sage between 15 and 30),sdept char(10))values('C02','数据结构','C05',2) insert into coursevalues('C03','数据库','C02',2) insert into coursevalues('C04','DB_设计','C03',3)insert into coursevalues('C05','C++',null,3)insert into coursevalues('C06','网络原理','C07',3)create table sc(sno char(5)not null,cno char(5)not null,grade int constraint grade_ch check(grade between 0 and 100),primary key(sno,cno),constraint fk_sno foreign key (sno)references student(sno),constraint fk_cno foreign key (cno)references course(cno))insert into scvalues('S01','C01',92)insert into scvalues('S01','C03',84)insert into scvalues('S02','C01',90)insert into scvalues('S02','C02',94)insert into scvalues('S02','C03',82)insert into scvalues('S03','C01',72)insert into scvalues('S03','C02',90)insert into scvalues('S04','C03',75)2.索引的建立、删除①用SSMS的方式为Student表按Sno(学号)升序建唯一索引②用T—SQL语句为Course表按Cno(课程号)升序建唯一索引,create unique index course_cnoon course(cno asc)③用T—SQL语句为SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。

数据库实验 索引的创建与使用

数据库实验     索引的创建与使用

实验三:索引的创建与使用一、实验目的:1、理解索引的概念和索引的作用。

2、掌握创建索引的方法。

3、学会使用索引。

4、了解聚簇索引和非聚簇索引。

二、实验要求:(必做)硬件:Intel Pentium 120或以上级别的CPU,大于16MB的内存。

软件:Windows 95/98/2000操作系统,关系数据库管理系统SQL SERVER 2000。

学时:2学时三、实验内容:1、用create index在学生表student的学号sno上建立聚簇索引。

2、在学生表student中,为姓名sname建立非聚簇索引。

3、在课程表的课程号Cno上建立唯一索引。

4、在选课表的学号sno、成绩Grade上建立复合索引,要求学号为升序,学号相同时成绩为降序。

5、用drop删除学生表student的索引。

数据库设计与管理实验报告实验名称评分实验日期年月日指导教师姓名专业班级学号一、实验目的二、实验步骤及结果1、用create index在学生表student的学号sno上建立聚簇索引。

create clustered index stusno on student(sno);2、在学生表student中,为姓名sname建立非聚簇索引。

create index stusname on student(sname);3、在课程表的课程号Cno上建立唯一索引。

create unique index coucno on course(cno);4、在选课表的学号sno、成绩Grade上建立复合索引,要求学号为升序,学号相同时成绩为降序。

create unique index scng on sc(sno asc,grade desc);5、用drop删除学生表student的索引。

drop index student.stusno,student.stusname;三、程序调试及问题分析1、用create index在学生表student的学号sno上建立聚簇索引。

创建索引与约束

创建索引与约束

第5章 创建索引(idex)与约束(constraint)
1
第五单元
索引与约束的创建
第5章 创建索引(idex)与约束(constraint)
5.1 5.2 5.3
索引 约束和默认 数据完整性
2
第五单元
索引与约束的创建
一、什么叫索引

数据库中的索引与书籍中的目录类似。 在数据库中,索引使数据库程序无须对整个表 进行扫描,就可以在其中找到所需数据。 数据库中的索引是某个表中一列或者若干列值 的集合和相应的指向表中物理标识这些值的数 据页的逻辑指针清单。
第五单元
索引与约束的创建
五、创建索引必须基于以下原则

在主关键字列中创建索引(自动); 在经常要查询的列中创建索引; 在经常用于连接的列,如外关键字列中创建索引; 在经常出现在WHERE子句和ORDER BY子句中的列中 创建索引; 当UPDATE的性能需求远大于SELECT的性能需求时, 不应该创建索引。
25
第五单元
索引与约束的创建
创建检查约束常用的操作方法有两种:
1.SSMS操作法。使用SSMS创建检查约束,与创建唯
一性约束类似 。
2.Transact-SQL语句操作法。 例:将Sc表的成绩字段建立检查约束。
26
第五单元
索引与约束的创建
5. 唯一性约束
唯一性约束用于指定一个或者多个列的组合的值具有唯
信息,其语法形式如下: sp_helpindex ‘name’ 其中’name’参数用于指定当前数据库中的表的名 称。 另外,系统存储过程sp_rename可以用来更改索引的 名称,其语法形式如下: sp_rename 'object_name','new_name'

69.约束和索引

69.约束和索引

1.约束1.作用保证数据的完整性、一致性、有效性2.约束的分类1.默认约束(default)1.插入记录时,不给该字段赋值,则使用默认值2.非空约束(not null)1.不允许该字段的值有null记录3.示例create table t2(id int not null,name varchar(15),sex enum("M","F","S")default "S";insert into t2(name,sex)values("A","M");#报错id没有赋值2.索引1.定义对数据库表的一列或者多列的值进行排序的一种结构(Btree)2.优点加快数据检索速度3.缺点1.占用物理存储空间2.当对表中数据更新时,索引需要动态维护,降低数据维护速度索引示例1.开始运行时间检测:set profiling=1;2.执行查询语句select name from t1 where name="lucy9999"3.查看执行时间show profiles;4.在name字段创建索引create index name on t1(name);5.再执行查询语句select name from t1 where name="lucy8888"6.查看执行时间show profiles;7.关闭时间检测set profiling=0;索引1.普通索引1.使用规则1.可设置多个字段2.字段值无约束3.key标志:MUL2.创建index1.创建表时create table 表名(...index(字段名),index(字段名));create table t3(id int,name varchar(20),score decimal(5,2),index(id)index(name));2.已有表时create index 索引名 on 表名(字段名);create index id on t5(id);3.查看索引1.desc 表名;-->KEY标志位:MUL2.show index from 表名;show index from 表名\G;4.删除索引drop index 索引名 on 表名;2.唯一索引1.创建表时创建unique(字段名),unique(字段名)2.已有表中创建create unique index 索引名 on 表名(字段名);3.查看索引1.desc 表名;-->KEY标志位:UNI2.show index from 表名;show index from 表名\G;4.删除索引drop index 索引名 on 表名;alter table t3 add number bigint;create unique index number on t3(number);3.主键索引自增长属性(auto_increment,配合主键一起使用)1.使用规则1.只能有一个主键字段2.约束:不允许重复,且不能为NULL3.KEY标志:PRI4.通常设置记录编号字段id,能唯一锁定一条记录2.创建主键1.创建表时创建(id int primary key auto_increment,)auto_increment=10000; #设置自增长起始值已有表中重新指定起始值:alter table t4 auto_crement=10000;#设置自增长起始值2.已有表中添加主键alter table 表名 add primary key(id);3.删除1.删除自增长属性(modify)alter table 表名 modify id int;2.删除主键索引alter table 表名 drop primary key;4.外键索引。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验3 索引和约束
实验目的:
1.掌握索引的使用方法
2.掌握约束的实现方法。

实验要求:
了解索引和约束的相关知识,掌握表结构修改的方法。

实验内容:
1.创建和删除索引
2.创建和删除约束
实验步骤:
说明:按实验步骤对数据库YGGL中的三个表进行操作,三个表结构如下(具体参看实验2):Departments (DepartmentID,DepartmentName,Note)
Employees
(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,Department ID)
Salary(SalaryID,InCome,OutCome,Time, EmployeeID)
要求:完成实验步骤中的SQL。

1. 使用CREATE INDEX语句创建索引和约束
(1)对YGGL数据库上的Employees表中的Birthday列建立索引in_birth。

(2)在Employees表的Name列和Address列上建立复合索引in_name。

(3)在Departments表的DepartmentName列建立唯一性索引in_depname。

(4)使用SHOW INDEX语句查看Employees表的索引。

(5)使用SHOW INDEX 语句查看Departments 表的索引。

2.使用ALTER TABLE 语句向表中添加索引和约束
(1)向Employees 表中的出生日期列添加一个唯一性索引,姓名列和性别列添加一个复合索引。

(2)删除表Departments 的主键。

(3)将表
Departments 的DepartmentID 列设为主键。

(4)删除表salary 的现有的外键。

(5)为表salary 添加适合的外键。

3.在创建表时创建索引和约束 创建与表Departments 表相同结构的表Departments1,将DepartmentName 列设为主键,
DepartmentID
列上建立一个索引
实验3 索引和约束
实验目的:
1.掌握索引的使用方法
2.掌握约束的实现方法。

实验要求: 了解索引和约束的相关知识,掌握表结构修改的方法。

实验内容: 1. 创建和删除索引
2. 创建和删除约束
实验步骤:
说明:按实验步骤对数据库YGGL 中的三个表进行操作,三个表结构如下(具体参看实验2): Departments (DepartmentID,DepartmentName,Note) Employees
(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,Department ID) Salary (SalaryID,InCome,OutCome,Time, EmployeeID) 要求:完成实验步骤中的SQL 。

1. 使用CREATE INDEX 语句创建索引和约束
(1)对YGGL 数据库上的Employees 表中的Birthday 列建立索引in_birth 。

(2)在Employees 表的Name 列和Address 列上建立复合索引in_name 。

(3)在Departments 表的DepartmentName 列建立唯一性索引in_depname 。

(4)使用SHOW INDEX 语句查看Employees 表的索引。

实验3 索引和约束
实验目的: 1.掌握索引的使用方法
2.掌握约束的实现方法。

实验要求:
了解索引和约束的相关知识,掌握表结构修改的方法。

实验内容: 1. 创建和删除索引
2. 创建和删除约束 实验步骤:
说明:按实验步骤对数据库YGGL 中的三个表进行操作,三个表结构如下(具体参看实验2): Departments (DepartmentID,DepartmentName,Note) Employees (EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,Department ID) Salary (SalaryID,InCome,OutCome,Time, EmployeeID) 要求:完成实验步骤中的SQL 。

1. 使用CREATE INDEX 语句创建索引和约束 (1)对YGGL 数据库上的Employees 表中的Birthday 列建立索引in_birth 。

(2)在Employees 表的Name 列和
Address 列上建立复合索引in_name 。

(3)在Departments 表的DepartmentName 列建立唯一性索引in_depname 。

(4)使用SHOW INDEX 语句查看Employees 表的索引。

create database YGGL;
use YGGL;
create table Employees(EmployeeID char(6) primary key, Name char (8),
Sex char(2),Birthday char(8),Education char(6),WorkYear char(8),Address char(20), PhoneNumber char(11),DepartmentID char(6));
create table Departments(DepartmentID char(6) primary key,
DepartmentName char(8),Note char(20));
create table Salary(SalaryID char(6) primary key,
InCome char(5),OutCome char(5), Time char(8),EmployeeID char(6));
create index in_birth on Employees(Birthday);
show index from Employees;
create index in_name on Employees(Name,Address);
show index from Employees;
create unique index in_depname on Departments(DepartmentName);
show index from Departments;
alter table Employees add unique csrq (Birthday);
alter table Employees add key xx(Name,Sex);
describe Employees;
alter table Departments drop primary key;
describe Employees;
alter table Departments add primary key(DepartmentID);
alter table Salary add EmployeeID char(6);
alter table salary add constraint c1 foreign key(employeeID) references employees(employeeID); alter table salary drop foreign key c1;
create table Departments1 as select*from Departments ;
alter table Departments1 add primary key(DepartmentName);
create index zh on Departments1 (DepartmentID);。

相关文档
最新文档