实验6 高级查询

实验6 高级查询
实验6 高级查询

实验6高级查询

姓名:江南学号:0907022105

专业:网络工程班级: 1

同组人:无实验日期:2011-11-1

【实验目的与要求】

?掌握基本的连接查询操作

●等值连接

●非等值连接

●自身连接

●外连接

?掌握嵌套查询操作

【实验内容与步骤】

思考问题:如何使用SQL来创建数据库表?

准备工作:若上个实验的数据库表还没有创建,请先创建之,并按照实验要求输入测试数据。

6.1 连接

连接查询主要包括:

?等值连接

?非等值连接

?自身连接

?外连接

1.等值连接

以等于运算符(=) 为基础的连接称为等值连接。通常情况下,所有连接都是等值连接。等值连接的语法如下:

SELECT

FROM

WHERE https://www.360docs.net/doc/4a76573.html,mon_column = https://www.360docs.net/doc/4a76573.html,mon_column AND https://www.360docs.net/doc/4a76573.html,mon_column = https://www.360docs.net/doc/4a76573.html,mon_column;

实验6-1 查询所有产品的名称、类别名称和库存量等数据。

请给出结果截图:

实验6-2 查询所有订单的订单代号、客户公司名称和运货费,查询结果按订单代号的升序排列。

请给出结果截图:

实验6-3 查询由北京客户订购的运货费等于于8元的订单的订单代号、客户公司名称和运货费。

请给出结果截图:

等值连接可在两个表上执行,也可在多个表上执行。

在一个连接中使用四个表:

实验6-4查询每一客户的客户代号、公司名称及其订单的订单代号、订购日期、产品名称和数量等数据。

请写出查询结果:

练习6-1 修改实验6-4中给出的语句并以如下方式给出,然后观察发生什么情况。

SELECT Cno,Company, Ono,Order_date,Pname,Qty

FROM Customer,Orders,Order_items,Product

WHERE https://www.360docs.net/doc/4a76573.html,o=https://www.360docs.net/doc/4a76573.html,o AND

Orders.Ono=Order_items.Ono AND

Order_items.Pno=Product.Pno;

给出上面的选择语句后,会出现“Column ambiguously defined”(列定义模糊不清)的出错信息。这是因为“Ono”存在于两个表(即Orders表和Order_items表)之中。我们需要明确指定要从哪个表选择Ono,在这种情况下,可以从任何一个表中选择Ono。

2.非等值连接

实验6-5查询所有单价介于20和35元之间的产品的名称、类别名称、单价和库存量等数据。

请给出结果截图:

3.自身连接

自身连接是连接的另一种形式。在这种情况下,连接是在单个表上进行的,就像它是两个独立的表。表的每个行都与其本身组合,并与表的所有行组合。

实验6-6 查询单价正好相差0.5倍的每一对产品的名称及其单价。

请给出结果截图:

注意:在进行表的自身连接时,须在FROM子句中给同一个表取不同的别名,并在书写SELECT语句的其它子句时把这些代表同一表的不同别名看成是具有相同数据的“不同表”(读者在理解自身连接查询时,可以将它们看成不同的表,但实际上只有一个表)。

练习6-2查询与“Du Wei”客户在同一城市的其他客户的姓名及其电话。

写出相应的SQL语句,并给出查询的结果:

4. 外连接

前面介绍的查询都是内连接。内连接不选择表中不符合查询条件的记录。这些值可通过外连接获得,外连接利用运算符加号(+)。语法如下:

SELECT (column_names)

FROM (tablenames)

WHERE (table1.column1 = table2.column2)(+);

实验6-7查询所有客户的代号、姓名以及其订单的代号和订购日期与订单状态,查询结果按客户代号的升序排列。

先请看下面的SQL语句及其查询结果:

请给出结果截图:

上面的查询是一个内连接,由于客户“C0003”和“C0004”没有订单,他们都不满足查询条件,因此他们的信息没有出现在查询结果中;如果我们想让这两个客户的信息也出现在查询结果中就需要使用下面的外连接语句:

请给出结果截图:

试比较上面的两个查询语句中查询结果有

6.2 嵌套查询

嵌套查询是指将一个SELECT-FROM-WHERE查询块嵌套在另一个查询块的WHERE 或HA VING短语的条件中的查询。

1.带有比较运算符的子查询

实验6-8查询与“Du Wei”客户在同一城市的其他客户的姓名及其电话。

请给出结果截图:

本查询包括了两个SELECT-FROM-WHERE查询块,其中下层的查询块嵌套在上层的查询块中。我们将上层的查询块称为父查询,而把下层的查询块称为子查询。子查询的处理先于父查询。本嵌套查询的过程如下:

⑴先通过子查询,在Customer表中找到“Du Wei”客户所在的城市,结果为“Shanghai”;

