sql经典笔试题目(整理)
sql基础笔试题
sql基础笔试题含解答共20道1. 查询所有表名```sql--解答SHOW TABLES;```2. 查询表中所有列名和数据类型```sql--解答DESCRIBE table_name;```3. 查询表中所有数据```sql--解答SELECT * FROM table_name;```4. 查询表中满足条件的数据```sql--解答SELECT * FROM table_name WHERE column_name = 'value';```5. 查询表中指定列的数据```sql--解答SELECT column1, column2 FROM table_name;```6. 查询表中数据的总行数```sql--解答SELECT COUNT(*) FROM table_name;```7. 查询表中数据的平均值```sql--解答SELECT AVG(column_name) FROM table_name;```8. 查询表中数据的最大值和最小值```sql--解答SELECT MAX(column_name), MIN(column_name) FROM table_name;```9. 查询表中数据的总和```sql--解答SELECT SUM(column_name) FROM table_name;```10. 查询表中去重后的数据```sql--解答SELECT DISTINCT column_name FROM table_name;```11. 查询表中数据按某列升序排序```sql--解答SELECT * FROM table_name ORDER BY column_name ASC;```12. 查询表中数据按某列降序排序```sql--解答SELECT * FROM table_name ORDER BY column_name DESC;```13. 查询表中指定范围的数据```sql--解答SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2; ```14. 插入数据```sql--解答INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2');```15. 更新数据```sql--解答UPDATE table_name SET column_name = 'new_value' WHERE condition;```16. 删除数据```sql--解答DELETE FROM table_name WHERE condition;```17. 使用聚合函数计算分组后的数据```sql--解答SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;```18. 使用JOIN进行表连接查询```sql--解答SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name;```19. 使用子查询```sql--解答SELECT column_name FROM table_name WHERE column_name IN (SELECT column_name FROM another_table);```20. 创建新表```sql--解答CREATE TABLE new_table AS SELECT * FROM old_table;```。
SQL基础知识题库100道及答案(完整版)
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笔试题目:
1. 写出查询所有学生成绩的SQL语句。
2. 写出查询学生表中年龄大于等于18岁的学生记录的SQL语句。
3. 写出查询学生表中年龄小于18岁且姓“张”的学生记录的SQL语句。
4. 写出查询学生表中年龄等于18岁且姓“李”的学生记录的SQL语句。
5. 写出查询学生表中年龄等于18岁或姓“李”的学生记录的SQL语句。
6. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分的学生记录的SQL语句。
7. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分,并按成绩从高到低排序的学生记录的SQL语句。
8. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分,并取出前5条记录的SQL语句。
9. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分,并取出最后一条记录的SQL语句。
10. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分,并取出第3条至第5条记录的SQL语句。
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笔试I经典44题及答案解析~
SQL笔试I经典44题及答案解析~今天这篇文章,是关于44道经典SQL测试题:01建表语句createtableStudent(sidvarchar(10),snamevarchar(10),s agedatetime,ssexnvarchar(10));insertintoStudentvalues('01','赵雷','1990-01-01','男');insertintoStudentvalues('02','钱电','1990-12-21','男');insertintoStudentvalues('03','孙风','1990-05-20','男');insertintoStudentvalues('04','李云','1990-08-06','男');insertintoStudentvalues('05','周梅','1991-12-01','女');insertintoStudentvalues('06','吴兰','1992-03-01','女');insertintoStudentvalues('07','郑竹','1989-07-01','女');insertintoStudentvalues('08','王菊','1990-01-20','女');createtableCourse(cidvarchar(10),cnamevarchar(10),ti dvarchar(10));insertintoCoursevalues('01','语文','02');insertintoCoursevalues('02','数学','01');insertintoCoursevalues('03','英语','03');createtableTeacher(tidvarchar(10),tnamevarchar(10));insertintoTeachervalues('01','张三'); insertintoTeachervalues('02','李四'); insertintoTeachervalues('03','王五');createtableSC(sidvarchar(10),cidvarchar(10),scoredeci mal(18,1));insertintoSCvalues('01','01',80); insertintoSCvalues('01','02',90); insertintoSCvalues('01','03',99); insertintoSCvalues('02','01',70); insertintoSCvalues('02','02',60); insertintoSCvalues('02','03',80); insertintoSCvalues('03','01',80); insertintoSCvalues('03','02',80); insertintoSCvalues('03','03',80); insertintoSCvalues('04','01',50); insertintoSCvalues('04','02',30); insertintoSCvalues('04','03',20);insertintoSCvalues('05','01',76);insertintoSCvalues('05','02',87);insertintoSCvalues('06','01',31);insertintoSCvalues('06','03',34);insertintoSCvalues('07','02',89);insertintoSCvalues('07','03',98);02表结构预览--学生表Student(SId,Sname,Sage,Ssex)--SId学生编号,Sname学生姓名,Sage出生年月,Ssex学生性别--课程表Course(CId,Cname,TId)--CId课程编号,Cname课程名称,TId教师编号--教师表Teacher(TId,Tname)--TId教师编号,Tname教师姓名--成绩表SC(SId,CId,score)--SId学生编号,CId课程编号,score分数1.查询“01”课程比“02”课程成绩高的所有学生的学号;selectdistinctt1.sidassidfrom(select*fromscwherecid='01')t1leftjoin(select*fromscwherecid='02')t2ont1.sid=t2.sidwheret1.score>t2.score2.查询平均成绩大于60分的同学的学号和平均成绩;selectsid,avg(score)fromscgroupbysidhavingavg(score)>603.查询所有同学的学号、姓名、选课数、总成绩selectstudent.sidassid,sname,count(distinctcid)course_cnt,sum(score)astotal_scorefromstudentleftjoinsconstudent.sid=sc.sidgroupbysid,sname4.查询姓“李”的老师的个数;selectcount(distincttid)asteacher_cnt fromteacherwheretnamelike'李%'5.查询没学过“张三”老师课的同学的学号、姓名;selectsid,snamefromstudentwheresidnotin(selectsc.sidfromteacherleftjoincourseonteacher.tid=course.tidleftjoinsconcourse.cid=sc.cidwhereteacher.tname='张三')6.查询学过“01”并且也学过编号“02”课程的同学的学号、姓名;selectt.sidassid,snamefrom(selectsid,count(if(cid='01',score,null))ascount1,count(if(cid='02',score,null))ascount2fromscgroupbysidhavingcount(if(cid='01',score,null))>0andcount(if(cid ='02',score,null))>0)tleftjoinstudentont.sid=student.sid7.查询学过“张三”老师所教的课的同学的学号、姓名;selectstudent.sid,snamefrom(selectdistinctcidfromcourseleftjointeacheroncourse.tid=teacher.tidwhereteacher.tname='张三')courseleftjoinsconcourse.cid=sc.cidleftjoinstudentonsc.sid=student.sidgroupbystudent.sid,sname8.查询课程编号“01”的成绩比课程编号“02”课程低的所有同学的学号、姓名;selectt1.sid,snamefrom(selectdistinctt1.sidassidfrom(select*fromscwherecid='01')t1leftjoin(select*fromscwherecid='02')t2ont1.sid=t2.sidwheret1.score>t2.score)t1leftjoinstudentont1.sid=student.sid9.查询所有课程成绩小于60分的同学的学号、姓名;selectt1.sid,snamefrom(selectsid,max(score)fromscgroupbysidhavingmax(score<60))t1leftjoinstudentont1.sid=student.sid10.查询没有学全所有课的同学的学号、姓名;selectt1.sid,snamefrom(selectcount(cid),sidfromscgroupbysidhavingcount(cid)<(selectcount(distinctcid)fromcourse) )t1leftjoinstudentont1.sid=student.sid11.查询至少有一门课与学号为“01”的同学所学相同的同学的学号和姓名;distinctsc.sidfrom(selectcidfromscwheresid='01')t1leftjoinscont1.cid=sc.cid12.查询和"01"号的同学学习的课程完全相同的其他同学的学号和姓名#注意是和'01'号同学课程完全相同但非学习课程数相同的,这里我用左连接解决这个问题selectt1.sid,snamefrom(sc.sid,count(distinctsc.cid)from(selectcidfromscwheresid='01')t1#选出01的同学所学的课程leftjoinscont1.cid=sc.cidgroupbysc.sidhavingcount(distinctsc.cid)=(selectcount(distinctcid)fr omscwheresid='01'))t1leftjoinstudentont1.sid=student.sidwheret1.sid!='01'13.把“SC”表中“张三”老师教的课的成绩都更改为此课程的平均成绩;#暂跳过update题目14.查询没学过"张三"老师讲授的任一门课程的学生姓名selectsnamefromstudentwheresidnotin(selectdistinctsidfromscleftjoincourseonsc.cid=course.cidleftjointeacheroncourse.tid=teacher.tidwheretname='张三')15.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩selectt1.sid,sname,avg_scorefrom(selectsid,count(if(score<60,cid,null)),avg(score)asavg_scorefromscgroupbysidhavingcount(if(score<60,cid,null))>=2)t1leftjoinstudentont1.sid=student.sid16.检索"01"课程分数小于60,按分数降序排列的学生信息selectsid,if(cid='01',score,100)fromscwhereif(cid='01',score,100)<60orderbyif(cid='01',score,100)desc17.按平均成绩从高到低显示所有学生的平均成绩selectsid,avg(score)fromscgroupbysidorderbyavg(score)desc18.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率selectsc.cid,cname,max(score)asmax_score,min(score)asmin_score,avg(score)asavg_score,count(if(score>=60,sid,null))/count(sid)aspass_ratefromscleftjoincourseonsc.cid=course.cidgroupbysc.cid19.按各科平均成绩从低到高和及格率的百分数从高到低顺序#这里先按照平均成绩排序,再按照及格百分数排序,selectcid,avg(score)asavg_score,count(if(score>=60,sid,null))/count(sid)aspass_rate fromscgroupbycidorderbyavg_score,pass_ratedesc20.查询学生的总成绩并进行排名selectsid,sum(score)assum_scorefromscgroupbysidorderbysum_scoredesc21.查询不同老师所教不同课程平均分从高到低显示selecttid,avg(score)asavg_scorefromcourseleftjoinsconcourse.cid=sc.cidgroupbytidorderbyavg_scoredesc22.查询所有课程的成绩第2名到第3名的学生信息及该课程成绩selectsid,rank_num,score,cidfrom(selectrank()over(partitionbycidorderbyscoredesc)asrank_nu m,sid,score,cidfromsc)twhererank_numin(2,3)23.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比selectsc.cid,cname,count(if(scorebetween85and100,sid,null))/count(sid),count(if(scorebetween70and85,sid,null))/count(sid),count(if(scorebetween60and70,sid,null))/count(sid),count(if(scorebetween0and60,sid,null))/count(sid)fromscleftjoincourseonsc.cid=course.cid groupbysc.cid,cname24.查询学生平均成绩及其名次selectsid,avg_score,rank()over(orderbyavg_scoredesc) from(selectsid,avg(score)asavg_scorefromscgroupbysid)t25.查询各科成绩前三名的记录selectsid,cid,rank1from(selectcid,sid,rank()over(partitionbycidorderbyscoredesc)asrank1 fromsc)twhererank1<=326.查询每门课程被选修的学生数selectcount(sid),cidfromscgroupbycid27.查询出只选修了一门课程的全部学生的学号和姓名selectsidfromscgroupbysidhavingcount(cid)=128.查询男生、女生人数selectssex,count(distinctsid)fromstudentgroupbyssex 29.查询名字中含有"风"字的学生信息selectsid,snamefromstudentwheresnamelike'%风%'30.查询同名同性学生名单,并统计同名人数selectssex,sname,count(sid)fromstudentgroupbyssex,snamehavingcount(sid)>=231.查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime)selectsid,sname,sagefromstudentwhereyear(sage)=199032.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列selectcid,avg(score)asavg_scorefromscgroupbycidorderbyavg_score,ciddesc33.查询不及格的课程,并按课程号从大到小排列selectcid,sid,scorefromscwherescore<60orderbyciddesc,sid34.查询课程编号为"01"且课程成绩在60分以上的学生的学号和姓名;selectsid,cid,scorefromscwherecid='01'andscore>6035.查询选修“张三”老师所授课程的学生中,成绩最高的学生姓名及其成绩selectsc.sid,sname,cname,scorefromscleftjoincoursestyle="font-weight:600;">=course.cidleftjointeacherstyle="font-weight:600;">=teacher.tidleftjoinstudentstyle="font-weight:600;">=student.sidwheretname='张三'orderbyscoredesclimit1;36.查询每门功课成绩最好的前两名selectcid,sid,rank1from(selectcid,sid,rank()over(partitionbycidorderbyscoredesc)asrank1fromsc)twhererank1<=237.统计每门课程的学生选修人数(超过5人的课程才统计)。
sql50经典题
sql50经典题SQL(Structured Query Language)是用于管理关系数据库的标准编程语言。
以下是一些经典的 SQL 题目,可以帮助你提高 SQL 编程技能:1. 选择题:* 什么是 SQL?* SQL 中哪些关键字可以用于选择所有行?* SQL 中哪些关键字可以用于过滤数据?2. 查询题:* 请编写一个 SQL 查询,从 `employees` 表中选取所有员工的姓名和工资。
* 请编写一个 SQL 查询,从 `orders` 表中选取所有订单的编号、客户姓名和订单日期。
3. 插入题:* 请编写一个 SQL 插入语句,将一条新员工记录插入到 `employees` 表中。
* 请编写一个 SQL 插入语句,将一条新订单记录插入到 `orders` 表中。
4. 更新题:* 请编写一个 SQL 更新语句,将 `employees` 表中某个员工的工资增加 10%。
* 请编写一个 SQL 更新语句,将 `orders` 表中某个订单的状态更新为"Shipped"。
5. 删除题:* 请编写一个 SQL 删除语句,从 `employees` 表中删除某个员工的记录。
* 请编写一个 SQL 删除语句,从 `orders` 表中删除某个订单的记录。
6. 排序和聚合题:* 请编写一个 SQL 查询,按工资从高到低排列 `employees` 表中的员工记录。
* 请编写一个 SQL 查询,计算 `employees` 表中的平均工资。
7. 联接题:* 请编写一个 SQL 查询,联接 `orders` 表和 `customers` 表,选取所有订单的编号、客户姓名和订单日期。
* 请编写一个 SQL 查询,联接 `orders` 表和 `employees` 表,选取所有订单的编号、员工姓名和订单日期。
8. 子查询和内连接题:* 请编写一个 SQL 子查询,找出平均工资最高的员工姓名。
sql考试题及答案
sql考试题及答案一、选择题1. SQL是什么意思?a. Structured Query Languageb. Sequential Query Languagec. Structured Question Languaged. Sequential Question Language答案:a. Structured Query Language2. 下列哪个关键词用于在SQL中创建新表?a. UPDATEb. INSERTc. CREATEd. SELECT答案:c. CREATE3. 在SQL中,用于查找符合一定条件的记录的关键词是?a. SELECTb. UPDATEc. INSERTd. DELETE答案:a. SELECT4. 在SQL中,如何在表中添加新的数据?a. INSERT INTOb. ADD INTOc. UPDATEd. MODIFY答案:a. INSERT INTO5. 在SQL中,如何删除表中的数据?a. DELETE ROWb. REMOVEc. DELETE FROMd. ERASE FROM答案:c. DELETE FROM二、填空题1. SQL中用于选择所有列的通配符是______。
答案:*2. SQL中用于指定唯一键的关键词是______。
答案:PRIMARY KEY3. SQL中用于按照某一列对结果进行排序的关键词是______。
答案:ORDER BY4. SQL中用于更新数据的关键词是______。
答案:UPDATE5. SQL中用于计算某一列的总和的函数是______。
答案:SUM三、简答题1. 请解释SQL中的JOIN操作。
答案:JOIN操作用于连接两个或多个表,基于表之间的关联关系获取相关数据。
常用的JOIN类型包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN。
2. 什么是SQL注入?如何防止SQL注入?答案:SQL注入是一种恶意的攻击方式,通过在用户输入的数据中插入恶意的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基础笔试题及答案
sql基础笔试题及答案一、选择题:1. 在计算机应用中,“计算机辅助设计”的英文缩写为___________。
A. CAD B. CAM C. CAE D. CAT2. 微型计算机中,再分称作中央处理单元(CPU)的就是指___________。
A.运算器和控制器 B.累加器和算术逻辑运算部件(ALU) C.累加器和控制器 D.通用寄存器和控制器3. 计算机系统的“主机”由___________形成。
A.CPU,内存储器及辅助存储器 B.CPU和内存储器C.存放在主机箱内部的全部器件 D.计算机的主板上的全部器件 4. 冯·诺依曼计算机工作原理的设计思想就是___________。
A.程序设计 B.程序存储 c.程序编制D.算法设计 5. 世界上最先同时实现的程序存储的计算机就是___________。
A.ENIAC B.EDSAC C.EDVAC D.UNIVAC6. 通常,在微机中标明的P4或奔腾4是指___________。
A.产品型号 B.主频 C.微机名称 D.微处理器型号7. 连接计算机系统结构的五大基本组成部件一般通过___________。
A.适配器B.电缆 c.中继器 D.总线8. 在计算机领域中通常用主频去叙述___________。
A.计算机的运算速度 B.计算机的可靠性 C.计算机的可以运转性 D.计算机的可扩充性9. 下列计算机接口中,可以直接进行“插拔”操作的是___________。
A.COM B.LPT C.PCI D.USB10. 在来衡量计算机的主要性能指标中,字长就是___________。
A.计算机运算部件一次能处置的二进制数据位数 B.8十一位二进制长度 C.计算机的总线数 D.存储系统的容量11. 在计算机领域中,通常用英文单词“BYTE”来表示___________。
A.字 B.字长 C.二进制位 D.字节12. 在计算机领域中,通常用英文单词“bit”去则表示___________。
sql笔试题及答案
sql笔试题及答案一、选择题1. SQL中的INNER JOIN和OUTER JOIN有什么区别?A. INNER JOIN用于查询两个表中有关联的数据,而OUTER JOIN用于查询所有数据,包括没有关联的数据。
B. INNER JOIN只能查询单个表,OUTER JOIN可以查询多个表。
C. INNER JOIN和OUTER JOIN没有区别,只是不同的命名方式。
D. 以上都不是。
答案:A2. 如何在SQL中创建一个新表?A. 使用CREATE TABLE语句。
B. 使用INSERT INTO语句。
C. 使用SELECT INTO语句。
D. 使用UPDATE语句。
答案:A3. 在SQL中,如何删除表中的重复记录?A. 使用DELETE语句。
B. 使用DROP语句。
C. 使用DISTINCT关键字。
D. 使用GROUP BY语句。
答案:C4. 以下哪个SQL语句用于查询表中的数据?A. SELECT * FROM table_name;B. INSERT INTO table_name (column1, column2) VALUES (value1, value2);C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name WHERE condition;答案:A5. 如何在SQL中对查询结果进行排序?A. 使用ORDER BY子句。
B. 使用GROUP BY子句。
C. 使用HAVING子句。
D. 使用COUNT()函数。
答案:A二、填空题1. 在SQL中,______关键字用于从表中选择唯一的值。
答案:DISTINCT2. 若要在SQL中查询某个字段的平均值,应使用______函数。
答案:AVG()3. ______语句可以用来向数据库表中添加新的数据行。
答案:INSERT INTO4. 若要在SQL中查询特定条件下的数据,应使用______子句。
SQL常考笔试题
订单:#订单编号,总价,订购日期;
订单子项: #子项编号,订单编号,产品编号,订购数量;
该表最高符合第()范式。C
A. 一
B. 二
C. 三
D. 未规范化的
14. 创建sql语句如下:
create table userInfo
(
userId int identity(-1,1), 第1行
针对以下题目请选择正确答案(每道题目有一个或多个正确的答案)。针对每一道题目,所有答案都选对,则该题得分,否则不得分。
1. 数据库设计的最终目标不包括()。 (选择两项)BD
A. 高效
B. 满足范式要求
C. 安全
D. 表现设计者的技术实力
E. 易用
F. 便于将来扩展功能和容量
2. 有关数据冗余说法错误的是()。(选择一项)C
userName nvarchar(20) not null, 第2行
cardNO char not null, 第3行
age smallint(2), 第4行
address ntext(300) 第5行
)
执行时,会在第()行出现错误。(选择两项)DE
A. 1
A. exec scoreproc 1,@myscore output
print @myscore
B. exec scoreproc @id = 1,@myscore output
print @myscore
C. declare @myscore numeric(4,2)
exec scoreproc 1,@myscore output
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 22005-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 rq2) 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.rq3)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) bwhere a.col001=b.col0012.请教一个面试中遇到的SQL 语句的查问询题表中有A B C 三列,用SQL 语句实现:当A 列大于B 列时选择A 列否则选择B 列,当B 列大于C 列时选择B 列否则选择C 列。
sql经典笔试题一(含答案)
二编写SQL语句(5分/题)501) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话2) 修改学生表的结构,添加一列信息,学历3) 修改学生表的结构,删除一列信息,家庭住址4) 向学生表添加如下信息:学号姓名年龄性别联系电话学历1 A 22 男123456 小学2 B 21 男119 中学3 C 23 男110 高中4 D 18 女114 大学5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来9) 查询出所有学生的姓名,性别,年龄降序排列10) 按照性别分组查询所有的平均年龄三填空(3分/题) 361)索引分为___聚簇索引__和_ 非聚簇索引___2) TRUNCATE TABLE(删除所有,不能回滚)命令是什么含义?和Delete from(删除一个或者多个记录,能回滚)表名有什么区别?2)说出以下聚合数的含义:avg ,sum ,max ,min , count ,count(*)Avg 求平均值Sum 求和Max 最大值Min 最小值Count 返回满足条件的记录Count(*)函数返回表中所有记录数:8) 视图可以更新吗?会影响到实际表吗?视图是可以更新的,视图只是基于基本表上的虚拟表,对视图的更新会直接影响到实际表create table student(stu_no varchar(4) primary key,stu_name varchar(10) not null,stu_age decimal(3,0),stu_sex char(2),stu_address varchar(255),stu_tel number(20))select * from studentalter table student add stu_xl varchar(20)alter table student drop column stu_addressinsert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('1','A','22','ÄÐ','123456','Сѧ')insert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('2','B','21','ÄÐ','119','ÖÐѧ');insert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('3','C','23','ÄÐ','110','¸ßÖÐ');insert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('4','D','18','Å®','114','´óѧ');insert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('5','D','18','Å®','114','´óѧ');update student set stu_xl='´óר'where stu_tel like'11%'delete from student where stu_sex='ÄÐ'and stu_name like'C%'select stu_no,stu_name from student where stu_xl='´óר'and stu_age <'22'select stu_name,stu_sex from student order by stu_age descselect avg(stu_age),stu_sex from student where stu_sex='ÄÐ'group by stu_sex查询重复个数select stu_name,count(*) from student group by stu_name having count(*)>1。
sql一些笔试题
sql一些笔试题1.触发器的作用?答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。
它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。
可以联级运算。
如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
2。
什么是存储过程?用什么来调用?答:存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。
如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。
可以用一个命令对象来调用存储过程。
3。
索引的作用?和它的优点缺点是什么?答:索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。
它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。
索引可以是唯一的,创建索引允许指定单个列或者是多个列。
缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
7。
为管理业务培训信息,建立3个表:S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄C(C#,CN)C#,CN分别代表课程编号,课程名称SC(S#,C#,G) S#,C#,G分别代表学号,所选的课程编号,学习成绩(1)使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名?答案:select s# ,sn from s where S# in(select S# from c,sc where c.c#=sc.c# and cn=’税收基础’)(2) 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位?答:select sn,sd from s,sc where s.s#=sc.s# and sc.c#=’c2’(3) 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位?答:select sn,sd from s where s# not in(select s# from sc where c#=’c5’)(4)查询选修了课程的学员人数答:select 学员人数=count(distinct s#) fromsc(5) 查询选修课程超过5门的学员学号和所属单位?答:select sn,sd from s where s# in(select s# from sc group by s# having count(distinct c#)>5)在面试过程中多次碰到两道SQL查询的题目,一是查询A(ID,Name)表中第31至40条记录,ID 作为主键可能是不是连续增长的列,完整的查询语句如下:select top 10 * from A where ID >(select max(ID) from (select top 30 ID from A order by A ) T) order by A另外一道题目的要求是查询表A中存在ID重复三次以上的记录,完整的查询语句如下:select * from(select count(ID) as count from table group by ID)T where T.count>3 create table testtable1(id int IDENTITY,department varchar(12))select * from testtable1insert into testtable1 values('设计') insert into testtable1 values('市场') insert into testtable1 values('售后') /*结果id department1 设计2 市场3 售后*/create table testtable2(id int IDENTITY,dptID int,name varchar(12))insert into testtable2 values(1,'张三') insert into testtable2 values(1,'李四') insert into testtable2 values(2,'王五')insert into testtable2 values(3,'彭六') insert into testtable2 values(4,'陈七') /*用一条SQL语句,怎么显示如下结果id dptID department name1 1 设计张三2 1 设计李四3 2 市场王五4 3 售后彭六5 4 黑人陈七*/答案是:SELECT testtable2.* , ISNULL(department,'黑人')FROM testtable1 right join testtable2 on testtable2.dptID = testtable1.ID在面试应聘的SQL Server数据库开发人员时,我运用了一套标准的基准技术问题。
SQL数据库试题(笔试题)
28.数据库:抽出部门,平均工资,要求按部门的字符串顺序排序,不能含有"human resource"部门,employee结构如下:employee_id, employee_name,depart_id,depart_name,wage答:select depart_name, avg(wage)from employeewhere depart_name <> 'human resource'group by depart_nameorder by depart_name-------------------------------------------------------------------------- 29.给定如下SQL数据库:Test(num INT(4)) 请用一条SQL语句返回num的最小值,但不许使用统计功能,如MIN,MAX等答:select top 1 numfrom Testorder by num-------------------------------------------------------------------------- 33.一个数据库中有两个表:一张表为Customer,含字段ID,Name;一张表为Order,含字段ID,CustomerID(连向Customer中ID的外键),Revenue;写出求每个Customer的Revenue总和的SQL语句。
建表create table customer(ID int primary key,Name char(10))gocreate table [order](ID int primary key,CustomerID int foreign key references customer(id) , Revenue float)go--查询select Customer.ID, sum( isnull([Order].Revenue,0) )from customer full join [order]on( [order].customerid=customer.id )group by customer.idselect customer.id,sum(order.revener) from order,customer where customer.id=customerid group by customer.idselect customer.id, sum(order.revener )from customer full join orderon( order.customerid=customer.id )group by customer.id5数据库(10)a tabel called “performance”contain :name and score,please 用SQL 语言表述如何选出score最high的一个(仅有一个)仅选出分数,Select max(score) from performance仅选出名字,即选出名字,又选出分数:select top 1 score ,name from per order by scoreselect name1,score from per where score in/=(select max(score) from per).....4 有关系s(sno,sname) c(cno,cname) sc(sno,cno,grade)1 问上课程"db"的学生noselect count(*) from c,sc where ame='db' and o=oselect count(*) from sc where cno=(select cno from c whereame='db')2 成绩最高的学生号select sno from sc where grade=(select max(grade) from sc )3 每科大于90分的人数select ame,count(*) from c,sc where o=o andsc.grade>90 group by ameselect ame,count(*) from c join sc on o=o andsc.grade>90 group by ame数据库笔试题*建表:dept:deptno(primary key),dname,locemp:empno(primary key),ename,job,mgr,sal,deptno*/1 列出emp表中各部门的部门号,最高工资,最低工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno from emp group by deptno;2 列出emp表中各部门job为'CLERK'的员工的最低工资,最高工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号from emp where job = 'CLERK' group by deptno;3 对于emp中最低工资小于1000的部门,列出job为'CLERK'的员工的部门号,最低工资,最高工资select max(sal) as 最高工资,min(sal) as 最低工资,deptno as 部门号from emp as bwhere job='CLERK' and 1000>(select min(sal) from emp as a wherea.deptno=b.deptno) group by b.deptno4 根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资select deptno as 部门号,ename as 姓名,sal as 工资from emp order by deptno desc,sal asc5 写出对上题的另一解决方法(请补充)6 列出'张三'所在部门中每个员工的姓名与部门号select ename,deptno from emp where deptno = (select deptno from emp where ename = '张三')7 列出每个员工的姓名,工作,部门号,部门名select ename,job,emp.deptno,dept.dname from emp,dept where emp.deptno=dept.deptno8 列出emp中工作为'CLERK'的员工的姓名,工作,部门号,部门名select ename,job,dept.deptno,dname from emp,dept wheredept.deptno=emp.deptno and job='CLERK'9 对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外键为mgr)select a.ename as 姓名,b.ename as 管理者from emp as a,emp as b where a.mgr is not null and a.mgr=b.empno10 对于dept表中,列出所有部门名,部门号,同时列出各部门工作为'CLERK'的员工名与工作select dname as 部门名,dept.deptno as 部门号,ename as 员工名,job as 工作from dept,empwhere dept.deptno *= emp.deptno and job = 'CLERK'11 对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序select a.deptno as 部门号,a.ename as 姓名,a.sal as 工资from emp as a where a.sal>(select avg(sal) from emp as b where a.deptno=b.deptno) order by a.deptno12 对于emp,列出各个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序select count(a.sal) as 员工数,a.deptno as 部门号from emp as awhere a.sal>(select avg(sal) from emp as b where a.deptno=b.deptno) group by a.deptno order by a.deptno13 对于emp中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,按部门号排序select count(a.empno) as 员工数,a.deptno as 部门号,avg(sal) as 平均工资from emp as awhere (select count(c.empno) from emp as c where c.deptno=a.deptno and c.sal>(select avg(sal) from emp as b where c.deptno=b.deptno))>1 group by a.deptno order by a.deptno14 对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数select a.deptno,a.ename,a.sal,(select count(b.ename) from emp as b where b.sal<a.sal) as 人数from emp as awhere (select count(b.ename) from emp as b where b.sal<a.sal)>5数据库笔试题及答案第一套一.选择题1. 下面叙述正确的是CCBAD ______。
SQL笔试题
SQL 笔试题一、填空1、目前较为流行的三种 DBMS: ( ) 、( ) 、( ) 。
P22、数据库设计过程包括( )个阶段, ( )阶段是基础; ( )阶段是关键。
3、用户需求包括信息需求和( )需求。
P34、数据库设计最耗时的阶段是( ),整个数据库生存周期最耗时的阶段是( ) 。
P45、现实世界中客观存在的并可区分识别的事物称为( ) 。
6、属性的特定取值范围称为( ) 。
P77 、E-R 模型的英文全拼是( ) p88、如果 E-R 图中,菱形框引出的属性称为( ) 。
9、概念模型设计第一步( ),第二步( ) 。
P910、合并 E-R 模型之前要解决局部 E-R 模型( )问题。
11、概念结构设计优化指,对初步 E-R 图进行修改,消除( ),生成基本的 E-R 图。
12、数据模型优化的根据是( ) 。
13、关系就是由行和列组成的( ) 。
P1114、关系中的行称为( ),列称为( ) 。
15、完整性指数据的( )和( ) 。
P1616、实体完整性指( ) 。
P1617、参照完整性指( ) 。
18、索引的作用( ) 。
19、默认文件组的名字是( ) 。
P4420、执行 SQL 脚本的快捷键是( ) 。
P4721、【分离】数据库后,恢复数据库的操作是( ) 。
22、【脱机】数据库后,恢复数据库的操作是( ) 。
23、数据类型 numeric(6,2)含义是( ) 。
24、( )是 SQL Server2005 提供的自动保持数据完整性的一种方法。
P7525、( )情况下主键约束一定是表级约束。
P7826、字段别名改变的是( ) 。
P10527、连接查询指( ) 。
P12328、写出 A 与 B 左外连接的语句( ) 。
29、在连接查询中,物理避免来自不同表相同字段引起混淆,在列名前面增加( ) 作为前缀。
30、T-SQL 中 T 的中文含义是( ) 。
31、T-SQL 语言分( )类。
SQL笔试题
SQL笔试题针对以下题目请选择正确答案(每道题目有一个或多个正确的答案)。
针对每一道题目,所有答案都选对,则该题得分,否则不得分。
1.数据库设计的最终目标不包括()。
(选择两项)BDA.高效B.满足范式要求C.安全D.表现设计者的技术实力E.易用F.便于将来扩展功能和容量2.有关数据冗余说法错误的是()。
(选择一项)CA.数据库中,数据存在副本的现象,就是数据冗余。
B.通过分类存储,可以有效减少数据冗余,但是会增加数据查找的复杂性。
C.在数据库设计阶段,一定要尽最大可能避免数据冗余,最好做到无数据冗余。
D.数据冗余通常是由于数据库设计引起的。
3.用于表示数据库实体之间的关系图是()。
AA.实体关系图B.数据模型图C.实体分类图D.以上都不是4.假定有一个用户表,表中包含字段:uerid(int)、uername(varchar)、paword(varchar)等,该表需要设置主键,以下说法正确的是()。
(选择两项)ABA.如果不能有同时重复的uername和paword,那么uername和paword可以组合在一起作为主键。
B.此表设计主键时,根据选择主键的最小性原则,最好采用uerid作为主键。
C.此表设计主键时,根据选择主键的最小性原则,最好采用uername和paword作为组合键。
D.如果采用uerid作为主键,那么在uerid列输入的数值,允许为空。
5.语句altertableuerinfoaddcontraintuq_ueridunique(uerid)执行成功后,为uerinfo表的()字段添加了()约束。
BA.uerid主键B.uerid 唯一C.uq_uerid外键D.uq_uerid检查6.运行如下T-SQL,结果返回包含()的记录集。
Acreatetablecore(coreidintidentity(1,2),corenumeric(4,2)notnull,coureidint)inertintcorevalue(90.5,null);inertintocorevalue(78.234,2);el ect某fromcore;A.190.50NULL378.232B.178.232C.190.50D.190.50278.2327.关于子查询,以下说法正确的是()。
(完整版)常见SQL笔试题
SQL笔试题1.统计查问 SQL练习数据库中表构造以下,字段分别任rg (日期), shengfu (输赢),观察 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 22005-05-10 1 2答案: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 rq2) 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胜负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) b2.条件判断 SQL 练习表中有 A B C三列,用SQL语句实现:当 A 列大于 B 列时选择 A 列不然选择B列,当B 列大于 C 列时选择 B 列不然选择 C 列答案:select (case when a>b then a else b end ),(case when b>c then b esle c end)from table_name3.日期统计 SQL 练习请拿出tb_send表中日期(SendTime字段)为当日的所有记录?(SendTime 字段为datetime 型,包括日期与时间 )答案:select * from tb where datediff(dd,SendTime,getdate())=04.统计查问 SQL 练习有一张表,里面有 3 个字段:语文,数学,英语。
sql经典笔试题一(含答案)
sql经典笔试题一(含答案)一单词解释(2分/个) 34Data 数据Database 数据库RDBMS 关系数据库管理系统GRANT 授权REVOKE取消权限DENY 拒绝权限DECLARE 定义变量PROCEDURE存储过程Transaction事务TRIGGER触发器继续continue 唯一unqiue 主键primary key 标识列identity 外键foreign kdy 检查check 约束constraint二编写SQL语句(5分/题)501) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话Create table stu (学号int ,姓名varchar(8),年龄int,性别varchar(4),家庭地址varchar(50),联系电话int);2) 修改学生表的结构,添加一列信息,学历Alter table stu add 学历varchar(6);3) 修改学生表的结构,删除一列信息,家庭住址Alter table stu drop column 家庭地址4) 向学生表添加如下信息:学号姓名年龄性别联系电话学历1 A 22 男123456 小学2 B 21 男119 中学3 C 23 男110 高中4 D 18 女114 大学Insert into stu values('1', 'A', '22', '男' , ' 123456', '小学')Insert into stu values('2', 'B', '21', '男', '119' , '中学')Insert into stu values('3', 'C', '23', '男', '110', '高中')Insert into stu values('4' , 'D', '18', '女', '114', '大学')5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”Update stu set 学历=’大专’where 联系电话like ‘11%’6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除Delect from stu where 性别=’男’and 姓名like ‘c%’7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来Select 姓名,学号from stu where 年龄<22 and 学历=’大专’8) 查询学生表的数据,查询所有信息,列出前25%的记录Select top 25 percent * from stu9) 查询出所有学生的姓名,性别,年龄降序排列Select 姓名,性别from stu order by 年龄desc10) 按照性别分组查询所有的平均年龄Select avg(年龄) from stu group by 性别三填空(3分/题) 361)索引分为__聚集索引___和__非聚集索引__在一张表上最多可以创建1个聚集索引_索引。
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)。
一单词解释(2分/个) 34Data 数据 Database 数据库 RDBMS 关系数据库管理系统 GRANT 授权 REVOKE取消权限 DENY 拒绝权限 DECLARE 定义变量 PROCEDURE存储过程Transaction事务 TRIGGER触发器继续 continue 唯一 unqiue 主键 primary key 标识列 identity 外键 foreign kdy 检查 check 约束 constraint二编写SQL语句(5分/题)501) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话Create table stu (学号 int , 姓名 varchar(8), 年龄 int,性别 varchar(4),家庭地址 varchar(50), 联系电话 int );2) 修改学生表的结构,添加一列信息,学历 Alter table stu add 学历 varchar(6);3) 修改学生表的结构,删除一列信息,家庭住址Alter table stu drop column 家庭地址4) 向学生表添加如下信息:学号姓名年龄性别联系电话学历 1 A 22 男 123456 小学 2 B 21 男 119 中学 3 C 23 男 110 高中 4 D 18 女 114 大学Insert into stu values('1', 'A', '22', '男' , ' 123456', '小学')Insert into stu values('2', 'B', '21', '男', '119' , '中学')Insert into stu values('3', 'C', '23', '男', '110', '高中')Insert into stu values('4' , 'D', '18', '女', '114', '大学')5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”Update stu set 学历=’大专’ where 联系电话 like ‘11%’6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 Delect from stu where 性别=’男’ and 姓名 like ‘c%’7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来Select 姓名,学号 from stu where 年龄<22 and 学历=’大专’8) 查询学生表的数据,查询所有信息,列出前25%的记录Select top 25 percent * from stu9) 查询出所有学生的姓名,性别,年龄降序排列Select 姓名,性别 from stu order by 年龄 desc10) 按照性别分组查询所有的平均年龄Select avg(年龄) from stu group by 性别三填空(3分/题) 361) 索引分为__聚集索引___和__非聚集索引__在一张表上最多可以创建1个聚集索引_索引。
但是可以创建_249个非聚集索引索引。
2) 系统存储过程_sp-helptext__是用来显示规则,默认值,未加密的存储过程,用户定义函数,触发或视图的文本 3)事务开始:begin Transction 提交事务:commit Transction 回滚事务:rollback Transction四问答题(5分/题)601) 数据库包含哪些那几种后缀名的文件必须,这些文件分别存放在什么的信息?主要数据文件(.mdf) 包含数据用户收集的信息,还有数据库其他相关的信息, 日志数据文件(.ndf) 存放用户对数据库的增删改查的信息,用于备份恢复使用2) TRUNCATE TABLE 命令是什么含义?和Delete from 表名有什么区?TRUNCATE TABLE: 提供了一种删除表中所有记录的快速方法 Delete from 表名:可以删除表的一个或多条记录3) 说出以下聚合数的含义:avg ,sum ,max ,min , count ,count(*)A VG:求平均值 SUM:求和MAX:求最大值 MIN:求最小值COUNT(*):返回所有行数COUNT返回满足指定条件的记录值4) inner join 是什么意思?作用是什么?写出基本语法结构INNER JOIN 内联接,用于返回两个表中要查询的列数据通信 Select * from 表名1 inner join 表名2 on 条件表达式5) 左向外联接,右向外联接,全联接的关健字如何写?Left outer join 左向外联接 Right outer join 右向外联接 Full outer join 全联接6) 子查询分为几类,说明相互之间的别了查询分三种基本子查询:1.使用in 查询返回一列或更多值2.比较运算符,返回单个值勤做为外查询的参数3.用exists 查询时相当于进行一次数据测试7) 实现实体完整性,实现域完整性,实现完整性(引用完整性),实现自定义完整性分别使用什么手段?实现实体完整性: 主键约束唯一约束标识列实现域完整性: 默认值约束检查约束非空属性引用完整性: 外键引用8) 视图可以更新吗?会影响到实际表吗?视图是可以更新的,视图只是基于基本表上的虚拟表,对视图的更新会直接影响到实际表9) 谈谈这样几个角色, dbo , Sysadmin publicDbo : 是数据库的拥有者,对数据库拥有所有操作的权限Sysadmin : 可以对SQL SERVER执行任何活动Public : 自动创建的,能捕获数据库中用户的所有默认权限10) 何为动态游标?何为静态游标?动态游标与静态游标相对,反映结果集中所做的所有更改,静态游标的结果集在游标打开时,建立在tempdb中,总按照游标打开时的原样显示11) 什么是存储过程?为什么存储过程要比单纯的Sql 语句执行起来要快?存储过程:是一组预先编译好的T-SQL代码;在创建存储过程时经过了语法和性能优化,执行不必重复的步骤,使用存储过程可提高运行效率12)什么是Inserted 表?什么是Deleted 表?Inserted表用于存储inserted和update语句影响的副本Deleted 表用于存储delect 和 update语句影响的行的副本SQL Server数据库笔试题和答案网上转载 2009-06-07 21:19:35 阅读727 评论0 字号:大中小一单词解释(2分/个) 34分Data 数据 Database 数据库 RDBMS 关系数据库管理系统 GRANT 授权 REVOKE 取消权限 DENY 拒绝权限 DECLARE 定义变量 PROCEDURE存储过程事务 Transaction 触发器 TRIGGER 继续 continue 唯一 unqiue 主键 primary key 标识列 identity 外键 foreign key 检查 check 约束 constraint二编写SQL语句(5分/题) 50分(包含笔试题问题和解答答案)1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话Create table stu (学号 int , 姓名 varchar(8), 年龄 int,性别 varchar(4),家庭地址 varchar(50), 联系电话 int );2) 修改学生表的结构,添加一列信息,学历 Alter table stu add 学历 varchar(6);3) 修改学生表的结构,删除一列信息,家庭住址 Alter table stu drop column 家庭地址 4) 向学生表添加如下信息:学号姓名年龄性别联系电话学历 1A22男123456小学 2B21男119中学 3C23男110高中 4D18女114大学Insert into stu values(1,’A’,22,’男’,123456,’小学’) Insert into stu values(2,’B’,21,’男’,119,’中学’) Insert into stu values(3,’C’,23,’男’,110,’高中’) Insert into stu values(4,’D’,18,’女’,114,’大学’)5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” Update stu set 学历=’大专’ where 联系电话 like ‘11%’6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 Delect from stu where 性别=’男’ and 姓名 like ‘c%’7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来Select 姓名,学号 from stu where 年龄<22 and 学历=’大专’ 8) 查询学生表的数据,查询所有信息,列出前25%的记录 Select top 25 percent * from stu9) 查询出所有学生的姓名,性别,年龄降序排列 Select 姓名,性别 from stu order by 年龄 desc 10) 按照性别分组查询所有的平均年龄 Select avg(年龄) from stu group by 性别三填空(3分/题) 36分(包含笔试题问题和解答答案)1) 索引分为__聚集索引___和__非聚集索引__在一张表上最多可以创建1个聚集索引_索引。
但是可以创建_249个非聚集索引索引。
2) 系统存储过程_sp-helptext__是用来显示规则,默认值,未加密的存储过程,用户定义函数,触发或视图的文本 3) 事务开始:begin Transction 提交事务:commit Transction 回滚事务:rollback Transction四问答题(5分/题) 60分(包含笔试题问题和解答答案) 1) 数据库包含哪些那几种后缀名的文件必须,这些文件分别存放在什么的信息?主要数据文件(.mdf) 包含数据用户收集的信息,还有数据库其他相关的信息, 日志数据文件(.ndf) 存放用户对数据库的增删改查的信息,用于备份恢复使用2) TRUNCATE TABLE 命令是什么含义?和Delete from 表名有什么区? TRUNCATE TABLE: 提供了一种删除表中所有记录的快速方法 Delete from 表名:可以删除表的一个或多条记录3) 说出以下聚合数的含义:avg ,sum ,max ,min , count ,count(*) AVG:求平均值 SUM:求和 MAX:求最大值 MIN:求最小值COUNT(*):返回所有行数COUNT返回满足指定条件的记录值4) inner join 是什么意思?作用是什么?写出基本语法结构 INNER JOIN 内联接,用于返回两个表中要查询的列数据通信 Select * from 表名1 inner join 表名2 on 条件表达式 5) 左向外联接,右向外联接,全联接的关健字如何写? Left outer join 左向外联接 Right outer join 右向外联接 Full outer join 全联接6) 子查询分为几类,说明相互之间的别了查询分三种基本子查询: 1.使用in 查询返回一列或更多值 2.比较运算符,返回单个值勤做为外查询的参数 3.用exists 查询时相当于进行一次数据测试7) 实现实体完整性,实现域完整性,实现完整性(引用完整性),实现自定义完整性分别使用什么手段?实现实体完整性: 主键约束唯一约束标识列实现域完整性: 默认值约束检查约束非空属性引和完整性: 外键引用8) 视图可以更新吗?会影响到实际表吗?视图是可以更新的,视图只是基于基本表上的虚拟表,对视图的更新会直接影响到实际表9) 谈谈这样几个角色, dbo , Sysadmin publicDbo : 是数据库的拥有者,对数据库拥有所有操作的权限 Sysadmin : 可以对SQL SERVER执行任何活动Public : 自动创建的,能捕获数据库中用户的所有默认权限 10) 何为动态游标?何为静态游标?动态游标与静态游标相对,反映结果集中所做的所有更改,静态游标的结果集在游标打开时,建立在tempdb中,总按照游标打开时的原样显示11) 什么是存储过程?为什么存储过程要比单纯的Sql 语句执行起来要快? 存储过程:是一组预先编译好的T-SQL代码在创建存储过程时经过了语法和性能优化,执行不必重复的步骤,使用存储过程可提高运行效率12)什么是Inserted 表 ?什么是Deleted 表?Inserted表用于存储inserted和update语句影响的副本 Deleted 表用于存储delect 和 update 语句影响的行的副本。