实验二 SQL 数据查询

合集下载

实验二SQL语言——数据查询操作

实验二SQL语言——数据查询操作

实验二SQL语言——数据查询操作SQL (Structured Query Language) 是一种用于管理关系数据库系统的标准语言。

在数据查询操作方面,SQL 可以帮助用户从数据库中检索想要的数据,通过下面的实验,我们将深入了解 SQL 语言在数据查询操作中的应用。

一、SELECT语句SELECT语句是SQL中最常用的语句之一,它用于从数据库中选择需要查询的数据。

SELECT语句的基本语法如下:```SELECT列名1,列名2,...FROM表名;```例如,我们有一个名为 "Students" 的表,其中包含了学生的姓名、年龄和性别等信息。

要查询学生的姓名和年龄,我们可以使用以下SELECT 语句:```SELECT 姓名, 年龄 FROM Students;```二、WHERE子句WHERE子句用于在SELECT语句中添加过滤条件,只返回满足条件的数据。

下面是WHERE子句的基本语法:```SELECT列名1,列名2,...FROM表名WHERE条件;```例如,我们要查询年龄大于等于18岁的学生信息,可以使用以下SELECT语句:```SELECT * FROM Students WHERE 年龄 >= 18;```三、ORDERBY子句ORDERBY子句用于按照指定的列进行排序,可以按照升序或降序排列。

下面是ORDERBY子句的基本语法:```SELECT列名1,列名2,...FROM表名ORDERBY列名[ASC,DESC];```例如,我们要按照学生的年龄从小到大排序,可以使用以下SELECT语句:```SELECT * FROM Students ORDER BY 年龄 ASC;```四、GROUPBY子句GROUPBY子句用于将查询结果按照一个或多个列进行分组,并对每个组进行聚合操作。

下面是GROUPBY子句的基本语法:```SELECT列名1,列名2,...FROM表名GROUPBY列名1,列名2,...;```例如,我们要统计每个性别的学生人数```SELECT 性别, COUNT(*) FROM Students GROUP BY 性别;```五、HAVING子句HAVING子句用于在GROUPBY子句中添加过滤条件,只返回满足条件的分组。

实训二 SQL 数据查询

实训二 SQL 数据查询

实训二 SQL 数据查询[实验目的]:•熟练掌握条件查询、分组查询以及查询的排序;•灵活运用集函数及统计汇总查询;•掌握多表之间的等值连接与非等值连接、自身连接;•使用多种子查询进行查询。

[实验要求]:利用实验一中创建的四个基本表学生情况基本表 s (sno,sname,sex,age,deptno)课程基本表 c (cno,cname,teacher)选课基本表 sc (sno,cno,score)系别基本表 d (deptno,deptname,addr)用SQL语句完成如下操作。

[实验步骤]:一、基本查询1、查询全体学生的学号、姓名和年龄,并分别为三列指定别名;2、查询选修了课程的学生号;二、条件查询1、查询选修课程号为‘ IS01'的学生的学号和成绩;2、查询选修课程号为IS01或IS02且分数大于等于85分学生的学号、课程号和成绩;3、查询既不是女生,年龄也不是 20岁的学生;4、查询所有计算机系开设的课程;(注:课程编号的规则为:系号(例如:IS、CS、MA)+序列号(01、02、03┄),例如:CS01,CS02,IS01等等)三、常用集函数及统计汇总查询1、求学号为 02011201学生的总分和平均分;2、求选修课程号为 IS01的最高分、最低分及之间相差的分数,并分别为三列指定别名。

3、统计有成绩同学的人数;4、求女学生总数和平均年龄;四、分组查询及排序1、查询选修两门以上课程的学生的学号和选课门数;2、查询平均成绩大于 70分的课程号和平均成绩;3、查询有3门以上课程成绩大于90分的学生的学号及课程数;4、列出计算机系所开课程各科的最高成绩、最低成绩和平均成绩。

如果某门课程的成绩不全,则该课程不予统计,结果按Cno升序排列。

五、等值连接 /非等值连接、自身连接1、检索至少选修了课程号为IS01号和IS02号的学生学号;(表的自身连接实现)2、输出学生成绩在 80—90分之间的学生名单,列出学号、姓名、分数和课程名。

实验2、SQL的数据查询

实验2、SQL的数据查询

实验2、SQL的数据查询实验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表图1.3、Courses表图1.4、Reports表〔1〕查询性别为“男〞的所有学生的名称并按学号升序排列。

〔2〕查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。

积分的计算公式为:[1+(考试成绩-60)*0.1]*Ccredit。

实验二 SQL语句查询

实验二 SQL语句查询

SQL语句查询练习实验报告一、实验项目名称SQL查询语句练习二、实验目的熟练掌握SQL查询语句,能够运用该语句完成各种查询。