⑵利用子查询得到的City值“Shanghai”,求出父查询中位于“Shanghai”的客户的

姓名及其电话。

2.带有IN谓词的子查询

当子查询的查询结果包含多个值时,经常会使用谓词IN来连接子查询和父查询。

实验6-9 查询订购了单价比“3004”号产品大的那些产品的订单的代号。

请给出结果截图:

本查询嵌套了两个SELECT子查询,其中最内层的子查询找出了“3004”号产品的单价,结果是单值30,在该子查询前可以使用比较运算符“>”,而其上一层的子查询找出了单价大于30的产品的代号,结果有多个值,故在该子查询前需用谓词“IN”。

3.带有ANY或ALL谓词的子查询

当子查询的查询结果包含多个值时,光用谓词“IN”来连接子查询和父查询是不够的,有时会用到前置了比较运算符(>、>=、=、<、<=、<>)的谓词“ANY”或“ALL”。其中“ANY”代表子查询结果中的某个值,“ALL”代表子查询结果中的所有值。这样,“>ANY”表示大于子查询结果中的某一个值,“>ALL”表示大于子查询结果中的所有值。其它如“>=ANY”、“=ANY”、“ANY”、“>=ALL”、“=ALL”、“ALL”的含义依此类推。

实验6-10 查询价格大于所有1号类产品的产品的名称及其价格。

请给出结果截图:

实验6-11 查询其它类中、价格大于某个1号类产品的产品的名称及其价格。

请给出结果截图:

4.带有EXISTS谓词的子查询

EXISTS 运算符检查两个表中是否存在值。它只可用于子查询,即没有像存在测试的简单比较测试。EXISTS 运算符不能返回NULL 值。

实验6-12 查询没有订购“1001”号产品的订单的代号。

请给出结果截图:

从上面的查询可以看出,带有EXISTS谓词的子查询与前面的几类子查询是有区别的,主要区别有以下两点:

⑴前几类子查询返回的是某一列的值(单值或多值),而带有EXISTS谓词的子查询返回的是逻辑值真或假。当在子查询的FROM子句的表中找到满足条件的元组时,子查询返回逻辑真值,否则返回逻辑假值。

⑵前几类子查询的WHERE子句中的条件与父查询是无关的,而带有EXISTS谓词的子查询的WHERE条件的值却依赖于父查询的某个(或某些)属性列的值,如上例子查询的结果是真还是假就依赖于父查询中的Orders.Ono属性列的当前值。

6.3集合操作

6.3.0 准备工作

创建如下表X和Y

6.3.1 union

执行以下语句:

写出运行结果:

6.3.2 minus:

执行以下语句:

写出运行结果:

6.3.3 intersect:

执行以下语句:

写出运行结果:

6.4实验练习

1.练习:完成下列查询,写出相应的SQL语句

1)列出至少有一个雇员的所有部门。

2)列出薪金比“SMITH”多的所有雇员。

3)列出所有雇员的姓名及其上级的姓名。

4)列出入职日期早于其直接上级的所有雇员。

5)列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门。

6)列出所有“CLERK”(办事员)的姓名及其部门名称。

7)列出各种类别的最低薪金,以使最低薪金大于1500。

8)列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。

9)列出薪金高于公司平均水平的所有雇员。

10)列出与“SCOTT”从事相同工作的所有雇员。

2.练习:

完成书本P149-151实验。

数据库实验5实验报告

淮海工学院计算机工程学院实验报告书 课程名:《数据库原理及应用》 题目:数据库的完整性 班级:软件132 学号:2013122907 姓名:莹莹

一.目的与要求 1.掌握索引创建和删除的方法; 2.掌握创建视图和使用视图的方法; 3.掌握完整性约束的定义方法,包括primary key、foreign key等。 二.实验容 1.基于前面建立的factory数据库,使用T-SQL语句在worker表的“部门号”列上创建一个非聚集索引,若该索引已经存在,则删除后重建。 2.在salary表的“职工号”和“日期”列创建聚集索引,并且强制唯一性。 3.建立视图view1,查询所有职工的职工号、、部门名和2004年2月工资,并按部门名顺序排列。 4.建立视图view2,查询所有职工的职工号、和平均工资; 5.建立视图view3,查询各部门名和该部门的所有职工平均工资; 6.显示视图view3的定义; 7.实施worker表的“性别”列默认值为“男”的约束; 8.实施salary表的“工资”列值限定在0~9999的约束; 9.实施depart表的“部门号”列值唯一的非聚集索引的约束; 10.为worker表建立外键“部门号”,参考表depart的“部门号”列。 11.建立一个规则sex:性别=’男’ OR 性别=’女’,将其绑定到“性别”上; 12.删除上面第7、8、9和10建立的约束; 13.解除第11题所建立的绑定并删除规则sex。 三.实验步骤 1 USE factory GO --判断是否存在depno索引;若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='depno') DROP INDEX worker.depno GO --创建depno索引 CREATE INDEX depno ON worker(部门号) GO EXEC sp_helpindex worker GO 2 USE factory GO --判断是否存在no_date索引;若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='no_date') DROP INDEX salary.no_date GO --创建no_date索引

