文档库 最新最全的文档下载
当前位置:文档库 › 实验二 表的连接和嵌套查询实验

实验二 表的连接和嵌套查询实验

实验二  表的连接和嵌套查询实验
实验二  表的连接和嵌套查询实验

3、用连接查询或嵌套查询的方法实现下列查询

在“图书读者数据库”(Book_Reader_DB)中,用连接查询的方法完成下列查询任务:①查询借阅了类别为“环境”类图书的所有读者编号、姓名及单位;

②查询借阅过图书的读者编号、姓名及单位;

③查询姓名为“李明”的读者目前借阅的图书书号和书名;

④查询借书过期的所有读者姓名及所借图书名(假定借阅期为60天);

⑤查询没有借阅过图书的所有读者姓名;

⑥查询借出次数超过10次的所有图书的书号和书名;

⑦查询除已还的书以外,目前借了5本或以上图书的读者编号和姓名;

⑧查询书库中除借出的图书外,现存的图书书号、书名、现存数量;

4、Defaul约束

将读者表中“性别”的默认值改为“M”,然后输入数据验证。

⑴在企业管理器中完成。

(2)在查询分析器中完成。

Alter Table reader

Add Default ‘M’ for 性别;

5、Check 约束

将读者表中“性别”的输入值限制为“男”或“女”,然后输入数据验证。

(1)在企业管理器中完成。

(2)在查询分析器中完成。

Alter Table reader

Add Check (性别=’男’ or 性别=’女’);

6、主键约束

用SQL语句创建一个临时表,建立主键约束,并验证主键约束是否可以被修改。

不可以被修改,临时表可以有主键约束,但不能被更新

7、Unique 约束

将图书表中“作者”加上唯一性约束,然后输入数据验证,并分析唯一性约束与主键约束的区别。

(1)在企业管理器中完成。

(2)在查询分析器中完成。

Alter Table book

Add Unique (作者);

1.主键约束(PRIMARY KEY)

1) 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。

2) 是不可能(或很难)更新.

3) 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).

4) 主健可作外健,唯一索引不可;

2.唯一性约束(UNIQUE)

1) 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.

2) 只要唯一就可以更新.

3) 即表中任意两行在指定列上都不允许有相同的值,允许空(NULL).

4) 一个表上可以放置多个唯一性约束

8、外键约束

删除原来在企业管理器中为借阅表建立的外键约束,用SQL命令重新创建。

参照如下格式:

Alter table 参照表名

Add constraint 约束名

Foreign key (外键列)

References 被参照表名(被参照列名)

[on delete cascade](如需级联删除加上该参数)

9、在企业管理器中为“图书读者数据库”(Book_Reader_DB)练习创建一个新的登录名、用户,角色。

10、在企业管理器中为“图书读者数据库”(Book_Reader_DB)练习为用户、角色进行授权、权限回收操作。

数据库SQL实验题目(14-15-1)

实验一数据定义操作 ●实验目的 1.掌握数据库和表的基础知识 2.掌握使用创建数据库和表的方法 3.掌握数据库和表的修改、查看、删除等基本操作方法 ●实验内容和要求 一、数据库的创建 在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示: Grademanager数据库参数表 二、表的创建、查看、修改和删除 1.表的创建 在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:(1)Student表的表结构 特别注意: 为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK 约束”命令,然后按照图1进行设置。

图1 设置性别的约束 (2)Course表(课程名称表)的表结构 (3)SC表(成绩表)的表结构 特别注意: ①为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为Degree>=1 And Degree<=100 ②为SC表设置外键Sno和Cno的方法: 右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行设置,即可将SC表中的Cno属性设置为外键。按照相同的方法,将属性Sno也设置为外键。 图2为SC表设置外键Cno

2.向上述表中输入如下数据记录 学生关系表Student (右键单击表Student ,选择“编辑前200行”) 课程关系表Course 成绩表SC 3.修改表结构(找到操作的方法即可,不需要真正地修改表中的属性) (1)向student 表中增加“入学时间”列,其数据类型为日期型 (2)将student 表中的sdept 字段长度改为20 (3)将student 表中的Speciality 字段删除 思考题 1. SQL Server 的数据库文件有几种?扩展名分别是什么? 2. 如何实现数据库的备份和还原? 2.在定义基本表语句时,NOT NULL 参数的作用是什么? 3.主码可以建立在“值可以为NULL ”的列上吗?

sql数据库的嵌套查询

