SQL语句练习及答案
- 格式:doc
- 大小:260.50 KB
- 文档页数:14
(完整版)sql语句练习题及答案⼀在数据库 school 中建⽴student , sc, course 表。
学⽣表、课程表、选课表属于数据库School ,其各⾃的数据结构如下:学⽣Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学⽣选课SC(Sno,Cno,Grade)⼆设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使⽤ Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男⽣delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学⽣的系科为: JSJ2 把陈⼩明的年龄加1岁,性别改为⼥。
2 修改李⽂庆的1001课程的成绩为93 分3 把“数据库原理”课的成绩减去1分Select 查询语句⼀单表1查询年龄在19⾄21岁之间的⼥⽣的学号,姓名,年龄,按年龄从⼤到⼩排列。
2查询姓名中第2个字为“明”字的学⽣学号、性别。
3查询 1001课程没有成绩的学⽣学号、课程号4查询JSJ 、SX、WL 系的年龄⼤于25岁的学⽣学号,姓名,结果按系排列5按10分制查询学⽣的sno,cno,10分制成绩(1-10分为1 ,11-20分为2 ,30-39分为3,。
90-100为10)6查询 student 表中的学⽣共分布在那⼏个系中。
sql语句期末试题及答案```一、单项选择题(共10题,每题2分,共20分)1. 在SQL中,下列哪个命令用于创建数据库?A. CREATE DATABASEB. CREATE TABLEC. CREATE INDEXD. CREATE VIEW答案:A2. 在SQL中,用于删除表的命令是?A. DELETEB. DROP TABLEC. REMOVE TABLED. TRUNCATE TABLE答案:B3. 在SQL中,用于在表中插入新记录的命令是?A. INSERT INTOB. UPDATEC. ADDD. SET答案:A4. 下列语句中,哪一个用于从表中选择特定的行?A. SELECTB. FILTERC. SEARCHD. FIND答案:A5. 在SQL中,用于更新表中记录的命令是?A. MODIFYB. CHANGEC. UPDATED. ALTER答案:C6. 在SQL中,用于删除表中记录的命令是?A. DELETEB. DROPC. REMOVED. TRUNCATE答案:A7. 下列哪个关键字用于从表中选择唯一的记录?A. UNIQUEB. DISTINCTC. UNIQUEKEYD. PRIMARY答案:B8. 在SQL中,用于指定表的新名称的命令是?A. RENAME TABLEB. ALTER TABLEC. MODIFY TABLED. CHANGE TABLE答案:A9. 在SQL中,用于修改表中列定义的命令是?A. RENAME COLUMNB. ALTER COLUMNC. MODIFY COLUMND. CHANGE COLUMN答案:C10. 下列哪个操作符用于在WHERE子句中判断一个值是否在指定的列表中?A. INB. NOTC. LIKED. BETWEEN答案:A二、判断题(共5题,每题2分,共10分)1. 在SQL中,SELECT语句用于删除表中的记录。
SQL基础知识题库100道及答案(完整版)1. 在SQL 中,用于创建表的语句是()A. CREATE TABLEB. INSERT INTOC. UPDATED. DELETE答案:A2. 以下哪个关键字用于在SQL 中添加数据()A. ADDB. INSERTC. APPENDD. PUT答案:B3. 在SQL 中,用于从表中检索数据的语句是()A. SELECTB. GETC. FETCHD. REQUEST答案:A4. 以下哪个关键字用于在SQL 中更新数据()A. MODIFYB. CHANGEC. UPDATED. REPLACE答案:C5. 要从表中删除数据,应使用的SQL 语句是()A. DROPB. DELETEC. REMOVED. CLEAR答案:B6. SQL 中用于创建索引的关键字是()A. CREATE INDEXB. MAKE INDEXC. BUILD INDEXD. ESTABLISH INDEX答案:A7. 以下哪种数据类型用于存储整数()A. INTB. FLOATC. VARCHARD. DATE答案:A8. 用于存储字符串的常见数据类型是()A. CHARB. INTC. DECIMALD. DOUBLE答案:A9. 在SQL 中,用于对结果集进行排序的关键字是()A. SORTB. ORDER BYC. ARRANGED. ALIGN答案:B10. 以下哪个运算符用于等于比较()A. =B. ==C. <>D. >答案:A11. 用于不等于比较的运算符是()A.!=B. < >C. NOT EQUALSD. DIFFERENT答案:B12. 以下哪个运算符用于大于比较()A. >B. >=C. <D. <=答案:A13. 用于小于比较的运算符是()A. <B. <=C. >D. >=答案:A14. 以下哪个关键字用于在SQL 中进行分组操作()A. GROUP BYB. SORT BYC. CLASSIFY BYD. CATEGORIZE BY答案:A15. 聚合函数SUM 用于()A. 计算总和B. 计算平均值C. 计算数量D. 计算最小值答案:A16. 聚合函数AVG 用于()A. 计算总和B. 计算平均值C. 计算数量D. 计算最大值答案:B17. COUNT 函数用于()A. 计算总和B. 计算平均值C. 计算数量D. 计算最小值答案:C18. MAX 函数用于()A. 计算总和B. 计算平均值C. 计算最大值D. 计算最小值答案:C19. MIN 函数用于()A. 计算总和B. 计算平均值C. 计算最大值D. 计算最小值答案:D20. 在SQL 中,用于连接两个表的关键字是()A. JOINB. CONNECTC. LINKD. BIND答案:A21. 内连接使用的关键字是()A. INNER JOINB. LEFT JOINC. RIGHT JOIND. FULL JOIN答案:A22. 左连接使用的关键字是()A. INNER JOINB. LEFT JOINC. RIGHT JOIND. FULL JOIN答案:B23. 右连接使用的关键字是()A. INNER JOINB. LEFT JOINC. RIGHT JOIND. FULL JOIN答案:C24. 全连接使用的关键字是()A. INNER JOINB. LEFT JOINC. RIGHT JOIND. FULL JOIN答案:D25. 在SQL 中,用于限制结果集行数的关键字是()A. LIMITB. RESTRICTC. BOUNDD. CONSTRAINT答案:A26. 以下哪个子句用于在SQL 中进行条件筛选()A. WHEREB. HAVINGC. FROMD. GROUP BY答案:A27. HAVING 子句通常与()一起使用A. GROUP BYB. ORDER BYC. WHERED. FROM答案:A28. 在SQL 中,用于创建视图的语句是()A. CREATE VIEWB. MAKE VIEWC. BUILD VIEWD. ESTABLISH VIEW 答案:A29. 以下哪个关键字用于删除视图()A. DROP VIEWB. DELETE VIEWC. REMOVE VIEWD. CLEAR VIEW 答案:A30. 要在SQL 中添加注释,可以使用()A. //B. /* */C. #D. --答案:D31. 在SQL 中,以下哪种数据类型用于存储日期和时间()A. DATEB. TIMEC. DATETIMED. TIMESTAMP答案:C32. 用于提取日期部分的函数是()A. DATEPART()B. DAY()C. MONTH()D. YEAR()答案:A33. 以下哪个函数用于计算字符串的长度()A. LENGTH()B. SIZE()C. COUNT()D. LEN()答案:A34. 在SQL 中,用于将字符串转换为大写的函数是()A. UPPER()B. TO_UPPER()C. CAPITALIZE()D. BIGCASE()答案:A35. 用于将字符串转换为小写的函数是()A. LOWER()B. TO_LOWER()C. SMALLCASE()D. DECAPITALIZE()答案:A36. 以下哪个函数用于去除字符串两端的空格()A. TRIM()B. CLEAN()C. REMOVE_SPACES()D. STRIP()答案:A37. 在SQL 中,用于执行事务的语句是()A. BEGIN TRANSACTIONB. START TRANSACTIONC. OPEN TRANSACTIOND. INITIATE TRANSACTION答案:A38. 提交事务使用的语句是()A. COMMITB. SUBMITC. CONFIRMD. VALIDATE答案:A39. 回滚事务使用的语句是()A. ROLLBACKB. REVERTC. CANCELD. ABORT答案:A40. 以下哪个关键字用于在SQL 中创建存储过程()A. CREATE PROCEDUREB. MAKE PROCEDUREC. BUILD PROCEDURED. ESTABLISH PROCEDURE答案:A41. 调用存储过程使用的语句是()A. EXECUTEB. CALLC. INVOKED. RUN答案:B42. 在SQL 中,用于删除存储过程的语句是()A. DROP PROCEDUREB. DELETE PROCEDUREC. REMOVE PROCEDURED. CLEAR PROCEDURE答案:A43. 以下哪个关键字用于在SQL 中创建触发器()A. CREATE TRIGGERB. MAKE TRIGGERC. BUILD TRIGGERD. ESTABLISH TRIGGER44. 删除触发器使用的语句是()A. DROP TRIGGERB. DELETE TRIGGERC. REMOVE TRIGGERD. CLEAR TRIGGER答案:A45. 在SQL 中,用于授予权限的语句是()A. GRANTB. ALLOWC. PERMITD. AUTHORIZE答案:A46. 收回权限使用的语句是()A. REVOKEB. DENYC. REFUSED. FORBID答案:A47. 以下哪个关键字用于在SQL 中创建索引的唯一性约束()A. UNIQUEB. PRIMARY KEYC. FOREIGN KEYD. CHECK答案:A48. 用于定义主键约束的关键字是()A. PRIMARY KEYB. UNIQUE KEYC. FOREIGN KEYD. INDEX KEY答案:A49. 外键约束使用的关键字是()A. FOREIGN KEYB. OUTER KEYC. RELATED KEYD. REFERENCED KEY答案:A50. 以下哪个约束用于检查数据的有效性()A. CHECKB. VALIDATEC. INSPECTD. VERIFY答案:A51. 在SQL 中,以下哪个语句用于创建数据库()A. CREATE DATABASEB. MAKE DATABASEC. BUILD DATABASED. ESTABLISH DATABASE 答案:A52. 要删除数据库,应使用的语句是()A. DROP DATABASEB. DELETE DATABASEC. REMOVE DATABASED. CLEAR DATABASE 答案:A53. 以下哪个关键字用于在SQL 中切换数据库()A. USEB. SELECT DBC. CHANGE DBD. SWITCH DB答案:A54. 在SQL 中,以下哪种操作可以对多个表同时进行()A. 联合查询B. 子查询C. 交叉连接D. 内连接55. 子查询可以在以下哪个子句中使用()A. SELECTB. FROMC. WHERED. 以上都可以答案:D56. 以下哪个语句用于在SQL 中创建用户()A. CREATE USERB. MAKE USERC. BUILD USERD. ESTABLISH USER答案:A57. 删除用户使用的语句是()A. DROP USERB. DELETE USERC. REMOVE USERD. CLEAR USER答案:A58. 在SQL 中,用于修改表结构的语句是()A. ALTER TABLEB. MODIFY TABLEC. CHANGE TABLED. UPDATE TABLE答案:A59. 以下哪个操作可以添加列到表中()A. ADD COLUMNB. INSERT COLUMNC. APPEND COLUMND. PUT COLUMN答案:A60. 要删除表中的列,应使用()A. DROP COLUMNB. DELETE COLUMNC. REMOVE COLUMND. CLEAR COLUMN答案:A61. 在SQL 中,以下哪个关键字用于对结果集进行分页()A. PAGEB. PAGINGC. OFFSETD. LIMIT答案:D62. 以下哪个函数用于返回当前日期()A. CURDATE()B. NOW()C. CURRENT_DATE()D. TODAY()答案:C63. 用于返回当前时间的函数是()A. CURTIME()B. NOW()C. CURRENT_TIME()D. THIS_TIME()答案:C64. 在SQL 中,以下哪个关键字用于为表中的列设置默认值()A. DEFAULTB. INITIALC. BASED. START答案:A65. 以下哪个语句用于在SQL 中重命名表()A. RENAME TABLEB. MODIFY TABLE NAMEC. CHANGE TABLE NAMED. UPDATE TABLE答案:A66. 要获取表的结构信息,可以使用以下哪个语句()A. DESCRIBE TABLEB. SHOW TABLE STRUCTUREC. EXPLAIN TABLED. GET TABLE DETAILS答案:A67. 在SQL 中,以下哪个关键字用于在查询结果中去除重复行()A. DISTINCTB. UNIQUEC. SINGLED. ONLY答案:A68. 以下哪个函数用于对字符串进行拼接()A. CONCAT()B. JOIN()C. MERGE()D. COMBINE()答案:A69. 在SQL 中,用于创建临时表的关键字是()A. TEMPORARY TABLEB. TEMP TABLEC. TRANSIENT TABLED. SHORT_LIVED TABLE答案:A70. 以下哪个语句用于在SQL 中为列添加注释()A. COMMENT ON COLUMNB. NOTE ON COLUMNC. REMARK ON COLUMND. EXPLAIN COLUMN答案:A71. 在SQL 中,以下哪个关键字用于在子查询中引用外部查询的结果()A. CORRELATEDB. RELATEDC. CONNECTEDD. LINKED答案:A72. 以下哪个操作符用于在SQL 中进行范围查询()A. BETWEENB. INC. LIKED. EXISTS答案:A73. 用于模糊匹配的操作符是()A. LIKEB. SIMILARC. MATCHD. CLOSE_TO答案:A74. 在SQL 中,以下哪个关键字用于对查询结果进行排序时按照多个列进行()A. ORDER BY MULTIPLEB. SORT BY SEVERALC. ORDER BY MORE THAN ONED. ORDER BY MULTIPLE COLUMNS答案:D75. 以下哪个函数用于返回字符串的子串()A. SUBSTRING()B. PART()C. SEGMENT()D. SLICE()答案:A76. 在SQL 中,以下哪个关键字用于在存储过程中定义输入参数()A. INB. OUTC. INOUTD. PARAMETER答案:A77. 用于定义输出参数的关键字是()A. INB. OUTC. INOUTD. PARAMETER答案:B78. 以下哪个关键字用于在存储过程中定义既可以输入又可以输出的参数()A. INB. OUTC. INOUTD. PARAMETER答案:C79. 在SQL 中,以下哪个关键字用于在创建表时指定自增列()A. AUTO_INCREMENTB. SELF_INCREMENTC. AUTO_GROWD. SELF_GROW答案:A80. 以下哪个语句用于在SQL 中创建序列()A. CREATE SEQUENCEB. MAKE SEQUENCEC. BUILD SEQUENCED. ESTABLISH SEQUENCE 答案:A81. 要获取序列的下一个值,可以使用以下哪个函数()A. NEXTVAL()B. GET_NEXT()C. NEXT_VALUE()D. FOLLOWING_VALUE()答案:A82. 在SQL 中,以下哪个关键字用于锁定表()A. LOCKB. HOLDC. FREEZED. BLOCK答案:A83. 以下哪种锁类型用于防止其他事务读取或修改数据()A. 共享锁B. 排他锁C. 意向共享锁D. 意向排他锁答案:B84. 共享锁允许其他事务()A. 读取数据B. 修改数据C. 删除数据D. 以上都不行答案:A85. 在SQL 中,以下哪个关键字用于解锁表()A. UNLOCKB. RELEASEC. FREED. UNBIND答案:A86. 以下哪个函数用于计算两个日期之间的天数差()A. DATEDIFF()B. DATE_DIFFERENCE()C. DAY_DIFFERENCE()D. TIME_DIFFERENCE()答案:A87. 在SQL 中,以下哪个关键字用于在查询中使用别名()A. ASB. LIKEC. SAME ASD. EQUALS答案:A88. 以下哪个语句用于在SQL 中创建索引的唯一约束()A. UNIQUE INDEXB. PRIMARY INDEXC. FOREIGN INDEXD. CHECK INDEX答案:A89. 要在SQL 中创建全文索引,应使用()A. FULLTEXT INDEXB. COMPLETE TEXT INDEXC. ALL_TEXT INDEXD. WHOLE_TEXT INDEX 答案:A90. 在SQL 中,以下哪个关键字用于在存储过程中声明变量()A. DECLAREB. DEFINEC. STATED. ANNOUNCE答案:A91. 以下哪个语句用于在SQL 中为变量赋值()A. SETB. ASSIGNC. GIVED. PUT答案:A92. 在SQL 中,以下哪个关键字用于在存储过程中进行条件判断()A. IFB. WHENC. CASED. CHECK答案:A93. 以下哪种语句用于在SQL 中进行循环操作()A. FORB. WHILEC. LOOPD. 以上都是答案:D94. 在SQL 中,用于退出循环的语句是()A. BREAKB. EXITC. STOPD. END答案:A95. 以下哪个函数用于将数字转换为字符串()A. CAST()B. CONVERT()C. TO_STRING()D. NUM_TO_STR()答案:B96. 在SQL 中,用于获取当前会话的用户名称的函数是()A. CURRENT_USERB. SYSTEM_USERC. LOGGED_IN_USERD. SESSION_USER答案:A97. 以下哪个关键字用于在SQL 中创建存储函数()A. CREATE FUNCTIONB. MAKE FUNCTIONC. BUILD FUNCTIOND. ESTABLISH FUNCTION 答案:A98. 要删除存储函数,应使用的语句是()A. DROP FUNCTIONB. DELETE FUNCTIONC. REMOVE FUNCTIOND. CLEAR FUNCTION答案:A99. 在SQL 中,用于获取数据库版本信息的函数是()A. VERSION()B. DB_VERSION()C. DATABASE_VERSION()D. SYSTEM_VERSION()答案:A100. 以下哪个操作可以在SQL 中对表进行重命名()A. RENAME TABLEB. MODIFY TABLE NAMEC. CHANGE TABLE NAMED. UPDATE TABLE NAME答案:A。
sql练习题及答案SQL练习题及答案在学习SQL(Structured Query Language)时,练习题是非常重要的一部分。
通过练习题,我们可以巩固和应用所学的SQL知识,提高自己的实践能力。
本文将介绍几个常见的SQL练习题,并提供相应的答案,希望对大家的学习有所帮助。
1. 查询员工表中所有员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表;```2. 查询员工表中薪水大于5000的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 > 5000;```3. 查询员工表中职位为经理的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 职位 = '经理';```4. 查询员工表中薪水在4000到6000之间的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 BETWEEN 4000 AND 6000;```5. 查询员工表中薪水最高的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 = (SELECT MAX(薪水) FROM 员工表);```6. 查询员工表中没有分配部门的员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 部门 IS NULL;```7. 查询员工表中按照薪水从高到低排列的前5名员工的姓名和薪水。
答案:```sqlSELECT 姓名, 薪水FROM 员工表ORDER BY 薪水 DESCLIMIT 5;```8. 查询员工表中每个部门的员工数量。
答案:```sqlSELECT 部门, COUNT(*) AS 员工数量FROM 员工表GROUP BY 部门;```9. 查询员工表中薪水排名在第3到第5位的员工的姓名和薪水。
sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表要求:完成以下操作1.查询姓"欧阳"且全名为三个汉字的学生的姓名。
selectsnamefromstudent wheresnamelike“欧阳__;2.查询名字中第2个字为"阳"字的学生的姓名和学号。
selectsname,snofromstudent wheresnamelike'_阳%';3.查询所有不姓刘的学生姓名。
selectsname,sno,ssexfromstudentwheresnamenotlike“刘%”;4.查询db_design课程的课程号和学分。
selectcno,ccredit fromcoursewherecnamelike'db_design'5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。
select*fromcourse wherecnamelike'db%i__';6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
selectsno,cnofromscwheregradeisnull;7.查所有有成绩的学生学号和课程号。
selectsno,cnofromscwheregradeisnotnull;8.查询计算机系年龄在20岁以下的学生姓名。
selectsnamefromstudent wheresdept='cs'andsage<20;9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class)Teacher (no, name, sex, birthday, prof, depart)Course (cno, cname, tno)Score (no, cno, degree)其中表中包含如下数据:Course表:Score表:Student表:Teacher表:根据上面描述完成下面问题:(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL1.写出上述表的建表语句。
命令:create table Student(no nvarchar(5),name nvarchar(5),sex nvarchar(1),birthday datetime,class nvarchar(5))DML2.给出相应的INSERT语句来完成题中给出数据的插入。
命令:单表查询3.以class降序输出student的所有记录(student表全部属性)命令:select*from Student order by class desc4.列出教师所在的单位depart(不重复)。
命令:select distinct depart from teacher5.列出student表中所有记录的name、sex和class列命令:select name,sex,class from student6.输出student中不姓王的同学的姓名。
命令:select name from Student where name not like'王%'7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree)命令:select*from Score where degree=85 or degree=86 or degree=88 or degree between60 and 808.输出班级为95001或性别为‘女’的同学(student表全部属性)命令:select*from Student where class='95001'or sex='女'9.以cno升序、degree降序输出score的所有记录。
ACCESS数据表结构:Class:班级信息表cour_cla_tea:课程—班级—教师对应关系表。
就是一门课程有什么班上由哪位老师任教course:课程信息表stu_mark:学生的成绩记录student:学生信息表teacher:教师信息表查询select:单表查询:1、查找显示所有管理员和老师的基本信息2、查找显示所有老师的基本信息3、查找显示“郭襄”老师的所有基本信息4、查找显示“古龙”管理员的密码5、查找显示“第二学期”中成绩不及格的信息多表查询:1、查找显示“周伯通”同学的所有课程成绩信息2、查找显示“段誉”同学不及格的课程及其分数3、查找显示有上“计算机通讯与网络”这门课程所有班别4、查找显示“01数本(2)班”所有的学生名单5、查找显示“01电本(1)班”的所有课程名称6、查找显示“计算机科学与技术”专业的所有学生7、查找显示“数据库原理”课程前10名的学生成绩,学生名称,并以成绩的降序排列8、查找显示“郭襄”老师担任的所有课程名称9、查找显示“01数本(1)班”所有不及格的课程及对应学生名单10、查找显示上“教育学”这门课的所有学生名单,学期数及其分数11、查找显示“莫声谷”老师教的所有班级名称及其对应专业名称其他查询:1、查询所有姓王的学生基本资料2、查询学习课程“软件工程”中,分数最高和分数最低的学生名字以及分数3、计算出“01数本(2)班”班学生学习“操作系统”课程的平均分4、计算出“王语嫣”同学“第二学期”的各们课程成绩总分与平均分更新update:1、将“郭襄”老师的密码改为“010012”2、把“王重阳”同学调到“01计本(1)班”班3、把“李莫愁”同学所有不及格的课程分数改为60分添加insert:1、在student添加一个学号为“ST01260113”,名字为“张三”,初始密码为“260113”,班别为“CL012601”的一个学生记录删除:1、删除“王重阳”同学的所有数据记录查询select:单表查询:1、查找显示所有管理员和老师的基本信息select * from teacher2、查找显示所有老师的基本信息select * from teacher where user_level='teacher'3、查找显示“郭襄”老师的所有基本信息select * from teacher where teach_name='郭襄'4、查找显示“古龙”管理员的密码select teach_pwd from teacher where teach_name='古龙'5、查找显示“第二学期”中成绩不及格的信息select * from stu_mark where year_term='第二学期' and mark<60多表查询:1、查找显示“周伯通”同学的所有课程成绩信息(三个表连接查询)select stu_name,course_name,mark from student,stu_mark,course where student.stu_name='周伯通' and student.stu_id=stu_mark.stu_id and stu_mark.course_id=course.course_id2、查找显示“段誉”同学不及格的课程及其分数(三个表连接查询)select stu_name,course_name,mark from student,stu_mark,course where student.stu_name='段誉' and mark<60 and student.stu_id=stu_mark.stu_id and stu_mark.course_id=course.course_id3、查找显示有上“计算机通讯与网络”这门课程所有班别(三个表连接查询)select course_name,class_name from course,class,cour_cla_tea where course_name='计算机通讯与网络' and course.course_id=cour_cla_tea.course_id and cour_cla_tea.class_id=class.class_id 4、查找显示“01数本(2)班”所有的学生名单(两个表连接查询)select class_name,stu_name from class,student where class.class_id=student.class_id and class_name='01数本(2)班'5、查找显示“01电本(1)班”的所有课程名称(三个表连接查询)select class_name,course_name from class,course,cour_cla_tea where class_name='01电本(1)班' and course.course_id=cour_cla_tea.course_id and cour_cla_tea.class_id=class.class_id6、查找显示“计算机科学与技术”专业的所有学生(两个表连接查询)select speciality_name,stu_name from class,student where speciality_name='计算机科学与技术' and class.class_id=student.class_id7、查找显示“数据库原理”课程前5名的学生成绩,学生名称,并以成绩的降序排列(三个表连接查询)select top 5 course_name,stu_name,mark from student,course,stu_mark where course_name='数据库原理' and course.course_id=stu_mark.course_id and stu_mark.stu_id=student.stu_id order by mark desc8、查找显示“郭襄”老师担任的所有课程名称(三个表连接查询)select distinct teach_name,course_name from course,teacher,cour_cla_tea where teach_name='郭襄' and teacher.teach_id=cour_cla_tea.teach_id and cour_cla_tea.course_id=course.course_id9、查找显示“01数本(1)班”所有不及格的课程及对应学生名单(四个表连接查询)select class_name,course_name,stu_name,mark from class,stu_mark,student,course where class_name='01数本(1)班' and class.class_id=student.class_id and student.stu_id=stu_mark.stu_id and stu_mark.course_id=course.course_name and mark<6010、查找显示上“教育学”这门课的所有学生名单,学期数及其分数(三个表连接查询) select course_name,stu_name,year_term,mark from course,student,stu_mark where course_name='教育学' and course.course_id=stu_mark.course_id and stu_mark.stu_id=student.stu_id10、查找显示“莫声谷”老师教的所有班级名称及其对应专业名称(三个表连接查询) select teach_name,class_name, speciality_name from teacher,cour_cla_tea,class where teach_name='莫声谷' and teacher.teach_id=cour_cla_tea.teach_id andcour_cla_tea.class_id=class.class_id其他查询:1、查询所有姓王的学生基本资料select * from student where stu_name like ‘王*’2、查询学习课程“软件工程”中,分数最高和分数最低的学生名字以及分数分数最高:select top 1 course_name,stu_name,mark as score from student,stu_mark,course where course_name='软件工程' and stu_mark.course_id=course.course_id and stu_mark.stu_id=student.stu_id order by mark desc分数最低:select top 1 course_name,stu_name,mark as score from student,stu_mark,course where course_name='软件工程' and stu_mark.course_id=course.course_id and stu_mark.stu_id=student.stu_id order by mark asc3、计算出“01数本(2)班”班学生学习“操作系统”课程的平均分select class_name,course_name,avg(mark) as 平均分from class,stu_mark,course,student where class.class_id=student.class_id and student.stu_id=stu_mark.stu_id and stu_mark.course_id=course.course_id and class_name='01数本(2)班' and course_name='操作系统' group by class_name,course_name4、计算出“王语嫣”同学“第二学期”的各门课程成绩总分与平均分select stu_name,year_term,sum(mark) as 总分,avg(mark) as 平均分from student,stu_mark where stu_name='王语嫣' and year_term='第二学期' and student.stu_id=stu_mark.stu_id group by stu_name,year_term更新update:1、将“郭襄”老师的密码改为“010012”update teacher set teach_pwd='010012' where teach_name='郭襄'2、把“王重阳”同学调到“01计本(1)班”班update student set class_id='CL012401'(注:这一题中,无法直接用一条语句达到目的,而是要先在class表中查出“01计本(1)班”的班级ID号CL012401)3、把“李莫愁”同学所有不及格的课程分数改为60分update stu_mark set mark=60 where mark<60 and stu_id in (select stu_id from student where stu_name='李莫愁')添加insert:在student添加一个学号为“ST01260113”,名字为“张三”,初始密码为“260113”,班别为“CL012601”的一个学生记录insert into student(stu_id,stu_name,stu_pwd) values(' ST01260113', '张三', '260113')删除:删除“王重阳”同学的所有数据记录delete from stu_mark where stu_id in (select stu_id from student where stu_name='王重阳') delete from student where stu_name='王重阳'(注:第一句先删除该学生的成绩记录,第二句删除该学生的基本信息记录。
1、用SQL语句建立以下四个表:供应商表S表:S(SNO,SNAME,STATUS,CITY)零件表P表:P(PNO,PNAME,COLOR,WEIGHT)工程表J表:J(JNO,JNAME,CITY)供应情况表SPJ表:SPJ(SNO,PNO,JNO,QTY)2、针对第1题的四表,用SQL语言完成下列查询1)求供应工程J1零件的供应商号码SNO。
SELECT SNO FROM SPJ WHERE JNO=”JI”2)求供应工程J1零件P1的供应商号码SNO。
SELECT SNO FROM SPJ WHERE JNO=”JI” AND PNO=”P1”3)求供应工程J1零件为红色的供应商号码SNO。
●SELECT SNO FROM SPJ,P WHERE JNO=”JI”AND SPJ.PNO=P.PNOAND P.COLOR=”红色”●SELECT SNO FROM SPJ WHERE JNO=”JI”AND PNO IN (SELECT PNO FROM P WHERE COLOR=”红色”)3、针对第1题的四表,用SQL语言完成下列查询1)求出所有供应商的姓名及其所在城市。
SELECT SNAME,CITY FROM S2)找出所有零件的名称、颜色、重量。
SELECT PNAME,COLOR,WEIGHT FROM P3)找出使用供应商S1所供应零件的工程项目代码。
SELECT JNO FROM SPJ WHERE SNO=”JI”4)找出工程项目J2所使用的各种零件的名称及其数量。
SELECT P.PNAME,SPJ.QTY FROM P,SPJWHERE P.PNO=SPJ.PNO AND SPJ.JNO=”J2”5)找出上海厂商供应的所有零件的代码。
SELECT DISTINCT PNO FROM SPJWHERE SNO IN(SELECT SNO FROM S WHERE CITY=”上海”)6)找出所有使用上海产的零件的工程项目名。
SQL语句练习及参考答案SQL 语句练习1.设学⽣选课数据库有关系S (sno,sname,age,sex )、SC (sno,cno,grade )和C(cno,cname,teacher ),分别表⽰学⽣、选课和课程,sno 代表学号,sname 代表学⽣姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。
试完成表⽰下列查询。
(1)检索年龄⼤于21的男学⽣学号(sno)和姓名(sname)。
(2)建⽴性别只能为“男”、“⼥”的约束。
(3)创建⼀个视图v1,该视图⽤来查询学⽣的选课情况,要求包含:学⽣姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。
(4)检索选修课程号为k1和k5的学⽣学号(sno)。
(5)检索全部学⽣都选修的课程的课程号(cno)和课程名(cname)。
(6)删除所有男同学的选课记录。
1.(1)select sno,snae from s where sex=’男’ and age>21 (2)alter table s add constraint c1 check sex in (‘男’,’⼥’)(3)create view v1 as select sname,cname,teacher,grade from s,sc,c where s.sno=sc.sno and/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o (4)select sno fromsc sc1 where cno=’k1’ and exists (se lect * fromsc sc2 where sc1.sno =sc2.sno and/doc/62176c89fe4733687e21aaca.html o=’k5’)(5)select cno,cnam from c where not exists (select * from s where not exists (select * from sc where/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o and s.sno=sc.sno)(6)delete from sc where sno in (select sno from s where sex=’男’)或delete sc from sc,s where s.sno=sc.sno and sex=’男’2.设图书借阅数据库有关系图书(图书编号,书名,作者,出版社,出版时间,图书类别)、读者(读者编号,姓名,读者类别)和借阅(读者编号, 图书编号, 借阅⽇期,还期)。
一. SQL语句【1】(C226)下列关于SQL语言特点的描述中,错误的是( )。
A)语言非常简洁B)是一种一体化语言C)是一种高度过程化的语D)可以直接以命令方式交互使用,也可以程序方式使用【2】1103(7)负责数据库中查询操作的数据库语言是A)数据定义语言B)数据管理语言C)数据操作语言D)数据控制语言【3】Y3(18)SQL语言的核心是( )。
A)数据操纵B)数据定义C)数据查询D)数据定义【4】Y1(24)VisualFoxPro在SQL方面,不支持的功能是( )。
A)数据控制B)数据操纵C)数据查询D)数据定义【5】Y4(30)下列选项中,不属于SQL特殊运算符的是( )。
A)GROUP B)ON C)ALL D)EMPTY二. SQL查询语句【1】0904(12)SQL语句的查询语句是A) INSERT B)UPDATE C) DELETE D) SELECT【2】(C126)标准的SQL基本查询语句的格式是( )。
A)SELECT…FROM…WHERE B)SELECT…WHERE…FROM C)SELECT…WHERE…GROUP BY D)SELECT…FROM…ORDER BY 【3】Y3 (25)SQL语句中,SELECT语句中的JOIN是用来建立表间的联系短语应放在下列哪个短语之后( )。
A)FROM B)WHERE C)ON D)GROUP BY【4】Y2(20)SQL语句中,SELECT命令中的JOIN是用来建立表间的联系短语,连接条件应出现在下列哪个短语中A)WHERE B)ON C)HAVING D)INNER【5】Y4(17)SQL SELECT语句中的WHERE用于说明( )。
A)查询数据B)查询条件C)查询分组D)查询排序【6】Y4(18)SQL语句可以进行多个查询的嵌套,但Visual FoxPro中只支持( )层嵌套。
A)1 B)2 C)3 D)无穷【7】(C128)在Visual FoxPro中,嵌套查询是基于( )的查询A)2个关系B)3个关系C)多个关系D)2个或3个关系【8】0704 (17)以下有关SELECT语句的叙述中错误的是A)SELECT语句中可以使用别名B)SELECT语句中只能包含表中的列及其构成的表达式C)SELECT语句规定了结果集中的顺序D)如果FROM短语引用的两个表有同名的列,则SELECT短语引用它们时必须使用表名前缀加以限定【9】0504 (31) 在Visual FoxPro中,以下有关SQL的SELECT语句的叙述中,错误的是 ( )。
现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class)Teacher (no, name, sex, birthday, prof, depart)Course (cno, cname, tno)Score (no, cno, degree)其中表中包含如下数据:Course表:Score表:Student表:Teacher表:根据上面描述完成下面问题:(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL1.写出上述表的建表语句。
命令:create table Student(no nvarchar(5),name nvarchar(5),sex nvarchar(1),birthday datetime,class nvarchar(5))DML2.给出相应的INSERT语句来完成题中给出数据的插入。
命令:单表查询3.以class降序输出student的所有记录(student表全部属性)命令:select*from Student order by class desc4.列出教师所在的单位depart(不重复)。
命令:select distinct depart from teacher5.列出student表中所有记录的name、sex和class列命令:select name,sex,class from student6.输出student中不姓王的同学的姓名。
命令:select name from Student where name not like'王%'7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree)命令:select*from Score where degree=85 or degree=86 or degree=88 or degree between60 and 808.输出班级为95001或性别为‘女’的同学(student表全部属性)命令:select*from Student where class='95001'or sex='女'9.以cno升序、degree降序输出score的所有记录。
(score表全部属性)命令:select*from Score order by cno,degree desc10.输出男生人数及这些男生分布在多少个班级中命令:select COUNT(*),COUNT(distinct class) from Student where sex='男' 11.列出存在有85分以上成绩的课程编号。
命令:select distinct cno from Score where degree>8512.输出95001班级的学生人数命令:select COUNT(*)from Student where class='95001'13.输出‘3-105’号课程的平均分命令:select A VG(DEGREE)from Score where cno='3-105'14.输出student中最大和最小的birthday日期值命令:select MAX(birthday),MIN(birthday)from student15.显示95001和95004班全体学生的全部个人信息(不包括选课)。
(student表全部属性)命令:select*from Student where class='95001'or class='95004'聚合查询16.输出至少有5个同学选修的并以3开头的课程的课程号,课程平均分,课程最高分,课程最低分。
命令:select cno,AVG(degree),MAX(degree),MIN(degree)from Scorewhere cno like'3%'group by cnohaving COUNT(no)>517.输出所选修课程中最低分大于70分且最高分小于90分的学生学号及学生姓名命令:select student.no, from Score inner join Student on student.no=score.no group by student.no,name having (MIN(degree)>70 and MAX(degree)<90)18.显示所教课程选修人数多于5人的教师姓名命令:select name from Score inner join course on o=o inner join Teacher on Teacher.no=course.tno group by teacher.no,name having COUNT(*)>519.输出’95001’班级所选课程的课程号和平均分命令:select cno,A VG(degree)from Student inner join Score on student.no=score.no where student.class='95001'group by cno20.输出至少有两名男同学的班级编号。
命令:select class from Student inner join Score on student.no=score.no where sex='男' group by class having COUNT(distinct student.no)>1多表查询21.列出与108号同学同年出生的所有学生的学号、姓名和生日命令:select no,name,birthday from Student where year(birthday)=(select YEAR(birthday) from Student where no=108)22.列出存在有85分以上成绩的课程名称命令:select cname from course inner join Score on o=o group by cname having MAX(degree)>8523.列出“计算机系”教师所教课程的成绩表(课程编号,课程名,学生名,成绩)。
命令:select o,cname,,DEGREE from Student inner join Score onstudent.no=score.no inner join course on o=o inner join Teacher on course.tno=Teacher.no where teacher.depart='计算机系'24.列出所有可能的“计算机系”与“电子工程系”不同职称的教师配对信息,要求输出每个老师的姓名(name)和(职称)命令:select ,ex1.prof,,ex2.prof from Teacher ex1,Teacher ex2where ex1.depart='计算机系'and ex2.depart='电子工程系'and ex1.prof!=ex2.prof25.列出所有处于不同班级中,但具有相同生日的学生,要求输出每个学生的学号和姓名。
(提示:使用datediff函数,具体用法可以参考:/blog/588844)命令:select ex1.no,,ex2.no, from Student ex1inner join Student ex2on ex1.birthday=ex2.birthday where ex1.class!=ex2.classselect ex1.no,,ex2.no,from Student ex1 ,Student ex2where ex1.class!=ex2.classand datediff(day,ex1.birthday,ex2.birthday )=026.显示‘张三’教师任课的学生姓名,课程名,成绩命令:select ,cname,DEGREE from Student inner join Score on student.no=score.no inner join course on o=o inner join Teacher on course.tno=teacher.no where ='张三'27.列出所讲课已被选修的教师的姓名和系别命令:select distinct ,depart from Score inner join course on o=o inner join Teacher on course.tno=Teacher.no28.输出所有学生的name、no和degree。
(degree为空的不输出和为空的输出两种情况)。
命令:select ,student.no,DEGREE from Student inner join Score on student.no=score.noselect ,student.no,DEGREE from Student left join Score on student.no=score.no 29.列出所有任课教师的name和depart。
(从课程选修和任课两个角度考虑)命令:(课程选修)select distinct ,departfrom scoreleft join course on o=oleft join teacher on course.tno=teacher.no(任课)select distinct ,depart from teacher inner join course on Teacher.no=course.tno30.输出男教师所上课程名称。
命令:select cname from Teacher inner join course on Teacher.no=course.tno where teacher.sex='男' 31.出与“李军”同性别的所有同学的name。
命令:select name from Student where sex=(select sex from Student where name='李军') 32.输出选修“数据结构”课程的男同学的成绩。
命令:select DEGREE from Student inner join Score on student.no=score.no where sex='男'33.列出选修编号为‘3-105’课程并且该门课程成绩比课程‘3-111’的最高分要高的cno,no和degree。