数据库实验报告五

数据库原理及应用实验报告(五) 实验题目:过程 专业:数字媒体技术 班级:1306班 姓名:***************

运城学院实验报告 专业:数字媒体技术系(班):计算机科学与技术系1306班姓名:************* 课程名称:数据库原理及应用 实验项目:过程实验类型:验证型指导老师:***** 实验地点:软件实验室一时间:2015年12月10日 一、实验目的: 掌握用户存储过程的创建,了解一些常用的系统存储过程,以及调用和删除过程,并熟悉使用存储过程来进行数据库应用程序的设计。 二、实验内容: (1)基于学生—课程数据库创建一存储过程,用于检索数据库中某个专业学生的人数,带有一个输入参数,用于指定专业。执行结果如图二所示: create procedure pro_s @stu_sdept varchar(5) //这是带参数的过程,参数不用()括 As select count(*) as 人数from student where sdept = @ stu_sdept 1、存储过程的执行 execute pro_s 实参//实参可以是变量,也可以是常量 (2)基于学生-课程数据库创建一存储过程,该过程带有一个输入参数,一个输出参数。其中输入参数用于指定学生的学号,输出参数用于返回学生的平均成绩。执行结果如图四所示: create procedure pro_stu @stu_sno char(6),@stu_avg float output //这个带output的是输出参数as select @stu_avg = avg(grade) //将平均值给了变量 from student,sc where student. sno = sc. sno and student.sno=@stu_sno 1.存储过程的执行 declare @stuavg float //用于存放输出变量内容的 execute pro_stu ‘1000’,@stuavg output// 输出参数必须是变量 select @stuavg //看结果 (3)在pubs数据库中建立一个存储过程,用于检索数据库中某一价位的图书信息。参数有两个,用

数据库实验报告

数据库实验报告

武汉理工大学 学 生 实 验 报 告 书 实验课程名称 数据库系统概论 开 课 学 院 计算机科学与技术学院 指导老师姓名 学 生 姓 名 学生专业班级 学生学号 实验课成绩

2013 — 2014 学年第二学期实验课程名称:数据库系统概论 实验项目名称SQL SEVER 2000的系 统工具及用户管理 实验 成绩 实验者专业班 级 组别 同组者实验 日期 2014年4 月24日

第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 实验目的和要求:了解SQL SEVER 2000的功能及组成,熟练掌握利用SQL SEVER 2000工具创建数据库、表、索引和修改表结构及向数据库输入数据、修改数据和删除数据的操作方法和步骤,掌握定义数据约束条件的操作。 二、实验基本原理与设计(包括实验方案设计,实 验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 实验内容和步骤: (1)熟悉SQL SEVER 2000的界面和操作。 (2)创建数据库和查看数据库属性。 (3)创建表、确定表的主码和约束条件。 (4)查看和修改表的结构。 (5)向数据库输入数据,观察违反列级约束时出现的情况。 (6)修改数据。 (7)删除数据,观察违反表级约束时出现的情况。 三、主要仪器设备及耗材 Windows XP SQL SERVER 2000

第二部分:实验调试与结果分析(可加页) 一、调试过程(包括调试方法描述、实验数据记录, 实验现象记录,实验过程发现的问题等) 没有错误 错误:未能建立与WORKEPLACE\XUMENGXING的链接SQL Server 不存在或访问被拒绝 原因:未启动数据库服务 二、实验结果及分析(包括结果描述、实验现象分 析、影响因素讨论、综合分析和结论等) 实验结果部分截图:

数据库实验98235

数据库原理实验指导 实验前准备: 请设计一个企业销售管理据库,其中需要保存的信息如下: 员工信息,包括:员工编号、员工姓名、性别、所属部门、职称、到职日、生日、薪水、填表日期; 客户信息,包括:客户号,客户名称,客户住址,客户电话、邮政编码; 产品信息,包括:产品编号,产品名称; 员工和客户可以签订订单,每签订一个订单,就要保存订单信息,包括:订单编号、客户号、业务员编号、订单金额、订货日期、出货日期、发票号码。 此外,每个订单可能涉及到多种产品,每种产品可能被多个订单订购。因此需要每个订单中每类产品的销售明细,包括每种产品的销售数量、单价、订单日期;要求: (1)给出系统的ER图(可以用word或其它画图工具,如Visio画),要求画出所有的实体,联系,属性以及联系的类型; (2)将ER图转换为关系模型; 实验一 实验名称:数据定义(2课时)

一、实验目的 1、理解数据库模式的概念,通过使用SQL SERVER企业管理器或者My Sql建立数据库和基本表。模式为人事表、客户表、销售表、销售明细表、产品表。熟悉SQL SERVER 企业管理器的使用,并将得到的表生成脚本,然后保存。 2、理解上述基本表之间的关系,建立关系表。 3、掌握修改表结构的基本方法 4、掌握索引和视图的创建方法 二、实验环境 MS SQL SERVER或者My Sql。 三、实验内容与步骤 1、建立一个数据库和五张表的表结构。 (1)/*员工人事表employee */

Create datebase sale; create table employee( emp_no char(5) Not null primary key, emp_name char(10) Not null, sex char(1) Not null, dept char(4) null, title char(6) null, date_hired datetime null, birthday datetime null, salary int null, addr char(50) null, Mod_date datetime Default 0, constraint c1 check(性别in('男','女')) ); (2)/*客户表customer */ create TABLE customer( cust_id char(5) Not null primary key, cust_name char(20) Not null, addr CHAR(40) Not null, tel_no char(10) Not null, zip char(6) null ); (3)/*销售主表sales */

数据库实验报告1

1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。(5分) exec sp_rename v_spj, v_spj_三建; 2.针对SPJ数据库,创建并执行如下的存储过程:(共计35分) (1)创建一个带参数的存储过程—jsearch。该存储过程的作用是:当任意输入一个工 程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME) 以及工程的名称(JNAME)。执行jsearch存储过程,查询“J1”对应的信息。(10 分) create proc jsearch @jno char(2) as select sname, pname, jname from s,p,j,spj where s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno and spj.jno=@jno; 执行: exec jsearch 'J1'