实验四:数据库的嵌套查询实验 学号:姓名: 实验四:数据库的嵌套查询实验 实验目的: 加深对嵌套查询语句的理解。 实验内容: 使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 实验步骤: 一. 使用带IN谓词的子查询 1.查询与’刘晨’在同一个系学习的学生的信息: select * from student where sdept in (select sdept from student where sname='刘晨') 比较: select * from student where sdept = (select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept = (select sdept from student where sname='刘晨') andsname<>'刘晨V 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨' 2.查询选修了课程名为’信息系统’的学生的学号和姓名: SQL Server中: select sno, sname from student where sno in

(select sno from sc where cno in (select cno from course where cname='信息系统')) 3.查询选修了课程’1’和课程’2’的学生的学号(姓名): select sno from student where sno in (select sno from sc where cno='1') and sno in (select sno from sc where cno='2') select x.sno from SC x ,SC y where x.sno=y.sno and https://www.wendangku.net/doc/8a8030156.html,o='1' and https://www.wendangku.net/doc/8a8030156.html,o='2' select sno from SC where cno='1' and sno in (select sno from SC where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno: select sno from sc where cno='1' or cno='2' 比较连接查询: select A.sno from sc A, sc B where A.sno=B.sno and https://www.wendangku.net/doc/8a8030156.html,o='1' and https://www.wendangku.net/doc/8a8030156.html,o='2' 二. 使用带比较运算的子查询 4.查询比’刘晨’年龄小的所有学生的信息: select * from student where sage<

数据库实验四DML的数据查询

据库系统概论》实验报告 实验四:DML的数据查询姓名日期 实验内容与完成情况: 一、实验内容: 1.启动数据库服务软件SQL Server 2008的管理器,用SELECT语句对表进行简单查询操作,整个查询过程只涉及到一个表,是最基本的查询语句。 语法格式如下: Select <目标列组> From <数据源> [Where <元组选择条件>] [Group by <分组列> [Having <组选择条件>]] [Order by <排序列1> <排序要求> [, …n]] 2.用SELECT语句对表进行连接查询操作,连接查询涉及被连接和连接两个表,所以数据源一般为多个表。用来连接两个表的条件称为连接条件,一般格式为: [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2> 其中比较运算符主要有:=、>、<、>=、<=、!=。 3.用SELECT语句对表进行嵌套查询操作,一个Select…From…Where语句称为一个查询块,将一个查询块嵌套在另一个查询块的Where子句或Having短语的条件中的查询,就是嵌套查询。主要有使用In操作符、使用比较运算符的嵌套查询方式。 4.用SELECT语句对表进行组合查询操作,将SELECT语句的查询结果集再进行集合运算就构成了SQL的组合查询。组合查询操作符有Union(并操作)、Intersect(交操作)和Minus(差操作)。 二、实验任务 1.打开数据库SQL Server 2008的管理查询分析器。 2、用INSERT语句向表SC中插入记录,记录见P79。

利用以前建立的Student,Course,SC进行查询。3.简单查询 1)查询全体学生的详细记录; select* from Student 2)查询所有选修过课的学生的学号; select Sno from SC 3)查询考试成绩不及格的学生的学号; select Sno from SC where Grade< 60

数据库连接查询嵌套查询实验报告

注:交作业使用,请修改

一、实验目的: 熟悉连接查询,嵌套查询等的应用。 二、实验内容: 完成老师word文档中的题目。 三、实验步骤 在上机操作之前,首先要熟悉课本内容和例子。 17、查询所有学生的Sname、Cname和Grade列。(连接查询) select student.sname,https://www.wendangku.net/doc/8a8030156.html,ame,sc.grade from student,course,sc where student.sno=sc.sno and https://www.wendangku.net/doc/8a8030156.html,o=https://www.wendangku.net/doc/8a8030156.html,o 此题因为需要查询的三个信息在不同的表里,所以要找到三个表所具有的共同列,经观察发现student.sno=sc.sno和https://www.wendangku.net/doc/8a8030156.html,o=https://www.wendangku.net/doc/8a8030156.html,o 18、查询所有选修“计算机导论”课程的同学的成绩。(连接查询,嵌套查询)select grade from sc where cno=(select cno from course where cname='计算机导论') select grade from sc ,course where https://www.wendangku.net/doc/8a8030156.html,o=https://www.wendangku.net/doc/8a8030156.html,o and https://www.wendangku.net/doc/8a8030156.html,ame='计算机导论' 首先是嵌套查询,在子查询中首先在course表中找到计算机导论的课程号,然后在sc表中找到该学号的成绩,第二种方法是连接查询,同样,连接查询是要找到表中相同的列,但是此题中还要多一个条件,因为我们只想知道计算机导论的成绩。 19、查询和“李军”同性别的同学Sname. (自身连接查询,嵌套查询) select x.sname from student x,student y where x.ssex=y.ssex and y.sname='李军' select sname from student where ssex=(select ssex from student where sname='李军') 其实自身连接和普通的连接没有什么区别,只是在自身连接后把一个表取两 个不同的名字,然后后面的就跟普通的连接查询一样了,不过需要注意的是因为两个不同的名字表其实是一个表,所以列的前面要加上表的名字,而且不要弄乱了。嵌套查询思路比较清晰首先找到李军的性别,然后再找和这个性别相同的姓名