三、实验环境1.硬件:网络实验室2.软件:Windows98/2000等操作系统,安装SQL Server 2000个人版或企业版四、实验内容book(总编号,分类号,书名,作者,出版社,单价,是否在库)图书数据表bookreader(借书证号,单位,姓名,性别,年龄,职称,地址)读者数据表readerborrow(借书证号,总编号,借书日期,还书日期)例题1:创建名为bookstore的数据库删除名为bookstore的数据库3.建立基本表reader(借书证号,单位,姓名,性别,年龄,职称,地址)4.删除基本表reader5.为book表在总编号上建立聚集索引6.删除book表在总编号上建立的索引7.在book表的基础,建立book_w视图,包含总编号,分类号,书名,作者8.删除视图book_wCREATE DATABASE bookstoreDROP DATABASE bookstoreCREATE TABLE reader(借书证号,单位,姓名,性别,年龄,职称,地址)DROP TABLE readerCREATE CLUSTER INDEX all_number ON book(总编号)DROP INDEX book.all_numberCREATE VIEW book_w as select 总编号,分类号,书名,作者 from book DROP VIEW book_w例题2:1.查询单位为“化工系”的读者的借书证号、姓名、职称。

2.查询单位为“化工系”或“数学系”,职称为“讲师”的读者的姓名及单位。

3.查询单价在10~20元之间的图书的书名、作者、出版单位、单价。

4.查询单位为“外语系”或“建工系”读者的姓名、单位、职称。

5.查询所有姓刘的读者的姓名、单位。

数据库实训课程学习总结实践SQL查询与数据库管理

数据库实训课程学习总结实践SQL查询与数据库管理

数据库实训课程学习总结实践SQL查询与数据库管理在数据库实训课程的学习过程中,我深入了解了SQL查询与数据库管理的基本原理和操作技巧。

通过实践操作,我逐渐掌握了SQL语言的基本语法和常用命令,熟悉了数据库的创建、备份与恢复、索引优化等管理技术。

本文将对我在数据库实训课程中的学习经历与心得进行总结,提供给同学们参考与交流。

1. 实践SQL查询在数据库实训课程中,我首先学习了SQL语言的基本语法和常用命令,了解了如何使用SELECT、INSERT、UPDATE和DELETE等命令进行数据的查询、插入、更新和删除。

在实践过程中,我发现了一些查询优化的技巧。

首先,合理选择WHERE子句中的条件和逻辑运算符。

我通过分析查询需求,尽量减少WHERE子句中的条件数量,避免不必要的逻辑运算符。

此外,我还学会了使用索引来加速查询操作,提高查询性能。

其次,合理使用JOIN操作连接多个数据表。

在实践过程中,我遇到了需要连接两个或多个数据表的情况。

通过学习JOIN操作,我可以根据不同的连接关系选择适合的JOIN类型,并且编写出高效的JOIN查询语句。

最后,学会使用子查询进行复杂查询。

子查询是SQL语言的一个重要特性,通过嵌套查询语句,我可以从多个数据表中获取需要的数据,并且可以进行更复杂的条件筛选和排序。

通过实践操作,我逐渐掌握了子查询的使用技巧,提升了查询的灵活性。

2. 数据库管理操作除了SQL查询,数据库实训课程还涉及到了数据库的管理操作。

在实践过程中,我学习了如何创建数据库、备份和恢复数据库、以及优化数据库的性能。

首先,我学会了使用CREATE DATABASE语句创建数据库。

通过指定数据库的名称、字符集和校对规则等参数,我可以在数据库管理系统中创建一个新的数据库。

其次,我了解了数据库备份和恢复的操作。

通过学习备份和恢复的基本原理和方法,我可以对数据库进行定期备份,以防止数据丢失。

同时,当数据库发生故障时,我也可以通过恢复操作将数据库恢复到正常状态。

数据库原理实验2数据查询

数据库原理实验2数据查询

课程名称数据库原理实验序号 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系的全体学生姓名与学号。

数据库实验答案实验二Sql

数据库实验答案实验二Sql

(1) 查找有销售记录的客户编号、名称和订单总额。

命令:SELECT a.CustomerNo,CustomerName, sum(quantity*price) orderSumFROM OrderMaster a,OrderDetail b,Customer cWHERE b.orderNo=a.orderNo AND c.CustomerNo=a.CustomerNoGROUP BY a.CustomerNo,CustomerNameORDER BY a.CustomerNo,orderSum DESC(2) 在订单明细表中查询订单金额最高的订单。

命令:SELECT top 1 orderNo,sum(quantity*price)订单金额FROM OrderDetailGROUP BY orderNoORDER BY 订单金额DESC(3) 查询没有订购商品的客户编号和客户名称。

命令:SELECT CustomerNo,CustomerNameFROM CustomerWHERE CustomerNo NOT IN (SELECT CustomerNo FROM OrderMaster)(4) 找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。

命令:SELECT a.productNo,orderNo,quantity,(quantity*price) moneyFROM OrderDetail a,(SELECT productNoFROM OrderDetailGROUP BY productNoHA VING COUNT(*)>=3) bWHERE a.productNo =b.productNoORDER BY a.productNo,quantity DESC被订购三件以上的……SELECT b.ProductNo,orderNo,quantity,orderSum=quantity*priceFROM OrderDetail b,(SELECT ProductNo FROM(SELECT ProductNo,sum(quantity)SQfrom OrderDetail GROUP BY ProductNo)aWHERE a.SQ>3)cWHERE b.ProductNo=c.ProductNoORDER BY b.quantity DESC(5) 使用子查询查找32M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示。

