数据库SQL查询例题及解答
sql查询语句练习(解析版)
sql查询语句练习(解析版)BY DD表情况Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表create table Student(S# varchar2(20),Sname varchar2(10),Sage int,Ssex varchar2(2)) ;create table Course(C# varchar2(20),Cname varchar2(10),score varchar2(4)) ;create table SC(S# varchar2(20),C# varchar2(20),score varchar2(4)) ;create table Teacher(T# varchar2(20),Tname varchar2(10)) ;insert into Student(S#,Sname,Sage,Ssex) values('1001','李五','15','男');insert into Student(S#,Sname,Sage,Ssex) values('1002','张三','16','女');insert into Student(S#,Sname,Sage,Ssex) values('1003','李四','15','女');insert into Student(S#,Sname,Sage,Ssex) values('1004','陈二','14','男');insert into Student(S#,Sname,Sage,Ssex) values('1005','小四','15','男');问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;解析:(select s#,score from SC where C#='001') a//从SC中查询C#=001的学生学号和分数,并定义为a表。
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)。
sql查询题目及答案
sql查询题目及答案1、查询所有数学系学生的信息。
--select * from s where 系='数学系'2、查询李老师所教的课程号、课程名--select 课程号,课程名from c where 教师like '李%'3、查询年龄大于20岁的女同学的学号和姓名。
--select 学号,姓名from s where year(getdate())-year(出生日期)+1>20 and 性别='女'4、查询学号为‘H0301’所选修的全部课程成绩。
--select 成绩from sc where 学号= 'H0301'5、查询平均成绩都在80分以上的学生学号及平均成绩。
--select 学号,AVG(成绩) from sc group by 学号having AVG(成绩)>=806、查询至少有6人选修的课程号。
--select 课程号from sc group by 课程号having count(*)>67、查询C02号课程得最高分的学生的学号--select 学号from sc where 课程号='c02' and 成绩=(select max(成绩) from sc where 课程号='c02')8、查询学号为’J0101’的学生选修的课程号和课程名--select 课程号,课程名from c,sc where 学号='j0101' and c.课程号=sc.课程号9、‘李小波’所选修的全部课程名称。
--Select c.课程名from s,c,sc where s.学号=sc.学号and c.课程号=sc.课程号and 姓名='李小波'10、所有成绩都在70分以上的学生姓名及所在系。
--select 姓名,系from s,sc where s.学号=sc.学号group by 学号having min(成绩)>=7011、英语成绩比数学成绩好的学生--select sc2.学号from c c1,c c2,sc sc1,sc sc2 where c1.课程名='英语'--and c2.课程名='数学' and sc1.成绩>sc2.成绩and sc1.学号=sc2.学号--and c1.课程号=sc1.课程号and c2.课程号=sc2.课程号12、至少选修了两门课及以上的学生的姓名和性别select 姓名,性别from s,sc--where s.学号=sc.学号group by 学号having count(*)>=213、选修了李老师所讲课程的学生人数--select count(*) from C,sc where 教师like '李%' and c.课程号=sc.课程号group by sc.课程号14、‘操作系统’课程得最高分的学生的姓名、性别、所在系--select 姓名,性别,系from s,sc--where s.学号=sc.学号and 成绩=--(select max(成绩) from c,sc where sc.课程号=c.课程号and 课程名='操作系统')15、显示所有课程的选修情况。
SQL查询习题及答案
36.设教学用的四个基本表(S,C,T,SC)(2)查询年龄大于23岁的女同学的学号和姓名select 姓名,学号from swhere 性别='女' and 年龄>23(3)查询至少选修了刘老师所讲授课程中的一门课程的女同学姓名select s.姓名from s,scwhere s.性别='女'and s.学号=sc.学号and sc.课程编号in(select c.课程编号from c,twhere c.教师编号=t.教师编号and t.姓名='刘%')(4)查询至少选修了2门课程的学生学号select sc.学号from scgroup by 学号having count(课程编号)>2(5)查询全部学生都选修的课程号与课程名select c.课程编号,c.课程名称from c,scwhere sc.课程编号=c.课程编号and sc.学号=(select distinct s.学号from s)(6)计算机系每个教师讲授的课程号select t.教师编号,课程编号from c,twhere t.所在系='计算机系(7)查询没有选修过任何一门课程的学生的学号select s.学号from swhere s.学号not in(select distinct sc.学号from sc)(10)统计个系教师的人数select count (教师编号)from tgroup by 所在系(11)统计出教师人数超过10人的系的名称select t.所在系from tgroup by 所在系having count(教师编号)>10(12)在选课表SC中查询成绩为NULL的学生的学号和课程号select 学号课程编号from scwhere 成绩='NULL'(13)姓王的同学的年龄、姓名、选课名称、成绩select 年龄,姓名,课程名称,成绩from s,c,scwhere s.学号=sc.学号and c.课程编号=sc.课程编号and s.姓名='王%'(14)查询年龄大于女同学平均年龄的男同学姓名和年龄select 姓名,年龄from swhere 性别='男' and 年龄>(select avg(年龄)from swhere 性别='女')37.在数据库{USER、ORDER}中,用户需要查询“所有于2009年5月25日下订单的女顾客姓名”。
sql查询举例(含答案)
sql查询举例(含答案)查询练习⼀、简单查询(⽆条件查询):1、查询“学⽣档案”表中所有的记录SELECT * FORM 学⽣档案2、查询“学⽣档案”表中全体学⽣的姓名、学号、家庭地址SELECT 姓名, 学号, 家庭地址 FROM 学⽣档案⼆、有条件查询1、查询“成绩管理”表中语⽂成绩在80分以下的学⽣的学号。
SELECT 学号 FROM 成绩管理 WHERE 语⽂<802、查询“成绩管理”表中语⽂成绩在80分到90分之间的学⽣的学号,语⽂,数学,英语成绩。
SELECT 学号,语⽂,数学,英语FROM成绩管理WHERE 语⽂ >= 80 AND 语⽂<=90==(语⽂ BETWEEN 80 AND 90)3、查询“成绩管理”表中数学成绩不在75分到85分之间的学⽣的学号,语⽂,数学,英语成绩。
SELECT 学号,语⽂,数学,英语FROM 成绩管理WHERE 数学 NOT BETWEEN 75 AND 854、查询“学⽣档案”表中李成刚,刘艺梅,郑莉三名学⽣的信息。
SELECT *FROM 学⽣档案WHERE 姓名 IN (“李成刚”,“刘艺梅”,“郑莉”)==(姓名 =“李成刚” OR 姓名=“刘艺梅” OR 姓名=“郑莉”)5、查询“学⽣档案”表中所有姓张的学⽣的姓名、学号和性别SELECT 姓名,学号,性别 FROM学⽣档案WHERE 姓名 LIKE “张*”6、查询“学⽣档案”表中所有姓张且全名为三个汉字的学⽣的姓名SELECT 姓名FROM 学⽣档案WHERE姓名 LIKE “张??”7、查询“学⽣档案”表中第⼆个字符为“建”字的学⽣的学号和姓名SELECT 学号,姓名FROM 学⽣档案WHERE姓名 LIKE “?建*”8、查询“学⽣档案”表中家庭住址为“⼈民路”和“育才路”的学⽣学号,姓名,性别和家庭住址。
SELECT 学号,姓名,性别,家庭住址FROM 学⽣档案WHERE家庭住址 LIKE “⼈民路*” OR家庭住址 LIKE “育才路*”9、查询“学⽣档案”表中所有团员的学⽣班级和姓名。
sql练习题答案
sql练习题答案1. 查询employee表中所有员工的姓名和工资信息。
SELECT Name, SalaryFROM employee;2. 查询employee表中工资大于5000的员工的姓名和工资信息。
SELECT Name, SalaryFROM employeeWHERE Salary > 5000;3. 查询employee表中部门号为10且工资大于3000的员工的姓名和工资信息。
SELECT Name, SalaryFROM employeeWHERE DepartmentID = 10 AND Salary > 3000;4. 查询employee表中部门号为20或30的员工的姓名和工资信息。
SELECT Name, SalaryFROM employeeWHERE DepartmentID IN (20, 30);5. 查询employee表中工资在2000到5000之间的员工的姓名和工资信息。
SELECT Name, SalaryFROM employeeWHERE Salary BETWEEN 2000 AND 5000;6. 查询employee表中所有员工的姓名和入职日期信息,并按照入职日期降序排列。
SELECT Name, HireDateFROM employeeORDER BY HireDate DESC;7. 查询employee表中工资最高的员工的姓名和工资信息。
SELECT Name, MAX(Salary) AS MaxSalaryFROM employee;8. 查询employee表中每个部门的员工数量和平均工资,并按照部门编号升序排列。
SELECT DepartmentID, COUNT(*) AS EmployeeCount, AVG(Salary) AS AvgSalaryFROM employeeGROUP BY DepartmentIDORDER BY DepartmentID ASC;9. 查询employee表中每个部门的员工数量和最高工资,并按照最高工资降序排列。
SQL高级查询——50句查询(含答案)
(Select StuId From tblScore sc Where st.StuId=sc.StuId And Score>60)
--10、查询没有学全所有课的同学的学号、姓名;
Select StuId,StuName From tblStudent st
)
--8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
Select StuId,StuName From tblStudent s1
Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId='001')>
--学生表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex)
--课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId)
--成绩表tblScore(学生编号StuId、课程编号CourseId、成绩Score)
Where tc.TeaName='叶平'
)
--6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
Select StuId,StuName From tblStudent st
Where (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And s1.CourseId='001')>0
(Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId='002')
oracle数据库sql试题及答案
oracle数据库sql试题及答案Oracle数据库SQL试题及答案1. 如何查询员工表中所有员工的姓名和工资,要求工资从高到低排序?```sqlSELECT name, salaryFROM employeesORDER BY salary DESC;```2. 如何统计每个部门的员工人数?```sqlSELECT department_id, COUNT(*) AS employee_countFROM employeesGROUP BY department_id;```3. 如何查询工资高于平均值的员工信息?```sqlSELECT *FROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);```4. 如何找出没有直属上司的员工?```sqlSELECT *FROM employees e1WHERE NOT EXISTS (SELECT 1FROM employees e2WHERE e1.manager_id = e2.employee_id);```5. 如何查询工资在3000到5000之间的员工姓名和工资?```sqlSELECT name, salaryFROM employeesWHERE salary BETWEEN 3000 AND 5000;```6. 如何删除员工表中所有工资低于3000的员工记录?```sqlDELETE FROM employeesWHERE salary < 3000;```7. 如何更新员工表中所有部门为10的员工的工资,增加10%?```sqlUPDATE employeesSET salary = salary * 1.1WHERE department_id = 10;```8. 如何查询员工表中每个员工的姓名和他们直属上司的姓名?```sqlSELECT AS employee_name, AS manager_name FROM employees e1JOIN employees e2 ON e1.manager_id = e2.employee_id; ```9. 如何查询员工表中每个部门的平均工资?```sqlSELECT department_id, AVG(salary) AS avg_salary FROM employeesGROUP BY department_id;```10. 如何查询员工表中工资最高的员工信息?```sqlSELECT *FROM employeesWHERE salary = (SELECT MAX(salary) FROM employees); ```。
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测试题和答案
sql测试题和答案在进行SQL数据库开发时,进行一些测试是非常重要的。
通过测试,我们可以验证数据库的正确性,保证数据的一致性,并且提前发现和解决潜在的问题。
本文将提供一些常见的SQL测试题目,并且给出相应的答案,帮助读者更好地理解SQL语言的使用和测试方法。
一、题目1:查询订单表中购买数量最多的商品名称和购买数量。
答案:```sqlSELECT product_name, MAX(quantity) AS max_quantityFROM ordersGROUP BY product_name;```二、题目2:查询每个部门的平均工资和人数,结果按平均工资降序排列。
答案:```sqlSELECT department, AVG(salary) AS avg_salary, COUNT(*) AS num_employeesFROM employeesGROUP BY departmentORDER BY avg_salary DESC;```三、题目3:查询没有订单的客户名称和联系方式。
答案:```sqlSELECT customer_name, contact_numberFROM customersWHERE customer_id NOT IN (SELECT DISTINCT customer_idFROM orders);```四、题目4:查询每个国家的订单数和总销售额,并按总销售额降序排列。
答案:```sqlSELECT country, COUNT(*) AS num_orders, SUM(total_amount) AS total_salesFROM ordersGROUP BY countryORDER BY total_sales DESC;```五、题目5:查询购买了所有商品的客户名称和联系方式。
答案:```sqlSELECT customer_name, contact_numberFROM customersWHERE customer_id IN (SELECT customer_idFROM ordersGROUP BY customer_idHAVING COUNT(DISTINCT product_name) = (SELECT COUNT(DISTINCT product_name)FROM products));```六、题目6:查询每个部门的最高工资和最低工资。
数据库中SQL查询语句习题含答案
查询问题:设教学数据库Education有三个关系:学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)(1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS”的学生学号与姓名;(4)检索选修课程号为C2或C4的学生学号;(5)检索至少选修课程号为C2和C4的学生学号;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;(8)查询所学课程包含学生S3所学课程的学生学号。
(1)检索计算机系的全体学生的学号,姓名和性别;SELECT Sno,Sname,SexFROM SWHERE Sdept =’CS’;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS”的学生学号与姓名本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。
C → SC→ S基本思路:(1)首先在C表中找出“DS”课程的课程号Cno;(2)然后在SC表中找出Cno等于第一步给出的Cno 集合中的某个元素Cno;(3)最后在S关系中选出Sno等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname送入结果表列。
SELECT Sno,SnameFROM SWHERE Sno IN(SELECT SnoFROM SCWHERE Cno IN(SELECT CnoFROM CWHERE Cname=‘DS’));(4)检索选修课程号为C2或C4的学生学号;SELECT SnoFROM SCWHERE Cno=‘C2’ OR Cno=‘C4’;(5)检索至少选修课程号为C2和C4的学生学号;SELECT SnoFROM SC X,SC YWHERE X.Sno=Y.Sno AND o=‘C2’ AND o=‘C4’;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;在表S中找学生,要求这个学生学了全部课程。
数据库SQL查询例题与解答
1实验目的1 .熟悉数据库的交互式SQL工具,2 . 熟悉通过SQL对数据库进行操作。
3 . 完成作业的上机练习。
2 实验工具sql server利用Sql server及其交互式查询工具-查询分析器来熟悉SQL。
3实验内容和要求1)实验内容:创建数据库boat,包括Sailors ,Boats,Reserves三个表,表结构如下:Sailors(sid: integer, sname: stri ng, rat ing: in teger, age:real)船员(船员编号,姓名,级别,年龄)Boats(bid: integer, bname: stri ng, color: stri ng)船(船编号,名称,颜色)Reserves(sid: integer, bid: integer, day: date) _____租赁(船员编号,船编号,日期)(注:下划线表示主键),并插入一定数据2 )完成下列要求:(1)查询所有船员的信息(2)查询所有姓王的船员的信息(3 )查询租用过103 号船的船员姓名(4)查找租用过船只的船员编号(5 )查找rating>7 且年龄>25 的水手编号(6)查找租用过红船和绿船的水手名字(7 )查找租用过红船或绿船的水手编号(8)查找最年长的水手的年龄和名字(9 )在18 岁以上水手中,对于每个rating 级别中最少有两个水手以上的组中最年轻水手的年龄(10 )查找每条红色船只被租用的次数(11 )把30 岁以上船员的级别调高一级(12 )删除所有年龄超过40 岁的船员信息(13 )建立年龄超过25 岁的船员的视图(14 )对(13 )建立的视图,举一操作的例子(查询、删除、修改均可)2)要求:a.建立boat 数据库的SQL 脚本,插入所有数据项的SQL 脚本(包括所有的测试数据)。
b.记录完成查询要求的SQL 语句脚本。
C •记录完成查询的查询结果。
SQL查询及答案
SQL查询及答案一、单表查询练习1、查询<学生信息表>,查询学生"张三"的全部基本信息Select *from A_studentinfowhere sname='张三'2、查询<学生信息表>,查询学生"张三"和”李四”的基本信息Select *from A_studentinfowhere sname='张三'or sname='李四'3、查询<学生信息表>,查询姓"张"学生的基本信息Select *from A_studentinfowhere sname like '张%'4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息Select *from A_studentinfowhere sname like '%四%'5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
select *from A_studentinfowhere sname like '李_强'6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。
Select *from A_studentinfowhere sname like '张%'or sname like '李%'7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province='北京'8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息Select *from A_studentinfowhere province in ('北京','上海','新疆','山东')9、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province !='北京'10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序select *from A_studentinfoorder by sex,province,class11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份select distinct province as 省份from A_studentinfo12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩Select *from A_studentcoursewhere score is null13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序Select *from A_studentcoursewhere score is not nullorder by score desc二、聚合函数练习1、统计<学生信息表>,统计共有多少个学生Select count (*) as 学生数量from A_studentinfo2、统计<学生信息表>,统计年龄大于20岁的学生有多少个Select count(*) as 学生数量from A_studentinfowhere (2021-yearofbirth)>203、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数select count(*) as 学生数量from A_studentinfowhere enrollment between '1998-01-01' and '2021-12-30'对比以下查询方式,看看有何不同,为什么?select count(*) as 学生数量from A_studentinfowhere enrollment between '1998' and '2021'。
SQL查询语句 例题详解
1. 指定列[例4-1] 查询教师的学号与姓名。
SELECT t_no, t_nameFROM teacher2. SELECT子句使用*号表示选择所有的列[例4-2] 查询全体教师的详细记录。
SELECT t_no, t_name,t_sex,t_dutyFROM teacher或SELECT *FROM teacher[例4-3] 查询teacher表中的前三行数据,使用关键字“TOP”。
SELECT TOP 3 *FROM teacher3. 基于字段表达式的查询[例4-4] 查询全体学生的姓名及年龄sage(可以不显示该列名)。
⏹第一种情况:无列名。
SELECT s_name, datediff(year,s_birthday,getdate())FROM student⏹第二种情况:在列表达式前加“=”指定列名。
SELECT s_name, sage=datediff(year,s_birthday,getdate())FROM student⏹第三种情况:在列表达式后加“AS”指定列名的别名。
SELECT s_name AS 姓名, datediff(year,s_birthday,getdate()) AS sageFROM student4. SELECT语句使用集函数[例4-5] 统计student表中学生的总人数。
SELECT count(*)FROM student[例4-6] 查询选修课程的学生人数。
SELECT COUNT(DISTINCT s_no)FROM choice[例4-7] 查询choice表中成绩列的总合。
SELECT SUM(score) AS 总分FROM choice[例4-8] 查询choice表中分数的最高值。
SELECT MAX(score) AS 分数第一FROM choice[例4-9] 查询choice表中分数的最低值。
SELECT MIN(score) AS 分数最低FROM choice[例4-10] 查询choice表中成绩列的平均分。
数据库中SQL查询语句习题含的答案
数据库中SQL查询语句习题含的答案查询问题:在建立教学数据库教育中有三种关系:学生关系S(SNO、新加坡国立大学、年龄、性别、新加坡国立大学);(3)检索学生人数与选修课名称“DS”之间的关系SC(SNO、CNO、GRADE);课程关系C(CNO、CNAME、CDEPT、TNAME)(1)检索计算机系所有学生的学号、姓名和性别;(2)搜索学生编号和C2学习课程编号的名称;(3)检索选修课“DS”的学生编号和名称;(4)检索C2或C4的学生人数作为选修课;(5)检索至少选修C2和C4课程的学生人数;(6)搜索不学习C2的学生的姓名和年龄;(7)搜索学习所有课程的学生的姓名;(8)查询学生S3所学课程的学生编号。
(1)搜索计算机系所有学生的学号、姓名和性别;选择Sno,Sname,来自S的性别,其中Sdept = ‘ CS(2)用学习课程号C2检索学生的学号和姓名;1.从S 2中选择Sno、Sname。
选择南方,南方在哪里,南方在哪里,南方在哪里。
Sno(从SC和SC中选择Sno。
“C2”;其中CNO =‘ C2’)该查询涉及三个属性:学生编号、姓名和课程名称。
分别存储在S表和C表中,但S表和C表不是直接相连的,它们之间的连接必须通过SC表建立C → SC → S的基本思想:(1)先找出课程编号Cno在C表中的“DS”课程;(2)然后在SC表中找出Cno等于在第一步中给出的Cno集合中的某个元素Cno;(3)最终选择一个Sno等于S关系第二步中Sno集合中的元素的元组,取出Sno和Sname并将其发送到结果表列选择Sno,Sname从S处Sno输入(选择Sno从SC处Cno输入(选择Cno从C处Cname = ‘ DS ‘);(4)检索C2或C4的学生编号作为选修课;从章节中选择斯诺,其中Cno=‘C2 ‘或Cno = ‘ C4 ‘;(5)搜索至少包含C2和C4选修课编号的学生编号;从SC X中选择Sno,SC Y,其中X.Sno=Y.Sno和o=‘C2 ‘和Y . Cno = ‘ C4 ‘;(6)搜索不学习C2的学生的姓名和年龄;1。
sql测试题和答案.docx
sql测试题和答案# SQL测试题1. 基础查询题- 题目:编写一个SQL查询,从`employees`表中选择所有员工的姓名和员工ID。
- 答案:`SELECT name, employee_id FROM employees;`2. 条件查询题- 题目:从`orders`表中选择所有订单金额超过1000的订单。
- 答案:`SELECT * FROM orders WHERE order_amount > 1000;`3. 排序题- 题目:从`products`表中选择所有产品的名称和价格,并按价格降序排列。
- 答案:`SELECT name, price FROM products ORDER BY price DESC;`4. 聚合函数题- 题目:计算`sales`表中所有销售额的总和。
- 答案:`SELECT SUM(sales_amount) AS total_sales FROM sales;`5. 分组查询题- 题目:从`sales`表中按产品ID分组,并计算每个产品的总销售额。
- 答案:`SELECT product_id, SUM(sales_amount) AStotal_sales_per_product FROM sales GROUP BY product_id;`6. 连接查询题- 题目:查询`customers`表和`orders`表,找出所有客户的姓名和他们下过的订单数量。
- 答案:`SELECT , COUNT(o.order_id) AS order_count FROM customers c JOIN orders o ON c.customer_id =o.customer_id GROUP BY ;`7. 子查询题- 题目:找出`employees`表中工资高于平均工资的员工的姓名和工资。
- 答案:`SELECT name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);`8. 多表连接查询题- 题目:查询`employees`表和`departments`表,找出所有员工的姓名、部门名称和部门ID。
经典SQL查询题解答
经典SQL查询题解答数据库查询详细解答create database cstp;use cstp;/*1:建立学生表*/create table student (学号char(3) primary key,姓名char(4),性别char(2),年龄int,班级char(5));insert into student values('108','曾华','男',19,'95033');insert into student values('105','匡明','男',20,'95031');insert into student values('107','王丽','女',20,'95033');insert into student values('101','李军','男',19,'95033');insert into student values('109','王芳','女',22,'95031');insert into student values('103','陆君','男',20,'95031');/*2:建立教师表*/create table teacher(教师号char(3) primary key,姓名char(4),性别char(2),年龄int ,级别char(6),专业char(8));insert into teacher values('804','李成','男',42,'副教授','计算机系');insert into teacher values('856','张旭','男',35,'讲师','电子工程'); insert into teacher values('825','王萍','女',28,'助教','计算机系'); insert into teacher values('831','刘冰','女',25,'助教','电子工程'); /*3:建立课程表*/create table course (课程号char(5) primary key,课程名char(10),教师号char(3),foreign key(教师号) references teacher(教师号));insert into course values('3-105','计算机导论','825');insert into course values('3-245','操作系统','804');insert into course values('6-166','数字电路','856');insert into course values('9-888','高等数学','831');/*4:建立选课表*/create table sc(学号char(3),课程号char(5),primary key(学号,课程号),成绩int,foreign key(学号) references student(学号),foreign key(课程号) references course(课程号));insert into sc values('103','3-245',86);insert into sc values('105','3-245',75);insert into sc values('109','3-245',68);insert into sc values('103','3-105',92);insert into sc values('105','3-105',88);insert into sc values('109','3-105',76);insert into sc values('101','3-105',64);insert into sc values('107','3-105',91);insert into sc values('108','3-105',78);insert into sc values('101','6-166',85);insert into sc values('107','6-166',79);insert into sc values('108','6-166',81);/*5:所有表内容*/select * from student;select * from course;select * from teacher;select * from sc;所有表信息如下:student(学生)表course(课程)表sc(选课)表teacher(教师)表作业题:1.查询选修课程'3-105'且成绩在60到80之间的所有记录。
SQL数据库实验三_简单查询(1)解答
其他:
selectemployeeName,department,
case
whensex='M'then'男'
whensex='F'then'女
whereemployeeNamelike'张%'
10.查询姓张且全名为三个汉字的职工姓名。
SQL语句:
SELECTemployeeName
9.查询所有姓张的职工姓名、所属部门和性别,且性别显示为“男”或“女”。
SQL语句:
SELECTemployeeName,department,sex=
casesex
WHEN'M'THEN'男'
WHEN'F'THEN'女'
ELSE'不详'
END
FROMEmployee
WHEREemployeeNameLIKE'张%'
whensalary<2000then'低收入者'
whensalary>=2000andsalary<4000then'中等收入者'
whensalary>=4000then'高收入者'
end
fromEmployee
WHEREyear(birthday)=1973ANDheadShip='职员'
查询结果:
其他:
SELECT*
FROMEmployee
WHEREyear(birthday)='1973'ANDheadShip='职员'
sql基础查询题
以下是一些基础的SQL查询题,请根据题目要求进行回答。
假设有一个名为"employees"的表,包含以下列:id、name、department、salary。
请问如何查询该表中所有员工的名字和工资?sqlSELECT name, salary FROM employees;假设有一个名为"orders"的表,包含以下列:order_id、product_name、quantity、price。
请问如何查询该表中所有订单的总价?sqlSELECT SUM(price * quantity) AS total_price FROM orders;假设有一个名为"customers"的表,包含以下列:customer_id、name、email。
请问如何查询该表中所有客户的名字和电子邮件地址,并且只返回不重复的记录?sqlSELECT DISTINCT name, email FROM customers;假设有一个名为"products"的表,包含以下列:product_id、product_name、category。
请问如何查询该表中属于某个特定类别的所有产品?sqlSELECT product_name FROM products WHERE category = '特定类别';假设有一个名为"employees"的表,包含以下列:id、name、department。
请问如何查询该表中属于某个特定部门的所有员工?sqlSELECT name FROM employees WHERE department = '特定部门';。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 实验目的1.熟悉数据库的交互式SQL工具。
2.熟悉通过SQL对数据库进行操作。
3.完成作业的上机练习。
2 实验工具sql server利用Sql server及其交互式查询工具-查询分析器来熟悉SQL。
3 实验内容和要求1)实验内容:创建数据库boat,包括Sailors,Boats,Reserves三个表,表结构如下:Sailors(sid: integer, sname: string, rating: integer, age: real)船员(船员编号,,级别,年龄)Boats(bid: integer, bname: string, color: string) 船(船编号,名称,颜色)Reserves(sid: integer, bid: integer, day: date)租赁(船员编号,船编号,日期)(注:下划线表示主键),并插入一定数据。
2)完成下列要求:(1)查询所有船员的信息(2)查询所有姓王的船员的信息(3)查询租用过103号船的船员姓名(4)查找租用过船只的船员编号(5)查找rating>7且年龄>25的水手编号(6)查找租用过红船和绿船的水手名字(7)查找租用过红船或绿船的水手编号(8)查找最年长的水手的年龄和名字(9)在18岁以上水手中,对于每个rating级别中最少有两个水手以上的组中最年轻水手的年龄(10)查找每条红色船只被租用的次数(11)把30岁以上船员的级别调高一级(12)删除所有年龄超过40岁的船员信息(13)建立年龄超过25岁的船员的视图(14)对(13)建立的视图,举一操作的例子(查询、删除、修改均可)2)要求:a.建立boat数据库的SQL脚本,插入所有数据项的SQL脚本(包括所有的测试数据)。
b.记录完成查询要求的SQL语句脚本。
c.记录完成查询的查询结果。
《数据库系统概论》实验报告题目:交互式SQL学号:日期:2012年4月29日实验内容与完成情况:(一)实验所用数据(截图):Sailors表Boats表Reserves表(二)实验内容和要求1)实验内容:创建数据库boat,包括Sailors,Boats,Reserves三个表,表结构如下:Sailors(sid: integer, sname: string, rating: integer, age: real) 船员(船员编号,,级别,年龄)Boats(bid: integer, bname: string, color: string)船(船编号,名称,颜色)Reserves(sid: integer, bid: integer, day: date)租赁(船员编号,船编号,日期)(注:下划线表示主键),并插入一定数据。
2)完成下列要求:(1)查询所有船员的信息。
1.正确结果:2.实现语句:select * from Sailors3.执行结果:4.正确,无问题(2)查询所有姓李的船员的信息1.正确结果:sid sname rating age2 李世民 2 204 李刚 4 2513 李刚 5 272.实现语句:select *from Sailorswhere sname like '%'3执行结果:4.正确,无问题(3)查询租用过6号船的船员姓名1.sname曹操勾践2.from Sailors,Reserveswhere Sailors.sid=Reserves.sidand bid=63执行结果4.正确,无问题(4)查找租用过船只的船员编号1.sid1234567891011121314151617182.实现语句:select distinct sidfrom Reserves3.执行结果4.正确,无问题(5)查找rating>7且年龄>25的水手编号1.sid72.from Sailorswhere rating>7 and age>25 3执行结果:4.正确,无问题(6)查找租用过红船和白船的水手名字1.sname张飞2.实现语句:select sidfrom Sailorswhere Sailors.sid=Reserves.sid andBoats.bid=Reserves.bid and color='红'intersectselect sidfrom Sailorswhere Sailors.sid=Reserves.sid andBoats.bid=Reserves.bid and color='白'3执行结果4.无法执行,改变实现语句【2.实现语句:select snamefrom Sailors,Reserves,Boatswhere Sailors.sid=Reserves.sid andBoats.bid=Reserves.bid and color='红'And sname in(select snamefrom Sailors,Reserves,Boatswhere Sailors.sid=Reserves.sid andBoats.bid=Reserves.bid and color='白') 3.执行结果:4.正确。
】(7)查找租用过红船或绿船的水手编号1.sid1368101716142.实现语句:select distinct sidfrom boats,Reserveswhere boats.bid=Reserves.bid andcolor='绿'or color='红'3,执行结果4.执行错误,改变实现语句:【2.实现语句:select distinct sidfrom boats,Reserveswhere boats.bid=Reserves.bid and ( color='绿'or color='红');3.执行结果:4.正确。
】(8)查找最年长的水手的年龄和名字1.Sname Age马克思412.实现语句:select sname,agefrom sailorswhere age>=all(select age from sailors) 3执行结果4.正确,无问题(9)在18岁以上水手中,对于每个rating级别中最少有两个水手以上的组中最年轻水手的年龄1.Rating Age2 203 234 255 276 317 372.from sailors xwhere age=(select min(age)from sailors ywhere age>20 andy.rating=x.ratinggroup by ratinghaving count(sid)>1)3执行结果4.正确,无问题。
(10)查找每条红色船只被租用的次数1.bid count1 28 12.from Reserves,boatswhere boats.bid=Reserves.bidand color='红'group by boats.bid3执行结果4.注意bid前面需要加boats以加以明确。
(11)把30岁以上船员的级别调高一级1.正确结果:2.实现语句:update sailorsset rating=rating+1where age>30 select * from sailors 3执行结果:1.正确结果:2.实现语句:deletefrom sailorswhere age>40deletefrom Reserveswhere sid in(select sid from sailors where age>40)select * from sailors select * from Reserves 3执行结果:4.正确,无问题。
1.实现语句:create view is_sailorsasselect sid,sname,rating,agefrom sailorswhere age>252.执行结果(14)对(13)建立的视图,举一操作的例子(查询、删除、修改均可)1.实现语句:select *from is_sailorswhere rating>52.执行结果:(三)出现的问题1.数据写入的时候没有注意导致某些问题无法解决。
2.交运算无法执行。
3.and与or的运算顺序搞错。
4.出现指代不明的情况。
(四)解决的问题1.修改数据2.查阅电脑,问题为:3.如果想先算or带括号,如题(7)。
4.带上其所属的表,如有连接的话,select后面应该加sailors.bid而不是只有bid。
(五)未解决的问题1.修改一旦执行就不能返回了么?2.另:由于数据输入的原因,为使结果更据代表性,某些题目可能做了修改,但不改变题目考察意图。