数据库实验4

大连海事大学 数据库原理课程实验报告(2016-2017学年第二学期) 实验四数据更新 班级:智能科学与技术1班 学号:2220152937 姓名:刘宇轩 指导教师:谢兄 成绩:

大连海事大学 数据库原理课程实验大纲 实验名称:实验四数据更新实验学时: 2 适用专业:智能科学与技术 实验环境: SQL.serve2008 执笔者:刘宇轩编写日期: 2017-5-29 1实验目的 (1)掌握SQL数据更新语句的基本使用方法,如UPDATE、DELETE、INSERT。 (2)掌握更新语句条件中的嵌套查询使用方法。 2实验内容 2.1 掌握SQL更新语句的基本使用方法 (1)INSERT基本语句。 (2)UPDATE基本语句。 (3)DELETE基本语句。 2.2 掌握SQL更新语句的高级使用方法 (1)INSERT批量插入语句。 (2)UPDATE语句使用嵌套子查询。 (3)DELETE语句使用嵌套子查询。 3实验要求 (1)深入复习教材第三章SQL有关更新语句。 (2)根据书上的例子,针对TPCH数据库模式设计各种更新语句,每种类型更新语句至少要设计一个,描述清楚数据更新要求,运行你所设计的更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附1所列示例查询做实验。 (3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。

4实验步骤 4.1 掌握SQL更新语句的基本使用方法 (1)INSERT基本语句(插入全部列的数据)。 插入一个新顾客的记录,要求每列都给一个合理的值 插入一条订单明细记录,要求每列都给一个合理的值 INSERT INTO CUSTOMER(CUSTKEY,NAME,ADDRESS,NATIONKEY,PHONE,ACCTBAL,MKTSEGMENT,COMMENT ) VALUES(8,'剑心','北海道',5,594579,13.3,'同心','无') 原图 插入后图 (2)INSERT基本语句(插入部分列的数据,要求随机生成某些数字列或者字符列的数据)。 插入一条订单记录,可以只给出必要的几个字段的值,其中数值字段可以用RANDOM函数随机生成数值 INSERT INTO ORDERS(ORDERKEY,CUSTKEY,ORDERSTATUS,TOTALPRICE,ORDERDATE,ORDERPRIORITY,CLER K,SHIPPRIORITY,COMMENT) VALUES(8,3,RAND()*10,10000,'2015-4-4',RAND()*1000,RAND()*1000,RAND()*1000,'无')

实验05:数据库的嵌套查询

实验 5 :数据库的嵌套查询实验 本实验需要 2 学时。 一、实验目的 使学生进一步掌握 SQL Server 查询分析器的使用方法,加深 SQL 和 Transact-SQL 语言的嵌 套查询语句的理解。 二、实验内容 在 SQL Server 查询分析器中,使用 IN 、比较符、 ANY 或 ALL 和 EXISTS 操作符进行嵌 套查询操作。 三、实验方法 将查询需求用 Transact-SQL 语言表示;在 SQL Server 查询分析器的输入区中输入 Transact-SQL 查询语句;设置查询分析器的结果区为 Standard Execute( 标准执行 ) 或 Execute to Grid( 网格执行 ) 方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进 行修改,直到正确为止。 四、实验步骤 1 .基本操作实验 在做以下操作前,要求用 Transact-SQL 语句在选课表里增加如下记录: 学号 020101 020101 020101 020101 020101 课程号 103 104 105 106 108 成绩 90 63 84 76 69
Transact-SQL 语句表示,在学生选课库中实现其数据嵌套查询操作。 1)、 求选修了计算机原理的学生学号和姓名。 2)、 求计算机方法课程的最高成绩的学生学号和成绩。

3)、 求其他系中比计算机系任意一学生年龄小的学生 ( 即求年龄小于计算机系年龄最大者的 学生 ) 。 提示:select datediff( "yyyy",出生年月,getdate()) from 学生
获取学生表中的所有学生年龄。 SQL Server DATEDIFF() 函数 SQL Server Date 函数 定义和用法 DATEDIFF() 函数返回两个日期之间的天数。 语法 DATEDIFF ( datepart, startdate, enddate ) startdate 和 enddate 参数是合法的日期表达式。 datepart datepart 年 参数可以是下列的值: 缩写 yy, yyyy qq, q mm, m dy, y dd, d wk, ww dw, w hh mi, n ss, s ms mcs ns
季度 月 年中的日 日 周 星期 小时 分钟 秒 毫秒 微妙 纳秒 实例 例子 1 使用如下 SELECT 语句:

嵌套子查询设计实验

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

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语句写在下方(标明题号)。 a)查询选修了数据结构与算法的学生学号和姓名。 select Student.S_ID,Student.S_Name from Student,Course,SC where Student.S_ID=SC.S_ID and Course.C_ID=SC.C_ID and Student.S_ID=SC.S_ID and C_Name='数据结构与算法'

实验(嵌套查询)

嵌套查询实验 1、创建“订货管理数据库”(用简单的语句创建) 2、在该数据库下创建四个表: 1)创建仓库表,由以下属性组成: 仓库号(CHAR型,长度为8,主键); 城市(CHAR型,长度为10,非空唯一); 面积(INT型) 2)创建职工表,由以下属性组成: 仓库号(CHAR型,长度为8); 职工号(CHAR型,长度为8,主键); 工资(INT型,默认值为 1200); 3)创建供应商表,由以下属性组成: 供应商号(CHAR型,长度为5,主键); 供应商名(CHAR型,长度为20,非空唯一);, 地址(CHAR型,长度为20) 4)创建订购单表,由以下属性组成: 职工号(CHAR型,长度为8,非空); 供应商号(CHAR型,长度为4); 订购单号(CHAR型,长度为8,主键); 订购日期(DA TETIME型)

3、用查询分析器,把下列表中的数据插入到相应的表中:(把共享中 文件的代码直接复制,完成数据插入操作)仓库表: 职工表: 订购单表:

供应商表: 4、用查询分析器,对表中的数据进行查询(嵌套查询): 1)哪些城市至少有一个仓库的职工的工资为1250元? 2)找出和职工E4挣同样工资的所有职工。 3)找出哪些城市的仓库向北京的供应商发出了订购单; 4)检索有职工的工资大于或等于WH1仓库中任何一名职工的工资的仓库号(分别使用“>= ANY ”和“>= ”完成); 5)检索有职工的工资大于或等于WH1仓库中所有职工的工资的仓库号(分别使用“>= ALL”和“>=”完成); 6)检索那些仓库中还没有职工的仓库的信息(分别使用NOT EXISTS和NOT IN完成); 7)检索那些仓库中至少已经有一个职工的仓库的信息(分别使用EXISTS和IN完成);

数据库SQL实验题目

实验一数据库和表的建立 ●实验目的 1.掌握数据库和表的基础知识 2.掌握使用创建数据库和表的方法 3.掌握数据库和表的修改、查看、删除等基本操作方法 ●实验内容和要求 一、数据库的创建 在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示: Grademanager数据库参数表 二、表的创建、查看、修改和删除 1.表的创建 在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:(1)Student表的表结构 特别注意: 为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK 约束”命令,然后按照图1进行设置。

图1 设置性别的约束 (2)Course表(课程名称表)的表结构 (3)SC表(成绩表)的表结构 特别注意: ①为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为Degree>=1 And Degree<=100 ②为SC表设置外键Sno和Cno的方法: 右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行设置,即可将SC表中的Cno属性设置为外键。按照相同的方法,将属性Sno也设置为外键。 图2为SC表设置外键Cno

2.向上述表中输入如下数据记录 学生关系表Student (右键单击表Student ,选择“编辑前200行”) 课程关系表Course 成绩表SC 3.修改表结构(找到操作的方法即可,不需要真正地修改表中的属性) (1)向student 表中增加“入学时间”列,其数据类型为日期型 (2)将student 表中的sdept 字段长度改为20 (3)将student 表中的Speciality 字段删除 思考题 1. SQL Server 的数据库文件有几种?扩展名分别是什么? 2. 如何实现数据库的备份和还原? 2.在定义基本表语句时,NOT NULL 参数的作用是什么? 3.主码可以建立在“值可以为NULL ”的列上吗?

数据库实验3

