数据库实验四-查询
实验4:数据库的高级查询操作

实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。
二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。
了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。
三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带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='刘晨') and sname<>'刘晨' 比较: 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') 比较: 查询选修了课程’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 /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。
数据库实验四-查询

华中科技大学《数据库技术与应用》实验报告专业班级:学生姓名:学号:实验地点:指导教师:实验日期时间:一、实验项目名称:数据查询二、实验学时:三、实验目的:1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。
2.掌握使用SELECT语句进行条件查询的方法。
3.掌握嵌套查询的方法。
4.掌握多表查询的方法。
5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。
四、实验工具或环境一台装有SQL sever2008的计算机五、实验内容、步骤、代码和结果:0. 创建studentsdb数据库及其相应表,并录入数据。
在SQL Server管理平台上,点击“新建查询”打开查询编辑器窗口,复制粘贴附件“创建数据库代码”中的代码到查询编辑器窗口,运行即可生成相关数据库和表,并有相应的数据。
1.在studentsdb数据库中,使用下列SQL语句将输出什么?(1)SELECT COUNT(*) FROM grade(2)SELECT SUBSTRING(姓名,1,2) FROM student_info(3)SELECT UPPER('kelly')(4)SELECT Replicate('kelly',3)(5)SELECT SQRT(分数) FROM grade WHERE 分数>=85(6)SELECT 2,3,POWER(2,3) 选做(7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())2.在studentsdb数据库中使用SELECT语句进行基本查询。
(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。
(2)查询学号为0002的学生的姓名和家庭住址。
select姓名,家庭住址from student_info where学号='0002'(3)找出所有男同学的学号和姓名。
数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]
![数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]](https://img.taocdn.com/s3/m/3c9fb119fad6195f312ba66a.png)
实验4 SQL 语言——SELECT 查询操作1实实验验44 S S Q Q L L 语语言言————S S E E L L E E C C T T 查查询询操操作作实验示例实验示例中要使用包括如下三个表的“教学管理”数据库JXGL :(1)学生表Student ,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:Student(Sno,Sname,Ssex,Sage,Sdept),其中主码为Sno 。
(2)课程表Course ,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:Course(Cno,Cname,Cpno,Ccredit),其中主码为Cno 。
(3)学生选课SC ,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:SC(Sno,Cno,Grade),其中主码为(SNO,CNO)。
1、在SQL SERVER 查询分析器或企业管理器(以具有相应操作权限的某用户登录)的SQL 操作窗口中执行如下命令创建数据库。
需要说明的是不同数据库系统其创建数据库的命令或方式有所不同。
CREATE DATABASE JXGL2、刷新数据库目录后,选择新出现的JXGL 数据库,在SQL 操作窗口中,创建Student 、SC 、Course 三表及表记录插入命令如下:Create Table Student( Sno CHAR(5) NOT NULL PRIMARY KEY(Sno),Sname VARCHAR(20),Sage SMALLINT CHECK(Sage>=15 AND Sage<=45),Ssex CHAR(2) DEFAULT '男' CHECK (Ssex='男' OR Ssex='女'),Sdept CHAR(2));Create Table Course( Cno CHAR(2) NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),Cpno CHAR(2),Ccredit SMALLINT);Create Table SC( Sno CHAR(5) NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(2) NOT NULL,Grade SMALLINT CHECK ((Grade IS NULL) OR (Grade BETWEEN 0 AND 100)),PRIMARY KEY(Sno,Cno),数据库原理与应用实验指导2FOREIGN KEY(Cno) REFERENCES Course(Cno));INSERT INTO Student VALUES('98001','钱横',18,'男','CS');INSERT INTO Student VALUES('98002','王林',19,'女','CS');INSERT INTO Student VALUES('98003','李民',20,'男','IS');INSERT INTO Student VALUES('98004','赵三',16,'女','MA');INSERT INTO Course VALUES('1','数据库系统', '5',4);INSERT INTO Course VALUES('2','数学分析',null ,2);INSERT INTO Course VALUES('3','信息系统导论','1',3);INSERT INTO Course VALUES('4','操作系统原理','6',3);INSERT INTO Course VALUES('5','数据结构','7',4);INSERT INTO Course VALUES('6','数据处理基础',null,4);INSERT INTO Course VALUES('7','C 语言','6',3);INSERT INTO SC VALUES('98001','1',87);INSERT INTO SC VALUES('98001','2',67);INSERT INTO SC VALUES('98001','3',90);INSERT INTO SC VALUES('98002','2',95);INSERT INTO SC VALUES('98002','3',88);[例1] 查考试成绩大于等于90的学生的学号。
实验四表数据的简单查询