实验二 sql查询

实验二  sql查询

实验二数据查询实验一、学时2学时二、实验类型综合三、实验目的熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算)四、实验方法及步骤1.在表S、C、SC上进行简单查询;2.在表S、C、SC上进行连接查询;3.使用聚合函数的查询;4.对数据的分组查询;5.对数据的排序查询。

五、实验内容1.创建学生-课程数据库2.创建学生关系表S :5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。

SNO SName SSex SAge SdeptTX0214 张名M 23 信息系TX0215 李军M 21 外语系TX0216 张玲 F 20 经贸系TX0217 刘放M 19 信息系TX0218 袁齐M 18 理学系TX0219 李冰冰 F 17 经贸系TX0220 云 F 24 建筑系CNO CName Ctea CPno CreditA11 代数李C2 2C1 高数张彤C3 3C12 办公自动周C3 4化C2 英语李名春 2C3 数字信号周名c4 3C4 网络袁名 3SNO CNO gradeTX0214 C1 76TX0214 C2 56TX0214 C3 76TX0215 C1 86TX0215 C2 78TX0215 C3 76TX0216 C1 75TX0216 C2 76TX0217 C1 78TX0218 C1 56TX0218 C3 67TX0218 C4 45TX0219 C1 89TX0219 C2 34TX0219 C4 67TX0220 A11 78TX0221 A11在表S,C,SC上完成以下查询:1.查询学生的基本信息;2.查询“信息系”学生的基本信息;3.查询“信息系”学生年龄不在19到21之间的学生的学号、姓名;4.找出最大年龄;5.找出“信息系”年龄最大的学生,显示其学号、姓名;6.找出各系年龄最大的学生,显示其学号、姓名;7.统计“信息系”学生的人数;8.统计各系学生的人数,结果按升序排列;9.按系统计各系学生的平均年龄,结果按降序排列;10.查询每门课程的课程名;11.查询无先修课的课程的课程名和学时数;12.统计无先修课的课程的学时总数;13.统计每位学生选修课程的门数、学分及其平均成绩;14.统计选修每门课程的学生人数及各门课程的平均成绩;15.找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列;16.查询选修了“1”或“2”号课程的学生学号和姓名;17.查询选修了“1”和“2”号课程的学生学号和姓名;18.查询选修了课程名为“高数”且成绩在60分以下的学生的学号、姓名和成绩;19.查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);20.查询没有选修课程的学生的基本信息;21.查询选修了3门以上课程的学生学号;22.查询选修课程成绩至少有一门在80分以上的学生学号;23.查询选修课程成绩均在80分以上的学生学号;24.查询选修课程平均成绩在80分以上的学生学号;25.在表SC中插入某个学生的选课信息(如:学号为“95001”,课程号为“c123”,成绩待定)26.将“计算机”系全体学生的成绩置零;27.把选修了课程名为“数字信号”的学生的成绩提高10%28.把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生的成绩提高5%;29.把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生成绩删除掉。

实验二SQL查询知识

实验二SQL查询知识

实验二SQL查询知识1. SQL查询基础SQL(Structured Query Language)是一种用于在关系型数据库中进行数据操作的语言。

在实验二中,我们将学习SQL 查询的基础知识和常用语句。

1.1 SELECT语句SELECT语句用于从数据库中查询数据。

其基本语法如下:SELECT 列名1, 列名2, ... FROM 表名;其中,列名是要查询的数据列名,表名是要查询数据的表名。

例如,查询学生表中所有学生的学号和姓名,可以使用以下SQL语句:SELECT学号, 姓名FROM学生表;1.2 WHERE子句WHERE子句用于添加条件限制,在查询语句中使用。

其基本语法如下:SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;条件是一个表达式,用于筛选符合条件的数据行。

例如,查询学生表中年龄大于等于18岁的学生信息,可以使用以下SQL语句:SELECT*FROM学生表WHERE年龄>=18;1.3 排序ORDER BY语句用于对查询结果进行排序,默认是按照升序排列。

其基本语法如下:SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名 [ASC|DESC];例如,查询学生表中年龄大于等于18岁的学生信息,并按照年龄降序排列,可以使用以下SQL语句:SELECT*FROM学生表WHERE年龄>=18ORDER BY 年龄DESC;1.4 聚合函数聚合函数用于对数据进行统计计算,常用的聚合函数包括COUNT、SUM、AVG、MAX和MIN等。

下面是一些常用的聚合函数及其使用方法:•COUNT:统计行的数量SELECT COUNT(*) FROM表名;•SUM:计算指定列的总和SELECT SUM(列名) FROM表名;•AVG:计算指定列的平均值SELECT AVG(列名) FROM表名;•MAX:计算指定列的最大值SELECT MAX(列名) FROM表名;•MIN:计算指定列的最小值SELECT MIN(列名) FROM表名;1.5 LIMIT子句LIMIT子句用于限制查询结果返回的行数。

SQL查询实验报告

SQL查询实验报告