实验三高级查询 1实验目的 (1)掌握SQL的高级查询的使用方法,如分组统计、嵌套查询、集合查询等等。 2实验内容 2.1 掌握SQL高级查询使用方法 (1)分组统计。 (2)嵌套查询,包括IN查询、EXISTS查询。 (3)集合查询。 3实验要求 (1)深入复习教材第三章SQL有关高级查询语句。 (2)根据书上的例子,针对TPCH数据库模式设计分组统计查询、嵌套查询(IN、EXISTS)语句和集合查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附2所列示例查询做实验。 (3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。 4实验步骤 4.1 掌握SQL高级查询使用方法 (1)不带分组过滤条件的分组统计查询。统计每个顾客订购金额。 SELECT SUM(TOTALPRICE),custkey FROM ORDERS GROUP BY CUSTKEY (2)带分组过滤条件的分组统计查询。 查询平均每个订单金额超过1000元的顾客编号及其姓名。 SELECT CUSTKEY,NAME FROM customer WHERE custkey IN(

SELECT custkey FROM ORDERS GROUP BY CUSTKEY HA VING A VG(TOTALPRICE)>1000) (3)IN嵌套查询。 查询订购了“海大”制造的“船舶模拟驾驶舱”的顾客。 SELECT* FROM customer C WHERE C.CUSTKEY IN (SELECT O.CUSTKEY FROM ORDERS O,PARTSUPP1PS,SUPPLIER S,PART P,lineitem L WHERE https://www.wendangku.net/doc/8a8030156.html,='海大'AND https://www.wendangku.net/doc/8a8030156.html,='船舶模拟驾驶舱'AND P.PARTKEY=L.PARTKEY AND L.SUPPKEY=S.SUPPKEY) (4)单层EXISTS嵌套查询。 查询没有购买过“海大”制造的“船舶模拟驾驶舱”的顾客。 SELECT* FROM CUSTOMER WHERE NOT EXISTS (SELECT* FROM PART P,SUPPLIER S,LINEITEM L,ORDERS O WHERE https://www.wendangku.net/doc/8a8030156.html,='船舶模拟驾驶舱'AND https://www.wendangku.net/doc/8a8030156.html,='海大' AND L.PARTKEY=P.PARTKEY AND S.SUPPKEY=L.SUPPKEY AND L.ORDERKEY=O.ORDERKEY AND O.CUSTKEY=CUSTOMER.CUSTKEY)

梁奕晓 201226860114实验二

课内上机实验内容与要求 班级:计算机实验班1201 姓名:梁奕晓学号:201226860114 实验2、SQL的数据查询 2.1实验目的 熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。 2.2实验内容 实验内容主要是对数据库进行查询操作,包括如下四类查询方式: (1)单表查询 ●查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。 ●使用DISTINCT保留字消除重复行。 ●对查询结果排序和分组。 ●集合分组使用集函数进行各项统计。 (2)连接查询 ●笛卡儿连接和等值连接。 ●自连接。 ●外连接 ●复合条件连接。 ●多表连接。 (3)嵌套查询 ●通过实验验证对子查询的两个限制条件。 ●体会相关子查询和不相关子查询的不同。 ●考察四类谓词的用法,包括: 第一类,IN、NOT IN; 第二类,带有比较运算符的子查询; 第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值; 第四类,带有EXISTS谓词的子查询,实现“所有”等情况(如王宏 的“所有”课程,“所有”女生选修的课程) (4)集合运算 ●使用保留字UNION进行集合或运算。 ●采用逻辑运算符AND或OR来实现集合交和减运算。 2.3实验步骤 以University_Mis数据库为例,该数据库中有四张表如实验1,其中Score 是每门课的考试成绩,Scredit是学生所有考试合格课程所获得的积分总数,

Ccredit每门课程的学分数。 在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师。在表Reports中保存学生的选课记录和考试成绩。 请先输入如下符合条件的元组后,再对数据库进行有关的查询操作: 图1.1、Students表 图1.2、Teachers表

实验6 嵌套查询

(1)查询计算机系(CS)男学生的学生学号及考试成绩。 SELECT sno'学号',degree'考试成绩' FROM sc WHERE sno IN(SELECT sno FROM student WHERE sdept='计算机工程系' AND ssex='男') (2)查询“李勇”同学所选课程的成绩。 SELECT cname FROM course WHERE cno IN(SELECT cno FROM sc WHERE sno IN (SELECT sno FROM student WHERE sname='李勇')) (3) 查询“李新”老师所授课程的课程名称。 SELECT cname FROM course WHERE cno IN(SELECT cno FROM teaching WHERE tno IN (SELECT tno FROM teacher WHERE tname = '李新')) (4) 查询女教师所授课程的课程号及课程名称。 SELECT cno,cname FROM course WHERE cno IN(SELECT cno FROM teaching WHERE tno IN (SELECT tno FROM teacher WHERE tsex='女')) (5) 查询姓“刘”的学生所学的课程名称。 SELECT cname FROM course WHERE cno IN(SELECT cno FROM sc WHERE sno IN(SELECT sno FROM student WHERE sname LIKE '刘%')) (6) 查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩。 SELECT sno,degree FROM sc WHERE cno IN(SELECT cno FROM course WHERE cname = '数据库') AND degree BETWEEN 80 AND 90 (7) 查询选修“C03”课程的学生的平均年龄。 SELECT AVG(2017-YEAR(sbirthday)) FROM student WHERE sno IN (SELECT sno FROM sc WHERE cno='c03') (8) 查询学习课程名为“数字”的学生学号和姓名。 SELECT sno,sname FROM student WHERE sno IN(SELECT sno FROM sc WHERE cno IN (SELECT cno FROM course WHERE cname='数字')) (9) 查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。 SELECT cno,sno,degree FROM sc WHERE cno IN(SELECT cno FROM teaching WHERE tno in(SELECT tno FROM teacher WHERE tname = '钱军')) (10) 查询在第3学期所开课程的课程名称及成绩。 SELECT https://www.wendangku.net/doc/8a8030156.html,ame,sc.degree

实验5 SQL语言查询的综合练习

石家庄经济学院 实验报告 学院: 信息工程学院 专业: 计算机科学与技术 信息工程学院计算机实验中心制

1.内外连接查询 2.嵌套查询 3.相关子查询 二实验目的 1.掌握索引的建立与删除操作。 2.掌握视图的创建和查询操作,理解视图的作用。 3.掌握触发器的创建与使用,理解数据库安全性的定义。 三实验内容 1.查询常量、命名列等(datediff函数的使用) 说明:命名列的方法:as 、= (1)查询计算机学院的学生的学号、姓名、年龄。(要求命令列,并使用两种方法计算年龄)。 (2)查询课程号为10001的课程的原始成绩和调整成绩,其中调整成绩=原始成绩+5分。 (3)查询所有学生的学号、姓名和出生日期(要求出生日期只显示年份和月份)。 (4)查询9月份出生的学生 (5)查询所有的课程信息,在查询结果中增加关于学校的说明列“石家庄经济学院本部”。 2.Top练习 (1)从C表中查询前5门课的信息。 (2)从SC表中查询’10005’课程考试成绩较好的50%的成绩信息。 (3)查找“高级语言程序设计”成绩最好的两个学生的信息。 (4)查询女生人数最多的两个学院,查询结果显示:学院、女生人数。 3.通配符练习 (1)查找名字为刘某某的学生信息,要求名字必须是3个字。(假设有刘明、刘兰花、刘芳等同学) (2)查找名字为刘某的学生信息,但是名字的第二个字不是“兰” 5.逻辑运算符(运算符的优先级为NOT 、AND 、OR,求值顺序自左向右,可以利用括号改变求值顺序) (1) 查找不是外语学院和会计学院的,成绩不及格或成绩为空的学生信息。 6.Group by 练习 (1)查询各学院男生和女生的人数。 (2)查询各个学院男生和女生人数,只显示人数超过5人的统计信息。 (3)查询各个学院男生、女生的人数及其总人数。(rollup或cube) (4)统计各门课各个学院选修的人数、各学院选课人数、总人数。 (5)分别统计各学院男生、女生的平均年龄。 说明:Group By 和 Having, Where ,Order by语句的执行顺序 关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数),然后通过Group By关键字后面指定的分组条件将筛选得到的

子查询实验报告

实验报告 ———第三章实验 一、实验目的 1、理解嵌套子查询 2、理解公用表达式 3、会使用排序函数 4、掌握集合运算 二、实验内容 1、从一个查询结果中继续查找 2、编写代码,选择分数大于90分的所有学生 3、列出每个学员的信息,并且列出这个学员最高的分数 4、在列出所有学生信息的同时,列出学生成绩总合 三、实验步骤 A、实验基础搭建: 1、创建数据库StuDB USE master GO IF EXISTS(SELECT*FROM SYSDATABASES WHERE NAME='Student') BEGIN DROP DATABASE Student END CREATE DATABASE Student ON PRIMARY ( NAME='Student_data', FILENAME='H:\DATA\Student_data.mdf', SIZE= 3MB, MAXSIZE= 5MB, FILEGROWTH= 1MB ) LOG ON ( NAME='Student_log', FILENAME='H:\DATA\Student_log.ldf', SIZE= 3MB, MAXSIZE= 3MB, FILEGROWTH= 10% ) GO 2、创建学生信息表StuInfo

USE Student GO IF EXISTS(SELECT*FROM SYSOBJECTS WHERE NAME='StuInfo') BEGIN DROP TABLE StuInfo END CREATE TABLE StuInfo ( StuID INT IDENTITY(1,1)PRIMARY KEY NOT NULL, StuName VARCHAR(10)NOT NULL, StuSex CHAR(2)NOT NULL, ClassID CHAR(2)NOT NULL ) GO 3、创建学生成绩表StuMarks USE Student GO IF EXISTS(SELECT*FROM SYSOBJECTS WHERE NAME='StuMarks') BEGIN DROP TABLE StuMarks END CREATE TABLE StuMarks ( ExamNO INT NOT NULL, StuID INT REFERENCES StuInfo(StuID), Subject VARCHAR(10)NOT NULL, Score INT NOT NULL ) GO 4、插入数据 USE Student GO INSERT INTO StuInfo VALUES('李四','男',1) INSERT INTO StuInfo VALUES('钱七','女',2) INSERT INTO StuInfo VALUES('王五','男',1) INSERT INTO StuInfo VALUES('张三','女',1) INSERT INTO StuInfo VALUES('赵六','女',2) INSERT INTO StuMarks VALUES(1,1,'HTML',85) INSERT INTO StuMarks VALUES(2,1,'Java',80) INSERT INTO StuMarks VALUES(3,1,'SQL',82) INSERT INTO StuMarks VALUES(4,2,'HTML',70) INSERT INTO StuMarks VALUES(5,2,'Java',81) INSERT INTO StuMarks VALUES(6,2,'SQL',60)

数据库实验报告——多表查询

集美大学计算机工程学院实验报告 课程名称:SQL Server实用教程班级:网络0911实验成绩:指导教师:李传目姓名:钟小平 实验项目名称: 多表查询学号: 2009811012 上机实践日期: 2011-11-25 实验项目编号:05 组号:上机实践时间: 2课时 一、实验目的 1.掌握多表连接查询方法; 2.掌握IN 子查询的嵌套查询; 3.了解EXISTS嵌套查询方法。 二、实验内容与设计思想 1.多表等值连接查询; 2.外连接查询; 3.IN子查询嵌套; 4* EXISTS嵌套查询。 设计思想: 1、复习书本上的相关知识,如查阅多表的连接查询、多表的等值连接查询、表自身的连 接、IN嵌套子查询和EXISTS嵌套子查询等知识点; 2、先建立一个XSDA库,在建立相关表(利用上次验证试验建立好的数据库); 3、根据实验要求进行各种查询操作; 4、遇到问题,及时问老师或同学,查阅资料,以便得到及时解决; 5、认真做好试验报告。 三、实验使用环境 操作系统:Win-7 编程环境:Microsoft SQL Server 2008 四、实验步骤和调试过程 ###验证性实验 1.多表的连接查询(相当于做笛卡儿乘积) SELECT * FROM C XX,SC XX(截图中间有省略)

………… (1) 查询各学生的选课信息(包括学号、课程名、成绩) 因为学号和成绩在SC表中,而课程名在C表中,因此需要多表查询。SELECT SNO,CNAME,GRADE FROM C XX C,SC XX SC WHERE https://www.wendangku.net/doc/8a8030156.html,O=https://www.wendangku.net/doc/8a8030156.html,O

(2) 查询学生的选课记录,显示学生的学号、姓名、课程号、成绩)SELECT S.SNO,SNAME,CNO,GRADE FROM S XX S,SC XX SC WHERE S.SNO=SC.SNO (3) 查询学生的选课记录,显示学生的学号、姓名、课程号、课程名、成绩SELECT S.SNO,SNAME,https://www.wendangku.net/doc/8a8030156.html,O,CNAME,GRADE FROM S XX S,SC XX SC,C XX C WHERE S.SNO=SC.SNO AND https://www.wendangku.net/doc/8a8030156.html,O=https://www.wendangku.net/doc/8a8030156.html,O