实验四表数据的简单查询实验学时:1学时实验类型:设计实验要求:必做一、实验目的掌握SELECT语句的基本用法。
掌握计算列的用法。
掌握WHERE子句中各类查询条件的写法。
二、实验内容1、在连接“MySQL”中新建数据库“world”,并将数据库文件world_inno.sql导入到该数据库之中2、查询world数据库的country表中的国名(Name)、洲名(Continent)和地区(Region)。
步骤:点击“新建查询”,输入以下代码,点击执行USE worldSELECT NAME,Continent,Region FROM country;运行结果如图2.1:图2.13、从world数据库的city表中搜索返回前20条的数据。
步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT * FROM city LIMIT 0,20;其中,“LIMIT M,N”中的M表示从第M条(不包括M)开始结果如图3.1:图3.14、使用WHERE 子句从world 数据库的country表中检索出所有领土面积超过一百万平方公里的国家名称(Name)、洲名(Continent)以及领土面积(SurfaceArea)。
步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT NAME,Continent,SurfaceAreaFROM countryWHERE SurfaceArea > 1000000;结果如图4.1:图4.15、查询在world数据库的country表中Name以字母C开头的国家的洲名Continent,地区Region。
步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT Name,Continent,RegionFROM countryWHERE NAME like 'C%';运行结果如图5.1:图5.16、查询world数据库Country表中所有国家的Name和Condinent,并按生日SurfaceArea 从小到大进行排列。
《数据库与信息系统》实验4指导解析_1-3

⚫ 格式 2:LIMIT 记录数 表示从第一条记录开始显示“记录数”的记录。如果“记录数”小于或者等于查询结果的记录
总数,那么将从第一条记录开始,显示指定条数的记录。如果“记录数”大于查询结果的记录总数, 数据库会直接显示查询出来的所有记录。
2
图 4.4 2009 年以后出版的少儿类图书(部分结果)
解析:Where 子句可以使用 year()函数从出版日期(PublishDate)字段中取得年份数据,其值为整型。 如果直接使用日期型的常量做比较,日期型常量要按照'年-月-日'完整结构来写,并且使用单引号括 起来,例如'2009-01-01 '。 参考语句:
要注意数据表名 Order 与关键字 Order 相同,在查询语句中可以使用完整的数据表名:
3
bookstore.`order`或者将数据库 bookstore 设置为当前数据库,然后在查询语句中使用单引号将 order 括起来。 参考语句: Select OrderCode, OrderTime, OrderStatus From bookstore.`orders` LIMIT 3; 或: USE bookstore; Select OrderCode, OrderTime, OrderStatus From `orders` LIMIT 3; (7)查询 TotalPrice 在 100~200 元之间的订单信息,部分结果如图 4.7 所示。
From Book;
(2)进行图书的价格汇总分析,分别显示图书的最高价、最低价、平均价、最高价与最低价的 差值,结果如图 4.11 所示。
图 4.11 图书的价格汇总分析
实验4 数据库的查询

实验4 数据库的查询一、实验目的1.掌握SELECT语句的基本用法2.掌握子查询的表示3.掌握连接查询的表示4.掌握SELECT语句的GEOUP BY子句的作用和使用方法5.掌握SELECT语句的ORDER BY子句的作用和使用方法二、实验准备1.了解SELECT语句的基本语法格式2.了解SELECT语句执行方法3.了解子查询的表示方法4.了解查询的表示方法5.了解SELECT语句的GROUP BY子句的作用和使用方法6.了解SELECT语句的ORDER BY子句的作用7.了解SELECT语句的LIMIT子句的作用三、实验内容及要求1.SELECT语句的基本使用1)用SELECT语句查询Departmrnts表的所有记录。
2)用SELECT语句查询Salary表的所有记录。
3)用SELECT语句查询Departments表的部门号和部门名称列。
4)查询Employees表中部门号和性别,要求使用DISTINCT消除重复行。
5)查询月收入高于2000的员工号码。
6)查询所有1970以后出生的员工的姓名和住址。
7)查询所有财务部门的员工号码和姓名。
8)查询Empoyees表中男员工的姓名和出生日期,要求个列标题用中文表示。
9)查询Employees员工的姓名住址和收入水平,2000以下的显示为低收入,2000-3000的显示为中等收入,3000以上的显示为高收入。
10)计算Salary表中员工月收入的平均数。
11)获得Employees表中的最大的员工号码。
12)计算Salary表中所有员工的总支出。
13)查询财务部官员的最高和最低实际收入。
14)找出所有其地址含有“中山”的雇员的号码及部门号。
15)查找员工号码中倒数第二个数字为0的姓名、地址和学历。
16)找出所有部门“1”或“2”工作的雇员的号码。
2.子查询的使用1)用子查询的方法查找所有收入在2500以下的雇员的情况。
2)用子查询的方法查找研发部比财务部所有雇员收入都高的雇员的姓名。
数据库实验4 数据查询