SQL查询实验报告实验题目:sql查询——简单查询【实验目的与要求】一、实验目的1. 熟练掌握单表查询的select语法结构;2. 通过观察查询结果, 体会select语句的实际应用。

二、实验要求1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作。

2.能认真独立完成实验内容。

3.实验后做好实验总结,根据实验情况完成实验报告。

【实验环境】pc机、windows xp系统+sql server 2005 【实验内容】基于实验一建立的educ 数据库,用transact-sql 语句实现如下查询:1.选修了课程的学生学号;2.计算机系的学生;3.计算机系学生的学号和姓名;4.计算机系和信息系的男生信息;(提示:逻辑运算符的优先级顺序)5.选修上课编号为1且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75输出;(提示:新输出项要命名列标题)6.没有成绩的学生的学号和上课编号;7.选修上课编号为1或4的学生的学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;(提示:查询输出哪几项)8.1995年1月1日(含)以后出生的学生信息,并按姓氏拼音字母顺序从前往后排列(注:默认排序规则通常是chinese_prc_ci_as,汉字按照汉语拼音的字典顺序来排序:首先按拼音,拼音相同按声调,声调相同按笔画数。

)9.姓李和刘的学生的信息;10.不姓张王李刘的学生的学号、姓名和性别;11.选修课程的学生人数;12.选修上课编号为1的学生的最高分;13.每位学生所修课程的平均分;14.选修两门以上课程的学生;15.总成绩大于200 分的学生的学号和总成绩。

(提示:group by分组统计)【实验方法和步骤】1.新建查询,在查询编辑器中依次按照如上实验内容编写select 语句完成查询。

2.每执行一条查询语句,在查询结果网格中查看执行结果是否正确。

实验二 SQL 2008数据库的查询

实验二 SQL 2008数据库的查询

实验二数据库的查询一、实验内容1.SELECT语句的基本使用;2.子查询的使用,连接查询的使用,数据汇总,Group By、Order By子句的使用。

二、实验步骤1.SELECT语句的基本使用(1)对于实验1给出的数据库表结构,查询每个雇员的所有数据。

在查询分析器的窗口输入如下的语句并执行:USE YGGLSEIECT *FROM EmployeesGO【思考与练习】用SELECT语句查询Departments和Salary表的所有记录。

USE YGGLSELECT*FROM DepartmentsGO(2)查询每个雇员的地址和电话。

在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Address,PhoneNumberFROM EmployeesGO【思考与练习】用SELECT语句查询Departments和Salary表的一列或若干列。

USE YGGLSELECT Income,OutcomeFROM SalaryGO(3)查询EmployeeID为000001的雇员的地址和电话。

在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Address,PhoneNumber 7FROM EmployeesWHERE EmployeelD=’000001’GO【思考与练习】用SELECT语句查询Departments和Salary表中满足指定条件的1列或若干列USE YGGLSELECT DepartmentName,noteFROM DepartmentsWHERE DepartmentID='1'GO(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。

在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Address AS地址,PhoneNumber AS电话FROM EmployeesWHERE sex=0GO注意:使用AS子句可指定目标列的标题。

数据库实验3-SQL语言之数据查询(简单查询)

数据库实验3-SQL语言之数据查询(简单查询)

实验三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).查询产品名称含有“热水器”的产品信息。

实验2 T-SQL简单数据库查询

实验2 T-SQL简单数据库查询

课程数据库原理及应用_ 实验名称 T-SQL简单数据库查询教师审批签字一.实验目的1.牢记SELECT 语句的基本语法格式;2.掌握利用SQL语句进行多表内/外连接查询和嵌套查询的方法;3.掌握GROUP BY子句、HA VING子句、ORDER BY子句的用法;4.掌握(NOT)IN、(NOT)EXISTS等谓词的用法;5.掌握SUM、A VG、COUNT、MAX、MIN等集合函数的用法;二.实验内容及要求对CPXS数据库,完成如下查询任务:根据上述情况完成:1.查询地区在“郑州”的客户编号和客户名称,结果中各列的标题分别指定为:CustomerID和CustomerName。

2.查询价格在1000-2000之间的产品信息。

3.查询产品名称含有“变频”字样的产品情况。

4.按商品编号统计各种产品在国庆黄金周期间的销售单数(记录数)、总销量和销售总额,并对统计结果按照销售总额降序排序。

5.列出购买2种以上产品的客户编号。

6.(结合上题)列出购买2种以上产品的客户编号、客户名称、地区、负责人和电话。

7.统计每个客户在国庆黄金周期间的购物情况(客户编号、名称、消费总金额和最近消费日期),即使某些客户没有消费记录,也要包括其信息。

8.查询在国庆黄金周期间没有任何销售记录的产品编号、名称及库存量。