数据库的嵌套查询实验

实验报告 一、实验内容 数据库的嵌套查询实验 二、实验目的 进一步掌握SQL Server的使用方法,学会利用Transact-SQL语言表达嵌套查询语句,理解相关的SQL语句。 三、实验内容 用Transact-SQL表达嵌套查询操作,包括使用IN、比较符、ANY 或ALL和EXISTS等操作符,通过SQL Server查询分析器输入、分析并显示正确结果。 四、实验前准备 Courses表: Reports表:

Students表: 五、实验结果 1)求选修了高等数学的学生学号和姓名 2)求C1课程的成绩高于张三的学生学号和成绩 3)求其他系中比计算机系某一学生年龄小的学生

4)求其他系中比计算机系学生年龄都小的学生 5)求选修了C2课程的学生姓名 6)求没有选修C2课程的学生姓名 7)查询选修了全部课程的学生的姓名 8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名 六、主要实验步骤 1)求选修了高等数学的学生学号和姓名 select sno,sname from students a where sno in (

select sno from reports b where sno=a.sno and cno in ( select cno from courses where cno=https://www.wendangku.net/doc/8a8030156.html,o and cname='高等数学' ) ) 2)求C1课程的成绩高于张三的学生学号和成绩select sno,grade from reports where cno=1 and grade> ( select grade from reports where cno=1 and sno= ( select sno from students where sname='张三' )

实验5 SQL语言之高级查询

实验五高级查询 【实验目的与要求】 1、熟练掌握IN子查询 2、熟练掌握比较子查询(尤其要注意ANY、ALL谓词如何用集函数代替) 3、熟练掌握EXISTS子查询(尤其是如何将全称量词和逻辑蕴含用EXISTS谓词代替) 4、熟练掌握复杂查询的select语句 【实验准备】 1.准备好测试数据 2.熟悉多表查询与嵌套查询的用法。 【实验内容】 5.1.准备工作 1.创建测试用数据库XSGL,并在其中创建三个表 本实验需用到student、course和SC表,其结构和约束如下: Student表结构及其约束为: 表5-1 student表结构和约束 列名称类型宽度允许空值缺省值主键说明 Sno char 8 否是学号 Sname varchar 8 否学生姓名 Sex char 2 否男性别 Birth datetime 否出生年月Classno char 3 否班级号Entrance_date datetime 否入学时间Home_addr varchar 40 是家庭地址 Course表结构及其约束为: 表5-2 course表结构和约束 列名称类型宽度允许空值缺省值主键说明 cno Char 3 否是课程号 Cname varchar 20 否课程名称Total_perior int 是总学时credit int 是学分 SC表结构及其约束为: 表5-3 SC表结构和约束 列名称类型宽度允许空值缺省值主键外键说明

sno Char 8 否是学号,参照student表 cno char 3 否是课程号,参照course表 grade int 是否成绩其中成绩为百分制。 2.对表添加、修改、删除数据 向student表中插入如下数据: 表5-4 student表 Sno sname sex birth classno Entrance_date Home_addr sdept postcode 20050001 张虹男1984/09/011 051 2005/09/01 南京CS 200413 20050002 林红女1983/11/12 051 2005/09/01 北京CS 100010 20050003 赵青男1982/05/11 051 2005/09/01 上海MA 200013 向course表中插入数据: 表5-5 course表 cno Cname Total_perior credit 001 高数68 3 002 C语言程序设计75 4 003 JAVA语言程序设计68 3 向SC表中插入数据: 表5-6 SC表 Sno Cno grade 20050001 001 89 20050001 002 78 20050001 003 89 20050002 002 60 20050003 001 80 为达到更好的测试效果,请自行向数据库表中添加其它数据,使表中数据量达10条以 上,并使每个字段值表现出多样性。 5.2.复杂查询 (1)查询比“林红”年纪大的男学生信息。 SQL语句: select * from Student where birth< ( select birth from Student where Sname='林虹'

Oracle 数据库设计实验指导书yk

Oracle数据库设计实验指导书

《Oracle 数据库设计》课程实验 一、本实验课在培养实验能力中的地位及作用 Oracle 数据库设计是软件工程专业的一门专业课。Oracle数据库是目前最流行的大型数据库平台之一,是一种极具前景的大型数据库。 该课程侧重于Oracle数据库维护和管理知识的掌握以及实际应用Oracle数据库的能力的培养。本课程设置的目的是使学生通过本课程的学习逐渐全面了解Oracle数据库,并具有对大型数据库数据库进行安全、维护等的管理技能,同时能应用Oracle数据库进行数据库结构的设计和数据库应用系统的开发。 二、应达到的实验能力标准 本实验的教学目标是使学生掌握如何使用Oracle 数据库开发系统,了解数据库设计及相关操作的基本概念与方法,进而学会建立与组织、操作数据库。上机实验的主要目标如下: (1)通过上机操作,加深对数据库系统理论知识的理解。 (2)通过使用具体的DBMS,了解一种实际的数据库管理系统并掌握其操作技术。 (3)通过上机实验,提高动手能力,提高分析问题和解决问题的能力。 (4)通过上机实验,提高动手能力,掌握大型数据库实际应用与开发技巧。 三、实验要求 学生在实验课前认真做好预习,实验结束及时提交电子版实验报告。 三、实验成绩考核方法 实验成绩在课程总成绩中占30%,包括平时每次实验考核与最后一次实验考试。

实验内容目录 实验1 Oracle常用工具的使用及数据库的创建实验2 SQL*Plus基本命令 实验3 oracle存储结构 实验4 数据对象的基本操作 实验5 数据的简单查询 实验6 数据的高级查询 实验7PL/SQL程序设计 实验8 Oracle 的存储过程与触发器 实验9 Oracle数据库安全、恢复与备份 实验10 Oracle数据库应用开发

相关文档
相关文档 最新文档