SQL语句专题训练
sql 五十题
sql 五十题以下是一些SQL练习题,共50题:1. 什么是SQL?2. 什么是关系型数据库?3. 什么是主键?4. 什么是外键?5. 什么是索引?6. 什么是查询?7. 什么是插入操作?8. 什么是更新操作?9. 什么是删除操作?10. 什么是聚合函数?11. 什么是分组操作?12. 什么是排序操作?13. 什么是联接操作?14. 什么是子查询?15. 什么是视图?16. 什么是存储过程?17. 什么是触发器?18. 如何使用WHERE子句进行过滤?19. 如何使用ORDER BY子句进行排序?20. 如何使用GROUP BY子句进行分组?21. 如何使用HAVING子句进行分组过滤?22. 如何使用JOIN操作联接表?23. 如何使用聚合函数SUM、AVG、MIN、MAX?24. 如何使用聚合函数COUNT、COUNT()和COUNT(列名)的区别?25. 如何使用子查询嵌套查询?26. 如何创建视图并查询视图数据?27. 如何创建存储过程并调用存储过程?28. 如何创建触发器并触发触发器?29. 如何使用INSERT INTO语句插入数据?30. 如何使用UPDATE语句更新数据?31. 如何使用DELETE语句删除数据?32. 如何使用TRUNCATE TABLE语句清空表数据?33. 如何使用UNION操作符合并多个查询结果?34. 如何使用UNION ALL操作符合并多个查询结果(包括重复行)?35. 如何使用IN操作符筛选符合条件的多个值?36. 如何使用LIKE操作符进行模糊查询?37. 如何使用NOT操作符进行否定筛选?38. 如何使用BETWEEN操作符筛选范围值?39. 如何使用EXISTS操作符检查子查询结果是否存在?40. 如何使用NOT EXISTS操作符检查子查询结果是否存在(否定筛选)?41. 如何使用CASE语句进行条件判断和值转换?42. 如何使用DISTINCT关键字去除查询结果的重复行?43. 如何使用LIMIT关键字限制查询结果的行数?44. 如何使用JOIN操作连接多个表并筛选数据?45. 如何使用INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN的区别和用法?46. 如何使用视图提高查询效率和维护数据安全性?47. 如何使用存储过程存储复杂的业务逻辑和重复使用的查询语句?48. 如何使用触发器自动执行特定事件或数据修改操作?49. 如何优化SQL查询性能,提高数据库的响应速度?50. 如何安全地管理和维护数据库,确保数据的完整性和可靠性?。
(完整版)sql语句练习题及答案
(完整版)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语句练习题一、简答题1. 什么是数据库?数据库是一个按照结构化方式存储、管理和组织数据的集合,它允许用户通过SQL语言对数据进行查询、增加、修改和删除操作。
2. 什么是SQL?SQL(Structured Query Language)是用于与关系型数据库通信的标准语言。
通过SQL语句,可以对数据库进行查询、插入、更新和删除等操作。
二、选择题1. 关系型数据库是基于以下哪个数据模型构建的?A. 层次模型B. 网络模型C. 对象模型D. 表格模型答案:D. 表格模型2. 下面哪个关键字用于在数据库中创建新表?A. INSERTB. SELECTC. CREATED. DELETE答案:C. CREATE3. 以下哪个关键字用于向数据库中的表中插入新行?A. UPDATEB. INSERTC. DELETED. ALTER答案:B. INSERT三、假设有以下两张表:学生表(Student):学生编号(StuID)学生姓名(Name)学生性别(Gender)1 张三男2 李四女3 王五男课程表(Course):课程编号(CourseID)课程名称(CourseName)课程学时(Credit)1 数学 602 英语 403 物理 80请根据上述信息,编写SQL语句完成以下操作:1. 查询所有学生的信息(包括学生编号、姓名和性别)。
2. 查询所有学生的姓名和所选课程的名称。
3. 查询学生编号为2的学生所选课程的名称和学时。
4. 查询选修课程学时大于50的学生的姓名和性别。
5. 查询选修了物理课程的学生的学生编号和姓名。
6. 将课程学时大于50的课程按照学时的降序排列。
答案:1. SELECT StuID, Name, Gender FROM Student;2. SELECT , Course.CourseNameFROM Student INNER JOIN CourseON Student.StuID = Course.CourseID;3. SELECT , Course.CourseName, Course.CreditFROM Student INNER JOIN CourseON Student.StuID = Course.CourseIDWHERE Student.StuID = 2;4. SELECT , Student.GenderFROM Student INNER JOIN CourseON Student.StuID = Course.CourseIDWHERE Course.Credit > 50;5. SELECT Student.StuID, FROM Student INNER JOIN CourseON Student.StuID = Course.CourseIDWHERE Course.CourseName = '物理';6. SELECT * FROM CourseWHERE Credit > 50ORDER BY Credit DESC;以上是关于SQL语句练习题的解答,通过这些练习可以加深对基本SQL语句的理解和应用。
SQL语句练习题(精品文档)
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练习题
sql练习题SQL练习题在现代信息化社会中,数据的处理和管理变得愈发重要。
而SQL(Structured Query Language)作为一种用于管理和处理关系型数据库的语言,也成为了各行各业从事数据分析和管理的必备技能之一。
为了提高自己的SQL技能,我们可以通过练习题来不断巩固和提升。
练习题一:查询商品信息假设有一个商品表(Product)和一个供应商表(Supplier),其中商品表包含了商品的ID、名称、价格和供应商ID等信息,供应商表包含了供应商的ID和名称等信息。
请写出一条SQL语句,查询出所有商品的名称、价格和供应商名称。
解答一:```sqlSELECT , Product.Price, FROM ProductJOIN Supplier ON Product.SupplierID = Supplier.ID;```练习题二:统计销售额假设有一个订单表(Orders)和一个订单详情表(OrderDetails),其中订单表包含了订单的ID、日期和客户ID等信息,订单详情表包含了订单详情的ID、订单ID、商品ID和数量等信息。
请写出一条SQL语句,统计每个客户的总销售额,并按销售额降序排序。
解答二:```sqlSELECT Orders.CustomerID, SUM(Product.Price * OrderDetails.Quantity) AS TotalSalesFROM OrdersJOIN OrderDetails ON Orders.ID = OrderDetails.OrderIDJOIN Product ON OrderDetails.ProductID = Product.IDGROUP BY Orders.CustomerIDORDER BY TotalSales DESC;```练习题三:查询员工信息假设有一个员工表(Employee)和一个部门表(Department),其中员工表包含了员工的ID、姓名和部门ID等信息,部门表包含了部门的ID和名称等信息。
数据库的sql语句练习题
数据库的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 语句经典题目SQL(Structured Query Language)是用于管理关系数据库的标准编程语言。
以下是一些经典的 SQL 题目,可以帮助你提高 SQL 技能:1. 学生成绩查询假设有一个学生数据库,包括学生、课程和成绩等信息。
学生表为`students`,包含列 `id`, `name`, 和 `age`。
课程表为 `courses`,包含列`id`, `name`。
成绩表为 `scores`,包含列 `student_id`, `course_id`, 和`score`。
查询每个学生的姓名、年龄和所有课程的成绩。
2. 员工工资查询假设有一个员工数据库,包括员工、部门和工资等信息。
员工表为`employees`,包含列 `id`, `name`, 和 `department_id`。
部门表为`departments`,包含列 `id`, `name`。
工资表为 `salaries`,包含列`employee_id`, `salary`。
查询每个员工的姓名、所属部门和工资。
3. 商品销售统计假设有一个商品销售数据库,包括商品、销售和购买者等信息。
商品表为 `products`,包含列 `id`, `name`, 和 `price`。
销售表为 `sales`,包含列 `product_id`, `seller_id`, 和 `buyer_id`。
查询每种商品的名称、单价和销售数量,并按销售数量降序排列。
4. 电影评分查询假设有一个电影数据库,包括电影、导演和评分等信息。
电影表为`movies`,包含列 `id`, `title`, 和 `director_id`。
导演表为 `directors`,包含列 `id`, `name`。
评分表为 `ratings`,包含列 `movie_id`, 和 `rating`。
查询每个导演所执导的电影的评分,并计算每个导演的平均评分。
5. 博客文章分类假设有一个博客文章数据库,包括文章、类别和作者等信息。
sql语言练习题
sql语言练习题一、数据库表结构设计假设有一个学生信息管理系统,需要设计以下几个数据库表:1. 学生表(Students):- 学生ID(StudentID)- 主键,自增长- 姓名(Name)- 年龄(Age)- 性别(Gender)2. 课程表(Courses):- 课程ID(CourseID)- 主键,自增长- 课程名称(CourseName)3. 学生选课表(StudentCourses):- 选课ID(ID)- 主键,自增长- 学生ID(StudentID)- 外键,关联学生表的学生ID- 课程ID(CourseID)- 外键,关联课程表的课程ID二、SQL语句实现1. 创建数据库及表结构:CREATE DATABASE 学生信息管理系统;USE 学生信息管理系统;CREATE TABLE Students (StudentID INT AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(50),Age INT,Gender VARCHAR(10));CREATE TABLE Courses (CourseID INT AUTO_INCREMENT PRIMARY KEY,CourseName VARCHAR(50));CREATE TABLE StudentCourses (ID INT AUTO_INCREMENT PRIMARY KEY,StudentID INT,CourseID INT,FOREIGN KEY (StudentID) REFERENCES Students(StudentID), FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)```2. 插入数据:```INSERT INTO Students (Name, Age, Gender) VALUES ('张三', 18, '男'),('李四', 20, '女'),('王五', 19, '男');INSERT INTO Courses (CourseName)VALUES ('数学'),('英语'),('物理');INSERT INTO StudentCourses (StudentID, CourseID) VALUES (1, 1),(1, 2),(2, 1),(3, 3);```3. 查询题目要求:(1)查询所有学生的信息:```sqlSELECT * FROM Students;```(2)查询所有课程的信息:```sqlSELECT * FROM Courses;```(3)查询学生ID为1的选课记录:```sqlSELECT , Courses.CourseNameFROM StudentsJOIN StudentCourses ON Students.StudentID = StudentCourses.StudentIDJOIN Courses ON StudentCourses.CourseID = Courses.CourseIDWHERE Students.StudentID = 1;```(4)查询已选课程数量超过2门的学生信息:```sqlSELECT , COUNT(StudentCourses.CourseID) AS CourseCountFROM StudentsJOIN StudentCourses ON Students.StudentID =StudentCourses.StudentIDGROUP BY Students.StudentIDHAVING COUNT(StudentCourses.CourseID) > 2;```(5)查询选课表中的学生ID和课程ID的组合:```sqlSELECT StudentID, CourseIDFROM StudentCourses;```三、总结通过以上SQL语句的实现,我们可以对学生信息管理系统的数据库进行基本操作,包括查看学生和课程的信息,以及查询选课记录。
sql经典50题建表语句
sql经典50题建表语句1、题目:创建一个名为"employees"的表,包含"id"、"name"和"salary"三个字段。
sql:CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),salary DECIMAL(10, 2));2、题目:创建一个名为"orders"的表,包含"order_id"、"customer_id"和"order_date"三个字段。
sql:CREATE TABLE orders (order_id INT PRIMARY KEY,customer_id INT,order_date DATE);3、题目:创建一个名为"products"的表,包含"product_id"、"product_name"和"price"三个字段。
sql:CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(50),price DECIMAL(10, 2));4、题目:创建一个名为"customers"的表,包含"customer_id"、"first_name"、"last_name"和"email"四个字段。
sql:CREATE TABLE customers (customer_id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(100));5、题目:创建一个名为"addresses"的表,包含"address_id"、"street"、"city"和"state"四个字段。
sql语句基础题
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;。
sql经典训练
sql经典训练SQL(结构化查询语言)是用于管理关系数据库的标准编程语言。
以下是SQL的经典训练:1. 基础语法:`SELECT`: 查询数据`FROM`: 指定从哪个表查询`WHERE`: 过滤数据`AND` & `OR`: 组合过滤条件`ORDER BY`: 排序数据`LIMIT` & `OFFSET`: 限制返回的行数2. 聚合函数:`COUNT()`: 计算行数`SUM()`: 计算总和`AVG()`: 计算平均值`MAX()`: 获取最大值`MIN()`: 获取最小值3. 分组与子查询:`GROUP BY`: 按某列或多列分组`HAVING`: 对分组后的数据进行过滤子查询: 在一个查询中嵌套另一个查询4. 连接表:内连接 (INNER JOIN)左连接 (LEFT JOIN)右连接 (RIGHT JOIN)全外连接 (FULL OUTER JOIN)5. 创建与修改表:`CREATE TABLE`: 创建新表`ALTER TABLE`: 修改现有表的结构(如添加、删除列)`DROP TABLE`: 删除表6. 索引与优化:索引的用途和类型(如 B-tree, hash, full-text 等)查询优化技巧:例如使用索引、避免全表扫描等。
7. 存储过程与触发器:存储过程: 保存的SQL命令集合,可以像函数一样被调用。
触发器: 在某些数据库事件(如 INSERT、UPDATE 或 DELETE)发生时自动执行的代码块。
8. 事务处理:ACID属性:原子性、一致性、隔离性和持久性。
事务的开始 (`BEGIN TRANSACTION`) 和结束 (`COMMIT` 或`ROLLBACK`).9. 视图:使用视图来简化复杂的查询或隐藏某些数据。
10. 其他功能:用户与权限管理 (如 GRANT, REVOKE 等)。
使用系统或信息模式视图来获取数据库的元数据。
11. 实践与挑战:通过实际的数据和案例来练习和应用所学知识。
sql语句练习题库
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. 查询每个学生的平均分数。
SQL语句(有答案)
一. 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语句的叙述中,错误的是 ( )。
sql的练习题
sql的练习题SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。
在数据分析和数据库管理领域,熟练掌握SQL语言对于解决问题和提高工作效率至关重要。
本文将介绍一些SQL的练习题,帮助读者巩固和提升SQL技能。
练习一:查询雇员信息假设有一个名为"Employees"的表,包含以下列:员工ID (EmployeeID)、员工姓名(EmployeeName)、员工所在部门(Department)、员工职位(Position)和入职日期(HireDate)。
写出一条SQL查询语句,获取所有员工的信息。
```sqlSELECT * FROM Employees;```练习二:查询特定条件的雇员信息在练习一的基础上,假设需要查询入职日期在2020年之后的所有员工信息。
```sqlSELECT * FROM Employees WHERE HireDate > '2020-01-01';```练习三:按部门查询员工数量在练习一的基础上,需要查询每个部门的员工数量,并按照数量降序排列。
```sqlSELECT Department, COUNT(*) AS EmployeeCountFROM EmployeesGROUP BY DepartmentORDER BY EmployeeCount DESC;```练习四:查询员工平均入职时间在练习一的基础上,需要计算所有员工的平均入职时间。
```sqlSELECT AVG(DATEDIFF(NOW(), HireDate)) AS AverageHireDays FROM Employees;```练习五:多表查询假设有两个表,"Orders"表和"Customers"表。
"Orders"表包含订单信息,包括订单ID(OrderID)、订单日期(OrderDate)和客户ID (CustomerID)。
sql练习题及答案
sql练习题及答案SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。
在这篇文章中,我们将提供一些SQL练习题及其答案,旨在帮助读者加深对SQL的理解,并提供实践操作的机会。
练习题一:学生表考虑一个名为"Students"的学生表,包含以下字段:- 学生编号(StudentID)- 学生姓名(StudentName)- 学生年级(Grade)- 学生所在学校(School)请使用SQL语句创建并插入示例数据到"Students"表中。
答案:```sqlCREATE TABLE Students (StudentID INT,StudentName VARCHAR(50),Grade INT,School VARCHAR(50));INSERT INTO Students (StudentID, StudentName, Grade, School)VALUES (1, '张三', 11, '中学A'),(2, '李四', 10, '中学B'),(3, '王五', 10, '中学A'),(4, '赵六', 12, '中学C');```练习题二:查询学生表信息请编写SQL查询语句,查询出所有学生的姓名和所在学校。
答案:```sqlSELECT StudentName, School FROM Students;```练习题三:更新学生信息假设有一位新生加入学校,学生姓名为"李华",年级为11,学校为"中学B"。
请编写SQL语句将该学生信息插入到学生表中。
答案:```sqlINSERT INTO Students (StudentName, Grade, School)VALUES ('李华', 11, '中学B');```练习题四:删除学生信息假设"赵六"这位学生已经转学离开学校,需要从学生表中将其信息删除。
简单的SQL语句练习大全
简单的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表追加定义主码的语句。
SQL查询语句练习(50题)
SQL查询语句练习(50题)Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;2、查询平均成绩大于60分的同学的学号和平均成绩;3、查询所有同学的学号、姓名、选课数、总成绩;4、查询姓“李”的老师的个数;5、查询没学过“叶平”老师课的同学的学号、姓名;6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;9、查询所有课程成绩小于60分的同学的学号、姓名;10、查询没有学全所有课的同学的学号、姓名;11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;15、删除学习“叶平”老师课的SC表记录;16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、002号课的平均成绩;17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分19、按各科平均成绩从低到高和及格率的百分数从高到低顺序20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)21、查询不同老师所教不同课程平均分从高到低显示22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]24、查询学生平均成绩及其名次25、查询各科成绩前三名的记录:(不考虑成绩并列情况)26、查询每门课程被选修的学生数27、查询出只选修了一门课程的全部学生的学号和姓名28、查询男生、女生人数29、查询姓“张”的学生名单30、查询同名同性学生名单,并统计同名人数31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数35、查询所有学生的选课情况;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;37、查询不及格的课程,并按课程号从大到小排列38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;39、求选了课程的学生人数40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩41、查询各个课程及相应的选修人数42、查询不同课程成绩相同的学生的学号、课程号、学生成绩43、查询每门功成绩最好的前两名44、统计每门课程的学生选修人数(超过10人的课程才统计)。
强化-SQL语句强化训练(史上最全最经典,呕血推荐)sql语句练习
强化-SQL语句强化训练(史上最全最经典,呕血推荐)sql语句练习2010/71. 有4个关系模式如下:出版社(出版社编号,出版社名称);图书(图书编号,书名,出版社编号,定价);作者(作者编号,姓名);著书(图书编号,作者编号,作者排序)注:作者排序=1表示第一作者,依此类推。
用SQL语句,完成第36~39题。
(1).检索所有定价超过20元的书名。
答案:SELECT书名(1分)FROM图书(1分)WHERE定价>20(2分)(2).统计每个出版社图书的平均定价。
答案:SELECT出版社编号,A VG(定价)(2分)FROM图书(1分)GROUP BY出版社编号(1分)(3).将科学出版社的所有图书定价下调5%。
答案:UPDATE图书SET定价=定价*0.95(1分)WHERE出版社编号IN(1分)(SELECT出版社编号FROM出版社(1分)WHERE出版社名称="科学")(1分)【说明】WHERE出版社名称LIKE"科学"也正确。
(4).列出所有图书的书名、第一作者姓名和出版社名称。
答案:SELECT书名,姓名,出版社名称(1分)FROM出版社A,图书B,作者C,著书D(1分)WHEREA.出版社编号=B.出版社编号ANDB.图书编号=D.图书编号(1分)ANDC.作者编号=D.作者编号AND作者排序=1。
(1分)S(SNO,SNAME,AGE,SEX,SDEPT)SC(SNO,CNO,GRADE)C(CNO,CNAME,CDEPT,TNAME)1.试用SQL的查询语句表达下列查询:①检索LIU老师所授课程的课程号和课程名。
②检索年龄大于23岁的男学生的学号和姓名。
③检索至少选修LIU老师所授课程中一门课程的女学生姓名。
④检索W ANG同学不学的课程的课程号。
⑤检索至少选修两门课程的学生学号。
⑥检索全部学生都选修的课程的课程号与课程名。
⑦检索选修课程包含LIU老师所授课程的学生学号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL语句专题训练选择题1、SQL语句中修改表结构的命令为()A、ALTERB、MODIFY STRUCTUREC、ALTER TABLED、ALTER STRUCTURE2、SQL语句的条件短语的关键字是()A、CONDITIONB、FORC、WHILED、WHERE3、SQL语句中删除表的命令为()A、DROP TABLEB、DELETE TABLEC、ERASE TABLED、DELETE4、在SQL查询时,使用WHERE子句指出的是( )。
A)查询目标B)查询结果C) 查询条件D)查询视图5、下面有关HAVING子句描述错误的是()A) HAVING子句必须与GROUP BY子句同时使用,不能单独使用B) 使用HAVING子句的同时不能使用WHERE子句C) 使用HAVING子句的同时可以使用WHERE子句D) 使用HAVING子句的作用是限定分组的条件6、当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:股票代码股票名称单价交易所600600 青岛啤酒 7.48 上海600601 方正科技 15.20 上海600602 广电电子 10.40 上海600603 兴业房产 12.76 上海600604 二纺机 9.96 上海600605 轻工机械 14.59 上海000001 深发展 7.48 深圳000002 深万科 12.50 深圳执行如下SQL语句后SELECT * FROM stock INTO DBF stock ORDER BY 单价A) 系统会提示出错信息B) 会生成一个按“单价”升序排序的表文件,将原来的stock.dbf文件覆盖C) 会生成一个按“单价”降序排序的表文件,将原来的stock.dbf文件覆盖D) 不会生成排序文件,只在屏幕上显示一个按“单价”升序排序的结果7、当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:股票代码股票名称单价交易所600600 青岛啤酒 7.48 上海600601 方正科技 15.20 上海600602 广电电子 10.40 上海600603 兴业房产 12.76 上海600604 二纺机 9.96 上海600605 轻工机械 14.59 上海000001 深发展 7.48 深圳000002 深万科 12.50 深圳有如下SQL SELECT语句SELECT * FROM stock WHERE 单价 BETWEEN 12.76 AND 15.20 与该语句等价的是A) SELECT*FROM stock WHERE 单价<=15.20.AND.单价>=12.76B) SELECT*FROM stock WHERE 单价<15.20.AND.单价>12.76C) SELECT*FROM stock WHERE 单价>=15.20.AND.单价<=12.76D) SELECT*FROM stock WHERE 单价>15.20.AND.单价<12.768、在当前盘当前目录下删除表stock的命令是A) DROP stock B) DELETE TABLE stockC) DROP TABLE stock D) DELETE stock9、当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:股票代码股票名称单价交易所600600 青岛啤酒 7.48 上海600601 方正科技 15.20 上海600602 广电电子 10.40 上海600603 兴业房产 12.76 上海600604 二纺机 9.96 上海600605 轻工机械 14.59 上海000001 深发展 7.48 深圳000002 深万科 12.50 深圳有如下SQL语句SELECT max(单价) INTO ARRAY a FROM stock执行该语句后A) a[1]的内容为15.20 B) a[1]的内容为6C) a[0]的内容为15.20 D) a[0]的内容为610、当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:股票代码股票名称单价交易所600600 青岛啤酒 7.48 上海600601 方正科技 15.20 上海600602 广电电子 10.40 上海600603 兴业房产 12.76 上海600604 二纺机 9.96 上海600605 轻工机械 14.59 上海000001 深发展 7.48 深圳000002 深万科 12.50 深圳有如下SQL语句SELECT 股票代码,avg(单价) as 均价 FROM stock; GROUP BY 交易所 INTO DBF temp执行该语句后temp表中第二条记录的“均价”字段的内容是A) 7.48 B) 9.99 C) 11.73 D) 15.2011、当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:股票代码股票名称单价交易所600600 青岛啤酒 7.48 上海600601 方正科技 15.20 上海600602 广电电子 10.40 上海600603 兴业房产 12.76 上海600604 二纺机 9.96 上海600605 轻工机械 14.59 上海000001 深发展 7.48 深圳000002 深万科 12.50 深圳将stock表的股票名称字段的宽度由8改为10,应使用SQL语句A) ALTER TABLE stock 股票名称 WITH c(10)B) ALTER TABLE stock 股票名称 c(10)C) ALTER TABLE stock ALTER 股票名称 c(10)D) ALTER stock ALTER 股票名称 c(10)12、当前盘当前目录下有数据库db_stock,其中有数据库表stock.dbf,该数据库表的内容是:股票代码股票名称单价交易所600600 青岛啤酒 7.48 上海600601 方正科技 15.20 上海600602 广电电子 10.40 上海600603 兴业房产 12.76 上海600604 二纺机 9.96 上海600605 轻工机械 14.59 上海000001 深发展 7.48 深圳000002 深万科 12.50 深圳求每个交易所的平均单价的SQL语句是A) SELECT 交易所,avg(单价) FROM stock GROUP BY 单价B) SELECT 交易所,avg(单价) FROM stock ORDER BY 单价C) SELECT 交易所,avg(单价) FROM stock ORDER BY 交易所D) SELECT 交易所,avg(单价) FROM stock GROUP BY 交易所13、在Visual FoxPro中,使用SQL命令将学生STUDENT中的学生年龄AGE字段的值增加1岁,应该使用的命令是A) REPLACE AGE WITH AGE+1B) UPDATE STUDENT AGE WITH AGE+1C) UPDATE SET AGE WITH AGE+1D) UPDATE STUDENT SET AGE=AGE+114-18用如下表部门表:部门号部门名称40 家用电器部10 电视录摄像机部20 电话手机部30 计算机部商品表:部门号商品号商品名称单价数量产地40 0101 A牌电风扇 200.00 10 广东40 0104 A牌微波炉 350.00 10 广东40 0105 B牌微波炉 600.00 10 广东20 1032 C牌传真机 1000.00 20 上海40 0107 D牌微波炉_A 420.00 10 北京20 0110 A牌电话机 200.00 50 广东20 0112 B牌手机 2000.00 10 广东40 0202 A牌电冰箱 3000.00 2 广东30 1041 B牌计算机 6000.00 10 广东30 0204 C牌计算机 10000.00 10 上海14、SQL语句 SELECT 部门号,MAX(单价*数量)FROM 商品表GROUP BY 部门号查询结果有几条记录?A) 1 B) 4 C) 3 D) 1015、SQL语句SELECT 产地,COUNT(*) 提供的商品种类数;FROM 商品表 WHERE 单价>200 GROUP BY 产地 HAVING COUNT(*)>=2 ORDER BY 2 DESC查询结果的第一条记录的产地和提供的商品种类数是A) 北京,1 B) 上海,2C) 广东,5 D) 广东,716、SQL 语句 SELECT 部门表.部门号,部门名称,SUM(单价*数量);FROM 部门表,商品表 WHERE 部门表.部门号=商品表.部门号 GROUP BY 部门表.部门号查询结果是:A) 各部门商品数量合计 B) 各部门商品金额合计C) 所有商品金额合计 D) 各部门商品金额平均值17、SQL 语句 SELECT 部门表.部门号,部门名称,商品号,商品名称,单价;FROM 部门表,商品表 WHERE 部门表.部门号=商品表.部门号;ORDER BY 部门表.部门号 DESC,单价查询结果的第一条记录的商品号是A) 0101 B) 0202 C) 0110 D) 011218、SQL 语句 SELECT 部门名称 FROM 部门表 WHERE 部门号 IN;(SELECT 部门号 FROM 商品表 WHERE 单价 BETWEEN 420 AND 1000)查询结果是A) 家用电器部、电话手机部B) 家用电器部、计算机部C) 电话手机部、电视录摄像机部D) 家用电器部、电视录摄像机部19、使用SQL语句从表STUDENT中查询所有姓王的同学的信息,正确的命令是:A) SELECT * FROM STUDENT WHERE LEFT(姓名,2)="王"B) SELECT * FROM STUDENT WHERE RIGHT(姓名,2)="王"C) SELECT * FROM STUDENT WHERE TRIM(姓名,2)="王"D) SELECT * FROM STUDENT WHERE STR(姓名,2)="王"第(20)——(25)题使用如下三个表:部门.DBF:部门号C(8),部门名C(12),负责人C(6),电话C(16) 职工.DBF:部门号C(8)、职工号C(10)、姓名C(8)、性别C(2)、出生日期 D工资.DBF:职工号C(10)、基本工资N(8.2)、津贴N(8.2)、奖金N(8.2)、扣除N(8.2)20、查询职工实发工资的正确命令是A) SELECT姓名,(基本工资+津贴+奖金-扣除) AS 实发工资FROM 工资B) SELECT姓名,(基本工资+津贴+奖金-扣除) AS 实发工资FROM 工资;WHERE 职工.职工号=工资.职工号C) SELECT姓名,(基本工资+津贴+奖金-扣除) AS 实发工资;FROM 工资,职工 WHERE 职工.职工号=工资.职工号D) SELECT姓名,(基本工资+津贴+奖金-扣除) AS 实发工资;FROM 工资JOIN 职工 WHERE 职工.职工号=工资.职工号21、查询1962年10月27日出生的职工信息的正确命令是A) SELECT * FROM 职工 WHERE 出生日期={^1962-10-27}B) SELECT * FROM 职工 WHERE 出生日期=1962-10-27C) SELECT * FROM 职工 WHERE 出生日期=”1962-10-27”D) SELECT * FROM 职工 WHERE 出生日期=(“1962-10-27”)22、查询每个部门年龄最长者的信息,要求得到的信息包括部门名和最长者的出生日期。