03实验五 SQL综合查询作业1
实验五 查询的综合运用
实验五查询的综合运用一、实验目的利用SQL语句实现分组子句、摘要子句和函数等组合,可以实现对结果集全部数据统计、分组统计、全部记录与分组混合统计等多种多样的统计查询需求。
掌握查询的综合使用,深刻理解查询语句的含义及使用。
二、实验内容在读者_图书库中,用SQL表示下列操作。
(1)使用外部连接,查询所有读者借书的情况,最后结果中显示读者的姓名及所借图书的书号信息。
(2)使用外部连接,查询所有读者,所有图书的借阅情况,最后结果中显示读者的姓名,所借图书的书号及名称等信息。
(3)查询至少借了两本书的男性读者的编号及所借图书的数量,结果按照借书数量降序排序。
(4)查询借书数量最多的读者的编号及所借图书的数量。
(5)查询计算机类和电子工业出版社出版的图书。
(6)查找所有男性读者的信息,并将结果存到“男性读者”表中。
(7)查询图书表中所有信息,将结果存到临时表tmp1中。
(8)列出计算机类图书的书号、名称及价格,最后求出册数和总价格。
(9)按类别列出所有图书的书号、名称及价格,并求出各类图书的总册数和总价格。
(10) 查询借阅了“刘洪亮”编写的任意一本图书的读者的编号。
(11) 查询借阅了“刘洪亮”编写的任意一本图书的读者的姓名。
三、实验参考操作(1) select 姓名,书号from 读者left join 借阅on 读者.编号=借阅.读者编号(2) select 姓名,图书.书号,书名from 读者full join 借阅full join 图书on 图书.书号=借阅.书号on 读者.编号=借阅.读者编号注意:在本命令中,两个“ON”语句的先后顺序。
(3) select 读者编号,count(*) 借书数量from 读者join 借阅on 读者.编号=借阅.读者编号where 性别='男'group by 借阅.读者编号having count(*)>=2order by 2 desc(4) select top 1 读者编号,count(*) 借书数量from 读者join 借阅on 读者.编号=借阅.读者编号group by 借阅.读者编号order by 2 desc(5) select * from 图书where 类别='计算机类'unionselect * from 图书where 出版社='电子工业出版社'(6) select * into 男性读者from 读者where 性别='男'注:大家在资源管理器中找一下本例所生成的表“男性读者”的位置。
2023 SQL 数据库查询练习题及答案
2023 SQL 数据库查询练习题及答案数据库查询是数据管理和处理的重要环节,熟练的SQL查询技巧对于数据库工程师和数据分析师来说至关重要。
为了提升大家的SQL 查询能力,以下是一些2023年的SQL数据库查询练习题及答案,希望能够对大家的学习和实践有所帮助。
练习题1:学生成绩表考虑一个学生成绩表(Students)和课程信息表(Courses),请使用SQL查询语句完成以下操作。
1. 查询所有学生的姓名和学号;2. 查询所有参加了"C3"课程的学生的姓名和学号;3. 查询所有选择了至少两门课程的学生的姓名和学号;答案1:SELECT 学号, 姓名FROM 学生成绩表;答案2:SELECT 学生成绩表.学号, 学生成绩表.姓名FROM 学生成绩表, 课程信息表WHERE 学生成绩表.课程编号 = 课程信息表.课程编号AND 课程信息表.课程名称 = "C3";答案3:SELECT 学号, 姓名FROM 学生成绩表GROUP BY 学号, 姓名HAVING COUNT(*) >= 2;练习题2:库存管理考虑一个库存管理系统的数据库,包含了商品表(Products)、仓库表(Warehouses)和库存表(Inventory)。
请使用SQL查询语句完成以下操作。
1. 查询商品表中单价不低于100元的商品的名称和单价;2. 查询所有位于“北京”仓库中的商品的名称和库存量;3. 查询库存量最多的商品的名称和库存量;答案1:SELECT 名称, 单价FROM 商品表WHERE 单价 >= 100;答案2:SELECT 商品表.名称, 库存表.库存量FROM 商品表, 仓库表, 库存表WHERE 商品表.商品ID = 库存表.商品IDAND 仓库表.仓库ID = 库存表.仓库IDAND 仓库表.所在地 = "北京";答案3:SELECT 商品表.名称, 库存表.库存量FROM 商品表, 库存表WHERE 商品表.商品ID = 库存表.商品IDORDER BY 库存表.库存量 DESCLIMIT 1;练习题3:订单管理考虑一个订单管理系统的数据库,包含了客户表(Customers)、订单表(Orders)和订单详情表(OrderDetails)。
实训查询作业3——SQL查询1
实训查询作业3—SQL查询
1. 在“图书管理系统”数据库中,使用SQL语句查询“图书库存表”中的“图书名称”和“价格”。
2.在“图书管理系统”数据库中,使用SQL数据查询语句查询“图书库存表”中入库时间在07年5月以后且价格大于30元的图书信息。
3.使用SQL数据查询语句统计“借书证表”中各借书证类型的读者人数。
4.使用SQL数据查询语句统计“图书库存表”价格最低的和价格最高的图书价格。
1.SELECT FROM 图书库存表WHERE图书名称AND价格
2.SELECT FROM 图书库存表WHERE 入库时间>#2007-05# AND 价
格>30
3.SELECT FROM借书证表FROM 借书证类型
4.SELECT图书库存表WEHRE 价格=MAX AND MIN。
SQL综合作业
高校信息管理系统数据库设计北京某高校拟开发一套高校信息管理系统,该系统包括学生档案管理、学生成绩管理、教员信息管理、教务排课等模块,实现学生档案录入、修改、查询,成绩录入、修改、查询,教务排课管理等功能。
要进行后台数据库的设计,以“学生成绩管理”为例,创建一个数据库。
此模块具有成绩输入,成绩查询,名次排序,分数统计等功能。
步骤:一.现要求对“学生成绩管理”子模块进行数据库的设计并实现,数据库保存在F:\project目录下,文件增长率为15% 。
利用企业管理器创建数据库实现此步骤。
二.所有的表的设计如下:(以下建库建表操作用企业管理器完成,数据插入,修改,删除,查询操作用查询分析器实现)三.插入数据:说明:每位学生的座位号不用插入,从1开始自动编号学生李文才的地址不详,所以地址一栏为空(提示:应该为其取缺省值’地址不详’)学生成绩表的测试数据如下:说明:考号为E2005070002的学员机试缺考欧阳俊雄(学号为S25304)因事请假,没有报考机试四.查询数据:1.查询两个表中的所有记录。
检查数据插入是否正确。
2.查询所有男学员的名单3.查询笔试成绩优秀的学员情况(75-100之间),显示学号、笔试成绩4.查询参加本次考试的学员成绩,包括学员姓名、笔试成绩及机试成绩5.统计笔试考试平均分和机试考试平均分6.统计参加本次考试的学员人数7.查询没有通过考试的人数(笔试或机试小于60分)8.查询学员成绩、显示学号、笔试成绩、机试成绩及平均分9.排名次(按平均分从高到低排序),显示学号和平均分10.排名次(按平均分从高到低排序),显示姓名、笔试成绩、机试成绩和平均分11.根据平均分显示前两名信息,包括姓名、笔试成绩、机试成绩、平均分。
五.修改数据:a)由于笔试试卷难度过大,改试卷后经商议决定:所有学员的笔试成绩都提高5分,超过100分的按100分计算i.提示:分两步进行。
首先所有笔试成绩都提高5分,然后将所有超过100的成绩更改为100分。
常规数据查询SQL实验一答案
常规数据查询SQL实验一答案--A.查看所有供应商的信息;select * from s;--B.查看供应商的姓名和所在城市,并且将输出结果中的列名显示为“名称”、"所在城市";select sname 名称,city 所在城市from s;--C.求出一箱(每箱装100个)零件的重量,并将输出结果显示为“零件编号”、“零件名称”、“每箱的重量”;select pno 零件编号,pname 零件名称,weight*100 每箱的重量from p;--D.求出一箱(每箱装100个)零件的重量,并将输出结果显示为“零件编号”、“零件名称”、“每箱的重量”、“重量单位”,其中重量单位为“KG”;select pno 零件编号,pname 零件名称,weight*100 每箱的重量,'KG' 重量单位from p;--E.查看所有零件的颜色种类;select distinct color from p;-- Where子句:--F.找出使用供应商S1所供应零件的工程号码;select jno from spj where sno='S1'--G.求供应工程J1零件的供应商号码SNO;select jno from spj where jno='J1'--H.求供应工程J1零件P1的供应商号码SNO;select distinct jno from spj where jno='J1' and pno='P1'--I.找出重量在15到25之间的零件;select * from p where weight between 15 and 25;--J.找出在“北京”、“天津”、“上海”的供应商;select * from s where city in ('北京','天津','上海')--K.查找所有以“螺”开头的零件;select * from p where pname like '螺%';--Order by子句:--L.查询所有的零件,以零件的重量降序显示,重量相同的按照Pno 升序显示;select * from p order by weight desc,pno;--M.查询所有的“红”色零件,以零件的重量升序显示;select * from p where color='红' order by weight;--N.查询每箱零件的重量,将输出结果显示为“零件编号”、“每箱重量”,并按照重量降序显示;select pno 零件编号,weight*100 每箱重量from p order by 2 desc;--聚集函数:--O.统计供应商的个数,显示结果列名为“供应商的个数”;select count(*) 供应商的个数from s;--P.统计“上海”供应商的个数,显示结果列名为“上海供应商的个数”;select count(*) 上海供应商的个数from s where city='上海';--Q.求出“P1”零件总的供应数量;select sum(QTY) from SPJ where pno='P1';--R.找出最重的零件的重量;select max(weight) from p;--S.求出最重的零件和最轻的零件之间的重量差值;select max(weight)-min(weight) from p;--Group by子句:--T.求出每个城市供应商的个数;select city,count(*) 供应商的个数from s group by city --order by 2 desc;--U.求出供应商的个数在2个及以上的城市的名称;select city,count(*) 供应商的个数from s group by city having count(*)>=2;--V.求出每种颜色的零件的个数;select color 颜色, count(*) 该颜色的数量from p group by color;--W.求出每一种零件的供应数量;select pno,sum(QTY) 供应总量from SPJ group by pno;--X.求出供应总量在1000及以上的零件的编号以及供应量,并按照供应量降序显示;select pno,sum(QTY) 供应总量from SPJ group by pno having sum(QTY)>=1000;--Y.求出由“P2”和“P4”供应的零件的供应量在1000以上的零件的编号以及供应量,并按照供应量降序显示;select pno,sum(QTY) 供应总量from SPJ where pno in ('P2','P4') group by pno having sum(QTY)>=1000;--Z.求出供应总量最多的供应商的编号;select top 1 sum(QTY) 供应总量from SPJ group by pno order by 1 DESC;--(提示:使用select top 1 from …)。
sql查询实验报告
sql查询实验报告SQL查询实验报告一、引言SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。
在数据库管理系统中,SQL查询是一项重要的操作,通过使用SQL查询语句可以从数据库中检索所需的数据。
本实验旨在通过实际操作,掌握SQL查询的基本语法和常用技巧。
二、实验目的1. 熟悉SQL查询语句的基本结构和语法;2. 掌握SQL查询中的条件筛选、排序和聚合等操作;3. 学会使用SQL查询语句从数据库中检索所需的数据。
三、实验环境本次实验使用MySQL数据库管理系统,通过MySQL Workbench进行操作。
四、实验步骤1. 连接数据库:打开MySQL Workbench,点击“新建连接”,输入数据库连接信息,成功连接到目标数据库。
2. 创建测试表:创建一个名为“students”的表,包含字段“id”(学生编号)、“name”(学生姓名)、“gender”(学生性别)、“age”(学生年龄)和“score”(学生成绩)。
3. 插入测试数据:向“students”表中插入若干测试数据,包括学生的编号、姓名、性别、年龄和成绩。
4. 执行SQL查询语句:使用SQL查询语句从“students”表中检索所需的数据。
五、实验结果与分析1. 查询所有学生的信息:SELECT * FROM students;通过执行以上查询语句,可以获取到“students”表中所有学生的信息,包括学生的编号、姓名、性别、年龄和成绩。
2. 查询成绩大于80分的学生信息:SELECT * FROM students WHERE score > 80;以上查询语句中的WHERE子句用于筛选成绩大于80分的学生信息,通过执行该语句,可以获取到符合条件的学生的信息。
3. 查询男生的平均成绩:SELECT AVG(score) FROM students WHERE gender = '男';以上查询语句中的AVG函数用于计算符合条件的学生的平均成绩,通过执行该语句,可以获取到男生的平均成绩。
实验一SQL库表操作查询综合
实验一库、表操作及查询综合实验【实验目的】:1.掌握建库、建表、导入数据的方法2.掌握insert、update、delete语句3.熟练掌握select语句【实验要求】:按照下述步骤完成实验,撰写实验报告并提交相应数据库文件。
实验报告需呈现每一步操作结果的截图。
实验成绩以百分计。
一、利用SQL Server Management Studio(SSMS)创建名为“TeachingDB_***”的数据库(***表示个人姓名);数据文件初始大小设置为10MB,不限制增长,增长速度为10%;日志文件初始大小为2MB,最大尺寸为5MB,增长速度为1MB。
(2分)二、在TeachingDB_***中按照要求创建下列表。
(20分)三、从给定Excel文件导入数据到TeachingDB_***中(3分)四、利用T-SQL进行表数据的插入、删除与更新(每题5分,共计15分)1.向t_student表中插入一行记录,记录内容为个人真实信息2.从t_course表中删除课程名为“工程数学”的课程记录3.将t_teacher表中工号为“t001”的教师职称更改为“教授”五、完成下述查询(每题4分,共计60分)1.根据个人学号查询个人信息2.查询所有姓李的学生的学号,姓名和年龄3.查询女同学的姓名和年龄,查询结果的列名分别指定为“姓名”和“年龄”4.查询软件工程专业所有男学生的平均年龄5.查询年龄在30到35岁之间的副教授的姓名和年龄,查询结果按年龄降序排列6.查询所有学生的学号,姓名和性别,将查询结果插入到新表t_sinfo中7.查询有同学选修的课程的课程号及课程名8.查询李平同学所选修课程的课程号,课程名和成绩9.查询选修了数据库课程但成绩为空的学生的姓名10.查询既选修了C001号课程,又选修了C002号课程的学生的学号11.查询李平同学选修的课程的门数以及平均成绩12.查询年龄比李平同学大的所有学生的学号,姓名和年龄13.查询每个专业的学生人数,查询结果中显示“专业”和“人数”两列14.查询选课人数超过5人的课程信息,要求显示课程号,课程名和选修人数15.查询没有选修数据库课程的学生的学号。
SQL实验及部分答案
SQL实验及部分答案实验⼀使⽤SQL语句创建和删除数据库⼀. 实验⽬的:1、了解SQL Server 2005数据库的逻辑结构和物理结构。
2、掌握使⽤SQL 语句创建和删除数据库。
⼆. 实验准备1.明确能够创建数据库的⽤户必须是系统管理员,或是被授权使⽤CREATE DATABASE语句的⽤户。
2.了解⽤SQL语句创建和删除数据库的基本语法。
三. 实验要求3、熟练使⽤查询分析器进⾏数据库的创建和删除操作4、完成⽤sql语句建⽴和删除数据库的实验报告四. 实验内容1.以下是创建数据库userdb1的SQL语句,以下是创建数据库userdb1的SQL语句,CREATE DATABASE userdb1 --创建名为userdb1的数据库on( NAME='userdb2',--数据⽂件的逻辑名称为userdb2FILENAME= 'd:\test\userdb1.mdf', ----物理路径为d:\testSIZE=5mb,----数据初始长度为5MMAXSIZE=10mb, --最⼤长度为10MFILEGROWTH=1mb --数据⽂件每次增长1M)运⾏上诉语句建⽴数据库userdb1.2.⽤SQL语句删除步骤⼀建⽴的数据库userdb1。
drop database userdb1 --删除数据库userdb1实验⼆分别⽤向导和SQL语句创建和删除表⼀.⽤SQL语句创建表在SQL Server 2005 的查询分析器中,⽤sql语句创建student表。
表2.1 student表(学⽣信息表)CREATE TABLE student(sno char(8)not null primary key,--学号(主键)sname char(8)not null,--姓名sex char(2)null,--性别native char(20)null,--籍贯birthday datetime null,--出⽣⽇期dno char(6)null,--所在院系spno char(8)null,--专业代码classno char(4)null,--班级号entime datetime null,--⼊校时间home varchar(40)null,--家庭住址tel varchar(40)null,--联系电话)表2.2 course表(课程信息表)CREATE TABLE course(cno char(10)not null primary key, spno char(8)null,cname char(20)not null,ctno tinyint null,experiment tinyint null,lecture tinyint null,semester tinyint null,credit tinyint null)实验三修改数据库基本表的定义⼀.实验⽬的1.了解表的结构特点。
sql 查询 练习题
sql 查询练习题SQL查询练习题SQL是一种用于管理和操作关系型数据库的语言,它可以让我们轻松地从数据库中提取所需的数据。
在实际应用中,熟练掌握SQL查询语句的编写是非常重要的。
为了帮助大家提高SQL查询的能力,下面将给出一些SQL查询练习题。
1. 查询所有员工的姓名和工资。
```sqlSELECT 姓名, 工资 FROM 员工表;```2. 查询所有部门的名称和员工数量。
```sqlSELECT 部门名称, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门名称; ```3. 查询所有工资高于平均工资的员工信息。
```sqlSELECT * FROM 员工表 WHERE 工资 > (SELECT AVG(工资) FROM 员工表);```4. 查询每个部门工资最高的员工信息。
```sqlSELECT * FROM 员工表 WHERE (部门名称, 工资) IN (SELECT 部门名称, MAX(工资) FROM 员工表 GROUP BY 部门名称);```5. 查询没有分配部门的员工信息。
```sqlSELECT * FROM 员工表 WHERE 部门名称 IS NULL;```6. 查询每个部门的平均工资,并按照平均工资降序排列。
```sqlSELECT 部门名称, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门名称ORDER BY 平均工资 DESC;```7. 查询每个部门的员工数量,并按照员工数量升序排列。
```sqlSELECT 部门名称, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门名称ORDER BY 员工数量 ASC;```8. 查询员工表中工资排名前10的员工信息。
```sqlSELECT * FROM 员工表 ORDER BY 工资 DESC LIMIT 10;```9. 查询每个部门的员工工资排名前3的员工信息。
sql查询题目及答案
数据库中有如下三个表:学生表(学号id,姓名name,性别sex,系部depart,年龄age)8个学生记录选课表(学号id,课程号cid,成绩grade) 12门课程课程表(课程号cid,课程名cname,学分Ccredit) 6门课程学生-课程模式 S-T :学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)1.从学生表中查询所有同学的所有信息select*from学生表2.从学生表中查询所有学生的信息,并分别赋予一个别名select学号as xuehao,姓名as xingming,性别as xingbie,系部as xibu,年龄as nianling from学生表3.从学生表中查询姓名是Allen的学生的信息select*from学生表where姓名='Allen'4.从学生表中查询学号在1101到1199之间的所有学生的信息select*from学生表where学号between 1101 and 11995.从学生表中查询年龄小于18和大于20的所有学生的学号和姓名select学号,姓名from学生表where年龄<18 or年龄>206.从学生表中查询计算机系年龄小于20的所有学生的信息select*from学生表where系部='computer'and年龄<207.从学生表中查询姓名以A开头的学生的信息select*from学生表where姓名LIKE'A%'8.从学生表中查询姓名的第三个字符是A的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'__A%'9.从学生表中查询姓名中包含“llen”的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'%llen%'10.从学生表中查询姓名中包含“llen”且姓名只有5个字符的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'%llen%'and len(姓名)=511.从学生表中查询有年龄信息的学生的学号和姓名select学号,姓名from学生表where年龄is not null12.从学生表中查询最大年龄和最小年龄select max(年龄)最大年龄,min(年龄)最小年龄from学生表13.从学生表中查询所有学生的平均年龄select avg(年龄)平均年龄from学生表14.从学生表中查询学校所有系的名字select distinct系部from学生表15.从学生表中查询学校共有多少个系select count(distinct系部)系部总和from学生表16.从选课表中查询所有学生的选课情况select distinct课程号from选课表17.从选课表中查询选修课程号为C01课程的学生的学号select学号from选课表where课程号='C01'18.从选课表中查询所有没有选C02课程的学生的学号select distinct学号from选课表where课程号!='C02'19.从选课表中查询有选修C01或C02课程的学生的学号select distinct学号from选课表where课程号='C01' or 课程号='C02'20.从选课表中查询学号为1101的学生的选课情况select课程号from选课表where学号='1101'21.从选课表中查询所有选课信息,即学号、课程号、成绩,并给成绩加8分select学号,课程号,成绩=成绩+8 from选课表22.从选课表中查询学号为1101的学生的所有选修课程成绩的总和select sum(成绩)成绩总和from选课表where学号='1101'23.从选课表中查询选修课程好为C02所有学生的成绩平均值并赋予“平均成绩24.”列名select avg(成绩)平均成绩from选课表where课程号='C02'25.从选课表中查询选修课程号C02且该门课程考试及格的学生的学号select学号from选课表where课程号='C02'and成绩>=6026.从选课表中查询所有无考试成绩的学生的学号和课程的课程号select学号,课程号from选课表where成绩is null27.从选课表中查询选修了课程号以C开头的学生的学号和所选课程的课程号select学号,课程号from选课表where课程号LIKE'C%'28.从选课表中查询选修了课程号以C、D或E开头学生的学号和所选课程的课程号select学号,课程号from选课表where课程号LIKE'[CDE]%'29.从选课表中查询选修了课程号中包含DB的学生的学号和课程号select学号,课程号from选课表where课程号LIKE'%DB%'30.从选课表中查询选修了课程的学生的学号select distinct学号from选课表where课程号is not null31.从选课表中查询选修了课程的学生的人数select count(distinct学号)总人数from选课表31.找出姓名以D开头的学生姓名和所有成绩select学生表.姓名,选课表.成绩from学生表join选课表on学生表.学号=选课表.学号where学生表.姓名LIKE'D%'32.查找的所有学生姓名与学号,结果按学号降序排序select 学号,姓名from学生表order BY学号DESC33.查找成绩介于80和90之间的学生姓名,结果按成绩和姓名升序排序select学生表.姓名from选课表join学生表on学生表.学号=选课表.学号where选课表.成绩between 80 and 90order BY选课表.成绩,学生表.姓名34.查找english系的所有学生姓名,结果按成绩和姓名升序排序select学生表.姓名,学生表.学号,选课表.成绩from选课表join学生表on学生表.学号=选课表.学号where学生表.系部='english'35.查找同时选修了C01及C02两门课程的学生姓名及学号select学生表.姓名,A.学号from选课表as A join选课表as B on A.学号=B.学号join学生表on学生表.学号=A.学号where A.课程号='C01'and B.课程号='C02'36.查找所有选修了课程的学生姓名及所在系别select distinct学生表.姓名,学生表.系部from学生表join选课表on学生表.学号=选课表.学号where选课表.课程号is not null37.查找成绩高于90分的学生姓名、学号及系别select学生表.姓名,学生表.学号,学生表.系部from学生表join选课表on学生表.学号=选课表.学号where选课表.成绩>=9038.找出选修了C01课程的学生姓名select学生表.姓名from学生表join选课表on学生表.学号=选课表.学号where选课表.课程号='C01'39.查询English系学生人数select count(*) English 系总人数from学生表where系部='English'40.分别查询各系的学生人数select系部,count(*)人数from学生表group by系部41.创建一个角色uus.CREATE ROLE uus;42.给uus授权SELECT,UPDATE,INSERT .GRANT SELECT,UPDATE,INSERTON StuTO uus43.增加一个登录,登录名为tp,密码为123,默认的数据库为stuEXEC sp_addlogin 'tp', '123', 'stu'44.将登录tp增加为test库的一个用户,并连接到test库。
实验五答案SQL语句查询
1、列出所有不姓刘的所有学生select sname,snofrom studentwhere sname not like'刘%'2、列出姓“沈“且全名为3个汉字的学生select snamefrom studentwhere sname like'沈____'3、显示在1985年以后出生的基本信息select sno学号,sname姓名,出生年份=year(getdate())-sagefrom studentwhere year(GETDATE())>19854、按照“性别、学号、姓名、年龄、院系“的顺序列出学生信息,其中性别按以下规定显示:性别为男显示为男生,性别为女显示为女生,其它显示为”条件不明“select ssex=casewhen ssex='男'then'男生'when ssex='女'then'女生'else'情况不明'end,sno,sname,sage,sdeptfrom student5、查询出课程名含有‘数据‘字串的所有课程基本信息select sno,o,cname,grade,ccreditfrom sc,coursewhere cname like'数据%'and o=o6、显示学号第八位或者第九位是1、2、3、4或9的学生的学号、姓名、性别、年龄、及院系select sno,sname,ssex,sage,sdeptfrom studentwhere sno like'2005150[1-4]%'or sno like'2005150[0-9][1-4]'or sno like'20051509%'or sno like'2005150[0-9]9'7、列出选修了‘1‘课程的学生,按成绩的降序排列select student.sno,sname,gradefrom student,scwhere Cno='1'order by Grade desc8、列出同时选修‘1‘号课程和’2‘号课程的所有学生的学号select sno,Cnofrom scwhere cno=1 or cno=29、列出课程表中全部信息,按先选修课的升序排列select*from courseorder by cpno asc10、列出年龄超过平均值的所有学生名单,按年龄的降序显示select sno,snamefrom studentwhere sage>(select AVG(sage)from student)order by sage desc11、按照出生年份升序显示所有学生的学号、姓名、性别、出生年份及院系,在结果集中列标题分别指定为“学号、姓名、性别、出生年份、院系“select sno学号,sname姓名,ssex性别,出生年份=year(GETDATE())-sage,sdept 院系from studentorder by YEAR(GETDATE())-sage asc12、按照院系降序显示所有学生的“院系、学号、姓名、性别、年龄“等信息,其中院系按照以下规定显示:院系为CS显示为计算机,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明select sno,sname,ssex,sage,sdept=casewhen sdept='CS'then'计算机系'when sdept='IS'then'信息系'when sdept='MA'then'数学系'when sdept='EN'then'外语系'when sdept='CM'then'西医系'when sdept not in('CS','IS','MA','EN','CM')then'院系不明'endfrom student13、显示所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段“院系规模“,其中若该院系人数>=5则该字段值为”规模很大“,若该院系人数大于等于4小于5则该字段为”规模一般“,该院系人数大于等于2小于4则该字段值为”规模稍小“,否则显示“规模很小”select sdept,sdept=casewhen COUNT(distinct sno)>=5then'规模很大'when COUNT(distinct sno)>=4and COUNT(distinct sno)<5 then'规模一般' when COUNT(distinct sno)>=2and COUNT(distinct sno)<4 then'规模小' when COUNT(distinct sno)<2 then'规模很小'endfrom studentgroup by sdept14、按照课程号、成绩降序显示课程成绩在70——80之间的学号、课程号及成绩select sno,cno,gradefrom scwhere Grade>=70 and Grade<=80order by Cno desc,Grade desc15、显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为“学生总人数,平均年龄“select学生总人数=COUNT(distinct sno),平均年龄=AVG(sage)from student16、显示选修的课程数大于3的各个学生的选修课程数select sno,选修的课程数=COUNT(Cno)from scgroup by snohaving COUNT(Cno)>317、按照课程号降序显示选修各个课程的总人数、最高成绩、最低成绩及平均年龄select cno,总人数=COUNT(distinct sno),最高成绩=MAX(grade),最低成绩=MIN(grade),平均成绩=AVG(grade)from scgroup by cnoorder by cno desc18、显示平均成绩大于“200515001“学生平均成绩的各个学生的学号、平均成绩select sno,平均成绩=AVG(grade)from scgroup by snohaving AVG(Grade)>(select AVG(Grade)from sc where sno='200515001') 20、显示选修课程数最多的学号及选修课程数最少的学号select sno,选课数=casewhen MAX(Cno)=COUNT(Cno)then'课程数最多'when MIN(Cno)=COUNT(Cno)then'课程数最少'endfrom scgroup by snohaving MAX(Cno)=COUNT(Cno)or MIN(Cno)=COUNT(Cno)22、列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩select sno,平均成绩=AVG(grade)from scwhere Grade<60group by snohaving COUNT(*)>=219、显示选修各个课程的及格人数及几个比率21、显示各个院系男女生人数,其中在结果集中列标题分别为“院系名称、男生人数、女生人数“select sdept院系名称,男生人数=sum(case when ssex='男'then 1 else 0 end),女生人数=sum(case when ssex='女'then 1 else 0 end)。
sql实验习题答案
sql实验习题答案SQL实验习题答案在学习SQL(Structured Query Language)时,习题是一种非常有效的学习方式。
通过实践操作,我们可以更好地理解SQL语言的各种概念和用法。
下面是一些常见的SQL实验习题及其答案,希望对大家的学习有所帮助。
1. 查询某个表的所有数据答案:SELECT * FROM 表名;2. 查询某个表的前n行数据答案:SELECT * FROM 表名 LIMIT n;3. 查询某个表中满足某个条件的数据答案:SELECT * FROM 表名 WHERE 条件;4. 查询某个表中某个字段的最大值答案:SELECT MAX(字段名) FROM 表名;5. 查询某个表中某个字段的最小值答案:SELECT MIN(字段名) FROM 表名;6. 查询某个表中某个字段的总和答案:SELECT SUM(字段名) FROM 表名;7. 查询某个表中某个字段的平均值答案:SELECT AVG(字段名) FROM 表名;8. 查询某个表中某个字段的记录数答案:SELECT COUNT(字段名) FROM 表名;9. 查询某个表中某个字段的记录数,并按照字段值进行分组答案:SELECT 字段名, COUNT(字段名) FROM 表名 GROUP BY 字段名;10. 查询某个表中满足多个条件的数据答案:SELECT * FROM 表名 WHERE 条件1 AND 条件2;11. 查询某个表中满足多个条件中的任意一个条件的数据答案:SELECT * FROM 表名 WHERE 条件1 OR 条件2;12. 查询某个表中满足某个条件,并按照某个字段进行排序的数据答案:SELECT * FROM 表名 WHERE 条件 ORDER BY 字段名;13. 查询某个表中满足某个条件,并限制结果的行数答案:SELECT * FROM 表名 WHERE 条件 LIMIT n;14. 查询某个表中满足某个条件,并跳过前n行的数据答案:SELECT * FROM 表名 WHERE 条件 OFFSET n;15. 查询某个表中满足某个条件,并按照某个字段进行分页显示答案:SELECT * FROM 表名 WHERE 条件 ORDER BY 字段名 LIMIT n OFFSET m;这些习题涵盖了SQL语言的基本操作和常用函数。
sql实践题目
sql实践题目在这个SQL实践题目中,我们将讨论如何根据一个特定的数据库表格进行数据查询和操作。
这个题目将涉及到基本的SQL语句和操作,帮助您加深对SQL语言的理解和应用能力。
首先,我们有一个名为"students"的数据库表格,包含以下字段:学生ID (student_id)、学生姓名(student_name)、学生年龄(student_age)、学生性别(student_gender)、所在班级(class_id)。
任务一:查询所有学生的信息要完成这个任务,您需要使用SELECT语句从"students"表格中选择所有学生的信息。
SQL语句如下:SELECT * FROM students;这条语句将返回所有学生的信息,包括学生ID、学生姓名、学生年龄、学生性别和所在班级。
任务二:查询年龄大于18岁的学生信息要完成这个任务,您需要使用SELECT语句从"students"表格中选择年龄大于18岁的学生信息。
SQL语句如下:SELECT * FROM students WHERE student_age > 18;这条语句将返回所有年龄大于18岁的学生信息。
任务三:查询女生的信息要完成这个任务,您需要使用SELECT语句从"students"表格中选择女生的信息。
SQL语句如下:SELECT * FROM students WHERE student_gender = '女';这条语句将返回所有女生的信息。
任务四:查询学生的姓名和所在班级要完成这个任务,您需要使用SELECT语句从"students"表格中选择学生的姓名和所在班级。
SQL语句如下:SELECT student_name, class_id FROM students;这条语句将返回学生的姓名和所在班级信息。
SQL语言综合练习题(一)
SQL 语言综合练习题(一)
设有一个学生课程数据库,包括学生关系表Student 、课程关系表Course 、选修关系表SC ,图1所示:
表Course
图1 学生-课程数据库
写出完成下列要求的SQL 语句:
1) 查询所有年龄在20岁(包括20岁)以下的学生信息。
2)查询姓“刘”的学生信息。
3)查询先行课为6的课程名称。
4)查询课程学分大于3的课程号和课程名称。
5)在表SC中,按照学生成绩降序排列。
6)求最高成绩
7)求平均成绩
8)查询成绩在90分以上的学生姓名和课程名。
9)向表Student中添加一条记录:学号为“95005”,姓名为“孙辉”,性别为“男”,年龄为“19”,所在系为“机电系”。
10)删除表Course中课程名为“操作系统”的课程信息。
11)将学生刘晨的年龄改为“17”,所在系改为“会计系”。
实验5 SQL查询答案
内容1:基于表zgda,完成如下查询1.查询zgda表中所有职工的信息。
sele * from zgda2.查询zgda表中所有职工的职称字段值。
sele职称from zgda3.查询zgda表中所有职工的职称种类,即去掉重复的职称信息。
sele dist 职称from zgda4. 查询zgda表中所有职工的姓名、性别、年龄、职称字段的信息。
sele 姓名,性别,年龄,职称from zgda5.查询zgda表中编号最大的前3条记录的信息。
sele top 3 * from zgda order by 编号desc6.查询zgda表中年龄最大的前一半记录的信息。
sele top 50 perc * from zgda order by 年龄desc7.查询zgda表中所有男职工的姓名、性别、年龄、职称字段的信息。
sele 姓名,性别,年龄,职称from zgda where 性别="男"等价的命令还可写成:sele 姓名,性别,年龄,职称from zgda where 性别!="女"sele 姓名,性别,年龄,职称from zgda where 性别not in ("女")sele 姓名,性别,年龄,职称from zgda where 性别in ("男")8.查询zgda表中所有讲师的姓名、性别、年龄、职称字段的信息,并将查询的结果按性别升序,年龄降序排列。
sele 姓名,性别,年龄,职称from zgda where 职称="讲师" order by 性别,年龄desc9.查询zgda表中年龄在40到50之间的职工(包括年龄为40和年龄为50的职工)信息,查询结果只包括姓名、性别、年龄、职称四个字段。
sele 姓名,性别,年龄,职称from zgda where 年龄between 40 and 50等价于:sele 姓名,性别,年龄,职称from zgda where between(年龄,40 ,50)sele 姓名,性别,年龄,职称from zgda where 年龄>=40 and 年龄<=5010.查询zgda表中年龄不在40到50之间的职工信息,查询结果只包括姓名、性别、年龄、职称四个字段。
实验五SQL数据库单表查询
实验五 SQL数据库单表查询一、实验目的及要求本实验主要目的是掌握基于一个表的SELECT语句的语法及使用规则,并能运用各种常用的查询方式及其形式。
●掌握SELECT语句的基本语法结构。
●掌握SQL语句中基于一个表的SELECT语句的使用规则和方式。
●能正确设置各种常用查询条件。
●掌握分组汇总查询的使用。
●要求学生不但写出语句,而且要执行语句,得到结果。
二、实验原理及背景知识1、了解SQL中SELECT语句的基本使用方式。
详情参考第一篇第三章。
2、理解关系代数中投影运算和选择运算的概念及原理。
简单来讲,SELECT实现的是投影,WHERE 实现选择运算。
3、实验前需要了解所使用的数据库中表的结构。
4、实验前需要在stuManage数据库中输入模拟数据。
三、实验内容及步骤(一)输入下面的查询语句,执行后验证实验结果1、查询100165号专业的学生学号、姓名、性别和出生年月信息。
2、查询不姓陈的学生学号和姓名信息。
3、查询100165号专业中1991年之前出生的学生的学号、姓名、性别及出生年月信息。
4、查询所有学生的序号、姓名及年龄信息,其中年龄由出生年月转换得到。
5、查询091650102号同学的所有课程的平均分、最高分和最低分。
(二)输入下面查询语句,然后运行,根据结果思考并记录其功能1、功能:___查询成绩80到85分的同学的信息______________________________________________第二篇实验内容及安排2、功能:____查询专业号码为100165的女生的总数__________________________________________3、功能:____查询学生不同的姓____________________________________________4、功能:_______________查询姓陈或李的同学的学号和名字__________________________________5、功能:____查询学号为09165**的学生的开课编号和平均分_________________________________(三)阅读并分析下面查询语句,根据其功能,补全语句之后进行验证1、查询0916502班超过5人选修的课程选修人数及平均分。
实验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。
实验五 在SQL Server中进行数据查询
实验五在SQL Server中进行数据查询一、实验目的及要求1.掌握SELECT语句的基本语法。
2.掌握子查询的应用。
3.掌握连接查询的应用。
4.掌握SELECT语句的统计函数的作用和使用方法。
5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。
二、实验要求在查询分析器中写出相关的SQL语句并进行执行,检查语句是否正确,结果是否同实际相符。
最后写出实验报告。
三、实验内容使用的数据库实验二、实验三、实验四录入数据的学生情况表Student 课程名称表Course教师授课表Teach 成绩表Score等四张基本表。
进行如下实验操作:●连接查询和子查询:13:(自然连接查询) 求学生号、姓名以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO字段。
14:(自身连接查询) 求年龄大于’李丽’ 的所有学生的姓名、系和年龄。
15:(子查询) 求选修了课程名为’数据结构’ 的学生的学号和姓名。
16:(子查询some或者any) 求比数学系中某一学生年龄大的学生的姓名和系。
17:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。
18:(多个子查询) 求与‘李丽’ 同系,且年龄大于‘黎明’中最大年龄的学生的信息。
19:(子查询中使用表连接) 求数学系中年龄相同的学生的姓名和年龄。
20:(嵌套与分组查询) 检索选修某课程的学生人数多于3人的教师姓名。
21:(集合查询) 列出所有教师和同学的姓名和性别。
四、实验编程结果或过程(用截图方式或SQL语句表示,语句用蓝色字体标出):三、实验编程结果或过程:13:(自然连接查询) 求学生号、姓名以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO字段。
SELECT DISTINCT student.sname,student.sno ,o,score.scoreFROM student,course,scoreWHERE student.sno= score.sno AND o= o;14:(自身连接查询) 求年龄大于’李丽’ 的所有学生的姓名、系和年龄。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五SQL查询综合实验
求同年级中尽量按学院、同学院则尽量按行政班,同班级按所修学分数由高到低列出学号和学分信息。
第二部分实验基于“图书管理”数据库
打开“图书管理”数据库,完成下列工作。
已知一个图书管理信息系统,其数据表间约束如下图所示,各个数据表的字段类型和数据请自行查阅。
在编写SQL查询语句前必须按下列要求以Insert语句增加或update语句修改记录数据(报告中列示语句即可):
发①以实验者真实身份在读者表中插入一条记录,要求读者编号的后五位为实验者学号的后五位,工作单位为所在学院。
在读者表中插入一条姓名为“刘鹏翔”记录,其读者编号的后五位与实验者相邻,工作单位与实验者相同。
性别和身份证号在合理的范围内自定。
②在图书表中增加2种实验者在用图书,例如,其中一种是《数据库应用》图书。
③在借阅表中分别各增加实验者和“刘鹏翔”3条以上的借阅记录,其中包含一本两者均借阅的图书。
编写SQL,完成下列功能:
(1)查询“公共管理学院”没有归还图书的读者的编号、姓名、图书名称、借阅日期。
(2)列示各图书分类号中不同图书(图书编号不同)的数量和库存总量。
(3)查询文学类图书的基本信息(图书编号,图书名称,作者姓名,出版社名和出版号)。
(4)查询2005年出版中单价最高的图书信息:图书编号,图书名称,作者姓名,出版社名和出版号出版时间及单价;如果有单价相同但属不同的图书要求一并列示。
(5)按分类名称,同种分类名称按图书编号查询每种图书的分类名称、图书编号、图书名称、库存数量。