(2)使用S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作用是:当执 行该存储过程时,将返回北京供应商的所有信息。(10分) 创建加密存储过程: create proc jmsearch with encryption as select * from s where s.city='北京'; sp_helptext jmsearch; (3)使用系统存储过程sp_helptext查看jsearch, jmsearch的文本信息。(5分) 用系统存储过程sp_helptext查看jsearch: exec sp_help jsearch; exec sp_helptext jsearch;

数据库实验五

西南石油大学实验报告 注意:在粘贴截图时请保留窗口完整标题,但只需保留关键界面,多余的空白界面请删除。 一、实验课时:2 二、实验目的 (1) 学习如何编写简单的Transact-SQL程序。 (2) 掌握函数的使用。 (3) 学习如何执行Transact-SQL程序。 (4) 掌握简单存储过程的编写方法。 (5) 掌握简单自定义函数的编写方法。 三、实验要求 (1) 使用SQL Server 2008查询分析器。 (2) 严格依照操作步骤进行。 四、实验环境 (1) PC机。 (2) SQL Server 2008。 五、实验内容及步骤 1.使用局部变量、全局变量 (1)定义一个tinyint的整型变量,为其赋值45,并显示变量的值。DECLARE@LENGTH tinyint SET@LENGTH= 45

PRINT@LENGTH; (2)定义一个长度为20的可变长度型字符变量,为其赋值“Welcome to SWPU”,并显示变量的值。 DECLARE@str nchar(20) SET@str='Welcome to SWPU' PRINT@str (3)查询当前数据库服务器名。 select@@SERVERNAME

(4)查询当前数据库管理系统版本。 SELECT@@VERSION; 2.函数的使用 (1) 数学函数的使用 分别用函数求出-3的绝对值,16的平方根,5的三次方。DECLARE@i int; SET@i=-3; SELECT ABS(@i); GO select sqrt(16)

select power(5,3) (2) 字符串函数的使用 1)分别将字符串“china”、“MACHINE”转换成大写、小写字母; select upper('china') select lower('MACHINE')

数据库原理实验报告(5)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验五嵌套子查询设计实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)掌握多表查询和子查询的方法。 (2)熟练使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 (3)理解不相关子查询和相关子查询的实现方法和过程。 2.实验要求 (1)针对“TM”数据库,在SQL Server查询分析器中,用T-SQL语句实现以下查询操作: a)查询选修了数据结构与算法的学生学号和姓名。 b)查询07294002课程的成绩低于孙云禄的学生学号和成绩。 c)查询和孙云禄同年出生的学生的姓名和出生年份。 d)查询其他系中年龄小于数学与信息技术学院年龄最大者的学生。 e)查询其他系中比数学与信息技术学院学生年龄都小的学生。 f)查询同孙云禄数据库原理与应用课程分数相同的学生的学号和姓名。 g)查询选修了07294002课程的学生姓名。 h)查询没有选07294002课程的学生姓名。 i)查询同时选修了07295006和07295007课程的学生的学号。 j)查询所有未授课的教师的工号、姓名和院系,结果按院系升序排列。 扩展实验: a)查询和10060101选修的全部课程相同的学生的学号、课程号、期末考试 成绩。 b)查询至少选了10060101选修的全部课程的学生的学号。 c)查询年龄比所在院系平均年龄小的学生的学号、姓名、年龄、院系,按 院系和年龄升序排列。 d)查询每门课都在80分以上的学生的学号和姓名。 (2)在SQL Server Management Studio中新建查询,尽可能用多种形式表示实验中的查询语 句,并进行比较。 (3)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 将调试成功的T-SQL语句写在下方(标明题号)。