三.实验过程及结果1.USE CPXSSELECT客户编号CustomerID,客户名称CustomerNameFROM客户WHERE地区='郑州市'2.USE CPXSSELECT*FROM产品WHERE价格BETWEEN 1000 AND 20003.USE CPXSSELECT*FROM产品WHERE产品名称LIKE'%变频%'4.USE CPXSSELECT产品.产品编号,COUNT(销售.客户编号)销售单数,SUM(销售.数量)总销量,SUM(销售.数量*产品.价格)销售总额FROM销售INNER JOIN产品ON销售.产品编号=产品.产品编号WHERE销售日期BETWEEN'2011-10-01'AND'2011-10-07'GROUP BY产品.产品编号ORDER BY销售总额DESC5.USE CPXSSELECT客户编号FROM销售GROUP BY客户编号HAVING COUNT(产品编号)>=26.USE CPXSGOSELECT a.*FROM客户 a inner join销售 bON a.客户编号=b.客户编号GROUP BY a.客户编号,a.客户名称,a.地区,a.负责人,a.电话HAVING COUNT(b.产品编号)>=27.SELECT a.客户编号,c.客户名称,SUM(a.数量*b.价格)消费总金额,MAX(a.销售日期)最近消费日期FROM销售 a FULL JOIN产品 bON a.产品编号=b.产品编号FULL JOIN客户 cON a.客户编号=c.客户编号WHERE a.销售日期BETWEEN'2011-10-01'AND'2011-10-07'GROUP BY a.客户编号,c.客户名称8.USE CPXSSELECT b.产品编号,b.产品名称,b.库存量FROM销售 a FULL JOIN产品 bON a.产品编号=b.产品编号WHERE b.产品编号NOT IN(SELECT a.产品编号FROM销售a FULL JOIN产品bON a.销售日期BETWEEN'2011-10-01'AND'2011-10-07') GROUP BY b.产品编号,b.产品名称,b.库存量四.实验中的问题及心得起初时因为日期的原因产生错误,主要是因为日期需要用单引号。

Sql实验2-数据查询

Sql实验2-数据查询

实验报告课程名称数据库原理与应用实验名称数据查询系别______________ ___ _ 专业班级______________ ____ 指导教师____________ ____学号______ ______ 姓名________ ____实验日期_____________实验成绩_________ __一、实验目的1.熟悉各种基本的数据查询的含义。

2.掌握数据查询的SQL语句编写方法。

3.能根据要求写出正确的查询语句。

4.掌握基本的调试方法。

二、实验环境1.硬件环境:微机2.软件环境:Windows,Sql server三、实验内容及步骤题目根据要求编写以下SQL查询语句,并对运行结果截图第一题简单查询1.查询病人表,显示所有病人的病人编号、保险公司名称、电话号码(别名:病人电话),要求按年龄从大到小顺序排列。

2.要求查询病人年龄在20~60岁之间的最年轻的前6位病人的姓名、病人年龄信息。

3.要求查询姓“王”、姓“李”或姓“关”的所有病人的信息。

(提示:用“in”或者用“or”两种方法查询。

)步骤(写出以上SQL语句).1.2.3.第二题分组查询1.查询病人表,要求显示最大年龄值、最小年龄值、平均年龄值2.查询病人表,要求统计在各个保险公司投保的各自病人数。

(两种方法:group by与compute by)3.查询病人表,要求统计投保人数2人以上(含2人)的保险公司名称与投保人数。

步骤1.2.3.第三题多表联接查询1.统计一下“柳四二”该病人的看病次数,以及结算总金额。

2.查询'张明仁'医生看过的所有病人资料(病人编号,病人姓名,医生姓名)。

3.显示出院日期在2008年间每个病人的最高的一笔结算金额。

(注:要显示的信息有--病人编号,病人姓名,最高的结算金额)步骤1.2.3.第四题嵌套查询1.查询所有有看过病的病人编号,病人姓名。

2.查询在“内科”科室的看过病的病人信息,显示病人编号,病人姓名。

数据库实验二,sql查询语句

数据库实验二,sql查询语句