实验4:数据查询1.实验目的:熟练掌握SQL SELECT语句,能够运用该语句完成各种查询。
2.实验要求:熟练掌握SQL SELECT语句,完成各个实验的内容,能够举一反三,灵活运用,能够通过本章介绍的一些基本语句,构造各种各样的查询。
3.实验环境与实验器材:实验环境:计算机,网络环境,投影设备。
实验相关软件:Window XP、SQL Server 2000。
4. 实验内容与步骤本实验通过使用Transact-SQL语句,对已经建立的数据库进行查询操作。
4.1 查询指定字段编写select语句,显示“学生档案表”中的学号、姓名、籍贯、专业以及班级字段。
第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select 学号,姓名,籍贯,专业,班级from 学生档案表如图:第二步:单击“SQL查询分析器”界面上部的绿色三角形“执行查询”按钮,查询对话框下半部分显示查询结果,如图:4.2 通配符“*”的使用编写select语句,显示“学生选课表”中的所有字段。
第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select * from 学生选课表如图:查询对话框下半部分显示查询结果,如图:4.3 基于字段的表达式在学生档案表中,按“XXXX年XX月XX日”的格式显示出生日期。
使用year 函数从“出生日期”字段中取得年份数据,再使用str函数将数值型的年份数据转换成字符型,最后使用“+”将字符串拼接起来。
第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select 学号,姓名,性别,str(year(出生日期),4)+'年'+str(month(出生日期),2)+'月'+str(day(出生日期),2)+'日' as 出生日期from 学生档案表如图:查询对话框下半部分显示查询结果,如图:4.4 用WHERE子句过滤记录在学生档案表中查询所有出生日期在“1983-01-01”至“1984-12-31”之间的所有学生的信息。
数据库实验四

《数据库管理系统》实验报告2011/2012学年第2学期实验项目:数据库班级:学生:(学号********* )地点:经管院A 实验室机器号:指导教师:时间:2012 年 6 月 3 日经济管理学院信息管理教研室实验四:数据库综合实验一、实验目的1.了解DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,掌握查询条件表达式和使用方法;2.掌握Windows NT认证模式下数据库用户帐号的建立与取消方法;3.掌握混合模式下数据库用户帐号的建立与取消方法;4.掌握数据库用户权限的设置方法;5.熟悉数据库数据库用户帐号的权限分配、回收等方法;6.了解数据库角色的分类、作用及使用方法。
7.掌握主键约束、外键约束及及check约束的用法;8.掌握默认值约束的应用;9.了解规则、触发器的使用。
10.熟悉数据库备份及恢复机制;11.了解SQL Server的数据备份和恢复机制;12.掌握SQL-Server中数据库备份和恢复的方法。
二、实验环境已安装SQL Server 2005的计算机;具有局域网网络环境,有ip地址;三、实验要求1.学会用DDL语言进行对表、索引、视图的增加、删除和改动;2.了解SQL Server 2005系统安全;3.熟悉数据库用户、服务器角色及数据库角色的用法;4.熟悉数据库完整性相关概念及约束;5.了解约束、默认值及规则;6.了解创建备份设备和进行数据库完全备份操作的方法;7.了解进行数据库恢复的步骤;8.完成实验报告;四、实验内容及步骤(一)用T-SQL语句操作索引、视图1.建立计算机科学系学生的视图2.由学生、课程和选修课三个表,定义一个计算机科学系的学生成绩视图,其属性包括学号、姓名、课程名和成绩3.将学生的学号、总成绩、平均成绩定义成一个视图4.对student表按学号降序建唯一索引,索引名stunods。
5.删除索引stunods。
(二)数据库的安全性以系统管理员身份登录到SQL Server服务器,在SQL Server2005界面中实现以下操作,并独立写出部分题目的程序代码;1.在当前计算机中增加一个用户zhang和cheng,密码为secret。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华中科技大学
《数据库技术与应用》实验报告专业班级:学生姓名:学号:
实验地点:指导教师:
实验日期时间:
一、实验项目名称:数据查询
二、实验学时:
三、实验目的:
1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。
2.掌握使用SELECT语句进行条件查询的方法。
3.掌握嵌套查询的方法。
4.掌握多表查询的方法。
5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。
四、实验工具或环境
一台装有SQL sever2008的计算机五、实验内容、步骤、代码和结果:
0. 创建studentsdb数据库及其相应表,并录入数据。
在SQL Server管理平台上,点击“新建查询”打开查询编辑器窗口,复制粘贴附件“创建数据库代码”中的代码到查询编辑器窗口,运行即可生成相关数据库和表,并有相应的数据。
1.在studentsdb数据库中,使用下列SQL语句将输出什么?
(1)SELECT COUNT(*) FROM grade
(2)SELECT SUBSTRING(姓名,1,2) FROM student_info
(3)SELECT UPPER('kelly')
(4)SELECT Replicate('kelly',3)
(5)SELECT SQRT(分数) FROM grade WHERE 分数>=85
(6)SELECT 2,3,POWER(2,3) 选做
(7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())
2.在studentsdb数据库中使用SELECT语句进行基本查询。
(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。
(2)查询学号为0002的学生的姓名和家庭住址。
select姓名,家庭住址from student_info where学号
='0002'
(3)找出所有男同学的学号和姓名。
select姓名,家庭住址from student_info where性别='男'
3.使用SELECT语句进行条件查询
(1)在grade表中查找分数在80~90分为内的学生的学号和分数。
select学号,分数from grade where分数>='80'and分数<='90'
(2)在grade表中查询课程编号为0003的学生的平均分。
select AVG(分数)as平均分from grade where课程编号='0003'。