sql查询题目及答案
sql高级查询选择题
sql高级查询选择题SQL(Structured Query Language)是一种用于管理关系型数据库系统的编程语言。
在进行数据库查询时,使用高级查询可以更有效地得到所需结果。
下面是一些SQL高级查询选择题,帮助您巩固相关知识。
1. 以下哪个语句用于在表中创建一个新的索引?A. ALTER INDEXB. CREATE INDEXC. ADD INDEXD. UPDATE INDEX答案:B. CREATE INDEX2. 在表中查询特定字段时,使用以下哪个关键字?A. SELECTB. FROMC. WHERED. GROUP BY答案:A. SELECT3. 以下哪个关键字用于从表中获取独一无二的记录?A. UNIQUEB. DISTINCTC. SETD. UNIQUEKEY答案:B. DISTINCT4. 使用以下哪个关键词可以将查询结果按照字段进行排序?A. ORDER BYB. SORT BYC. GROUP BYD. ARRANGE BY答案:A. ORDER BY5. 如果需要从多个表中检索数据,需要使用下列哪个关键字?A. JOINB. UNIONC. TOGETHERD. COMBINE答案:A. JOIN6. 使用以下哪个运算符可以将两个查询结果集合并在一起?A. INTERSECTB. JOINC. MERGED. UNION答案:D. UNION7. 以下哪个关键字用于选择符合指定条件的记录?A. HAVINGB. WHEREC. FILTERD. SEARCH答案:B. WHERE8. 以下哪个运算符用于模糊搜索?A. LIKEB. WHEREC. EQUALSD. NOT答案:A. LIKE9. 使用以下哪个关键字可以在查询结果中分组数据?A. GROUP BYB. SORT BYC. ORDER BYD. DIVIDE BY答案:A. GROUP BY10. 如果需要在查询结果中筛选符合多个条件的记录,应该使用以下哪个关键字?A. ANDB. ORC. NOTD. ALL答案:A. AND这是一些SQL高级查询选择题的回答,希望对您的学习有所帮助。
SQL查询面试题与答案
SQL查询⾯试题与答案SQL查询⾯试题与答案 SQL语⾔是⼀种数据库查询和程序设计语⾔,⽤于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本⽂件的扩展名。
下⾯是⼩编搜集的SQL查询⾯试题与答案,欢迎⼤家阅读。
SQL查询⾯试题与答案⼀ 1.⼀道SQL语句⾯试题,关于group by表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005-05-10 负 如果要⽣成下列结果, 该如何写sql语句? 胜负 2005-05-09 2 2 2005-05-10 1 2 ------------------------------------------ create table #tmp(rq varchar(10),shengfu nchar(1)) insert into #tmp values('2005-05-09','胜') insert into #tmp values('2005-05-09','胜') insert into #tmp values('2005-05-09','负') insert into #tmp values('2005-05-09','负') insert into #tmp values('2005-05-10','胜') insert into #tmp values('2005-05-10','负') insert into #tmp values('2005-05-10','负') 1)select rq, sum(case when shengfu='胜' then 1 else 0 end)'胜',sum(case when shengfu='负' then 1 else 0 end)'负' from #tmp group by rq 2) select N.rq,N.勝,M.負 from ( select rq,勝=count(*) from #tmp where shengfu='胜'group by rq)N inner join (select rq,負=count(*) from #tmp where shengfu='负'group by rq)M on N.rq=M.rq 3)select a.col001,a.a1 胜,b.b1 负 from (select col001,count(col001) a1 from temp1 where col002='胜' group by col001) a, (select col001,count(col001) b1 from temp1 where col002='负' group by col001) b where a.col001=b.col001 2.请教⼀个⾯试中遇到的SQL语句的查询问题 表中有A B C三列,⽤SQL语句实现:当A列⼤于B列时选择A列否则选择B列,当B列⼤于C列时选择B列否则选择C列。
SQL经典习题及答案(新手必看)
Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题: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#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;update SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100* SUM(CASE WHEN isnull(score,0)>=60THEN 1ELSE 0END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第3名到第6名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩> T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1; 28、查询男生、女生人数Select count(Ssex) as 男生人数from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) as agefrom studentwhere CONVERT(char(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score <60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e <60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。
SQL-查询题目(整理)
SQL语言和查询、视图部分一、选择题:1、利用查询设计器创建的查询,其查询结果输出去向的默认类型是__B__。
A)临时表B)浏览C)表 D)屏幕2、如果要在屏幕上直接看到查询结果,“查询去向”应该选择__D__。
A) 屏幕B) 浏览C) 临时表或屏幕D) 浏览或屏幕3、一条没有指明去向的SQL SELECT 语句执行之后,会把查询结果显示在屏幕上,要退出这个查询窗口,应该按的键是__C__A)ALT B)DELETE C)ESC D)RETURN4、不可以作为查询与视图的数据源的是__A__。
A)查询B)数据库C)记录D)字段5、查询设计器和视图设计器的主要不同表现在于__B__。
A) 查询设计器有“更新条件”选项卡,没有“查询去向”选项B) 查询设计器没有“更新条件”选项卡,有“查询去向”选项C) 视图设计器没有“更新条件”选项卡,有“查询去向”选项D) 视图设计器有“更新条件”选项上,也有“查询去向”选项6、在Visual FoxPro中,关于视图的正确叙述是__D__A) 视图与数据库表相同,用来存储数据B) 视图不能同数据库表进行连接操作C) 在视图上不能进行更新操作D) 视图是从一个或多个数据库表导出的虚拟表7、在SQL查询时,使用WHERE子句指出的是__C__。
A) 查询目标B) 查询结果C) 查询条件D) 查询视图8、删除视图salary的命令是BA)DROP salary VIEW B)DROP VIEW salary C)DELETE salary VIEW D)DELETE salary9、不属于数据定义功能的SQL语句是CA) CREATE TABLE B) CREATE CURSOR C) UPDATE D) ALTER TABLE10、在SQL中,建立视图用CA) CREATE SCHEMA命令B) CREATE TABLE命令C) CREATE VIEW命令D) CREATE INDEX命令11、 SQL语句中删除表的命令是AA) DROP TABLE B) DELETE TABLE C) ERASE TABLE D) DELETE DBF12、 SQL语句中修改表结构的命令是CA) MODIFY TABLE B) MODIFY STRUCTUREC) ALTER TABLE D) ALTER STRUCTURE13、使用SQL语句进行分组检索时,为了去掉不满足条件的分组,应当BA)使用WHERE子句B)在GROUP BY后面使用HAVING 子句C)先使用WHERE子句,再使用HAVING 子句。
sql考试题及答案
sql考试题及答案SQL考试题及答案一、选择题(每题2分,共20分)1. 下列哪个SQL语句用于查询数据?A. SELECTB. INSERTC. UPDATED. DELETE答案:A2. 以下哪个SQL语句用于删除表中的数据?A. DROP TABLEB. DELETE FROMC. TRUNCATE TABLED. ALTER TABLE答案:B3. SQL中的主键约束是什么?A. UNIQUEB. PRIMARY KEYC. FOREIGN KEYD. CHECK答案:B4. 以下哪个函数用于计算字符串的长度?A. CONCAT()B. SUBSTRING()C. LENGTH()D. UPPER()答案:C5. 以下哪个语句用于添加新的数据表?A. CREATE DATABASEB. CREATE TABLEC. ALTER TABLED. DROP TABLE答案:B6. SQL中的LIKE语句用于什么?A. 排序B. 条件搜索C. 聚合数据D. 连接表答案:B7. 以下哪个语句用于修改表结构?A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. TRUNCATE TABLE答案:B8. SQL中的GROUP BY语句用于什么?A. 排序结果B. 聚合数据C. 过滤数据D. 连接表答案:B9. 以下哪个语句用于删除数据库?A. DROP TABLEB. DROP DATABASEC. DELETE FROMD. TRUNCATE TABLE答案:B10. SQL中的INNER JOIN用于什么?A. 内连接B. 外连接C. 全连接D. 交叉连接答案:A二、填空题(每空2分,共20分)1. SQL中的______语句用于插入数据到表中。
答案:INSERT INTO2. 要查询所有列,可以使用SQL中的______关键字。
答案:*3. SQL中的______语句用于删除表。
sql语句面试题及答案
sql语句面试题及答案一、基本查询1. 简单查询请问如何查询一个表中的所有记录?答:可以使用SELECT * FROM table_name; 命令来查询表中的所有记录。
2. 条件查询如果我只想查询特定条件下的记录,例如查询年龄大于30的员工信息,应该怎么做?答:可以使用WHERE子句来进行条件查询,语句如下:SELECT * FROM employees WHERE age > 30;3. 限制查询结果在查询时,如果只想获取前5条记录,应该如何操作?答:可以使用LIMIT关键字来限制查询结果的数量,语句如下:SELECT * FROM table_name LIMIT 5;二、聚合查询1. 计数如何计算某个表中的记录数?答:可以使用COUNT()函数来计算表中的记录数,语句如下:SELECT COUNT(*) FROM table_name;2. 求和如果需要计算某列的总和,例如计算销售总额,应该怎么做?答:可以使用SUM()函数来计算某列的总和,语句如下:SELECT SUM(sales_amount) FROM sales_table;3. 平均值如何求某列的平均值,比如平均工资?答:可以使用AVG()函数来计算某列的平均值,语句如下:SELECT AVG(salary) FROM employees;三、分组查询1. 分组统计请问如何按照某个字段进行分组,并计算每个分组的记录数?答:可以使用GROUP BY子句来进行分组统计,语句如下:SELECT department, COUNT(*) FROM employees GROUP BY department;2. 多列分组如果需要按照多个字段进行分组,应该如何操作?答:可以在GROUP BY子句中列出所有需要分组的字段,语句如下:SELECT department, job_title, COUNT(*) FROM employees GROUP BY department, job_title;3. 分组聚合运算在分组查询中,如何对每个分组执行聚合运算,例如计算每个部门的最高工资?答:可以使用GROUP BY子句结合聚合函数来进行分组聚合运算,语句如下:SELECT department, MAX(salary) AS max_salary FROM employees GROUP BY department;四、连接查询1. 内连接如何查询两个表中有关联的记录?答:可以使用INNER JOIN来查询两个表中有关联的记录,语句如下:SELECT * FROM table1 INNER JOIN table2 ON mon_field = mon_field;2. 左连接如果需要查询左表的所有记录,以及右表中与之关联的记录,没有关联的则显示NULL,应该怎么做?答:可以使用LEFT JOIN来实现,语句如下:SELECT * FROM table1 LEFT JOIN table2 ON mon_field = mon_field;3. 右连接请问如何查询右表的所有记录,以及左表中与之关联的记录?答:可以使用RIGHT JOIN来实现,语句如下:SELECT * FROM table1 RIGHT JOIN table2 ON mon_field = mon_field;五、子查询1. 非相关子查询在查询时,如果需要在WHERE子句中使用一个SELECT语句作为条件,应该怎么做?答:可以使用非相关子查询来实现,语句如下:SELECT * FROM table1 WHERE column_name IN (SELECT column_name FROM table2);2. 相关子查询如果子查询需要引用外部查询的列,应该怎么做?答:可以使用相关子查询,在子查询中使用外部查询的列,语句如下:SELECT * FROM table1 WHERE column_name = (SELECT column_name FROM table2 WHERE related_column = table1.related_column);六、更新和删除操作1. 更新数据请问如何使用SQL语句来更新表中的记录?答:可以使用UPDATE语句来更新表中的记录,语句如下:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;2. 删除数据如果需要删除表中的某些记录,应该如何操作?答:可以使用DELETE语句来删除记录,语句如下:DELETE FROM table_name WHERE condition;七、排序和索引1. 排序查询结果如何对查询结果进行排序?答:可以使用ORDER BY子句对查询结果进行排序,语句如下:SELECT * FROM table_name ORDER BY column_name ASC/DESC;2. 创建索引为了提高查询效率,如何为表中的列创建索引?答:可以使用CREATE INDEX语句来创建索引,语句如下:CREATE INDEX index_name ON table_name (column_name);通过以上问题的探讨,我们了解了SQL语句在面试中常见的问题及答案。
sql笔试题及答案
sql笔试题及答案1. 题目1:查询员工表中工资大于5000的员工信息,并按照工资降序排列。
答案:SELECT * FROM 员工表 WHERE 工资 > 5000 ORDER BY 工资DESC;解析:使用SELECT语句查询员工表中满足工资大于5000的记录,并使用ORDER BY子句按照工资字段降序排列。
2. 题目2:统计订单表中每个客户的订单总数,并按照订单总数升序排列。
答案:SELECT 客户, COUNT(订单编号) AS 订单总数 FROM 订单表GROUP BY 客户 ORDER BY 订单总数 ASC;解析:使用SELECT语句查询订单表中每个客户的订单总数,并使用GROUP BY子句按照客户字段进行分组,COUNT函数用于统计订单编号,AS关键字用于为统计结果起别名,ORDER BY子句按照订单总数字段升序排列。
3. 题目3:查询学生表中不重复的学生姓名和对应的年龄。
答案:SELECT DISTINCT 学生姓名, 年龄 FROM 学生表;解析:使用SELECT DISTINCT语句查询学生表中不重复的学生姓名和对应的年龄。
4. 题目4:查询订单表中订单金额最大的订单信息。
答案:SELECT * FROM 订单表 WHERE 订单金额 = (SELECT MAX(订单金额) FROM 订单表);解析:使用SELECT语句查询订单表中订单金额等于最大订单金额的订单信息,使用子查询和MAX函数找出最大订单金额。
5. 题目5:查询销售表中每个月份的总销售金额。
答案:SELECT DATE_FORMAT(销售日期, '%Y-%m') AS 月份, SUM(销售金额) AS 总销售金额 FROM 销售表 GROUP BY DATE_FORMAT(销售日期, '%Y-%m');解析:使用SELECT语句查询销售表中每个月份的总销售金额,使用DATE_FORMAT函数将销售日期格式化成年月的形式,并使用SUM函数统计销售金额,使用GROUP BY子句按照月份进行分组。
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查询语句习题含的答案解析
查询问题:设教学数据库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 = AND =‘C2’ AND =‘C4’;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;在表S中找学生,要求这个学生学了全部课程。
(完整版)sql练习题+答案
(一) 新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是’男’或’女’(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100之间cs(成绩表):其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0〜100之间,可以不输入值create table cs (sno smallint not null referencesstudent ( sno ), ----定义成外键cno smallint not null referencescourse ( cno ), ----定义成外键cj smallint constraint e check (cj between0 and 100 ),---- 检查约束一—j(成绩)只能在~100之间,可以不输入值constraint f primary key ( sno , cno )---- 定义学生学号和课程号为sc表的主键)course(课程表)其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname非空(三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。
Select sno , sname from student(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。
(3)查询全体学生的详细记录。
select * from student(4)查全体学生的姓名及其出生年份。
select sname , birth from student(5)查询学校中有哪些系。
select distinct dept from student(6)查询选修了课程的学生学号。
select sno from cs where eno is not null(7)查询所有年龄在20岁以下的学生姓名及其年龄。
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考试题及答案一、选择题1. 在SQL中,用于查询一个表中的所有记录的关键字是什么?A. SELECT ALLB. SELECT *C. SELECT DISTINCTD. SELECT TOP 10答案:B2. 下列哪个SQL语句用于添加新的数据行到表中?A. INSERT INTOB. ADD INTOC. CREATE INTOD. NEW INTO答案:A3. 在SQL中,用于删除表中的记录的关键字是什么?A. REMOVEB. DELETEC. ERASED. DROP答案:B4. 下列哪个函数用于计算字段中所有值的总和?A. COUNTB. SUMC. AVGD. MAX答案:B5. 如果你想更新表中的记录,应该使用哪个SQL语句?A. UPDATEB. ALTERC. MODIFYD. CHANGE答案:A二、填空题1. 在SQL中,________关键字用于从一个或多个表中选择数据。
答案:SELECT2. 要为表中的数据设置条件过滤,应使用________子句。
答案:WHERE3. 当需要对查询结果进行排序时,可以使用________关键字。
答案:ORDER BY4. 如果需要对表中的数据进行分组,应使用________关键字。
答案:GROUP BY5. 为了对分组后的结果进行筛选,可以使用________子句。
答案:HAVING三、简答题1. 请简述SQL中的主键和外键的区别。
答案:主键是表中用于唯一标识每条记录的字段,它不允许重复值和NULL值。
外键则是一个表中的字段,它是另一个表的主键的引用,用于建立表之间的联系。
外键可以有重复值,也可以为NULL。
2. 解释SQL中的JOIN操作。
答案:JOIN操作是SQL中用于结合两个或多个表中的数据的查询操作。
通过JOIN,可以根据相关字段将不同表中的记录连接起来,以便进行更复杂的数据分析和查询。
3. 什么是SQL中的事务?答案:事务是SQL中一组操作的集合,这些操作要么全部成功执行,要么全部不执行。
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面试题目汇总(3篇)
第1篇第一部分:基础SQL查询1. 如何使用SELECT语句从数据库中查询数据?- 答案:SELECT语句用于从数据库表中查询数据。
基本语法如下:```sqlSELECT column1, column2, ... FROM table_name;```2. 如何使用WHERE子句对查询结果进行过滤?- 答案:WHERE子句用于过滤查询结果,只返回满足特定条件的行。
语法如下: ```sqlSELECT column1, column2, ... FROM table_name WHERE condition;```3. 如何使用ORDER BY子句对查询结果进行排序?- 答案:ORDER BY子句用于对查询结果进行排序。
语法如下:```sqlSELECT column1, column2, ... FROM table_name ORDER BY column1ASC|DESC;```4. 如何使用LIMIT子句限制查询结果的数量?- 答案:LIMIT子句用于限制查询结果的数量。
语法如下:```sqlSELECT column1, column2, ... FROM table_name LIMIT row_count;```5. 如何使用DISTINCT关键字去除查询结果中的重复值?- 答案:DISTINCT关键字用于去除查询结果中的重复值。
语法如下:```sqlSELECT DISTINCT column1, column2, ... FROM table_name;```第二部分:高级SQL查询6. 如何使用JOIN子句进行多表查询?- 答案:JOIN子句用于连接两个或多个表,并返回满足连接条件的行。
常见的JOIN类型包括:- INNER JOIN:返回两个表中匹配的行。
- LEFT JOIN(或LEFT OUTER JOIN):返回左表的所有行,即使右表中没有匹配的行。
- RIGHT JOIN(或RIGHT OUTER JOIN):返回右表的所有行,即使左表中没有匹配的行。
sql数据库试题及答案
sql数据库试题及答案SQL数据库试题一1. 下面哪个命令可以创建一个名为"employee"的表格?A. CREATE TABLE employee;B. NEW TABLE employee;C. ADD TABLE employee;D. INSERT TABLE employee;答案:A. CREATE TABLE employee;2. 下列哪个是SQL数据库的关键字?A. SELECTB. COLUMNC. INSERTD. ADD答案:A. SELECT3. 在SQL中,如何查询一个名为"customers"的表格的所有记录?A. SELECT * FROM customers;B. SELECT ALL FROM customers;C. SELECT RECORDS FROM customers;D. SELECT DATA FROM customers;答案:A. SELECT * FROM customers;4. 如何在SQL中向表格中插入新的记录?A. ADD NEW INTOB. UPDATE TABLEC. INSERT INTOD. CREATE NEW答案:C. INSERT INTO5. 如何根据特定条件从表格中删除记录?A. REMOVE FROMB. ERASE ROWC. DELETE FROMD. DROP RECORD答案:C. DELETE FROMSQL数据库试题二1. 下面哪个关键字可以用来对查询结果进行排序?A. GROUP BYB. SORT BYC. ORDER BYD. ARRANGE BY答案:C. ORDER BY2. 在SQL中,如何对表格的指定列进行更新?A. MODIFY COLUMNB. EDIT TABLEC. UPDATE COLUMND. ALTER TABLE答案:C. UPDATE COLUMN3. 下面哪个函数可以计算表格中指定列的平均值?A. AVG()B. SUM()C. MAX()D. COUNT()答案:A. AVG()4. 在SQL中,如何查找表格中满足特定条件的记录数量?A. GET()B. FETCH()C. SEARCH()D. COUNT()答案:D. COUNT()5. 下面哪个关键字可以用来从多个表格中联合查询数据?A. UNIONB. JOINC. CONNECTD. COMBINE答案:B. JOIN文章到此结束,希望以上SQL数据库试题及答案能帮助到您对SQL数据库的理解和学习。
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试题及答案一、单项选择题(每题2分,共20分)1. SQL中用于查询数据的语句是:A. SELECTB. INSERTC. UPDATED. DELETE答案:A2. 在SQL中,用于添加新记录的语句是:A. SELECTB. INSERTC. UPDATED. DELETE答案:B3. SQL中用于修改数据的语句是:A. SELECTB. INSERTC. UPDATED. DELETE答案:C4. SQL中用于删除数据的语句是:A. SELECTB. INSERTC. UPDATED. DELETE答案:D5. SQL中用于创建新表的语句是:A. CREATE TABLEB. INSERT INTOC. UPDATE TABLED. DROP TABLE答案:A6. 在SQL中,哪个关键字用于指定查询结果中列的别名?A. ASB. FROMC. WHERED. SELECT答案:A7. SQL中用于指定查询条件的关键字是:A. SELECTB. FROMC. WHERED. INTO答案:C8. SQL中用于连接两个或多个表的关键字是:A. JOINB. UNIONC. INTERSECTD. EXCEPT答案:A9. 在SQL中,用于分组数据的关键字是:A. GROUP BYB. ORDER BYC. HAVINGD. LIMIT答案:A10. SQL中用于排序查询结果的关键字是:A. GROUP BYB. ORDER BYC. HAVINGD. LIMIT答案:B二、多项选择题(每题3分,共15分)1. 在SQL中,以下哪些关键字用于数据定义语言(DDL)?A. CREATEB. INSERTC. DROPD. ALTER答案:A, C, D2. 在SQL中,以下哪些关键字用于数据操纵语言(DML)?A. SELECTB. INSERTC. UPDATED. DELETE答案:A, B, C, D3. 在SQL中,以下哪些关键字用于数据控制语言(DCL)?A. GRANTB. REVOKEC. COMMITD. ROLLBACK答案:A, B4. 在SQL中,以下哪些语句可以用于数据的聚合操作?A. COUNTB. SUMC. AVGD. MAX答案:A, B, C, D5. 在SQL中,以下哪些关键字用于查询优化?A. INDEXB. JOINC. WHERED. GROUP BY答案:A, B, C, D三、填空题(每题3分,共30分)1. SQL中的________关键字用于创建新数据库。
SQL试题精选及答案
SQL试题精选及答案1. 请写出SQL中创建新表的语句。
答案:CREATE TABLE 表名 (列1 类型, 列2 类型, ...);2. 如何在SQL中查询特定列的数据?答案:SELECT 列名 FROM 表名 WHERE 条件;3. 请解释SQL中的JOIN操作。
答案:JOIN操作用于将两个或多个表中的行组合起来,基于一个共同的列。
4. 写出SQL中更新表中数据的语句。
答案:UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2 WHERE 条件;5. 如何在SQL中删除表中的数据?答案:DELETE FROM 表名 WHERE 条件;6. 请描述SQL中的GROUP BY子句的作用。
答案:GROUP BY子句用于将取回的记录分组,可以与聚合函数一起使用,如COUNT、SUM等。
7. SQL中如何使用子查询?答案:子查询是嵌套在另一个查询中的查询,可以出现在SELECT、INSERT、UPDATE或DELETE语句中。
8. 请写出SQL中创建索引的语句。
答案:CREATE INDEX 索引名 ON 表名 (列名);9. 如何在SQL中使用事务?答案:可以使用BEGIN TRANSACTION开始事务,然后执行一系列操作,最后使用COMMIT提交事务或ROLLBACK回滚事务。
10. 请解释SQL中的主键和外键。
答案:主键是表中用来唯一标识每行数据的列或列组合,而外键是一个表中的列或列组合,它在另一个表中作为主键。
11. SQL中如何进行数据排序?答案:使用ORDER BY子句,如SELECT * FROM 表名 ORDER BY 列名ASC 或 DESC。
12. 如何在SQL中使用聚合函数?答案:聚合函数如SUM、COUNT、AVG等,可以与GROUP BY子句一起使用,对数据进行汇总。
13. 请写出SQL中插入数据的语句。
答案:INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);14. 请解释SQL中的视图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库中有如下三个表:
学生表(学号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 1199
5.从学生表中查询年龄小于18和大于20的所有学生的学号和姓名
select学号,姓名from学生表
where年龄<18 or年龄>20
6.从学生表中查询计算机系年龄小于20的所有学生的信息
select*from学生表
where系部='computer'and年龄<20
7.从学生表中查询姓名以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(姓名)=5
11.从学生表中查询有年龄信息的学生的学号和姓名
select学号,姓名from学生表
where年龄is not null
12.从学生表中查询最大年龄和最小年龄
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成绩>=60
26.从选课表中查询所有无考试成绩的学生的学号和课程的课程号
select学号,课程号from选课表
where成绩is null
27.从选课表中查询选修了课程号以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 null
31.从选课表中查询选修了课程的学生的人数
select count(distinct学号)总人数from选课表
31.找出姓名以D开头的学生姓名和所有成绩
select学生表.姓名,选课表.成绩
from学生表join选课表on学生表.学号=选课表.学号
where学生表.姓名LIKE'D%'
32.查找的所有学生姓名与学号,结果按学号降序排序
select 学号,姓名
from学生表
order BY学号DESC
33.查找成绩介于80和90之间的学生姓名,结果按成绩和姓名升序排序
select学生表.姓名
from选课表join学生表on学生表.学号=选课表.学号
where选课表.成绩between 80 and 90
order 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 null
37.查找成绩高于90分的学生姓名、学号及系别
select学生表.姓名,学生表.学号,学生表.系部
from学生表join选课表on学生表.学号=选课表.学号
where选课表.成绩>=90
38.找出选修了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,INSERT
ON Stu
TO uus
43.增加一个登录,登录名为tp,密码为123,默认的数据库为stu
EXEC sp_addlogin 'tp', '123', 'stu'
44.将登录tp增加为test库的一个用户,并连接到test库。
exec sp_adduser 'tp'
45.授权SELECT.
use s tu
GRANT SELECT ON stu to tp
46.删除用户与登录.
exec sp_dropuser 'tp'
exec sp_droplogin 'tp'
47.uus角色的select权限的收回
REVOKE select
ON stu
FROM uus;
48.打开学生表
Use stu。