SQL基本语句的练习
- 格式:doc
- 大小:4.05 MB
- 文档页数:22
(完整版)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语句基础题SQL (Structured Query Language) 是一种用于管理和操作关系型数据库的语言。
它允许用户从数据库中检索数据、插入新数据、更新和删除现有数据以及执行其他管理任务。
在本篇文档中,我将介绍一些 SQL 基础题,并提供相应的SQL 语句来解决这些问题。
1. 创建表格首先,我们需要创建一些表格来存储数据。
下面是一个例子,创建一个名为 "users" 的表格,用于存储用户信息:```CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50),age INT,email VARCHAR(100));```这个 SQL 语句使用 `CREATE TABLE` 关键字来创建一个名为"users" 的表格。
表格包含四个列:id、name、age 和 email。
`id` 列被标识为主键,这意味着它的值必须是唯一的。
`name`、`age` 和 `email` 列分别用于存储用户的姓名、年龄和电子邮件地址。
`VARCHAR` 是一种用于存储字符串的数据类型,可以指定最大长度。
2. 插入数据接下来,我们向表格中插入一些数据。
下面是一个例子,向"users" 表格中插入一条用户记录:```INSERT INTO users (id, name, age, email)VALUES(1,'JohnDoe',25,'********************');```这个 SQL 语句使用 `INSERT INTO` 关键字将数据插入到"users" 表格中。
它指定要插入的列(id、name、age 和email),以及这些列的值。
在本例中,我们插入了一条用户记录,其中 id 为 1,name 为 'John Doe',age 为 25,email 为'********************'。
姓名:______________班级:__________________一、请根据以下要求,填写正确的SQL语句。
1.查询“学生”表中所有计算机专业的男生信息。
______________________________________________________________________________ 2.查询“学生”表中姓“李”且2006年出生的学生的学号、姓名、出生日期信息。
______________________________________________________________________________ 3.查询“学生”表中年龄最大的三名学生的学号、姓名、出生日期信息。
______________________________________________________________________________ 4.统计“学生”表中各专业男生人数,显示格式为:专业、人数。
______________________________________________________________________________ 5.查询每名“学生”的平均成绩,按平均成绩降序显示姓名和平均成绩信息。
______________________________________________________________________________ 6.已知“Student1”表结构与“Student”完全相同,现将“Student1”中所有“旅游管理”专业学生的学号、姓名及专业追加到“Student”中。
______________________________________________________________________________ 7.计算Grade等级字段的值。
计算规则为60分及以上为合格,其余为不合格。
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。
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='王重阳'(注:第一句先删除该学生的成绩记录,第二句删除该学生的基本信息记录。
SQL语句练习练习5. 1. 2: 基于不断滚动的电影数据库的实例:Movie( 电影名title,拍摄年代year ,长度length, inColor ,制片厂名studioName, 制片人证书号producerC# )StarsIn(电影名movieTitle,拍摄年份movieYear ,影星名starName) MovieStar (姓名name,地址address,性别gender ,生日birthdate) MovieExec( 姓名name,地址address ,证书号cert # ,净资产netWorth ) Studio(姓名name, 地址address,总裁证书号presC# )请写出下列SQL 查询语句:* ( a) 找出米高梅制片公司(MGM studios)的地址。
SELECT address AS Studio_AddressFROM Studio WHERE name = 'MGM';( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。
SELECT birthdate AS Star_BirthdateFROM MovieStar WHERE name = 'Sandra Bullock';* ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。
SELECT starName FROM StarsInWHERE movieYear = 1980 OR movieTitle LIKE '%Love%';( d) 找出净资产至少1 000 万美元的所有行政长官。
SELECT name AS Exec_NameFROM MovieExec WHERE netWorth >= 10000000;( e) 找出所有的男影星或者是住址中含有Malibu 的影星。
SQL语言课后练习[大全5篇]第一篇:SQL语言课后练习岳阳市湖湘认证培训学校学院路504号************SQL语言课后练习题以下练习都是基于数据库XSG,及数据库表XSCJ与XSDA中操作,表结构如下:XSCJ(学号C(10),语文N(4,1),数学N(4,1),英语N(4,1),计算机N(4,1),平均成绩N(4,1))XSDA(学号C(10),姓名C(10),性别C(4),班级C(10),出生日期D,籍贯C(20),家庭情况G,简历M,照片G)1、用SQL语句建立XSDA表,并为学号字段创建为主关键字,约束性别字段的值只能为男或为女,如果在不输入信息的情况下默认值是女。
2、用SQL语句建立XSCJ表,并与XSDA表建立联系。
3、为XSDA表增加一个学费字段,要求为货币型,约束字段有效性规则:学费必须在0至20000元内(含),否则提示:学费错了。
4、修改XSDA表学费字段,要求学费必须在2000-20000间(含),否则提示:学费错了。
5、修改XSDA表学费字段,删除它的字段有效性规则。
6、修改XSDA表学费字段,将其改名为:学杂费。
7、修改XSDA表的籍贯字段的宽度为10。
8、删除XSDA表的学费字段。
9、将XSDA表的姓名字段和性别字段定义为候选索引,索引名为:TEMP。
10、删除XSDA表的候选索引TEMP。
11、删除XSDA表及XSCJ表。
12、在XSCJ表中插入一个元组:学号:19980405,语文:78,数学:68,英语:74,计算机:90,平均成绩:77.50。
13、在XSDA表中插入一个元组:学号:19980405,姓名:王小辉,性别:男,出生日期:1981年12月5日14、在XSCJ表中为所有学生的英语成绩加10分15、在XSDA表中为学号为:19980405的学生的籍贯改为岳阳市16、删除XSDA表中学号为19980405的记录17、将XSDA表复制到XSDABAK表18、从XSG数据库中的XSDA表查找所有学生的学号、姓名和班级的情况19、从XSG数据库的XSDA表查找计981班的学生的学号、姓名和班级的情况20、从XSG数据库中的XSCJ表中查找计算机成绩大于80的学生的学号21、从XSG数据库的XSDA表查找所有学生的学号、姓名和班级的情况,并按学号降序排序22、从XSG数据库中的XSCJ表中查找计算机成绩大于60的学生学号、语文、计算机和平均成绩,并按计算机的降序排序,如计算机成绩相同,按学号的升序排序23、从XSG数据库的XSDA表查找前4个学生的情况,按学号降序排序24、从XSG数据库中的XSCJ表中查找计算机成绩大于70的前40%学生的学生信息,并按计算机的降序排序25、从XSG数据库的XSDA和XSCJ表查找所有学生的姓名、语文、数学、英语和计算机成绩。
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.设图书借阅数据库有关系图书(图书编号,书名,作者,出版社,出版时间,图书类别)、读者(读者编号,姓名,读者类别)和借阅(读者编号, 图书编号, 借阅⽇期,还期)。
S Q L语言一、选择题1.S Q L语言是()的语言,容易学习。
A.过程化B.非过程化C.格式化D.导航式2. S Q L语言的数据操纵语句包括S E L E C T、I N S E R T、U P D A T E、D E L E T E等。
其中最重要的,也是使用最频繁的语句是()。
A.S E L E C TB.I N S E R TC.U P D A T ED.D E L E T E3.在视图上不能完成的操作是()。
A.更新视图B.查询C.在视图上定义新的表D.在视图上定义新的视图4.S Q L语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,C R E A T E、D R O P、A L T E R语句是实现哪种功能()。
A.数据查询B.数据操纵C.数据定义D.数据控制5.S Q L语言中,删除一个视图的命令是()。
A.D E L E T EB.D R O PC.C L E A RD.R E M O V E6.在S Q L语言中的视图V I E W是数据库的()。
A.外模式B.模式C.内模式D.存储模式7.下列的S Q L语句中,()不是数据定义语句。
A.C R E A T E T A B L EB.D R O P V I E WC.C R E A T E V I E WD.G R A N T8.若要撤销数据库中已经存在的表S,可用()。
A.D E L E T E T A B L E SB.D E L E T E SC.D R O P T A B L E SD.D R O P S9.若要在基本表S中增加一列C N(课程名),可用()。
A.A D D T A B L E S(C N C H A R(8))B.A D D T A B L E S A L T E R(C N C H A R(8))C.A L T E R T A B L E S A D D(C N C H A R(8))D.A L T E R T A B L E S(A D D C N C H A R(8))10.学生关系模式S(S#,S n a m e,S e x,A g e),S的属性分别表示学生的学号、姓名、性别、年龄。
sql语句练习50题Student(Sid,Sname,Sage,Ssex) 学⽣表Course(Cid,Cname,Tid) 课程表SC(Sid,Cid,score) 成绩表Teacher(Tid,Tname) 教师表练习内容:1.查询“某1”课程⽐“某2”课程成绩⾼的所有学⽣的学号;SELECT a.sid FROM (SELECT sid,score FROM SC WHERE cid=1) a,(SELECT sid,score FROM SC WHERE cid=3) b WHEREa.score>b.score AND a.sid=b.sid;此题知识点,嵌套查询和给查出来的表起别名2.查询平均成绩⼤于60分的同学的学号和平均成绩;SELECT sid,avg(score) FROM sc GROUP BY sid having avg(score) >60;此题知识点,GROUP BY 语句⽤于结合合计函数,根据⼀个或多个列对结果集进⾏分组。
group by后⾯不能接where,having代替了where3.查询所有同学的学号、姓名、选课数、总成绩SELECT Student.sid,Student.Sname,count(SC.cid),sum(score)FROM Student left Outer JOIN SC on Student.sid=SC.cid GROUP BY Student.sid,Sname4.查询姓“李”的⽼师的个数;select count(teacher.tid)from teacher where teacher.tname like'李%'5.查询没学过“叶平”⽼师课的同学的学号、姓名;SELECT Student.sid,Student.Sname FROM Student WHERE sid not in (SELECT distinct( SC.sid) FROM SC,Course,Teacher WHERE SC.cid=Course.cid AND Teacher.id=Course.tid AND Teacher.Tname='叶平');此题知识点,distinct是去重的作⽤6.查询学过“```”并且也学过编号“```”课程的同学的学号、姓名;select a.SID,a.SNAME from (select student.SNAME,student.SID from student,course,sc where cname='c++'and sc.sid=student.sid and sc.cid=course.cid) a,(select student.SNAME,student.SID from student,course,sc where cname='english'and sc.sid=student.sid and sc.cid=course.cid) b where a.sid=b.sid;标准答案(但是好像不好使)SELECT Student.S#,Student.Sname FROM Student,SC WHERE Student.S#=SC.S# ANDSC.C#='001'and exists( SELECT * FROM SC as SC_2 WHERE SC_2.S#=SC.S# AND SC_2.C#='002');此题知识点,exists是在集合⾥找数据,as就是起别名7.查询学过“叶平”⽼师所教的所有课的同学的学号、姓名;select a.sid,a.sname from (select student.sid,student.sname from student,teacher,course,scwhere teacher.TNAME='杨巍巍' and teacher.tid=course.tid and course.cid=sc.cid and student.sid=sc.sid) a标准答案:SELECT sid,Sname FROM Student WHERE sid in (SELECT sid FROM SC ,Course ,Teacher WHERE SC.cid=Course.cid AND Teacher.tid=Course.tid AND Teacher.Tname='杨巍巍' GROUP BY sid having count(SC.cid)=(SELECT count(cid) FROM Course,Teacher WHERE Teacher.tid=Course.tid AND Tname='杨巍巍'))8.查询课程编号“”的成绩⽐课程编号“”课程低的所有同学的学号、姓名;select a.sid,a.sname from(select student.SID,student.sname,sc.SCORE from student,sc where student.sid=sc.sid and sc.cid=1) a, (select student.SID,student.sname,sc.score from student,sc where student.sid=sc.sid and sc.cid=2) b where a.score<b.score anda.sid=b.sid标准答案:SELECT sid,Sname FROM (SELECT Student.sid,Student.Sname,score ,(SELECT score FROM SC SC_2 WHERE SC_2.sid=Student.sid AND SC_2.cid=1) score2 FROM Student,SCWHERE Student.sid=SC.sid AND cid=1) S_2 WHERE score2 <score;9.查询所有课程成绩⼩于分的同学的学号、姓名;SELECT sid,Sname FROM Student WHERE sid not in (SELECT Student.sid FROM Student,SC WHERE Student.sid=SC.sid AND score>60);此题知识点,先查出⼤于60分的,然后not in 就是⼩于60分的了10.查询没有学全所有课的同学的学号、姓名;SELECT Student.sid,Student.Sname FROM Student,SCWHERE Student.sid=SC.sid GROUP BY Student.sid,Student.Sname having count(cid) <(SELECT count(cid) FROM Course);11.查询⾄少有⼀门课与学号为“”的同学所学相同的同学的学号和姓名;12.查询⾄少学过学号为“”同学所有⼀门课的其他同学学号和姓名;SELECT student.sid,student.Sname FROM Student,SC WHERE Student.sid=SC.sid AND cid in (SELECT cid FROM SC WHERE sid=1)此题知识点,SELECT sid,Sname FROM Student,SC WHERE Student.sid=SC.sid AND cid in (SELECT cid FROM SC WHEREsid=1)这样写是错误的,因为from后⾯是两个表,不能明确是哪个表⾥⾯的sid和sname所以错误提⽰是“未明确定义列”13.把“SC”表中“叶平”⽼师教的课的成绩都更改为此课程的平均成绩;update sc set score=(select avg(score) from sc,course,teacher where course.cid=sc.cid and course.tid=teacher.tid andteacher.tname='杨巍巍')14.查询和“”号的同学学习的课程完全相同的其他同学学号和姓名;SELECT sid FROM SC WHERE cid in (SELECT cid FROM SC WHERE sid=6) GROUP BY sid having count(*)=(SELECT count(*) FROM SC WHERE sid=6);此题知识点,⽤数量来判断15.删除学习“叶平”⽼师课的SC表记录;delete from sc s where s.cid in (select c.cid from teacher t,course c where t.tid = c.tid and tname='李⼦')此题知识点,嵌套查询可以分布考虑,先查出李⼦⽼师都交了什么课的id,然后再删除那些id的值16.向SC表中插⼊⼀些记录,这些记录要求符合以下条件:没有上过编号“”课程的同学学号、课程的平均成绩;Insert into SC SELECT sid,2,(SELECT avg(score) FROM SC WHERE cid=2) FROM Student WHERE sid not in (SELECT sid FROM SC WHERE cid=2);17.按平均成绩从⾼到低显⽰所有学⽣的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显⽰:学⽣ID,,数据库,企业管理,英语,有效课程数,有效平均分;(没做出来)18.查询各科成绩最⾼和最低的分:以如下形式显⽰:课程ID,最⾼分,最低分;select cid as 课程号,max(score)as 最⾼分,min(score) as 最低分 from sc group by cid标准答案(但是运⾏不好使)SELECT L.cid As 课程ID,L.score AS 最⾼分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.cid = R.cid ANDL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.cid = IL.cid AND IM.sid=IL.sidGROUP BY IL.cid)AND R.Score = (SELECT MIN(IR.score) FROM SC AS IR WHERE R.cid = IR.cid GROUP BY IR.cid );19.按各科平均成绩从低到⾼和及格率的百分数从⾼到低顺序26.查询每门课程被选修的学⽣数select sc.cid,count(sc.sid) from sc,course where sc.cid=course.cid group by sc.cid27.查询出只选修了⼀门课程的全部学⽣的学号和姓名SELECT SC.sid,Student.Sname,count(cid) AS 选课数 FROM SC ,StudentWHERE SC.sid=Student.sid GROUP BY SC.sid ,Student.Sname having count(cid)=1;32.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列SELECT Cid,Avg(score) FROM SC GROUP BY cid ORDER BY Avg(score),cid DESC ;37.查询不及格的课程,并按课程号从⼤到⼩排列SELECT cid,sid FROM sc WHERE score <60 ORDER BY cid38.查询课程编号为且课程成绩在分以上的学⽣的学号和姓名;select student.sid,student.sname from sc,student where sc.cid=1 and sc.score>60 and sc.sid=student.sid40.查询选修“叶平”⽼师所授课程的学⽣中,成绩最⾼的学⽣姓名及其成绩select student.sname,sc.score from sc,student,teacher,course c where teacher.tname='李⼦'and teacher.tid=c.tid and c.cid=sc.cid and sc.sid=student.sid and sc.score=(select max(score)from sc where sc.cid=c.cid)41.查询各个课程及相应的选修⼈数select sc.cid ,count(sc.sid)from sc,student where sc.sid=student.sid group by sc.cid43.查询每门功成绩最好的前两名44.统计每门课程的学⽣选修⼈数(超过⼈的课程才统计)。
数据库的sql语句练习题1. 练习题一:查询语句基础在学生表(students)中,包含以下字段:学号(id)、姓名(name)、年龄(age)、性别(gender)、班级(class)、成绩(score)。
请编写SQL语句实现以下需求:a) 查询学生表中所有学生的信息。
b) 查询学生表中的男性学生信息。
c) 查询学生表中年龄为18岁的学生信息。
d) 查询学生表中成绩大于等于90分的学生信息。
e) 查询学生表中姓“张”的学生信息。
2. 练习题二:修改语句练习在学生表(students)中,某个学生的学号为1001,需要将该学生的年龄修改为20岁,请编写相应的SQL语句实现此操作。
3. 练习题三:插入语句练习在学生表(students)中添加一条新纪录,学号为1002,姓名为李明,年龄为19岁,性别为男,班级为三年级,成绩为87分,请编写相应的SQL语句实现此操作。
4. 练习题四:删除语句练习在学生表(students)中,某个学生的学号为1003,需要将该学生的信息从表中删除,请编写相应的SQL语句实现此操作。
5. 练习题五:使用多表查询存在两张表,学生表(students)和课程表(courses)。
学生表包含字段:学号(id)、姓名(name)、班级(class);课程表包含字段:课程编号(course_id)、课程名称(course_name)。
已知约德尔学院中,学号为1001的学生参加了编号为1的课程,请编写SQL语句查询学号为1001的学生所选的课程及课程名称。
6. 练习题六:排序查询练习在学生表(students)中,查询所有学生的信息,并按照成绩从高到低进行排序。
以上是数据库的SQL语句练习题,请按照上述要求编写相应的SQL语句进行解答。
祝你练习愉快,取得好成绩!。
sql语言练习题(打印版)# SQL语言练习题## 一、基础查询1. 查询员工表中所有员工的姓名和工资。
```sqlSELECT name, salary FROM employees;```2. 查询销售表中所有销售记录的日期和销售金额。
```sqlSELECT date, amount FROM sales;```3. 查询订单表中所有订单的订单编号和客户ID。
```sqlSELECT order_id, customer_id FROM orders;```## 二、条件查询1. 查询工资高于5000的员工姓名和工资。
```sqlSELECT name, salary FROM employees WHERE salary > 5000; ```2. 查询销售日期在2023年1月1日之后的销售记录。
```sqlSELECT * FROM sales WHERE date > '2023-01-01';```3. 查询客户ID为123的订单详情。
```sqlSELECT * FROM orders WHERE customer_id = 123;```## 三、排序查询1. 查询所有员工的姓名和工资,并按工资降序排列。
```sqlSELECT name, salary FROM employees ORDER BY salary DESC; ```2. 查询所有销售记录,并按销售日期升序排列。
```sqlSELECT * FROM sales ORDER BY date ASC;```3. 查询所有订单,并按订单金额降序排列。
```sqlSELECT * FROM orders ORDER BY amount DESC;```## 四、聚合查询1. 查询所有员工的平均工资。
```sqlSELECT AVG(salary) FROM employees;2. 查询销售金额最高的销售记录。
sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表要求:完成以下操作1.查询姓"欧阳"且全名为三个汉字的学生的姓名。
select sname from student where sname like “欧阳__‟;2.查询名字中第2个字为"阳"字的学生的姓名和学号。
select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。
select sname,sno,ssexfrom studentwhere sname not like “刘%”;4.查询db_design课程的课程号和学分。
select cno,ccredit from coursewhere cname like 'db_design'5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。
select * from course where cname like 'db%i_ _';6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
select sno,cno from sc where grade is null;7.查所有有成绩的学生学号和课程号。
select sno,cno from sc where grade is not null;8.查询计算机系年龄在20岁以下的学生姓名。
select sname from student where sdept= 'cs' and sage<20;9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
sql语句基础题好的,以下是几个基础的SQL 语句题目:1. 查询所有学生信息:sql复制代码:SELECT * FROM students;2. 查询名为"张三" 的学生信息:sql复制代码:SELECT * FROM students WHERE name = '张三';3. 查询年龄大于20 岁的学生信息:sql复制代码:SELECT * FROM students WHERE age > 20;4. 查询年龄小于等于20 岁的学生信息:sql复制代码:SELECT * FROM students WHERE age <= 20;5. 查询年龄等于20 岁的所有学生信息,但名字不为"李四":sql复制代码:SELECT * FROM students WHERE age = 20 AND name != '李四';6. 查询名字中包含"王" 字的学生信息:sql复制代码:SELECT * FROM students WHERE name LIKE '%王%';7. 查询年龄在18 到25 岁之间的学生信息:sql复制代码SELECT * FROM students WHERE age BETWEEN 18 AND 25;8. 查询名字为"张三" 或"李四" 的学生信息:sql复制代码:SELECT * FROM students WHERE name IN ('张三', '李四');9. 查询名字为"张三" 但年龄不是20 岁的学生信息:sql复制代码:SELECT * FROM students WHERE name = '张三' AND age != 20;10. 查询所有学生的平均年龄:sql复制代码:SELECT AVG(age) FROM students;。
(一) 新建以下几个表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语句练习题库一、基础题1. 创建一个名为"students"的表,包含以下字段: - 学生编号(student_id),整数类型,主键- 姓名(name),字符串类型,最大长度为50 - 年龄(age),整数类型2. 向"students"表中插入以下记录:- 学生编号:1,姓名:张三,年龄:18- 学生编号:2,姓名:李四,年龄:20- 学生编号:3,姓名:王五,年龄:193. 查询"students"表中所有记录的姓名和年龄。
4. 查询年龄大于等于20岁的学生记录的姓名。
5. 修改学生编号为2的记录的姓名为"赵六"。
6. 删除学生编号为3的记录。
二、进阶题1. 创建一个名为"courses"的表,包含以下字段: - 课程编号(course_id),整数类型,主键- 课程名称(course_name),字符串类型,最大长度为50- 授课教师(teacher),字符串类型,最大长度为502. 向"courses"表中插入以下记录:- 课程编号:1,课程名称:数学,授课教师:张老师- 课程编号:2,课程名称:英语,授课教师:李老师- 课程编号:3,课程名称:物理,授课教师:王老师3. 查询"students"表和"courses"表中学生姓名和课程名称的组合。
4. 查询"students"表中没有选修课程的学生记录的姓名。
5. 查询每门课程的选修人数。
6. 查询选修课程人数最多的课程信息。
三、高级题1. 创建一个名为"scores"的表,包含以下字段:- 学生编号(student_id),整数类型,外键,关联"students"表 - 课程编号(course_id),整数类型,外键,关联"courses"表 - 分数(score),整数类型,取值范围为0-1002. 向"scores"表中插入以下记录:- 学生编号:1,课程编号:1,分数:88- 学生编号:1,课程编号:2,分数:92- 学生编号:2,课程编号:1,分数:75- 学生编号:2,课程编号:3,分数:85- 学生编号:3,课程编号:2,分数:90- 学生编号:3,课程编号:3,分数:783. 查询每个学生的平均分数。
第一阶段题目:以下练习题是根据初始化到数据库中的表执行的,请务必先执行如下建表语句。
create table s1_student( sno varchar2(10) primary key, sname varchar2(30), sbirthday varchar2(30), ssex varchar2(10),sclass varchar2(10) );create table s1_teacher( tno varchar2(10) primary key, tname varchar2(30),tsex varchar2(10),tbirthday varchar2(30),prof varchar2(30),depart varchar2(30) );create table s1_course( cno varchar2(10), cname varchar2(30), tno varchar2(10) ); create table s1_score( sno varchar2(10), cno varchar2(10), degree number );create table s1_grade( low number, upp number, rank varchar2(2) );/*******初始化学生表s1_student******/insert into s1_student values ('108', '曾华', '1997/9/1', '男', '95033');insert into s1_student values ('105', '匡明', '1995/10/2', '男', '95031');insert into s1_student values ('107', '王丽', '1996/1/23', '女', '95033');insert into s1_student values ('101', '李军', '1996/2/20', '男', '95033');insert into s1_student values ('109', '王芳', '1995/2/10', '女', '95031');insert into s1_student values ('103', '陆君', '1994/6/3', '男', '95031');commit;/*******初始化教师表s1_teacher*******/insert into s1_teacher values ('804', '李诚','男','1979-12-2','副教授','计算机系'); insert into s1_teacher values ('856', '张旭','男','1985-3-12','讲师','电子工程系'); insert into s1_teacher values ('825', '王萍','女','1989-5-2','助教','计算机系');insert into s1_teacher values ('831', '刘冰','女','1988-8-2','助教','电子工程系'); commit;/*******初始化课程表s1_course********/insert into s1_course values ('3-105', '计算机导论', '825');insert into s1_course values ('3-245', '操作系统', '804');insert into s1_course values ('6-166', '数据电路', '856');insert into s1_course values ('9-888', '高等数学', '800');commit;/********初始化成绩表s1_score*********/insert into s1_score values ('103', '3-245', 86);insert into s1_score values ('105', '3-245', 75);insert into s1_score values ('109', '3-245', 68);insert into s1_score values ('103', '3-105', 92);insert into s1_score values ('105', '3-105', 88);insert into s1_score values ('109', '3-105', 76);insert into s1_score values ('101', '3-105', 64);insert into s1_score values ('107', '3-105', 91);insert into s1_score values ('108', '3-105', 78);insert into s1_score values ('101', '6-166', 85);insert into s1_score values ('107', '6-106', 79);insert into s1_score values ('108', '6-166', 81);commit;/********初始化成绩分类表s1_grade*********/insert into s1_grade values ('90', '100', 'A');insert into s1_grade values ('80', '89', 'B');insert into s1_grade values ('70', '79', 'C');insert into s1_grade values ('60', '69', 'D');insert into s1_grade values ('0', '59', 'E');commit;1.查询s1_student表中的所有记录的Sname、Ssex和Class列.select sname,ssex,sclass from s1_student;2.查询教师所有的单位即不重复的Depart列.select distinct depart from s1_teacher;3.查询s1_student表的所有记录.select * from s1_student;4.查询s1_score表中成绩在60到80之间的所有记录.select * from s1_score where degree between60and80;5.查询s1_score表中成绩为85,86或88的记录.select * from s1_score where degree in (85,86,88);6.查询s1_student表中“95031”班或性别为“女”的同学记录.select * from s1_student where sclass='95031'or ssex='女';7.以Class降序查询s1_student表的所有记录.select * from s1_student order by sclass desc;8.以Cno升序、Degree降序查询s1_score表的所有记录。
MysqlSql语句练习题(50道)表名和字段–1.学⽣表Student(s_id,s_name,s_birth,s_sex) –学⽣编号,学⽣姓名, 出⽣年⽉,学⽣性别–2.课程表Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号–3.教师表Teacher(t_id,t_name) –教师编号,教师姓名–4.成绩表Score(s_id,c_id,s_score) –学⽣编号,课程编号,分数测试数据--建表--学⽣表CREATE TABLE `Student`(`s_id` VARCHAR(20),`s_name` VARCHAR(20) NOT NULL DEFAULT '',`s_birth` VARCHAR(20) NOT NULL DEFAULT '',`s_sex` VARCHAR(10) NOT NULL DEFAULT '',PRIMARY KEY(`s_id`));--课程表CREATE TABLE `Course`(`c_id` VARCHAR(20),`c_name` VARCHAR(20) NOT NULL DEFAULT '',`t_id` VARCHAR(20) NOT NULL,PRIMARY KEY(`c_id`));--教师表CREATE TABLE `Teacher`(`t_id` VARCHAR(20),`t_name` VARCHAR(20) NOT NULL DEFAULT '',PRIMARY KEY(`t_id`));--成绩表CREATE TABLE `Score`(`s_id` VARCHAR(20),`c_id` VARCHAR(20),`s_score` INT(3),PRIMARY KEY(`s_id`,`c_id`));--插⼊学⽣表测试数据insert into Student values('01' , '赵雷' , '1990-01-01' , '男');insert into Student values('02' , '钱电' , '1990-12-21' , '男');insert into Student values('03' , '孙风' , '1990-05-20' , '男');insert into Student values('04' , '李云' , '1990-08-06' , '男');insert into Student values('05' , '周梅' , '1991-12-01' , '⼥');insert into Student values('06' , '吴兰' , '1992-03-01' , '⼥');insert into Student values('07' , '郑⽵' , '1989-07-01' , '⼥');insert into Student values('08' , '王菊' , '1990-01-20' , '⼥');--课程表测试数据insert into Course values('01' , '语⽂' , '02');insert into Course values('02' , '数学' , '01');insert into Course values('03' , '英语' , '03');--教师表测试数据insert into Teacher values('01' , '张三');insert into Teacher values('02' , '李四');insert into Teacher values('03' , '王五');--成绩表测试数据insert into Score values('01' , '01' , 80);insert into Score values('01' , '02' , 90);insert into Score values('01' , '03' , 99);insert into Score values('02' , '01' , 70);insert into Score values('02' , '02' , 60);insert into Score values('02' , '03' , 80);insert into Score values('03' , '01' , 80);insert into Score values('03' , '02' , 80);insert into Score values('03' , '03' , 80);insert into Score values('04' , '01' , 50);insert into Score values('04' , '02' , 30);insert into Score values('04' , '03' , 20);insert into Score values('05' , '01' , 76);insert into Score values('05' , '02' , 87);insert into Score values('06' , '01' , 31);insert into Score values('06' , '03' , 34);insert into Score values('07' , '02' , 89);insert into Score values('07' , '03' , 98);表数据如下student 学⽣表:s_id s_name s_birth s_sex01赵雷1990-01-01男02钱电1990-12-21男03孙凤1990-05-20男04李云1990-08-06男05周梅1991-12-12⼥06吴兰2017-12-13⼥07郑⽵1989-07-01⼥08王菊1990-01-20⼥09赵雷1990-01-21⼥10赵雷1990-01-22男score 分数表:s_id c_id s_score010180010290010399020170020260020380030180030280030380040150040230040320050176050387060131060334070389070198course 课程表c_id c_name t_id01语⽂0202数学0103英语03teacher ⽼师表:t_id t_name01张三02李四03王五-- 准备条件,去掉 sql_mode 的 ONLY_FULL_GROUP_BY 否则此种情况下会报错:-- Expression #1 of select list is not in group by clause and contains nonaggregated column 'userinfo.-- 原因:-- MySQL 5.7.5和up实现了对功能依赖的检测。
简单的SQL语句练习大全一:本题用到下面三个关系表:CARD借书卡。
CNO 卡号,NAME姓名,CLASS 班级BOOKS图书。
BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY库存册数BORROW借书记录。
CNO 借书卡号,BNO 书号,RDA TE 还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。
要求实现如下15个处理:1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。
//表名borrow2.找出借书超过5本的读者,输出借书卡号及所借图书册数。
3.查询借阅了"水浒"一书的读者,输出姓名及班级。
4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。
5.查询书名包括"网络"关键词的图书,输出书号、书名、作者。
6.查询现有图书中价格最高的图书,输出书名及作者。
7.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。
8.将"C01"班同学所借图书的还期都延长一周。
9.从BOOKS表中删除当前无人借阅的图书记录。
10.如果经常按书名查询图书信息,请建立合适的索引。
11.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SA VE表中(注ORROW_SA VE表结构同BORROW表)。
12.建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)。
13.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。
14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。