实验3 SQL的简单查询功能
- 格式:doc
- 大小:42.50 KB
- 文档页数:3
1实验三:SQL语句的使用(一)1.1实验背景SQL(Structure Query Language,结构化查询语言)是目前在关系数据库领域中真正的标准语言。
虽然它叫做查询语言,但实际上不仅仅只能用来执行查询,还能用来执行数据的更新处理。
教材的第一章谈到的数据库管理系统(DBMS)具有的所有功能SQL 都能帮助完成,而且对于数据库管理员(DBA)来说,他管理数据库用到的一定是SQL。
如果按照DBMS的功能来分类SQL的话,可以参考下表:表 1 DBMS功能与SQL分类上表表述了最常见的SQL,实际上SQL非常丰富,而且随着时代的发展,SQL也不断地发展,而且SQL被国际标准化组织(ISO)制定成了国际标准,并且随着SQL新增要求,不断推出更新版本的国际标准。
目前最主要的是1999年推出的SQL-99标准。
下表是SQL的几个标准的版本。
表 2 DBMS功能与SQL分类从上表可以看出SQL标准是在不断更新当中的,但是自1996年后标准的关注度并不再提及得很重要的地位(实际上1999年后,SQL标准仍然在不断推出)。
其中的原因有很多。
通过下面两篇摘自网上的文章可以看出SQL的发展现状。
文章:“SQL标准风光不再”(CSDN,,发表于2002年)对很多公司来说,在选择关系数据库管理系统(RDMS)时SQL标准的兼容性无疑是一重要的考虑因素,那么,为什么这一标准对数据库产品的开发商而言反倒成了可选的考虑标准呢?其实专有技术在带来产品优势的同时往往还伴随着产品质量的下降或者数据移植性的丧失,对厂商和客户的关系而言,这些后果总是有得有失。
下面就让我们探讨下ANSI SQL标准支持力度下降的原因以及标准自身的有效性。
为什么要建立标准?为什么说技术标准相当重要?原因很多,最首要的一条就是产品的用户在购买产品之前能保证产品能达到它所宣称的功能。
如果你能和某家厂商形成伙伴关系,保证你的数据管理系统一切正常,难道这样不好吗?再比如,你在选择RDMS的时候首先考虑的是其稳定、资源的有效利用率还是因为它支持竞争产品并不拥有的视图和事务功能呢?有一个标准千般好,至少,第3方厂商能由此创建出可应用于整个市场而非某一特定平台的工具和实用程序。
实验三交互式SQL(二):数据查询【实验目的】1.掌握SELECT语句的基本语法。
2.掌握集合函数的作用及使用方法。
3.熟悉普通连接、外连接和自身连接的概念。
4.能够熟练使用连接查询从多个表中查询数据。
5.能够熟练地使用子查询查询数据。
【实验学时】2学时【实验内容】以下题目均在STUxxxx(学生管理)数据库中完成。
一、简单查询1.查询年龄最小的前3个同学的姓名、专业和年龄2.查询XS表中所有同学的学号、姓名和总学分,结果中各列的标题分别指定为num,name和mark。
3.查询XS表中的学生数据来自哪些专业(使用DISTINCT子句消除结果集中的重复行)。
4.查询XS表中专业为“计算机”的同学的情况。
5.查询XS表中1992年出生的学生姓名和专业情况。
6.查询XS表中姓“张”或“王”或“李”且单名的学生的情况。
7.查询XS表中专业为“计算机”且总学分尚未确定的学生情况。
8.从XS表中查询学生的基本信息,要求按照总学分从高到低排序,学分相同时,按学号由低到高排序。
二、数据汇总1.求选修了“101”课程的学生的平均成绩。
2.求选修了“102”课程的学生的最高分和最低分。
3.求学号为“4102101”学生的总成绩。
4.求专业为“计算机”的学生的总人数。
5.求选修了“101”课程的学生的人数。
6.求选修了任意一门课程的学生的人数。
7.统计各个专业的学生数。
(按专业分组)8.统计各个专业的男女生人数。
格式如下:专业性别人数………………9.查找平均成绩在80分以上的学生的学号和平均成绩。
10.查找选修的课程中超过2门成绩在80分以上的学生的学号和成绩高于80分的门数。
格式如下:学号成绩高于80分的门数…………三、连接查询1.查询每个学生的基本情况及选修的课程情况,格式如下:学号姓名专业课程号成绩…………………………2.查询选修了课程号为101的每个学生的姓名及成绩。
3.查询“计算机”专业且选修了“计算机基础”课程的学生的学号、姓名及成绩。
SQL的简单查询功能SQL(Structured Query Language)是一种用于管理和操作关系型数据库的计算机语言。
它提供了各种功能和查询选项,用于检索和操作数据库中的数据。
以下是SQL的简单查询功能的一个详细解释,超过1200字的内容:SQL的简单查询功能包括从数据库中检索数据,排序和过滤数据,使用聚合函数进行数据计算,连接多个表,以及创建视图和子查询等。
查询通常是通过SELECT语句实现的,该语句允许用户指定要检索的数据和要执行的操作。
基本的SELECT语句格式如下:SELECT列名1,列名2,...FROM表名WHERE条件;其中,列名表示要检索的列,表名表示要检索的表,WHERE子句用于指定检索数据的条件。
查询的结果将返回一个结果集,其中包含满足查询条件的数据。
常见的查询功能包括:1.检索所有数据:如果不指定WHERE子句,则SELECT语句将返回表中的所有数据。
例如:SELECT*FROM表名;2.指定检索的列:可以通过列名列表指定要检索的列,使用逗号分隔。
例如:SELECT列名1,列名2FROM表名;3.排序数据:可以使用ORDERBY子句对结果进行排序。
可以根据一个或多个列进行排序,使用ASC(升序)或DESC(降序)关键字来指定排序顺序。
例如:SELECT列名1,列名2FROM表名ORDERBY列名ASC;4.过滤数据:使用WHERE子句指定检索数据的条件。
可以使用比较运算符(例如等于、不等于、大于、小于等)来构建条件。
例如:SELECT列名1,列名2FROM表名WHERE列名1=值;5.使用聚合函数计算数据:SQL提供了一系列聚合函数,用于对数据进行计算和分组。
常见的聚合函数包括SUM、AVG、COUNT、MAX和MIN等。
例如:SELECTCOUNT(*)FROM表名;6.连接多个表:使用JOIN子句将多个表连接在一起。
可以使用INNERJOIN、LEFTJOIN或RIGHTJOIN等关键字指定连接类型。
实验3:SQL语言操作一、实验目的:1.熟悉SQL语言的基本语法和规则2.了解CREATE、DROP语句的使用。
3.掌握INSERT、UPDA TE、DELETE语言的基本语法和规则4.掌握在查询分析器或企业管理器中执行INSERT、UPDATE、DELETE操作的方法5.掌握SQL语言函数、程序控制语句的使用二、基本原理:SQL语言的基本语法规则和相关SQL程序结构控制语法理论。
三、实验仪器设备:1.硬件:PC台/人(内存:256M以上,cpu:P4)2.软件:SQL Server2000四、实验内容:1.用Create创建表名为class和student,2.利用select和Insert语句向表中插入记录3.利用UPDATE语句更新class和student记录4.利用DELETE删除class表中的记录5.利用DROP语句删除表6.依据SQL语法,编写SQL程序执行数据库相关操作。
五、实验步骤:1).在企业管理器中用Create创建数据库或表,名为student和class,并用ALTER修改数据库和表。
建立一个名为test的数据库,可以输入如下的SQL语句:CREATE DATABASE test例如,要创建一个销售数据库,并设定数据文件为d:\销售.LDF,大小为5MB,最大为20MB,每次增长5MB。
事务日志文件为d:\ 销售.LDF,大小为5MB,最大为10MB,每次增长为1MB。
则创建的SQL语句为:CREATE DATABASE【TABLE】销售数据库ON (NAME = 销售数据,FILENAME = 'd:\Program Files\Microsoft SQL Server\MSSQL\data\销售数据.MDF',SIZE = 10MB,MAXSIZE = 50MB,FILEGROWTH = 10MB)LOG ON(NAME = 销售数据日志,FILENAME = 'd:\Program Files\Microsoft SQL Server\MSSQL\data\销售数据日志.LDF',SIZE = 10MB,MAXSIZE = 20MB,FILEGROWTH = 5MB)2)例如,为销售数据库新增一个逻辑名为“销售数据2”的数据文件,其大小及其最大值分别为10MB和50MB。
实验三数据库SQL基本表查询数据库原理及应用实验报告实验三SQL 基本表查询实验报告实验类型__综合设计__实验室_软件实验室一__SQL基本表查询1.实验项目的目的和任务:熟练掌握查询语句的一般格式,熟练掌握连接、嵌套和集合查询的使用。
2.程序代码(部分)select * from student where s# in( select s# from sc where c#!='c2') //查询没有选修了2号课程的学生名单select s#,avg(grade) from sc group by s#;//查询每个学生的平均成绩select c#,avg(grade) from sc group by c#;//查询每门课的平均成绩select * from student where s# in(select s# from sc where c#='c2') //嵌套查询select sname from student wherenot exists(select * from c wherenot exists(select * from sc where s#=student.s# and c#=c.c#))// 查询选修了全部课程的学生姓名3运行结果如图所示4实验总结通过具体的上机实践操作,掌握了SQL基本表查询。
(1)确定集合(利用“IN”操作可以查询属性值属于指定集合的元组。
利用“NOT IN”可以查询指定集合外的元组。
(2)GROUP BY 子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的值。
(3)在where子句中包含一个形如select-from-where的查询块,此查询块称为子查询或嵌套查询,包含子查询的语句称为父查询或外部查询。
嵌套查询可以将一系列简单查询构成复杂查询,增强查询能力。
实验3 数据的简单查询实验目的:1. 掌握SELECT 语句的基本语法2. 掌握子查询及order by 子句用法3. 掌握SELECT 语句的统计函数的作用和使用方法实验内容:1.针对pupil表查询所有学生的基本信息,并按出生日期升序排列select*from pupil order by birthday asc。
2.针对pupil表查询女同学的信息和女同学的人数select count(sno)from pupil where ssex=’女’。
3.在pupil表中查询所有男同学的年龄。
4.在pupil表中,(1) 查询‘刘’姓学生的信息;(2) 查询polity为’团员’或’党员’的学生信息like’刘%’。
5.在sc表中,(1) 查询各门课程的选课人数; (2) 查询缺少成绩的学生的学号及课程号select sno ,cno from sc where grade is null 。
6.查询与‘刘成’同一个系的学生情况。
7.查询选修了课程名为‘MIS’的学生的学号和姓名8.查询pubs数据库的Publishers表中居住在Boson或不住在Paris的出版商信息。
9.查询pubs数据库的salers表中saleID为s01,s05,s07的销售人员的信息。
10.查询pubs数据库的authors表中作者居住的城市和州。
11.在Northwind数据库的Products表中查询出价格在5-10元之间的产品信息。
12.在Northwind数据库的orders表中的数据,先按CustomerID的升序排列,当CustomerID相同时再按照SaleID的降序排列。
13.在Northwind数据库的Products表中,查询价格最高的6种商品。
实验三、SQL的数据查询1、实验目的熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。
2、实验内容实验内容主要是对数据库进行查询操作,包括如下四类查询方式:(1)单表查询●查询的目标表达式为所有列、指定的列或指定的列的运算三种不同.●使用DISTINCT保留字消除重复行。
●对查询结果排序和分组。
●集合分组使用集函数进行各项统计.(2)连接查询●笛卡儿连接和等值连接。
●自连接.●外连接●复合条件连接。
●多表连接。
(3)嵌套查询●通过实验验证对子查询的两个限制条件.●体会相关子查询和不相关子查询的不同.●考察四类谓词的用法,包括:第一类,IN、NOT IN;第二类,带有比较运算符的子查询;第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值;第四类,带有EXISTS谓词的子查询,实现“所有”等情况(如王宏的“所有”课程,“所有”女生选修的课程)(4)集合运算●使用保留字UNION进行集合或运算。
●采用逻辑运算符AND或OR来实现集合交和减运算.3、实验步骤以University_Mis数据库为例,该数据库中有四张如实验一,其中Score是每门课的考试成绩,Scredit是学生所有考试合格课程所获得的积分总数,Ccredit每门课程的学分数。
在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师.在表Reports 中保存学生的选课记录和考试成绩.请先输入如下元组,再对数据库进行有关的查询操作:图1.1、Students表图1.2、Teachers表图1。
3、Courses表图1.4、Reports表(1)查询性别为“男"的所有学生的名称并按学号升序排列。
SELECT wjy_SnameFROM Wangjy_StudentsWHERE wjy_Ssex='男’ORDER BY wjy_Sno(2)查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。
sqlsever实训三简单查询⽬录数据结构说明第⼀关简单查询1相关知识使⽤SQL语句中的 Select 语句。
SQL语句中关键词⼤⼩写不区分。
考虑到本系统的测评规则,在题⽬中要求对列名⼩写的,请务必按要求书写,否则会评判为错误!性别⽤’m’表⽰男,’f’表⽰⼥注:请务必将select⼦句中出现的列名⼩写,顺序必须和题⽬要求⼀致查询CS系男同学的学号,姓名,年龄SELECT sno,sname,sageFROM StudentWHERE Sdept='CS'and Ssex='m'输出结果查询不及格的学⽣选课信息,列出学号,课程号,成绩SELECT sno,cno,gradeFROM SCWHERE grade<60输出结果查询先⾏课程不为空的课程(使⽤*表⽰查询结果)SELECT cno,cname,cpno,ccreditFROM CourseWHERE cpno IS NOT NULL输出结果查询姓名中带有’n’字母的学⽣的学号,姓名(使⽤like语句)SELECT sno,snameFROM StudentWHERE sname like'%n%'输出结果使⽤distinct关键字查询学⽣表中不同的系,列出系(去除重复元祖)SELECT DISTINCT sdept FROM student输出结果第⼆关简单查询2查询90分以上学⽣的选课信息,列出学号,姓名,课程号,成绩SELECT A.sno,A.sname,o,C.gradeFROM Student A,SC CWHERE grade>90and A.Sno=C.Sno输出结果查询‘DB’课程的选课情况,列出学号,成绩SELECT A.sno,C.gradeFROM Student A,Course B,SC CWHERE ame='DB'and o=o and A.sno=C.sno输出结果第三关简单查询3查询CS系的学⽣选择‘DB’课程的情况,列出学号,成绩SELECT A.sno,C.gradeFROM Student A,Course B,SC CWHERE cname='DB'and A.sno=C.sno and o=o and sdept='CS'输出结果查询⼥同学的选课情况,列出学号,课程号,课程名,成绩SELECT A.sno,o,ame,C.gradeFROM Student A,Course B,SC CWHERE A.ssex='f'and A.sno=C.sno and o=o输出结果。
实验三SQL语言进行简单查询一、实验目的掌握简单数据查询操作。
二、实验内容使用各种查询条件完成指定的查询操作三、实验步骤1、查询选修了课程的学生人数。
select count(*)from sc;2、查询学生200515004选修课程的总学分数。
select sum(credit)from student,course,scwhere student.sno=sc.sno ando=o andstudent.sno='200515004'3、查所有有成绩的学生学号和课程号。
select*from student,scwhere student.sno=sc.sno andgrade is not null;4、查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄select sname,sdept,sagefrom studentwhere sage between 20 and 23;5、查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
select sno,gradefrom scwhere cno='3'order by grade desc6、求哪些学生还没有被分配系?select sno,snamefrom studentwhere sdept is null;7、求CS系中所有男同学的学生姓名和年龄。
select sname,sagefrom studentwhere sdept='cs'andssex='男';8、我校开设的课程中哪些课程名以“数据”两个字开头?select cnofrom coursewhere sdept like'数据%';9、求哪些学生的姓名中第2个字是“立”?select *from studentwhere sname LIKE'_立%'10、求哪些学生的成绩为优秀,求出该学生的学号及相应的课程号。
实验三SQL数据查询(简单查询)姓名:学号:专业:网络工程班级:20网络工程同组人:无实验日期:【实验目的与要求】1、熟练掌握SELECT 语句的基本语法格式;2、熟练掌握使用SQL语句进行单表查询,掌握GROUP BY子句、HA VING 子句和集函数;3、熟练掌握使用SQL标准语句和T-SQL扩展语句进行连接查询。
【实验内容】3.0. 实验准备与说明本实验将用到实验二中数据库SalesDB和相应的表及数据,若该数据库及表尚未创建,或数据尚未录入,则请先完成之。
请根据前面实验创建的表结构和数据,完成如下查询。
本实验及后面实验中所用测试数据库中表的字段及含义如下表:表-1 测试数据库表的字段及含义3.1.简单查询(1).查询各种产品的产品编号、产品名称和价格。
请给出相应语句:USE SalesDB;SELECT Pno,Pname,Price FROM Product;请给出运行结果:(2).查询所在城市为“厦门”的客户编号和客户名称,结果中各列的标题分别指定为:“客户编号”和“客户名称”显示。
请给出相应语句:SELECT Cno as客户编号,Cname as客户名称FROM Customer WHERE City='厦门';请给出运行结果:(3).查询各产品编号、名称、库存量和产品总值。
(总值:价格与库存数量的积)请给出相应语句:SELECT Pno,Pname,Price ,Stocks FROM Product;SELECT SUM(Price*Stocks)as产品总值FROM Product;请给出运行结果:(4).查询曾购买过产品的客户编号(不重复)。
请给出相应语句:SELECT Cno FROM Customer;请给出运行结果:(5).查询价格在1000-2000的产品信息,并依价格由低到高的顺序排序。
(请使用Between…and和算术比较运算符分别实现)a.使用Between…and比较实现:请给出相应语句:use SalesDB;select*from Productwhere Price between 1000 and 2000order by Price;请给出运行结果:b.使用算术比较实现:请给出相应语句:use SalesDB;select*from Productwhere Price >= 1000 and Price<=2000order by Price;请给出运行结果:(6).查询产品名称含有“热水器”的产品信息。
实验3 SQL的简单查询功能
实验目的
学会使用MS SQL SERVER 2000的查询分析器完成SQL的简单查询功能,主要包括单表查询的选择、投影、排序、聚集函数、分组等。
知识点拨:
1.查询语句基本格式:
2.单表查询;
3.选择
4.投影
5.排序
6.聚集函数
7.分组查询
1.分组查询与选择的比较:
实验内容
1.掌握SQL查询语句的一般格式;
2.学会使用查询分析器进行包括选择、投影、排序、聚集函数、分组等的单表查询;
实验步骤
1.选择数据库JX;
2.以下查询操作使用查询分析器完成:
(1)查询所有教师的教工号、姓名和电话号码信息,查询结果列项是中文名;
SELECT Tno 教工号,Tname 姓名,Tphone 电话号码信息
FROM Teacher
(2)查询‘计算机’系的所有副教授的基本信息;
SELECT *
FROM Teacher
WHERE Tdept='CS' AND Tprof='副教授'
(3)查询所有女同学的姓名及所在的系,显示结果不允许重复出现;
SELECT DISTINCT Sname,Sdept
FROM Student
WHERE Sex='女'
(4)查询各教师的姓名、教工号及工资按95%发放的信息,并将按95%发放的工资列改名为‘预发95%工资’;
SELECT Tname,Tno,Tpay*0.95 '预发95%工资'
FROM Teacher
(5)假设学号的5个数字中,前2位代表年级,后3位为序号,检索计算机06级总学分在150~195的学生信息,并按学号降序排列;
SELECT *
FROM Student
WHERE SUBSTRING(Sno,1,2)='06' AND
Total BETWEEN 150 AND 195
ORDER BY Sno DESC
注:取字符串的一个子串可以用函数SUBSTRING(串,开始位置,长度)
(6)查询修正后的学分(原学分-1)仍然大于3的课程的代号、名称、原先的学分、修正后的学分;
SELECT Cno,Cname,Credit,Credit-1 修正后的学分
FROM Course
WHERE Credit-1>3
(7)查询课程号不为‘1’、‘4’、或‘7’的课程的信息;
SELECT *
FROM Course
WHERE Cno NOT IN(1,4,7)
(8)查询所有姓‘张’、或‘刘’或‘高’的学生信息;
SELECT *
FROM Student
WHERE Sname LIKE '张%' OR Sname LIKE'刘%' OR Sname LIKE '高%'
(9)查询每个系有多少个同学;
SELECT Sdept,COUNT(*)
FROM Student
GROUP BY Sdept
(10)查询各课程的平均成绩并按成绩降序排列;
SELECT Cno,AVG(Grade)
FROM SC
GROUP BY Cno
ORDER BY AVG(Grade) DESC
(11)查询有两门课在90分以上的学生学号及90分以上课程数;
SELECT Sno,COUNT(*)
FROM SC
WHERE Grade>90
GROUP BY Sno
HAVING COUNT(*)>=2
(12)统计每门课程的选课人数、平均成绩、最高成绩、最低成绩;
SELECT Cno,Count(Sno),A VG(Grade),MAX(Grade),MIN(Grade) FROM SC
GROUP BY Cno
(13)列出课程表中有先行课的课程名。
SELECT Cname
FROM Course
WHERE Cpno IS NOT NULL。