实验二:数据查询语言实验内容SQL数据查询语句:例5-1:(选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。

select sno,sname,sex,sage from student;例5-2:(不选择重复行) 求选修了课程的学生学号。

select distinct cno from sc where cno is not null;例5-3:(选择表中的所有列) 求全体学生的详细信息。

select * from student;例5-4:(使用表达式) 求全体学生的学号、姓名和出生年份。

select sno,sname,birthday from student;例5-5:(使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。

select sno as"学号",birthday as"出生年份" from student;例5-6:(比较大小条件) 求年龄大于19岁的学生的姓名和年龄。

select sname,age from studentwhere age>19;例5-7:(比较大小条件) 求计算机系或经济管理系年龄大于18岁的学生的姓名、系和年龄。

select sname,depname ,agefrom student,departmentwhere student.depno=department.depnoand age>18;例5-8:(确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。

select sno,age from studentwhere age in(19,22);例5-9:(确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。

select sno,age from studentwhere age not in(19,22);例5-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。

实验二SQL语言——数据查询操作

实验二SQL语言——数据查询操作

个人收集整理-ZQ一、实验时间:二、实验地点:教三、实验条件与环境通用机机必须安装系列、系列或操作系统平台个人收集整理勿做商业用途机还须安装任意一版本(个人版、标准版、企业版)个人收集整理勿做商业用途最好有一台公用地服务器四、实验目地通过上机实验进一步加深对查询语句地基本语法格式地掌握通过上机实验掌握单表查询地实现过程通过上机实验掌握多表关联查询地实现过程通过上机实验掌握嵌套查询地实现过程通过上机实验掌握集函数与谓词在语句中地使用五、实验要求:本实验所有实验内容要求在规定时间(课时)内完成实验内容中涉及到地各查询操作均通过语言来实现.实验完成后需要书写实验报告,本次实验报告需在下次实验课堂上上交六、实验内容:.查询为工程供应零件地供应商号码.查询为工程供应零件地供应商号码.查询为工程供应红色零件地供应商号码.查询没有使用天津供应商生产地零件并且当前工程所使用零件地颜色全部为红色地工程号.查询至少选用了供应商所供应地全部零件地工程号.找出所有供应商地名称和所在城市.找出所有零件地名称、颜色和重量.找出使用供应商所供应零件地工程号码.找出工程项目使用地各种零件地名称及其重量.找出上海厂商供应地所有零件号码.找出使用上海产地零件地工程名称.找出没有使用天津产地零件地工程号码.找出重量最轻地红色零件地零件编号.找出供应商与工程所在城市相同地供应商提供地零件号码.找出供应商为工程名中含有“厂”字地工程供应地零件数量总和.找出为工程供应零件地总数量不低于地供应商号码及供应总数量,结果按供应商号码分类并且按供应总数量降序排列个人收集整理勿做商业用途七、实验总结:数据查询是一种极为重要地面向数据库地数据操纵方式.实验完成后,请同学们总结一下语句实现各种类型查询任务地一般过程和操作实现方法,并对利用语句实现各类查询任务地解题规律与方法作一总结.个人收集整理勿做商业用途1 / 1。

实验2SQL语言—SELECT查询操作

实验2SQL语言—SELECT查询操作

实验2SQL语言—SELECT查询操作SELECT查询操作是SQL语言中最常用和最重要的操作之一、SELECT 语句用于从数据库中检索数据,并将其返回给用户。

它可以用于从一个或多个表中选择特定的列,使用条件筛选数据,并对结果进行排序和分组。

SELECT语句的基本语法如下:SELECT列名1,列名2,...FROM表名WHERE条件;其中,列名是要检索的数据列的名称,可以是单个列名或多个列名,使用逗号分隔。

表名是要从中检索数据的表的名称。

条件是可选的,用于过滤不满足条件的行。

如果省略WHERE子句,则SELECT语句将返回表中的所有行。

下面是一些常用的SELECT查询操作的示例:1.检索所有列的数据:SELECT*FROM表名;这将返回表中的所有列的所有行。

2.检索特定列的数据:SELECT列名1,列名2,...FROM表名;这将返回表中指定列的所有行。

3.使用条件过滤数据:SELECT列名1,列名2,...FROM表名WHERE条件;条件可以使用比较运算符(如等于、大于、小于等),逻辑运算符(如AND、OR、NOT等)和通配符(如%和_)进行定义。

4.对结果进行排序:SELECT列名1,列名2,...FROM表名ORDERBY排序列ASC/DESC;ASC表示升序排序,DESC表示降序排序。

默认情况下,数据将按照升序排序。

5.对结果进行分组:SELECT列名1,列名2,...FROM表名GROUPBY列名;GROUPBY子句用于将数据按照指定的列进行分组。

通常与聚合函数(如SUM、AVG、COUNT等)一起使用,以便对每个组的结果进行计算。

6.使用聚合函数计算数据:SELECT聚合函数(列名)FROM表名;聚合函数可以计算一列的总和、平均值、最大值、最小值等。

SELECT查询操作还可以包括其他进阶功能,如子查询、连接表和使用别名等。

子查询用于在主查询中嵌套其他查询,连接表用于将多个表中的数据按照指定的条件进行关联,而别名用于为表和列指定临时名称。

SQL实验二:数据库查询实验报告

SQL实验二:数据库查询实验报告

SQL实验二:数据库查询实验报告实验二数据库的查询实验一、实验目的和要求(1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。

(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

二、实验内容和原理在实验一定义的“学生成绩数据库”中,使用T-SQL语句完成以下查询:(1)求计算机系学生的学号和姓名。

(2)求选修了数学的学生学号、姓名和成绩。

(3)求选修01课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

(4)查找选修课程的平均成绩位于前三名的学生的学号。

(5)查询计算机系的姓刘且单名的学生的信息。

(6)查询至少选修两门课程的学生学号。

(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。

(8)查询选修“数据库”课程,且成绩在80分以上的学生的学号和成绩。

(9)查询所有姓“王”的同学没有选修的课程名。

(请分别用exists和in完成该查询)(10)查询选修了全部课程的学生的姓名。

(请至少写出两种查询语句)(11)求选修了学生“*****”所选修的全部课程的学生学号和姓名。

(12)查询每一门课的间接先修课。

(13)列出所有学生所有可能的选课情况。

(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。

(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。

(请至少写出两种查询语句)(16)查询至少被两名男生选修的课程名。

(17)对被两名以上学生所选修的课程统计每门课的选课人数。

要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列。

(18)列出选修课程超过3门的学生姓名及选修门数。

(19)检索至少选修课程号为01和03的学生姓名。

(20)检索至少选修课程“数学”和“操作系统”的学生学号。

SQL数据查询之二

SQL数据查询之二

淮海工学院计算机工程学院实验报告书课程名:《数据库基础与应用》题目:SQL数据查询之二班级:G计算机111学号:姓名:评语:成绩:指导教师:批阅时间:年月日一.目的与要求1、 掌握连接查询尤其是自身连接的使用。

2、 掌握嵌套查询的应用,学会使用IN、比较运算、谓词等不同嵌套查询3、 了解集合查询4、 总结SQL查询的一般语法格式,学会举一反三地使用各种查询命令。

二.实验内容完成P127页上习题3、4、5(1-7)的内容:3、用SQL语句建立S,P,J,SPJ表。

4、(1)查询供应工程J1零件的供应商号码SNO(2)查询供应工程J1零件P1的供应商号码SNO(3)查询供应工程J1零件为红色的供应商号码SNO(4)查询没有使用天津供应商生产红色零件的工程号JNO(5)查询至少用了供应商S1所供应的全部零件的工程号JNO5、(1)查询所有供应商的姓名和所在城市(2)查询氖零件的名称,颜色,重量(3)查询使用供应商S1所供应零件的工程号码(4)查询工程项目J2使用的各种零件及数量(5)所出上海厂商供应的所有零件号码(6)查询使用上海的零件的工程名称(7)查询没有使用天津的零件的工程号码三.实验步骤1、新建数据库。

2、用SQL语言建立各个数据表。

3、对各个表输入数据。

4、用SQL语言对表按要求进行查询。

四.测试数据与实验结果图1新建数据库图2建立S表图3建立P表图4 建立J表图5 建立SPJ表图6表J数据图7 表P数据图8表S数据图9表SPJ数据图10查询供应工程J1零件的供应商号码SNO图11查询供应工程J1零件P1的供应商号码SNO图12 查询供应工程J1零件为红色的供应商号码SNO图13查询没有使用天津供应商生产红色零件的工程号JNO查询S1供应商的零件号PNO查询既使用P1又使用P2零件的工程号JNO图16 查询所有供应商的姓名和所在城市图17 查询氖零件的名称,颜色,重量图18 查询使用供应商S1所供应零件的工程号码图19查询工程项目J2使用的各种零件及数量图20所出上海厂商供应的所有零件号码《数据库基础与应用》实验报告- 10 –图21 查询使用上海的零件的工程名称图22 查询没有使用天津的零件的工程号码五.结果分析与实验体会经过前两次的实验后,再来做这次的实验对于应用程序的的环境已经比较熟悉了,所以操作起来方便多了,这次实验的查询中有很多要用到汉字的,在输入完之后一定要及时将输入法切换回来,不然容易出现编译错误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二 SQL 数据查询一、实验目的:熟练掌握基本表的定义、删除与修改,为后继学习作准备。

二、实验属性(验证性)1. 了解Microsoft SQL Server 2005并掌握SQL查询分析器的使用;2. 掌握基本表的定义、删除与修改。

三、实验仪器设备及器材1. 电脑。

2. Microsoft SQL Server 2005。

四、实验要求(预习、实验前、实验中、实验后等要求)1.预习教材第三章,熟悉SQL语句。

2.熟悉Microsoft SQL Server 2005 开发环境。

3.能够熟练掌握Microsoft SQL Server 2005环境下的数据库的编程。

4.掌握单表查询语句的一般格式。

;5.掌握单表无条件、有条件查询及查询结果排序与分组。

6.掌握多表连接、嵌套和集合查询语句的一般格式及各种使用方法。

五、实验原理SQL语言应用。

六、实验步骤:(1) 启动SQL SERVER 2005(2) 打开查询分析器(点击工具栏上的新建)(3) 验证如下例子:一、单表查询1 无条件查询例2.1查询全体学生的详细记录。

这是一个无条件的选择查询,其命令为:SELECT * /*这里的“*”等价于ALL*/FROM Students;其结果为表3.3中的全部数据。

例2.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。

这是一个无条件的投影查询,其命令为:SELECT Sname, Sno, SdeptFROM Students;例2.3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。

由于SELECT子句的<目标列表达式>不仅可以是表中的属性列,也可以是表达式,故可以查询经过计算的值。

其命令为:SELECT Sno, Sname, 2001-SageFROM Students;例2.4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。

其命令为:SELECT Sname, ’Birth:’ Title, 1996-Sage BirthYear, LOWER(Sno) LsnoFROM Students;例2.5查询选修了课程的学生学号。

其命令为:SELECT DISTINCT SnoFROM Reports;2 条件查询例2.6 查询数学系全体学生的学号(Sno)和姓名(Sname)。

其命令为:SELECT Sno, SnameFROM StudentsWHERE Sdept='数学';例2.7 查询所有年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。

其命令为:SELECT Sname, SageFROM StudentsWHERE Sage>=18 AND Sage<=22;例2.8 查询年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。

其命令为:SELECT Sname, SageFROM StudentsWHERE Sage BETWEEN 18 AND 22;例2.9 查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。

其命令为:SELECT Sname, SageFROM StudentsWHERE Sage NOT BETWEEN 18 AND 22;例2.10 查询自动化系、数学和计算机系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。

其命令为:SELECT Sno, Sname, SsexFROM StudentsWHERE Sdept IN ('自动化', '数学', '计算机');等价于:SELECT Sname, SsexFROM StudentsWHERE Sdept='自动化' OR Sdept='数学' OR Sdept='计算机';例2.11查询既不是信息系、数学系、也不是计算机系的学生的姓名(Sname)和性别(Ssex)。

其命令为:SELECT Sname, SsexFROM StudentsWHERE Sdept NOT IN ('自动化', '数学', '计算机');例2.12 查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。

其命令为:SELECT Sname, Sno, SsexFROM StudentsWHERE Sname LIKE '刘%';例2.13查询姓“刘”且全名为4个汉字的学生的姓名(Sname)和所在系(Sdept)。

其命令为:SELECT Sname, SdeptFROM StudentsWHERE Sname LIKE '刘____';例2.14查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。

SELECT Sname, SageFROM StudentsWHERE Sname NOT LIKE '刘%';例2.15 查询课程名为“DB_设计”的课程号(Cno)和学分(Credits)。

其命令为:SELECT Cno, CreditsFROM CoursesWHERE Cname LIKE 'DB\_设计' ESCAPE '\';例2.16查询以"DB_"开头,且倒数第2个汉字字符为“设”的课程的详细情况。

其命令为:SELECT *FROM CoursesWHERE Cname LIKE 'DB\_%设__'ESCAPE'\';例2.17假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。

试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。

其命令为:SELECT Sno, CnoFROM ReportsWHERE Grade IS NULL;例2.18 查询所有有成绩的学生学号(Sno)和课程号(Cno)。

其命令为:SELECT Sno, CnoFROM ReportsWHERE Grade IS NOT NULL;3 查询结果排序例2.19查询选修了C03号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。

其命令为:SELECT Sno, GradeFROM ReportsWHERE Cno='C03'ORDER BY Grade DESC;例2.20查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。

其命令为:SELECT *FROM StudentsORDER BY Sdept, Sage DESC;4 集函数的使用例2.21查询学生总人数。

其命令为:SELECT COUNT(*)FROM Students;例2.22查询选修了课程的学生人数。

其命令为:SELECT COUNT(DISTINCT Sno)FROM Reports;例2.23计算选修C01号课程的学生平均成绩。

其命令为:SELECT AVG(Grade)FROM ReportsWHERE Cno='C01';例2.24查询选修C01号课程的学生最高分数。

其命令为:SELECT MAX(Grade)FROM ReportsWHERE Cno='C01';5 查询结果分组例2.25 求各个课程号(Cno)及相应的选课人数。

其命令为:SELECT Cno , COUNT(Sno) CntSnoFROM ReportsGROUP BY Cno;例2.26 查询选修了3门或3门以上课程的学生学号(Sno)。

其命令为:SELECT SnoFROM ReportsGROUP BY SnoHA VING COUNT(Cno)>二、连接查询1 不同表之间的连接查询 例2.27 查询每个学生及其选修课程的情况。

本查询实际上是涉及Students 与Reports 两个表的连接操作。

这两个表之间的联系是通过公共属性Sno 实现的,因此,其操作命令为:SELECT Students.*, Reports.*FROM Students, ReportsWHERE Students.Sno = Reports.Sno ;说明说明::若在以上等值连接中把目标列中重复的属性列去掉则为自然连接,其命令为SELECT Students.Sno, Sname, Ssex, Sage, Sdept, Cno, GradeFROM Students, ReportsWHERE Students.Sno= Reports.Sno;例2.28 查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。

本查询涉及到三个表的连接操作,完成该查询的SQL 语句如下:SELECT Students.Sno, Sname, Cname, GradeFROM Students, Reports, CoursesWHERE Students.Sno= Reports.Sno AND o=o;2 自身连接例2.29 查`询每一门课的间接先修课(即先修课的先修课)。

在Courses 表关系中,只有每门课的直接先修课信息,而没有先修课的先修课。

要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。

这就需要要将Courses 表与其自身连接。

为方便连接运算,这里为Courses 表取两个别名分别为A ,B 。

则完成该查询的SQL 语句为:SELECT o, ame, B.Pre_CnoFROM Courses A, Courses BWHERE A.Pre_Cno =o;3 外连接例2.30把例3.37中的等值连接改为左连接。

该左连接操作在SQL Server 2000中的命令格式为: SELECT Students.Sno, Sname, Ssex, Sdept, Cno, GradeFROM StudentsLEFT JOIN Reports ONStudents.Sno= Reports.Sno;说明说明::以上左连接操作也可以用如下的右连接操作代替,其结果完全一样。

SELECT Students.Sno, Sname, Ssex, Sdept, Cno, GradeFROM ReportsRIGHT JOIN Students ONReports.Sno=Students.Sno;三、嵌套查询1 带谓词IN 的嵌套查询例2.31 查询选修了编号为“C02”的课程的学生姓名(Sname)和所在系(Sdept)。

相关文档
最新文档