数据库实验报告五

数据库实验报告五

数据库原理及应用实验报告(五) 实验题目:过程 专业:数字媒体技术 班级:1306班 姓名:***************

运城学院实验报告 专业:数字媒体技术系(班):计算机科学与技术系1306班 姓名:************* 课程名称:数据库原理及应用 实验项目:过程实验类型:验证型指导老师:***** 实验地点:软件实验室一时间:2015年12月10日 一、实验目的: 掌握用户存储过程的创建,了解一些常用的系统存储过程,以及调用和删除过程,并熟悉使用存储过程来进行数据库应用程序的设计。 二、实验内容: (1)基于学生—课程数据库创建一存储过程,用于检索数据库中某个专业学生的人数,带有一个输入参数,用于指定专业。执行结果如图二所示: create procedure pro_s @stu_sdept varchar(5) //这是带参数的过程,参数不用()括 As select count(*) as 人数from student where sdept = @ stu_sdept

1、存储过程的执行 execute pro_s 实参//实参可以是变量,也可以是常量 (2)基于学生-课程数据库创建一存储过程,该过程带有一个输入参数,一个输出参数。其中输入参数用于指定学生的学号,输出参数用于返回学生的平均成绩。执行结果如图四所示: create procedure pro_stu @stu_sno char(6),@stu_avg float output //这个带output 的是输出参数 as select @stu_avg = avg(grade) //将平均值给了变量 from student,sc where student. sno = sc. sno and student.sno=@stu_sno 1.存储过程的执行 declare @stuavg float //用于存放输出变量内容的execute pro_stu ‘1000’,@stuavg output// 输出参数必须是变量 select @stuavg //看结果 (3)在pubs数据库中建立一个存储过程,用于检索数据库中某一价位的图书信息。参数有两个,用

北邮大三下数据库实验报告5

北京邮电大学 实验报告 课程名称数据库系统原理 实验内容实验5 数据库完整性与安全性实验 班级2013211***姓名 *** 指导老师成绩_________ 2016年05月20日

实验5 数据库完整性与安全性实验 实验目的: 1.通过对完整性规则的定义实现,熟悉了解SQL SERVER中完整性保证的规则和实现方 法,加深对数据完整性的理解。 2.通过对安全性相关内容的定义,熟悉了解SQL SERVER中安全性的内容和实现方法, 加深对数据库安全性的理解 实验内容 完整性实验与要求: 1.分别定义数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束; 定义主键: 方法一:使用Enterprise Manager设置主键(以book表为例) ①光标移到book表的位置,右键->设计 ②在你要选的属性列右键->设置主键,完成。

方法二:使用SQL语句。 ①右键数据库,新建查询 设置外键: 方法一:使用Enterprise Manager设置外键(以student表为例) ①单击student表,鼠标移到“键”文件夹,单击右键,选择“新建外键”。 ②选择“表和列规范”进行设置

③我们想在student表设置class_id属性为外键,按照下图选择,点击确定,保存即可。 方法二:SQL语句 新建查询,输入如图语句。

2.向学生表插入具有相同学号的数据,验证其实体完整性约束; Student表的主键是学号,所以不能插入有相同学号的学生。 3.向学生表中插入一条数据,班级号是学生表的外键,验证参照完整性约束; Class表中没有“2013211302”这个班级,所以无法插入。改变班级号为class表中存在的,则能够进行插入,结果如下: 4.删除教师表中的所有数据,验证参照完整性约束;

数据库实验5

实验5 SQL的数据操纵功能 实验目的 学会使用MS SQL SERVER 2000的查询分析器完成SQL的数据操纵功能,主要包括数据插入、删除与修改。 知识点拨: 1.数据插入语法格式: 2.数据修改语法格式: 3.数据删除语法格式: 4.SELECT … INTO…语句的使用: 实验内容 1.数据插入 2.数据修改 3.数据删除 4.SELECT … INTO…语句: 实验步骤 1.选择数据库JX; 注意:以下操作请验证结果! 2.数据插入: 1)向学生表加入一条记录,其学号、姓名、性别和系别分别为:(’06011’,’王文 娟’,’女’,’计算机’); insert into Student(Sno,Sname,Sex,Sdept) values ('06011','王文娟','女','计算机') 2)向学生表加入一条记录,其姓名、性别和系别分别为:(’王娟’,’女’,’计算 机’),观察运行结果; 3)创建一个与学生信息表结构完全相同的基本表CP_Student,用以存储计算机和外 国语系学生信息; create table CP_Student ( Sno char(10) not null, SName varchar(10), Sex char(2), Sbirth smalldatetime, Sdept varchar(20), total smallint )

