数据库实验 2
- 格式:doc
- 大小:121.00 KB
- 文档页数:11
实验4 数据查询一、实验目的1.掌握SELECT语句的基本语法和查询条件的表示方法;2.掌握连接查询的表示方法;3.掌握嵌套查询的表示方法;4.掌握数据汇总的方法;5.掌握ORDER BY子句的作用和使用方法;6.掌握HAVING子句的作用和使用方法;二、实验内容使用SELECT查询语句,在数据库StudentCourse的Student表、Course 表和StuCourse 表上进行各种查询,包括单表查询、连接查询、嵌套查询,并进行数据汇总,以及使用GROUP BY子句、ORDER BY子句和HAVING子句对结果进行分组、排序和筛选处理。
1.SELECT语句的基本使用;2.连接查询;3.嵌套查询;4.数据汇总;5.使用GROUP BY 子句对结果分组;6.使用ORDER BY子句对结果排序;7.使用HAVING子句对分组结果进行筛选;思考与练习:1.用SELECT语句查询Course表和StuCourse表中的所有记录。
SQL语句:select * from Course;select * from StuCourse;实验结果:2.用SELECT语句查询Course表和StuCourse表中满足指定条件的一列或若干列。
SQL语句:select 课程号,课程名 from Course where 学分=5;select 学号,课程号 from StuCourse where 成绩>80;实验结果:3.查询所有姓名中包含有“红”的学生的学号及姓名。
SQL语句:select 学号,姓名 from Student where 姓名 like '%红%';实验结果:4.用连接查询的方法查找所有选修了“2001” 或“1002”号课程的学生学号和姓名。
SQL语句:selectdistinct Student.学号,姓名from StuCourse,Studentwhere(课程号='1002'or 课程号='2001')and StuCourse.学号=Student.学号;实验结果:5.用子查询的方法查找所有选修了“2001”或“1002”号课程的学生学号和姓名。
课程名称数据库原理实验序号 2实验项目数据查询实验地点实验学时实验类型验证性指导教师实验员专业班级学号姓名年月日成绩:A教师该学生本次实验的内容丰富,完成的操作步骤详细具体,实验结果正确,在实验报告的填写中态度十分严谨,对数据分析有自己的见解。
四、实验过程(实验步骤、记录、数据、分析)实验准备:在实验一的基础上(包括数据库的建立、定义表和添加表内容)进行实验,下面分别为depts表、students表、courses表、reports表。
一、简单的选择与投影查询1、无条件查询1.1查询全体学生的详细记录。
这是一个无条件的选择查询,其命令为:其命令为:select * from students运行结果如右图,显示整张表的内容。
1.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(dno)。
这是一个无条件的投影查询,其命令为:select sname,ssexfrom students运行结果如右图,显示了表中的三列。
1.3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。
其命令为:select sno,sname,2017-sage as birth from students运行结果如右图,显示了三列内容。
1.4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。
其命令为:select sname,'birth:' title,YEAR(GETDATE())-sagebirthyear,LOWER(sno) lsnofrom students运行结果如右图,显示了四列内容。
1.5查询选修了课程的学生学号。
其命令为:select distinct snofrom reports运行结果如右图,distinct短语是为了消去查询结果中的重复值。
2、条件查询(1)比较条件1.1查询d03系全体学生的学号(Sno)和姓名(Sname)。
其命令为:select sno,snamefrom studentswhere dno='d03'运行结果如右图,显示了d03系的全体学生姓名与学号。
《数据库原理》实验报告学号:姓名:班级:指导教师:2013 年12月数据库原理教师成绩评定表评定成绩的依据:①基础理论及基本技能的掌握②独立解决实际问题的能力;③研究内容的理论依据和技术方法;④取得的主要成果⑤工作态度及工作量;⑥成绩采用优良中差四个等级评定成绩表实验2:数据库的创建与管理一、实验内容及要求1. 使用SQL Server 管理平台创建“学生管理”数据库。
要求:它有3个数据文件,其中主数据文件为20MB,最大为100MB,每次增加5MB;此数据文件为10MB,最大容量不受限制,每次增长20%;事务日志文件为20MB,最大为100MB,每次增加20MB。
2.使用T-SQL语句创建“仓库管理”数据库。
要求:它有3个数据文件,其中主数据文件为20MB,最大为100MB,每次增加5MB;此数据文件为10MB,最大容量不受限制,每次增长20%;事务日志文件为20MB,最大为100MB,每次增加20MB。
3.使用SQL Server 管理平台删除“仓库管理”数据库。
二、实验目的1.了解数据库的逻辑结构和物理结构。
2.掌握使用SQL Server 管理平台创建数据库方法。
3.掌握使用SQL语句创建数据库的方法。
三、实验步骤及运行结果1.使用SQL Server 管理平台创建“学生管理”数据库实验步骤:(1)以系统管理员身份登录到SQL Server 2005管理平台主界面。
(2)右击“SQL Server管理平台”中的“数据库”对象,在弹出的快捷菜单中选择“新建查询”选项,打开“新建数据库”对话框,默认进入“常规”设置窗口。
(3)在“常规”窗口中,可以创建数据库的名称、数据库的所有者、数据文件(主数据文件和次数据文件)、事务日志文件以及是否使用全文索引等。
(4)在“常规”窗口中,根据所给定建立数据库的要求,在“数据库名称”文本框中输入数据库名称“学生管理”。
自行设置主数据文件、次数据文件和事务日志文件的逻辑名、文件类型、文件组初始大小。
院系:计算机学院实验课程:数据库实验实验项目:数据操作实验指导老师:XXX开课时间:XXXX ~ XXXX年度第 2学期专业:XXXX班级:XXXX级本X班学生:XXX学号:XXXXXXXX实验二数据操作实验一、实验任务及目的1. 实验任务:上机完成实验内容,主要是编写、运行和分析SQL,请预先自行判断SQL 的运行结果(例如:查询结果包含哪些数据;更新后关系数据如何变化),然后与实际的运行结果比较,以此发现和修正SQL编写中的错误。
2. 实验目的:能够熟练使用MS SQL Server的Query Analyzer工具,联机运行SQL并观察分析SQL的执行结果。
掌握SQL的数据定义、数据查询和数据修改功能,能独立用SQL表述问题,解决较复杂的应用需求。
二、实验的主要硬件软件环境MS SQL Server、计算机磁盘三、实验主要数据结构线性表四、实验的主要算法1.至少向北京或天津的工程提供了零件的供应商名,供应的零件名、工程名和供应数量。
SELECT PNAME,JNAME,SNAME,QTYFROM S,P,J,SPJWHERE SPJ.SNO=S.SNOAND SPJ.JNO=J.JNOAND SPJ.PNO=P.PNOAND (J.CITY=’上海’ OR J.CITY=’天津’)2.供应红色零件给工程J1的供应商名SELECT SNAMEFROM S,P,SPJWHERE SPJ.JNO=’J1’AND SPJ.SNO=S.SNOAND SPJ.PNO=P.PNOAND COLOR=’红’3. 没有使用天津产的零件的工程号SELECT JNOFROM JWHERE JNO NOT IN(SELECT JNOFROM SPJ,SWHERE SPJ.SNO=S.SNOAND CITY=’天津’)4.没有向位于相同城市的工程供应零件的供应商名SELECT SNAMEFROM SWHERE SNAME NOT IN( SELECT SNAMEFROM S,J,SPJWHERE SPJ.JNO=J.JNOAND SPJ.SNO=S.SNOAND S.CITY=J.CITY)5. 和工程J3位于同一城市且使用过至少一种相同零件的其它工程名SELECT DISTINCT(JNAME)FROM J,SPJWHERE SPJ.JNO=J.JNOAND CITY IN(SELECT CITYFROM JWHERE J.JNO=’J3’)AND JNAME NOT IN(SELECT JNAMEFROM JWHERE J.JNO=’J3’)6. 每种颜色零件的总重量SELECT COLOR,SUM(WEIGHT)FROM PGROUP BY (COLOR)7.红色零件的平均重量SELECT AVG(WEIGHT)FROM PWHERE COLOR=’红’8.供应商最集中的城市(意即,哪个城市的供应商最多?)SELECT S.CITYFROM SGROUP BY (CITY)HAVING COUNT(CITY)>=ALL(SELECT COUNT(CITY)FROM SGROUP BY (CITY))9.对上海和天津,统计该城市的供应商一共供应了多少数量的零件。
数据库运维形考任务2-实验2 MariaDB数据库对象管理本文档旨在介绍MariaDB数据库对象管理的实验2任务。
在这个任务中,我们将研究如何管理MariaDB数据库中的不同对象。
1. 创建和删除数据库1.1 创建数据库要创建一个新的数据库,在MariaDB命令行中执行以下语句:CREATE DATABASE database_name;请将`database_name`替换为您想要创建的数据库的名称。
1.2 删除数据库如果要删除一个现有的数据库,可以使用以下语句:DROP DATABASE database_name;同样,请将`database_name`替换为要删除的数据库的名称。
2. 创建和删除表2.1 创建表在已有的数据库中创建表,使用以下语句:USE database_name;CREATE TABLE table_name (column1 datatype,column2 datatype,...);请将`database_name`替换为已有的数据库的名称,`table_name`替换为要创建的表的名称,`column1, column2, ...`替换为表中的列名和相应的数据类型。
2.2 删除表要删除一个表,使用以下语句:USE database_name;DROP TABLE table_name;请将`database_name`替换为表所属的数据库的名称,`table_name`替换为要删除的表的名称。
3. 创建和删除索引3.1 创建索引要在表的列上创建索引,使用以下语句:USE database_name;CREATE INDEX index_name ON table_name (column);请将`database_name`替换为表所属的数据库的名称,`index_name`替换为要创建的索引的名称,`table_name`替换为包含索引的表的名称,`column`替换为要在其上创建索引的列。
实验二数据定义一、实验目的1、掌握使用SQL语句创建和删除数据库;2、掌握使用SQL语句创建和删除数据表,创建各种完整性约束,修改表的结构;3、掌握索引的创建和删除方法。
二、实验过程(一)数据库的建立使用CREATE DA TABASE语句创建名为“gongcheng”的数据库。
create database gongcheng(二)数据表的操作1.建立数据表在创建的“gongcheng”数据库中使用SQL语句建立4个关系(可参考课本P74习题5),如下:供应商表S (Sno,Sname,Status,Ctiy)零件表P(Pno,Pname,Color,Weight)工程项目表J(Jno,Jname,City)供应情况表SPJ(Sno,Pno,Jno,QTY)要求:(1)创建每个关系的主键,有外键的创建外键。
(2)S表中的Sname属性列的取值唯一(3)P表中weight属性列的取值范围在1-50之间(4)J表中的Jname取值不能为空并且是唯一的(5)SPJ表中QTY属性列的数据类型必须为int建立供应商表Screate table S(Sno varchar(8)primary key,Sname varchar(20)unique,Status int,City varchar(20))建立零件表Pcreate table P(Pno varchar(8)primary key,Pname varchar(20),Color varchar(4),Weight int check(Weight>=1 and Weight<=50))建立工程项目表Jcreate table J(Jno varchar(8)primary key,Jname varchar(20)unique not null,City varchar(20))建立供应情况表SPJcreate table SPJ(Sno varchar(8),Pno varchar(8),Jno varchar(8),QTY int,primary key(Sno,Pno,Jno),foreign key(Sno)references S(Sno),foreign key(Pno)references P(Pno),foreign key(Jno)references J(Jno))2.修改表的结构用SQL语句完成以下操作:(1)给S表增加Sphone和Semail两个属性列,分别用来存放供应商的联系电话和电子信箱。
最新数据库实验二实验报告实验目的:1. 熟悉数据库管理系统的基本操作。
2. 掌握数据库的创建、查询、更新和删除等基本操作。
3. 学习并实践SQL语言在数据库管理中的应用。
实验环境:- 操作系统:Windows 10- 数据库管理系统:MySQL 8.0- 开发工具:MySQL Workbench实验内容:1. 创建数据库- 使用MySQL Workbench连接到MySQL服务器。
- 执行CREATE DATABASE命令创建名为“StudentDB”的数据库。
2. 设计数据表- 在“StudentDB”数据库中创建学生表(Students)和课程表(Courses)。
- 学生表包含字段:学号(ID)、姓名(Name)、年龄(Age)、专业(Major)。
- 课程表包含字段:课程号(CourseID)、课程名(CourseName)、学分(Credits)。
3. 插入数据- 向学生表和课程表中插入一定数量的示例数据。
- 使用INSERT INTO命令并指定具体的值进行数据插入。
4. 查询操作- 实现对学生表和课程表的基本查询,如查询所有学生信息、查询特定专业学生信息等。
- 使用SELECT语句进行查询,并尝试使用WHERE子句进行条件筛选。
5. 更新和删除操作- 修改学生表中的部分数据,如更新学生的选课信息。
- 使用UPDATE命令进行数据更新。
- 删除课程表中的某些课程记录。
- 使用DELETE FROM命令进行数据删除。
6. 数据库的完整性约束- 在创建数据表时设置主键、外键等约束。
- 尝试插入违反约束的数据,并观察数据库的响应。
实验结果:- 成功创建了“StudentDB”数据库以及相应的学生表和课程表。
- 插入数据操作顺利,能够正确输入数据至指定数据表。
- 查询操作无误,能够根据不同条件检索所需数据。
- 更新和删除操作执行正确,数据表中的记录得到相应修改。
- 完整性约束有效,违反约束的操作被数据库拒绝执行。
实验二:简单查询和连接查询一、实验目的:熟练掌握用SQL语句实现的简单查询和多个数据表连接查询。
二、实验内容:(一)完成下面的简单查询:①查询所有“天津”的供应商明细;②查询所有“红色”的14公斤以上的零件。
③查询工程名称中含有“厂”字的工程明细。
(二)完成下面的连接查询:①等值连接:求s表和j表的相同城市的等值连接。
②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
③笛卡尔积:求s和p表的笛卡尔积④左连接:求j表和spj表的左连接。
⑤右连接:求spj表和j表的右连接。
三、完成情况:(一)完成下面的简单查询:①查询所有“天津”的供应商明细;select*from swhere city='天津'②查询所有“红色”的14公斤以上的零件select*from pwhere color='红'andweight>'14'③查询工程名称中含有“厂”字的工程明细select*from jwhere jname like'%厂'(二)完成下面的连接查询:①等值连接:求s表和j表的相同城市的等值连接。
select s.*,j.*from s,jwhere s.city=j.city②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
select sname,jname,pnamefrom s,p,j,spjwhere spj.sno=s.sno andspj.pno=p.pno andspj.jno=j.jno③笛卡尔积:求s和p表的笛卡尔积select*from s,p④左连接:求j表和spj表的左连接select j.jno,jname,city,spj.sno,pno,QTYfrom j left join spj on(j.jno=spj.jno)⑤右连接:求spj表和j表的右连接select j.jno,jname,city,spj.sno,pno,QTYfrom spj right join j on(j.jno=spj.jno)四、实验结果:(一)①查询所有“天津”的供应商明细;②查询所有“红色”的14公斤以上的零件③查询工程名称中含有“厂”字的工程明细(二)①等值连接:求s表和j表的相同城市的等值连接②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。
实验 2 :数据库的建立和维护实验本实验需要 2 学时。
一、实验目的要求学生熟练掌握使用SQL 、Transact-SQL 和SQL Server 企业管理器建立数据库、表、修改数据库、表和删除数据库和表的操作。
二、实验内容和步骤1.创建数据库1)在企业管理器中创建数据库student_学号:要求:●数据库STUDENT_学号初始大小为10MB,最大大小为50MB,数据库自动增长,增长方式是按5%比例增长;●日志文件初始大小为2MB,最大可增长到5MB,按1MB增长;●数据库的逻辑文件名和物理文件名均采用默认值;●(分别为STUDENT_学号_data和e: \sql\data\MSSQL\STUDENT_学号.MDF)●事务日志的逻辑文件名和物理文件名也采用默认值。
●(分别为STUDENT_学号_LOG和e: \sql\data\MSSQL\STUDENT_学号_LOG.ldf)2)②使用T-SQL语句创建数据库STUDENT_学号,要求同1;Create database STUDENT_01On(name=STUDENT_01_data,filename='e:\STUDENT_01.MDF',size=10,maxsize=unlimited,filegrowth=10%)log on(name=student1_log,filename='e:\STUDENT_01.LDF',size=2,maxsize=5,filegrowth=1)2. 创建表以上面创建的数据库为例,创建表。
创建表实际上就是创建表结构,再向表中输入数据。
既可以使用企业管理器创建表,也可以用Transact-SQL 命令创建表。
(1). 使用企业管理器创建表利用企业管理器提供的图形界面来创建表,步骤如下:(1)在树形目录中展开【服务器组】→【服务器】→【数据库】→【STUDENT_学号】。
(2)选择【表】,单击鼠标右键,在弹出的快捷菜单中选择【新建表...】命令, 打开设计表对话框。
(3)如图5-10所示,设计表对话框的上半部分有一个表格,在这个表格中输入列的列名、数据类型、长度(有的数据类型不需要指定长度,如datetime 类型的长度为固定值8)、是否可以为空,在允许空域中单击鼠标左键,可以切换是否允许为空值的状态,打勾说明允许为空值,空白说明不允许为空值,默认状态是允许为空值的。
(4) 图5-10所示的设计表对话框的下半部分是特定列的详细属性,包括是否是标识列、是否使用默认值等。
(5)用图5-10所示的方法逐个定义好表中的列。
(6)设置主键约束:选中要作为主键的列,单击工具条上的【设置主键】按钮,主键列的前上方将显示钥匙标记,如图5-11所示。
(7)鼠标右键单击表中的任意一行(即任意一个列的定义),在弹出的快捷菜单中选择【属性】命令,可以打开如图5-12所示的表属性对话框,在该对话框中选择表选项卡,可以指定表的属性,比如表名、所有者、表的标识列等。
图5-12中将表的名称设置为Readers , 所有者设置为dbo 。
(8)在属性对话框中选择【关系】选项卡,可以设置列上的外键约束。
选择【索引/键】选项卡,可以设置列上的索引,以及主键约束和惟一性约束。
选择【check约束】选项卡,可以设置列上的检查约束。
这些操作的详细步骤将在后面介绍。
(9)定义好所有列后,单击图5-11工具栏上的【】按钮,表就创建完成了。
图5-12 指定表的属性●●创建惟一性约束的步骤如下:(1)在如图5-12所示的属性对话框的【索引/键】选项卡中,单击【新建】按钮。
(2)在列名列表中选择要定义惟一性约束。
(3)选中【创建UNIQUE】复选框,表示创建惟一性约束。
(4)在索引名框中输入惟一性约束的名字,或接受默认的名字。
●●创建外键约束的步骤如下:(1)在图5-12所示的属性对话框的【关系】选项卡中,单击【新建】按钮。
(2)在【外键表】下拉列表框中选择要定义外健约束的表,并在其下的列表中选择表中要定义外键约束的列。
(3)在【主键表】下拉列表框中选择外键引用的表,并在其下的列表中选择表中外键引用的列。
(4)在【关系名】框中输入约束的名称,或接受默认的名称。
(5)选择【级联更新相关的字段】复选框可以指定使用级联修改。
(6)选择【级联删除相关的记录】复选框可以指定使用级联删除。
●●创建检查约束的步骤如下:(1)(1)在如图5-12所示的属性对话框的【check约束】选项卡中,单击【新建】按钮。
(2)(2)在【约束表达式】框中输入检查表达式。
(3)(3)在【约束名】框中输入约束的名称,或接受默认的名称。
(2). 使用Transact-SQL命令创建表在Transact-SQL中,使用CREATE TABLE命令创建表。
语法格式如下:CREATE TABLE[database_name.[owner].|owner.] Table_name({ <column_definition> --列定义|column_name AS computed_column_expression --计算列定义|<table_contraint>} [,…n])[ON {filegroup|DEFAULT}][TEXTIMAGE_ON {filegroup|DEFAULT}]其中,更详尽的解释参见联机丛书,下面结合示例,说明主要选项的作用。
【例1】创建图书信息表Books。
CREATE TABLE books(编号 char(15) CONSTRAINT PK_Books PRIMARY KEY,书名 varchar(42) NULL ,作者varchar(8) NULL ,出版社 varchar(28)NULL ,定价real NULL CONSTRAINT CK_Books CHECK(定价>0))上面例子创建了一个包含5个列的books表,记录了图书的编号、书名、作者、出版社、定价等基本信息。
在编号列上定义了一个主键约束,约束命名为PK_Books;列定价上定义了检查约束,命名为CK_Books,使定价的值不能是0或负数。
【例2】创建图书借阅信息表Borrowinf。
C REATE TABLE borrowinf(读者编号 char(10) NOT NULL REFERENCES Readers(编号) ON DELETE CASCADE ,图书编号char (15) NOT NULLFOREIGN KEY (图书编号) REFERENCES Books(编号) ON DELETE NO ACTION,借期 datetime NULL DEFAULT (getdate()) ,还期 datetime NULL)上面例子创建了一个包含5个列的borrowinf表,记录了读者借阅图书的情况,包含读者编号、图书编号、借期、还期等基本信息。
列读者编号通过REFERENCE关键字定义了一个外键,它引用Readers表编号列的值。
在图书编号列上定义外键的时候使用了“FOREIGN KEY”子句,也可以象读者编号列那样不使用这一子句。
在借期列上定义了默认值,用到了系统函数getdate(),用于获得当前日期。
定义了这一默认值后,当向表中插入记录时,如果指明了借书日期,则使用该日期填充借期列,否则,为借期列上添上通过系统函数得到的当前日期。
在这个例子中ON DELETE子句特别值得注意,在有关章节将要介绍SQL Server 2000的参照完整性实现了级联修改和级联删除的功能,ON DELETE子句就是用于指定当删除表中被其他表外键引用的行时采取什么动作,ON DELETE子句有两个选项。
● NO ACTION:被其他表处键引用的行不能被删除,这是SQL Server 7.0以前版本的做法。
● CASCADE:被其他表外键引用的行可以被删除,而且其他表中通过外键引用了该行的行都将被删除,读者编号列上的外键引用了readers表的编号列,ON DELETE子句的值为CASCADE,所以在readers表中删除一个读者记录时,如果这个读者在Borrowinf表中已有借阅记录,则borrowinf表中的这些记录也都将一同被删除。
图书编号列上的外键引用了books表的编号列,ON DELETE子句的值为NO ACTION,这说明在books表中删除一个图书记录时,如果在borrowinf表中已有该书的借阅记录,则这一删除操作不能被执行。
【例3】创建读者信息表readers。
CREATE TABLE readers(编号char (10) NOT NULL PRIMARY KEY,姓名char (8) NULL ,读者类型 int NULL ,限借阅数量 int NULL ,借阅期限 int NULL )上面例子创建了一个包含5个列的readers表,用来记录读者的信息,包含编号、姓名、读者类型、限借阅数量、借阅期限等基本信息,主键是编号。
3 修改表表创建后,难免要对其进行修改。
可以使用ALTER TABLE 语句或企业管理器进行表的修改。
使用企业管理器修改表,可以用鼠标右键单击要修改的表,在弹出的快捷菜单中选择【设计表】命令,将弹出入图5-10所示的设计对话框,此时可以与新建表时一样,向表中加入列、从表中删除列或修改列的属性,修改完毕后单击【保存】按扭即可。
使用属性对话框可以修改检查、外键或主键约束及索引等。
这里重点介绍使用ALTER TABLE语句来对表进行修改。
1)ALTER TABLE命令格式使用ALTER TABLE命令修改表,其语法格式如下:ALTER TABLE table_name{ [ ALTER COLUMN column_name{new_data_type [ ( precision [, scale ] ) ][ NULL | NOT NULL ]| {ADD | DROP } ROWGUIDCOL }]| ADD{ [ < column_definition > ]| column_name AS computed_column_expression} [ ,...n ]| [ WITH CHECK | WITH NOCHECK ] ADD{ < table_constraint > } [ ,...n ]| DROP{ [ CONSTRAINT ] constraint_name| COLUMN column} [ ,...n ]| { CHECK | NOCHECK } CONSTRAINT{ ALL | constraint_name [ ,...n ] }| { ENABLE | DISABLE } TRIGGER{ ALL | trigger_name [ ,...n ] }}下面结合要修改的内容,具体使用讲解。