4)将Student中计算机系和外国语系的学生信息插入到CP_Student; insert into CP_Student select * from Student where Sdept='CS'or Sdept='外国语系' 3.数据修改: 1)把教师“王芳”改为“王芳龄”; update Teacher set Tname='王芳龄' where Tname='王芳' 2)将职称是副教授的教师工资提高2%; update Teacher set Tpay=Tpay*(1+0.02) where Tprof='副教授' 3)将计算机系和外国语系学生的考试成绩分别下调4%和增加2分; update Student set Total=total*(1-0.04) where Sdept='CS' update Student set Total=Total+2 where Sdept='外国语系' 4)把李强同学的所有分数都加1分;(可使用UPDATE。。。FROM 。。。WHERE。。。) update SC set Grade=Grade+1 where Sno=( select Sno from Student where SName='李强' ) 5)选做题:对课程表中的学分进行修改,修改方式为:学分低于3分的加0.4分,高 于3分的减去0.5分,3分的加0.2分; update Course set Credit=Credit+0.4 where Credit<3 update Course set Credit=Credit-0.5 where Credit>3

数据库实验报告

实验一 SQL Server基本使用与数据定义一.实验目的 1.掌握“服务管理器”、“企业管理器”及“查询分析器”基本使用方法;2.熟悉数据库建模及E/R图的画法; 3.掌握SQL Server 中数据库、及数据表的建立与管理方法; 4.掌握数据的导入/导出及数据库备份/还原方法。 二.实验内容 一、SQL Server 基本使用 1.启动SQL SERVER。 2.注册服务器 3.企业管理器属性 4.查询分析器介绍 5.查看数据库及浏览表中记录 二、数据库的建立与管理 1.数据库建模 2.启动、并打开SQL Server 3.使用图形界面创建数据库和表 4.使用查询分析器创建表 5.数据库的备份与还原

实验二 SQL查询 一.实验目的: 1.掌握SQL语言中SELECT语句的多种查询方式。 2.掌握对表建立与删除索引的方法。 3.掌握聚焦函数的使用方法。 4.掌握集合查询方法。 二.实验内容: 1.建立与删除[索引]的方法。 在各表中,分别按代理商编号、客户编号、产品编号及订单编号建立索引。 CREATE INDEX 代理商No ON 代理商(代理商编号) CREATE INDEX 客户No ON 客户(客户编号) CREATEINDEX产品No ON产品(产品编号) CREATEINDEX订单No ON订单(订单编号) 2.单表查询, ①从产品表中查询现有产品的库存量。 SELECT COUNT(*) FROM产品 ②从客户表中查询“王五”的地址及代理商编号。 SELECT地址,代理商编号 FROM客户 WHERE姓名='王五' ③从代理商表中查询代理商“惠普”的提成金额。 SELECT提成金额 FROM代理商 WHERE姓名='惠普' ④从订货项目表中查询编号为“444”的订单所订购的商品编号及数量。 SELECT产品编号,订购数量 FROM订货项目 WHERE订单编号='444' ⑤分别求代理商和客户的总数。 SELECT COUNT(*)代理商数 FROM代理商 SELECT COUNT(*)客户数 FROM客户 ⑥从订货项目表中,查询编号为0033的产品定货总数量。 SELECT COUNT(*)订货总数量 FROM订货项目 WHERE订单编号='0033' 3.多表查询 ①查询编号为300的客户通过的代理商的姓名和地址。 SELECT代理商.姓名,代理商.地址

数据库实验报告2.

实验报告 ( 2015 / 2016 学年第 2 学期)题目:数据库系统原理 专业:物联网工程 学生: 班级学号: 指导教师: 指导单位:物联网学院 日期: 2016-5-12

实验名称:约束、视图、索引与存储过程 一、 实验容和要求 1、用create database 命令创建电影数据库(以自己的学号命名)。 2、在电影数据库中用create table 命令创建如下5个关系模式。 3、用alter table 命令修改movies 关系模式,增加引用完整性约束cproducerc ,要求movies 表中的producerC 必须是在MovieExec 表中已有的导演。若违反了此约束,则拒绝更新操作。 4、用alter table 命令修改StarsIn 关系模式,增加引用完整性约束cmovies ,要求StarsIn 表中的电影名称和年份必须是在movies 表中已有的电影名称和年份。若违反了此约束,则拒绝更新操作。 5、用alter table 命令修改movies 关系模式,增加完整性约束cyear ,要求电影年份不能是1915年以前的。 6、用alter table 命令修改movies 关系模式,增加完整性约束clength ,要求电影长度不能小于60也不能多于250。 7、设计数据对3~6的容进行验证。 8、用create view 命令创建如下视图。 a)视图RichExec 给出了所有资产在10000000以上的导演的、地址、证书号和资产; b)视图StudioPress 给出了既是电影公司经理又是导演的那些人的名字、地址和证书号; c)视图ExecutiveStar 给出了既是演员又是导演的那些人的名字、地址、性别、生日、证书号和资产总值。 9、用create index 命令在StarsIn 的StarName 属性上创建索引aindex 。 10、编写存储过程(函数) ① 求产品数据库Laptop 存容量的平均值和总和。 然后调用该存储过程(函数)。 二、 实验环境 PostGreSQL9.3 三、 实验设计 CREATE TABLE Movies ( title char(20), year int, length int, genre char(10), studioName char (30), producerC int, PRIMARY KEY (title, year ));CREATE TABLE MovieStar ( name char(12), address char(30), gender char(2), birthdate date, PRIMARY KEY (name ));CREATE TABLE StarsIn ( movieTitle char(20), movieYear int, starName char(12), PRIMARY KEY (movieTitle , movieYear , starName ));CREATE TABLE MovieExec ( name char(12), address char(30), cert int, netWorth int, PRIMARY KEY (cert ));CREATE TABLE Studio ( name char(30), address char(30), presC int, PRIMARY KEY (name )); 说明: Movies 关系中,title 为电影名称、year 为发行年份、length 为电影长度(分钟)、genre 为电影流派、studioName 为电影公司名称、producerC 为导演证书号;MovieStar 关系中,name 为影星的姓名、address 为影星住址、gender 为性别、birthdate 为出生日期;StarsIn 关系中,movieTitle 为电影名称、movieYear 为发行年份、starName 为参演影星姓名;MovieExec 关系中,name 导演姓名、address 为住址、cert 为导演证书号、netWorth 为导演净资产值;Studio 关系中,name 为电影公司名称、address 为电影公司地址、presC 为电影公司老总证书号。

数据库实验五

实验五:数据库综合查询 姓名:潘年品学号:120802010027 一、实验目的 1. 掌握SELECT语句的基本语法和查询条件表示方法; 2. 掌握查询条件种类和表示方法; 3. 掌握连接查询的表示及使用; 4. 掌握嵌套查询的表示及使用; 5. 了解集合查询的表示及使用。 二、实验环境 已安装DBMS的计算机; 具有局域网环境,有固定IP; 三、实验学时 2学时 四、实验要求 1. 了解SELECT语句的基本语法格式和执行方法; 2. 了解连接查询的表示及使用; 3. 了解嵌套查询的表示及使用; 4. 了解集合查询的表示及使用; 5. 完成实验报告; 五、实验内容及步骤 以数据库原理实验2数据为基础,请使用T-SQL 语句实现进行以下操作:1.查询以‘数据_'开头,且倒数第3个字符为‘结'的课程的详细情况; 2.查询名字中第2个字为‘阳'的学生姓名和学号及选修的课程号、课程名;

3.列出选修了‘数学'或者‘大学英语'的学生学号、姓名、所在院系、选修课程号及成绩; 4. 查询缺少成绩的所有学生的详细情况;

年龄不同的所有学生的信息;)假设姓名唯一(查询与‘张力'5. 6. 查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;

7. 按照?学号,姓名,所在院系,已修学分?的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和; 8. 列出只选修一门课程的学生的学号、姓名、院系及成绩;

查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;9. 两门课程的学生的基本信息;?10. 只选修?数据库?和?数据结构 课程的学生的基本信息;?或?数据结构?至少选修?数据库11.

(完整版)数据库实验报告

数据库实验报告姓名学号

目录 一.实验标题: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 2016 1)双击图标,即出现SQL Server2016的初始界 2)选择“文件”菜单中的“退出”命令,或单击控制按钮中的“×”即可 注意事项: 1.在退出SQL Server 2016之前,应先将已经打开的数据库进行保存, 2.如果没有执行保存命令,系统会自动出现保存提示框,根据需要选择相应的操作

数据库 实验报告5 ESQL

实验内容: 编写嵌入式C 程序,编程实现了对“学生课程数据库”的访问和操作:对Student 表中的年龄进行更新。系统每输出一个学生记录,询问用户是否更新。如果要更新,就输入新的年龄。 一. 实验环境介绍。 实验五是在之前完成的实验一的基础上进行的。 系统配置为:CPU: P3 800 内存:512MB 硬盘:30G 软件系统:WINDOWS 2000 ADV ANCED SERVER 。 在实验一中,我们已经成功安装了KingbaseES V4.1,形成本实验所需要的环境。其中安装路径为C:\Program Files 目录下。 二.编写含嵌入式C 程序test ,扩展名为.pc 。 EXEC SQL BEGIN DECLARE SECTION; /*说明主变量deptname ,HSno ,HSname , char deptname[20]; *HSsex ,HSage ,NEWAGE 。*/ char HSno[9]; char HSname[20]; char HSsex[2]; int HSage; int NEWAGE; EXEC SQL END DECLARE SECTION; /*声明部分结束*/ long SQLCODE; EXEC SQL INCLUDE sqlca; /*定义SQL 通信区*/ int main(void) { int count = 0; char yn; /*变量yn 代表yes 或者no*/ printf("Please choose the department name(CS/MA/IS): "); /*为主变量deptname 赋值*/ scanf("%s", &deptname); EXEC SQL CONNECT TO 学生课程数据库@localhost:54321 USER "SYSTEM"/"MANAGER"; /*连接数据库TEST*/ EXEC SQL DECLARE SX CURSOR FOR /*说明游标,为查询和更新做准备*/ SELECT Sno, Sname, Ssex, Sage FROM Student WHERE SDept = :deptname; EXEC SQL OPEN SX; /*打开游标。*/ for ( ; ; ) /*用循环结构逐条处理结果集的记录*/ { 《数据库系统概论》实验报告 题目:实验五 通过嵌入式SQL 访问数据库 姓名 Vivian 日期 2006-1-1

数据库实验报告

课程设计报告题目:数据库实验上机实验报告 专业班级:计算机科学与技术1210班 学号:U201215079 姓名:候宝峰 指导教师: 报告日期:2015-06-04 计算机科学与技术学院

目录 一、基本SQL操作(部分选做) (1) 1)数据定义 (1) 2)数据更新 (3) 3)用SQL语句完成下述查询需求: (4) 二、DBMS综合运用(部分选做) (8) 1)学习sqlserver的两种完全备份方式:数据和日志文件的脱机备份、系统的备份功能(选做)。 (8) 2)学习系统的身份、权限配置操作 (9) 3)了解SQLSERVER的存储过程、触发器、函数实现过程 (14) 三、实验总结 (17) 1)实验问题及解决 (17) 2)实验心得 (18)

一、基本SQL操作(部分选做) 1)数据定义 参照下面的内容建立自己实验所需的关系数据 创建三个关系: 商品表【商品名称、商品类型】 GOODS【GNAME char(20),GTYPE char(10)】 主关键字为(商品名称)。商品类型为(电器、文具、服装。。。) 商场【商场名称,所在地区】 PLAZA【PNAME char(20),PAREA c har(20)】 主关键字为商场名称。所在地区为(洪山、汉口、汉阳、武昌。。。) 销售价格表【商品名称、商场名称、当前销售价格、目前举办活动类型】 SALE【GNAME char(20),PNAME char(20),PRICE FLOAT,ATYPE c har(10)】 主关键字为(商品名称、商场名称)。举办活动类型为(送券、打折),也可为空值,表示当前未举办任何活动。表中记录如(‘哈森皮靴’,‘亚贸广场’,200,‘打折’),同一商场针对不同的商品可能采取不同的促销活动。 create table goods(gname char(20) primary key,gtype char(10)); create table plaza(pname char(20) primary key,parea char(20)); create table sale (gname char(20), pname char(20), price FLOAT, atype char(10)check (atype in('送券','打折','')), primary key(gname,pname), foreign key(gname)references goods(gname), foreign key(pname)references plaza(pname));

数据库 实验5 视图

实验5 索引和视图 1.实验目的 (1)掌握使用SQL Server管理平台和Transact-SQL语句CREA TE INDEX创建索引的方法。 (2)掌握使用SQL Server管理平台查看索引的方法。 (3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引的方法。 (4)掌握使用SQL Server管理平台和Transact-SQL语句CREA TE VIEW创建视图的用法。 (5)了解索引和视图更名的系统存储过程sp_rename的用法。 (6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。 (7)了解删除视图的Transact-SQL语句DROP VIEW的用法。 2.实验内容及步骤 说明:在SQL Server2005中,有三种视图:标准视图、索引视图和分区视图。 标准视图:组合了一个或多个表中的数据,用户可以获得使用视图的大多数好处。包括将重点放在特定数据上以简化数据操作。 索引视图:适合聚合多行的查询,不太适合经常更新的基本数据集。 分区视图:支持大型多层网站的处理需要。 SQL Server2005提供了两种创建视图的方法。SSMS和T-SQL语句。 create view语法形式: create view 【数据库名.】【拥有者.】视图名【(列名1,列名2【…..n】)】 AS