mysql查询练习题
mysql查询练习题
mysql查询练习题MySQL查询练习题数据库是现代应用开发中不可或缺的一部分,而MySQL作为最流行的开源关系型数据库管理系统之一,被广泛应用于各种项目中。
熟练掌握MySQL的查询语句对于开发者来说是非常重要的能力。
在本文中,我们将通过一些MySQL查询练习题来巩固和提升我们的查询技巧。
1. 查询所有学生的姓名和年龄。
```SELECT name, age FROM students;```2. 查询所有课程的名称和学分。
```SELECT name, credit FROM courses;```3. 查询所有学生的姓名、年龄以及他们所选修的课程的名称。
```SELECT , students.age, FROM studentsJOIN course_selection ON students.id = course_selection.student_idJOIN courses ON course_selection.course_id = courses.id;```4. 查询所有学生的姓名、年龄以及他们所选修的课程的名称,按照学生的年龄降序排列。
```SELECT , students.age, FROM studentsJOIN course_selection ON students.id = course_selection.student_id JOIN courses ON course_selection.course_id = courses.idORDER BY students.age DESC;```5. 查询选修了课程编号为101的学生的姓名和年龄。
```SELECT , students.ageFROM studentsJOIN course_selection ON students.id = course_selection.student_id WHERE course_selection.course_id = 101;```6. 查询选修了至少两门课程的学生的姓名和年龄。
mysql 查询100题
mysql查询100题1.如何创建一个新表?2.如何向表中插入数据?3.如何从表中选择所有记录?4.如何更新表中的记录?5.如何删除表中的记录?6.如何使用WHERE子句来过滤结果?7.如何使用ORDER BY子句对结果进行排序?8.如何使用GROUP BY子句对结果进行分组?9.如何使用HAVING子句过滤分组的结果?10.如何使用JOIN连接两个或多个表?11.如何使用INNER JOIN,LEFT JOIN,RIGHT JOIN和FULL JOIN?12.什么是子查询,如何使用它?13.如何使用UNION和UNION ALL操作符合并多个查询的结果?14.如何使用LIMIT子句限制查询的结果数量?15.如何创建和使用索引以提高查询性能?16.如何创建和使用视图?17.如何使用存储过程?18.如何使用触发器?19.如何管理数据库事务?20.如何使用用户定义的变量?21.如何使用CASE表达式?22.如何在查询中使用正则表达式?23.如何使用JSON数据类型和函数?24.如何使用空间数据类型和函数?25.如何优化查询性能?26.如何使用全文搜索?27.如何处理日期和时间数据类型?28.如何管理数据库的安全性?29.如何使用分区表?30.如何备份和恢复数据库?31.如何使用聚合函数(如COUNT、SUM、AVG、MIN、MAX)?32.如何使用GROUP_CONCAT函数?33.如何使用窗口函数(如ROW_NUMBER、RANK、DENSE_RANK、NTILE)?34.如何使用EXISTS和NOT EXISTS子句?35.如何使用IN和NOT IN子句?36.如何使用ALL和ANY操作符?37.如何使用COALESCE函数?38.如何使用IFNULL函数?39.如何使用CASE表达式的ELSE子句?40.如何使用正则表达式进行模糊匹配?41.如何使用全文搜索进行复杂查询?42.如何创建和使用自定义函数?43.如何创建和使用存储过程?44.如何创建和使用触发器?45.如何管理数据库事务?46.如何使用用户定义的变量?47.如何使用JSON数据类型和函数?48.如何使用空间数据类型和函数?49.如何优化查询性能?50.如何使用分区表?51.如何备份和恢复数据库?52.如何使用视图?53.如何使用索引以提高查询性能?54.如何使用子查询?55.如何使用UNION和UNION ALL操作符合并多个查询的结果?56.如何使用LIMIT子句限制查询的结果数量?57.如何使用HAVING子句过滤分组的结果?58.如何使用JOIN连接两个或多个表?59.如何使用INNER JOIN,LEFT JOIN,RIGHT JOIN和FULL JOIN?60.如何使用ORDER BY子句对结果进行排序?61.如何使用GROUP BY子句对结果进行分组?62.如何使用WHERE子句来过滤结果?63.如何使用UPDATE语句更新表中的记录?64.如何使用DELETE语句删除表中的记录?65.如何使用INSERT语句向表中插入数据?66.如何使用SELECT语句从表中选择所有记录?67.如何使用CREATE TABLE语句创建一个新表?68.如何使用ALTER TABLE语句修改表结构?69.如何使用DROP TABLE语句删除表?70.如何使用CREATE INDEX语句创建索引?71.如何使用DROP INDEX语句删除索引?72.如何使用CREATE PROCEDURE语句创建存储过程?73.如何使用DROP PROCEDURE语句删除存储过程?74.如何使用CREATE TRIGGER语句创建触发器?75.如何使用DROP TRIGGER语句删除触发器?76.如何使用CREATE VIEW语句创建视图?77.如何使用DROP VIEW语句删除视图?78.如何使用CREATE SCHEMA语句创建模式?79.如何使用DROP SCHEMA语句删除模式?80.如何使用CREATE DATABASE语句创建数据库?81.如何使用DROP DATABASE语句删除数据库?82.如何使用GRANT语句授予权限?83.如何使用REVOKE语句撤销权限?84.如何使用DECLARE语句声明变量?85.如何使用SET语句设置变量值?86.如何使用IF语句进行条件判断?87.查询所有用户的信息。
mysql基本练习题
mysql基本练习题MySQL是一种流行的开源关系型数据库管理系统,广泛应用于各种Web应用程序和数据分析任务中。
为了熟悉和掌握MySQL的使用,下面将介绍一些基本的MySQL练习题。
通过这些题目的实践,你将能够加深对MySQL数据库操作的理解和技能。
练习题一:创建数据库和表格1. 创建一个名为"学生管理"的数据库。
2. 在"学生管理"数据库中创建一个名为"学生信息"的表格,包含以下列:- 学号:学生的唯一标识符,为整数型。
- 姓名:学生的姓名,为字符串型。
- 性别:学生的性别,为字符串型。
- 年龄:学生的年龄,为整数型。
- 分数:学生的考试成绩,为浮点数型。
练习题二:插入数据1. 向"学生信息"表格中插入若干学生数据,包括学号、姓名、性别、年龄和分数。
练习题三:查询数据1. 查询"学生信息"表格中的所有学生数据。
2. 查询成绩大于80分的学生数据。
3. 查询性别为女性且年龄小于20岁的学生数据。
练习题四:更新数据1. 将学号为1001的学生的年龄更新为20岁。
2. 将姓名为"张三"的学生的分数更新为90分。
练习题五:删除数据1. 删除学号为1002的学生数据。
2. 删除所有分数小于60分的学生数据。
练习题六:排序和限制1. 按照分数降序排列所有学生数据。
2. 查询前5个成绩最高的学生数据。
练习题七:聚合查询1. 查询学生总数。
2. 查询平均分最高的学生数据。
3. 查询每个性别的学生数量。
练习题八:连接表查询1. 创建一个名为"科目信息"的表格,包含以下列:- 科目ID:科目的唯一标识符,为整数型。
- 科目名称:科目的名称,为字符串型。
- 学生学号:参加该科目的学生学号,外键关联到"学生信息"表格的学号列。
2. 向"科目信息"表格中插入若干科目数据,包括科目ID、科目名称和学生学号。
mysql数据简单查询题目
mysql数据简单查询题目摘要:1.MySQL查询基础概念2.查询数据库和数据表大小3.数据查询语句示例4.如何在PHP中查询MySQL数据库数据5.实战应用:创建数据库、表和添加数据6.总结正文:一、MySQL查询基础概念MySQL是一种广泛应用于各类项目的开源关系型数据库管理系统。
在MySQL中,数据查询主要通过SQL(结构化查询语言)实现。
SQL语句可以分为简单查询、复杂查询等类型。
简单查询是指查询单一表中的数据,例如:选择特定列、查询全部列、筛选符合条件的数据等。
二、查询数据库和数据表大小1.查询所有数据库的大小:```sqlSELECT CONCAT(ROUND(SUM(DATALENGTH / 1024 / 1024), 2), "MB") AS data FROM tables;```2.查询指定数据库的大小:```sqlSELECT CONCAT(ROUND(SUM(DATALENGTH / 1024 / 1024), 2), "MB") AS data FROM tables WHERE tableschema = "home";```三、数据查询语句示例1.查询指定列:```sqlSELECT sno, sname FROM student;```2.查询全部列:```sqlSELECT * FROM student;```3.查询经过计算的值:```sqlSELECT sname, 2018 - sage FROM student;```四、如何在PHP中查询MySQL数据库数据?1.安装并使用MySQL连接器(如:MySQLi或PDO)2.创建数据库和表3.使用连接器的查询方法(如:mysql_query或mysql_fetch_assoc)4.处理查询结果并展示给用户五、实战应用:创建数据库、表和添加数据1.使用Navicat或其他工具创建数据库:```sqlCREATE DATABASE database1;```2.在数据库中创建表:```sqlCREATE TABLE table2 (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT);```3.向表中添加数据:```sqlINSERT INTO table2 (name, age) VALUES ("张三", 25); ```4.使用PHP查询数据库数据:```php<?php$servername = "localhost";$username = "username";$password = "password";$dbname = "database1";// 创建连接$conn = new mysqli($servername, $username, $password, $dbname);// 检查连接if ($conn->connect_error) {die("连接失败: " .$conn->connect_error);}// 查询数据$sql = "SELECT * FROM table2";$result = $conn->query($sql);// 处理查询结果if ($result->num_rows > 0) {while($row = $result->fetch_assoc()) {echo "id: " .$row["id"]." - 姓名:".$row["name"]." - 年龄:".$row["age"]."<br>";}} else {echo "0 结果";}// 关闭连接$conn->close();>```六、总结本文介绍了MySQL数据查询的基础知识,包括查询数据库和数据表大小、简单数据查询语句以及在PHP中查询MySQL数据库数据的方法。
mysql多表查询的选择题
以下是一些关于MySQL多表查询的选择题,每个问题都提供了答案和解释:1. 假设有两个表,一个是`users`表,包含用户信息,另一个是`orders`表,包含订单信息。
如果我想获取所有用户的订单信息,应该使用哪种查询?a) INNER JOINb) LEFT JOINc) RIGHT JOINd) UNION答案:B。
LEFT JOIN用于获取左表(用户表)中所有记录以及右表中匹配的记录。
2. 如果我想获取所有用户的订单信息,但不想显示已取消的订单,应该使用哪种查询?a) INNER JOINb) LEFT JOINc) RIGHT JOINd) NOT EXISTS答案:B。
在这种情况下,我们仍然使用LEFT JOIN,但是需要在结果中过滤出取消的订单。
3. 如果我想根据用户的ID查找所有他们的订单信息,应该使用哪种查询?a) WHERE user_id = valueb) INNER JOIN ON user_id = order_idc) LEFT JOIN ON user_id = order_idd) SELECT * FROM orders WHERE user_id = value答案:C。
LEFT JOIN可以将一个表的所有记录与另一个表中的匹配记录连接起来,即使在另一个表中没有匹配的记录也会返回左表的所有记录。
在这种情况下,我们使用LEFT JOIN并将用户ID与订单ID连接起来。
4. 如果我想获取所有用户的姓名和他们的订单总数,应该使用哪种查询?a) COUNT(DISTINCT user_id)b) SUM(order_count)c) GROUP BY user_id, order_idd) COUNT(DISTINCT order_id)答案:C。
我们需要将用户ID和订单ID组合起来进行分组,并使用GROUP BY子句来获取每个用户的订单总数。
5. 如果我想获取每个用户的订单详情和他们最近的一条订单记录,应该使用哪种查询?a) ORDER BY order_date DESC LIMIT 1b) INNER JOIN ON user_id = order_id AND order_date = (SELECT MAX(order_date) FROM orders WHERE user_id = user_id)c) SELECT * FROM orders WHERE user_id = value ORDER BY order_date DESC LIMIT 1d) ORDER BY order_date ASC LIMIT 1答案:B。
mysql测试题及答案
mysql测试题及答案MySQL测试题及答案一、选择题1. MySQL的默认端口号是什么?A. 22B. 3306C. 80D. 443答案:B2. 下列哪个SQL语句用于查询表中的所有记录?A. SELECT * FROM table_name WHERE condition;B. SELECT * FROM table_name;C. SELECT table_name.*;D. SELECT ALL FROM table_name;答案:B3. 在MySQL中,以下哪个命令用于创建新的数据库?A. CREATE DATABASE database_name;B. NEW DATABASE database_name;C. START DATABASE database_name;D. INIT DATABASE database_name;答案:A二、填空题4. 在MySQL中,使用____语句可以删除一个表。
答案:DROP TABLE5. 要查看当前MySQL服务器上所有数据库的名称,可以使用____命令。
答案:SHOW DATABASES;6. 以下SQL语句的作用是____:SELECT column1, column2 FROMtable_name WHERE column1 = value1 ORDER BY column2 DESC LIMIT 1;答案:查询表table_name中column1等于value1的记录,并按column2降序排列,返回第一条记录。
三、简答题7. 请简述主键(Primary Key)和外键(Foreign Key)的区别。
答案:主键是表中用于唯一标识每条记录的字段,一个表只能有一个主键,并且主键的值不能为NULL。
外键是表中用于与另一个表的主键建立链接的字段,用于维护两个表之间的数据一致性,一个表可以有多个外键。
8. 解释什么是事务(Transaction)以及它的特性。
mysql试题及答案
mysql试题及答案一、选择题(每题2分,共20分)1. MySQL数据库默认的端口号是多少?A. 21B. 22C. 3306D. 80答案:C2. 在MySQL中,以下哪个命令用于创建数据库?A. CREATE DATABASEB. CREATE TABLEC. CREATE USERD. CREATE INDEX答案:A3. 如何在MySQL中选择所有的行和列?A. SELECT * FROM table_name;B. SELECT ALL FROM table_name;C. SELECT ALL table_name;D. SELECT table_name;答案:A4. 下列哪个选项不是MySQL的数据类型?A. INTB. DATEC. FLOATD. STRING答案:D5. 在MySQL中,如何删除一个数据库?A. DROP DATABASE database_name;B. DELETE DATABASE database_name;C. REMOVE DATABASE database_name;D. REMOVE database_name;答案:A6. 如何在MySQL中为一个表添加一个新列?A. ADD COLUMN column_name datatype;B. CREATE COLUMN column_name datatype;C. INSERT COLUMN column_name datatype;D. ADD NEW COLUMN column_name datatype;答案:A7. 在MySQL中,以下哪个命令用于删除表中的行?A. DELETE FROM table_name;B. REMOVE FROM table_name;C. DROP FROM table_name;D. REMOVE table_name;答案:A8. 如何在MySQL中更新表中的记录?A. UPDATE table_name SET column1=value1, column2=value2 WHERE condition;B. CHANGE table_name SET column1=value1, column2=value2 WHERE condition;C. MODIFY table_name SET column1=value1, column2=value2 WHERE condition;D. ALTER table_name SET column1=value1, column2=value2WHERE condition;答案:A9. MySQL中的事务是什么?A. 一系列原子性的SQL操作B. 单个SQL语句C. 一组数据D. 一个数据库答案:A10. 如何在MySQL中查看当前数据库的版本?A. SELECT VERSION();B. SHOW VERSION;C. VERSION();D. SHOW DATABASE VERSION;答案:A二、填空题(每题2分,共20分)1. MySQL的默认用户是________。
mysql练习题50道
mysql练习题50道1. 编写一个MySQL查询,用于查找表中的所有数据。
```SELECT * FROM 表名;```2. 编写一个MySQL查询,用于查找表中的所有数据,并按照某一列的升序排列。
```SELECT * FROM 表名 ORDER BY 列名 ASC;```3. 编写一个MySQL查询,用于查找表中的所有数据,并按照某一列的降序排列。
```SELECT * FROM 表名 ORDER BY 列名 DESC;```4. 编写一个MySQL查询,用于查找表中某一列的数据,并去除重复项。
```SELECT DISTINCT 列名 FROM 表名;```5. 编写一个MySQL查询,用于查找表中满足某个条件的数据。
```SELECT * FROM 表名 WHERE 条件;```6. 编写一个MySQL查询,用于查找表中满足多个条件的数据。
```SELECT * FROM 表名 WHERE 条件1 AND 条件2;```7. 编写一个MySQL查询,用于查找表中满足某个条件或另一个条件的数据。
```SELECT * FROM 表名 WHERE 条件1 OR 条件2;```8. 编写一个MySQL查询,用于计算表中某一列的总和。
```SELECT SUM(列名) FROM 表名;```9. 编写一个MySQL查询,用于计算表中某一列的平均值。
```SELECT AVG(列名) FROM 表名;```10. 编写一个MySQL查询,用于计算表中某一列的最大值。
```SELECT MAX(列名) FROM 表名;```11. 编写一个MySQL查询,用于计算表中某一列的最小值。
```SELECT MIN(列名) FROM 表名;```12. 编写一个MySQL查询,用于统计表中某一列的行数。
```SELECT COUNT(列名) FROM 表名;```13. 编写一个MySQL查询,用于在查询结果中限制返回的行数。
MySQL练习题及答案
MySQL练习题及答案答案见参考下列黄色标记一、下面所有题目中包括单选或多选1.若mysqlserver运转在linux系统上,那出访mysql服务器的客户端程序也必须运转在linux系统吗?a.就是2.mysql与其他关系型数据库(sqlserver/oracle)架构上最大的区别是?a.连接层3.mysql采用磁盘空间去存储下面哪些信息?a.server和client程序、其他lib库文件b.日志文件和状态文件c.数据库d.表格式(.frm)文件、数据文件、索引文件e.当内部临时表中少于掌控设置时,由内存表中形式转变为磁盘形式存储f.上面所有4.下面哪四种是mysql客户端程序的功能?a.创建、删除数据库b.创建、删除、修改表和索引b.sql层c.存储引擎层b.否c.采用shutdown命令停用服务器d.建立、管理用户e.表明replication状态信息f.使用startbackup命令来进行数据库二进制备份5.在mysql内部存有4种常用日志,哪种日志就是无法轻易cat或more文本查询日志内容?a.错误日志(error-log)b.二进制日志(bin-log)c.查阅日志(query-log)d.快查阅日志(slow-log)6.下面哪三种方式可以查看country表的存储引擎?a.showcreatetablecountry;b.showenginecountrystatus;;c.showtablestatuslike‘country’;d.selectenginefrominformation_schema.tabl eswheretable_name=’country’;e.selectenginefrominformation_schema.engineswheretable_name=’county’;7.在低mammalian、事务等场景下,mysql5.6数据库预设采用哪种存储惹来擎?a.myisam8.下面哪种场景无法使用index索引?a.select*fromcustomerwherecustomer_id=10;b.select*fromcus tomerwhereleft(last_name,4)=’smit’;c.select*fromcustomerwh erecustomer_namelike‘smit%’;d.select*fromcustomerwherecustomer_id=4orcustom er_id=7orcustomer_id=10;9.mysqlreplication复制中主-从是通过什么进行数据同步?a.redologb.binlogc.文件系统10.有关mysqldump备份特性中哪个就是不恰当的?a.就是逻辑备份,须要将表中结构和数据转换成sql语句b.mysql服务必须运转c.备份与恢复速度比物理备份快e.支持mysql所有存储引擎11.下面哪种方式不属于mysql常用索引类型?a.后缀索引b、函数索引c、唯一索引d聚集索引b.innodbc.memoryd.ndbcluster12.通过explain来分析sql语句,如下:explainselecta1.id,a2.rankfroma1,a2wherea1.id=a2.id;那从上面结果集中key列值信息分析最佳描述是”该sql语句实际利用到的索引”?a.是14.mysql主机和从机必须就是同一种类型的存储引擎表中?a.就是15.下面哪种工具可以很好用来监控mysql数据库?a.mysqlbackupb.monitorc.mysqlworkbenchd.sqlyog16.mysql中当被标记为删除标记且不再需要的undolog,用来回收b.否b.否undo页的线程就是指?a.purgethreadb.readthreadc.writethreadd.allofabove17.mysql5.6时间数据类型就是积极支持什么级别?a.分钟b.秒c.毫秒d.微秒18.mysql5.6复制为了缓解io吞吐量,仅记录所更改影响的行记录数据,binlog_row_image参数值设置为?a.minimalb.fullc.noblobd.statement19.mysql5.6复制支持多个sqlthread处理机制,是指对?a.整个mysql服务器b.不同db数据库c.不同tables表d.单个库20.以下哪些场景不适应环境于mysqlreplication激活?a.自动失灵接管b.支持读/写分离负载均衡c.最佳数据一致性d.异步复制。
mysql笔试题目及答案
mysql笔试题目及答案一、选择题(每题2分,共20分)1. MySQL数据库默认的存储引擎是()。
A. InnoDBB. MyISAMC. MemoryD. Archive答案:B2. 下列哪个选项不是MySQL的索引类型?()A. B-TreeB. HashC. R-TreeD. Full-Text答案:B3. MySQL中,以下哪个函数用于获取当前时间?()A. NOW()B. CURDATE()C. CURTIME()D. DATE()答案:A4. 在MySQL中,以下哪个选项是正确的创建数据库的语法?()A. CREATE DATABASE database_name;B. CREATE DATABASE database_name COLLATE utf8_general_ci;C. CREATE TABLE database_name;D. CREATE DATABASE database_name IF NOT EXISTS;答案:D5. 在MySQL中,以下哪个选项是正确的创建表的语法?()A. CREATE TABLE table_name (column1 INT, column2 VARCHAR(10));B. CREATE TABLE table_name (column1 INT, column2 VARCHAR(10)) ENGINE=InnoDB;C. CREATE TABLE table_name (column1 INT, column2 VARCHAR(10)) CHARSET=utf8;D. CREATE TABLE table_name (column1 INT, column2 VARCHAR(10)) ENGINE=InnoDB CHARSET=utf8;答案:D6. MySQL中,以下哪个选项是正确的删除表的语法?()A. REMOVE TABLE table_name;B. DROP TABLE table_name;C. DELETE TABLE table_name;D. REMOVE table_name;答案:B7. 在MySQL中,以下哪个选项是正确的插入数据的语法?()A. INSERT INTO table_name (column1, column2) VALUES (value1, value2);B. INSERT INTO table_name VALUES (value1, value2);C. INSERT INTO table_name (column1, column2) SET value1,value2;D. INSERT INTO table_name SET (column1, value1), (column2, value2);答案:A8. 在MySQL中,以下哪个选项是正确的更新数据的语法?()A. UPDATE table_name SET column1 = value1, column2 = value2WHERE condition;B. UPDATE table_name SET column1 = value1 WHERE condition;C. UPDATE table_name SET column1 = value1, column2 = value2;D. UPDATE table_name column1 = value1, column2 = value2 WHERE condition;答案:A9. 在MySQL中,以下哪个选项是正确的查询数据的语法?()A. SELECT * FROM table_name WHERE condition;B. SELECT * FROM table_name;C. SELECT table_name WHERE condition;D. SELECT * FROM table_name WHERE condition LIMIT 10;答案:A10. 在MySQL中,以下哪个选项是正确的删除数据的语法?()A. DELETE FROM table_name WHERE condition;B. REMOVE FROM table_name WHERE condition;C. DELETE table_name WHERE condition;D. REMOVE table_name WHERE condition;答案:A二、填空题(每题3分,共15分)1. MySQL中,使用________函数可以获取当前日期。
MySQL练习题及答案
MySQL练习题及答案⼀题⽬1、查询所有的课程的名称以及对应的任课⽼师姓名2、查询学⽣表中男⼥⽣各有多少⼈3、查询物理成绩等于100的学⽣的姓名4、查询平均成绩⼤于⼋⼗分的同学的姓名和平均成绩5、查询所有学⽣的学号,姓名,选课数,总成绩6、查询姓李⽼师的个数7、查询没有报李平⽼师课的学⽣姓名8、查询物理课程⽐⽣物课程⾼的学⽣的学号9、查询没有同时选修物理课程和体育课程的学⽣姓名10、查询挂科超过两门(包括两门)的学⽣姓名和班级、查询选修了所有课程的学⽣姓名12、查询李平⽼师教的课程的所有成绩记录13、查询全部学⽣都选修了的课程号和课程名14、查询每门课程被选修的次数15、查询之选修了⼀门课程的学⽣姓名和学号16、查询所有学⽣考出的成绩并按从⾼到低排序(成绩去重)17、查询平均成绩⼤于85的学⽣姓名和平均成绩18、查询⽣物成绩不及格的学⽣姓名和对应⽣物分数19、查询在所有选修了李平⽼师课程的学⽣中,这些课程(李平⽼师的课程,不是所有课程)平均成绩最⾼的学⽣姓名20、查询每门课程成绩最好的前两名学⽣姓名21、查询不同课程但成绩相同的学号,课程号,成绩22、查询没学过“叶平”⽼师课程的学⽣姓名以及选修的课程名称;23、查询所有选修了学号为1的同学选修过的⼀门或者多门课程的同学学号和姓名;24、任课最多的⽼师中学⽣单科成绩最⾼的学⽣姓名⼆答案#1、查询所有的课程的名称以及对应的任课⽼师姓名SELECTame,teacher.tnameFROMcourseINNER JOIN teacher ON course.teacher_id = teacher.tid;#2、查询学⽣表中男⼥⽣各有多少⼈SELECTgender 性别,count(1) ⼈数FROMstudentGROUP BYgender;#3、查询物理成绩等于100的学⽣的姓名SELECTsid IN (SELECTstudent_idFROMscoreINNER JOIN course ON score.course_id = course.cidWHEREame = '物理'AND score.num = 100);#4、查询平均成绩⼤于⼋⼗分的同学的姓名和平均成绩SELECTstudent.sname,t1.avg_numFROMstudentINNER JOIN (SELECTstudent_id,avg(num) AS avg_numFROMscoreGROUP BYstudent_idHAVINGavg(num) > 80) AS t1 ON student.sid = t1.student_id;#5、查询所有学⽣的学号,姓名,选课数,总成绩(注意:对于那些没有选修任何课程的学⽣也算在内) SELECTstudent.sid,student.sname,t1.course_num,t1.total_numFROMstudentLEFT JOIN (SELECTstudent_id,COUNT(course_id) course_num,sum(num) total_numFROMscoreGROUP BYstudent_id) AS t1 ON student.sid = t1.student_id;#6、查询姓李⽼师的个数SELECTcount(tid)FROMteacherWHEREtname LIKE '李%';#7、查询没有报李平⽼师课的学⽣姓名(找出报名李平⽼师课程的学⽣,然后取反就可以)SELECTstudent.snameFROMstudentWHEREsid NOT IN (SELECT DISTINCTstudent_idFROMscoreWHEREcourse_id IN (INNER JOIN teacher ON course.teacher_id = teacher.tidWHEREteacher.tname = '李平⽼师'));#8、查询物理课程⽐⽣物课程⾼的学⽣的学号(分别得到物理成绩表与⽣物成绩表,然后连表即可)SELECTt1.student_idFROM(SELECTstudent_id,numFROMscoreWHEREcourse_id = (SELECTcidFROMcourseWHEREcname = '物理')) AS t1INNER JOIN (SELECTstudent_id,numFROMscoreWHEREcourse_id = (SELECTcidFROMcourseWHEREcname = '⽣物')) AS t2 ON t1.student_id = t2.student_idWHEREt1.num > t2.num;#9、查询没有同时选修物理课程和体育课程的学⽣姓名(没有同时选修指的是选修了⼀门的,思路是得到物理+体育课程的学⽣信息表,然后基于学⽣分组,统计count(课程)=1) SELECTstudent.snameFROMstudentWHEREsid IN (SELECTstudent_idFROMscoreWHEREcourse_id IN (SELECTcidFROMcourseWHEREcname = '物理'OR cname = '体育')GROUP BYstudent_idHAVINGCOUNT(course_id) = 1);FROMstudentINNER JOIN (SELECTstudent_idFROMscoreWHEREnum < 60GROUP BYstudent_idHAVINGcount(course_id) >= 2) AS t1INNER JOIN class ON student.sid = t1.student_idAND student.class_id = class.cid;#11、查询选修了所有课程的学⽣姓名(先从course表统计课程的总数,然后基于score表按照student_id分组,统计课程数据等于课程总数即可) SELECTstudent.snameFROMstudentWHEREsid IN (SELECTstudent_idFROMscoreGROUP BYstudent_idHAVINGCOUNT(course_id) = (SELECT count(cid) FROM course));#12、查询李平⽼师教的课程的所有成绩记录SELECT*FROMscoreWHEREcourse_id IN (SELECTcidFROMcourseINNER JOIN teacher ON course.teacher_id = teacher.tidWHEREteacher.tname = '李平⽼师');#13、查询全部学⽣都选修了的课程号和课程名(取所有学⽣数,然后基于score表的课程分组,找出count(student_id)等于学⽣数即可) SELECTcid,cnameFROMcourseWHEREcid IN (SELECTcourse_idFROMscoreGROUP BYcourse_idHAVINGCOUNT(student_id) = (SELECTCOUNT(sid)FROMstudent)#14、查询每门课程被选修的次数SELECTcourse_id,COUNT(student_id)FROMscoreGROUP BYcourse_id;#15、查询之选修了⼀门课程的学⽣姓名和学号SELECTsid,snameFROMstudentWHEREsid IN (SELECTstudent_idFROMscoreGROUP BYstudent_idHAVINGCOUNT(course_id) = 1);#16、查询所有学⽣考出的成绩并按从⾼到低排序(成绩去重)SELECT DISTINCTnumFROMscoreORDER BYnum DESC;#17、查询平均成绩⼤于85的学⽣姓名和平均成绩SELECTsname,t1.avg_numFROMstudentINNER JOIN (SELECTstudent_id,avg(num) avg_numFROMscoreGROUP BYstudent_idHAVINGAVG(num) > 85) t1 ON student.sid = t1.student_id;#18、查询⽣物成绩不及格的学⽣姓名和对应⽣物分数SELECTsname 姓名,num ⽣物成绩FROMscoreLEFT JOIN course ON score.course_id = course.cidLEFT JOIN student ON score.student_id = student.sid WHEREame = '⽣物'AND score.num < 60;WHEREsid = (SELECTstudent_idFROMscoreWHEREcourse_id IN (SELECTcourse.cidFROMcourseINNER JOIN teacher ON course.teacher_id = teacher.tidWHEREteacher.tname = '李平⽼师')GROUP BYstudent_idORDER BYAVG(num) DESCLIMIT 1);#20、查询每门课程成绩最好的前两名学⽣姓名#查看每门课程按照分数排序的信息,为下列查找正确与否提供依据SELECT*FROMscoreORDER BYcourse_id,num DESC;#表1:求出每门课程的课程course_id,与最⾼分数first_numSELECTcourse_id,max(num) first_numFROMscoreGROUP BYcourse_id;#表2:去掉最⾼分,再按照课程分组,取得的最⾼分,就是第⼆⾼的分数second_numSELECTscore.course_id,max(num) second_numFROMscoreINNER JOIN (SELECTcourse_id,max(num) first_numFROMscoreGROUP BYcourse_id) AS t ON score.course_id = t.course_idWHEREscore.num < t.first_numGROUP BYcourse_id;#将表1和表2联合到⼀起,得到⼀张表t3,包含课程course_id与该们课程的first_num与second_num SELECTt1.course_id,t1.first_num,t2.second_numFROMscoreGROUP BYcourse_id) AS t1INNER JOIN (SELECTscore.course_id,max(num) second_numFROMscoreINNER JOIN (SELECTcourse_id,max(num) first_numFROMscoreGROUP BYcourse_id) AS t ON score.course_id = t.course_idWHEREscore.num < t.first_numGROUP BYcourse_id) AS t2 ON t1.course_id = t2.course_id;#查询前两名的学⽣(有可能出现并列第⼀或者并列第⼆的情况)SELECTscore.student_id,t3.course_id,t3.first_num,t3.second_numFROMscoreINNER JOIN (SELECTt1.course_id,t1.first_num,t2.second_numFROM(SELECTcourse_id,max(num) first_numFROMscoreGROUP BYcourse_id) AS t1INNER JOIN (SELECTscore.course_id,max(num) second_numFROMscoreINNER JOIN (SELECTcourse_id,max(num) first_numFROMscoreGROUP BYcourse_id) AS t ON score.course_id = t.course_idWHEREscore.num < t.first_numGROUP BYcourse_id) AS t2 ON t1.course_id = t2.course_id) AS t3 ON score.course_id = t3.course_idWHEREscore.num >= t3.second_numAND score.num <= t3.first_num;#排序后可以看的明显点FROMscoreINNER JOIN (SELECTt1.course_id,t1.first_num,t2.second_numFROM(SELECTcourse_id,max(num) first_numFROMscoreGROUP BYcourse_id) AS t1INNER JOIN (SELECTscore.course_id,max(num) second_numFROMscoreINNER JOIN (SELECTcourse_id,max(num) first_numFROMscoreGROUP BYcourse_id) AS t ON score.course_id = t.course_idWHEREscore.num < t.first_numGROUP BYcourse_id) AS t2 ON t1.course_id = t2.course_id) AS t3 ON score.course_id = t3.course_idWHEREscore.num >= t3.second_numAND score.num <= t3.first_numORDER BYcourse_id;#可以⽤以下命令验证上述查询的正确性SELECT*FROMscoreORDER BYcourse_id,num DESC;-- 21、查询不同课程但成绩相同的学号,课程号,成绩-- 22、查询没学过“叶平”⽼师课程的学⽣姓名以及选修的课程名称;-- 23、查询所有选修了学号为1的同学选修过的⼀门或者多门课程的同学学号和姓名;-- 24、任课最多的⽼师中学⽣单科成绩最⾼的学⽣姓名。
大学mysql考试题及答案
大学mysql考试题及答案一、选择题(每题2分,共20分)1. MySQL数据库默认使用的端口号是:A. 22B. 3306C. 80D. 8080答案:B2. 下列哪个选项是MySQL数据库的存储引擎?A. InnoDBB. OracleC. SQL ServerD. PostgreSQL答案:A3. 在MySQL中,用于创建新表的SQL语句是:A. CREATE DATABASEB. CREATE TABLEC. ALTER TABLED. DROP TABLE答案:B4. 以下哪个SQL语句用于删除数据库中的表?A. DROP DATABASEB. DROP TABLEC. TRUNCATE TABLED. DELETE FROM答案:B5. 以下哪个选项不是MySQL的数据类型?A. VARCHARB. TEXTC. DATETIMED. XML答案:D6. 在MySQL中,使用哪个关键字来创建索引?A. INDEXB. KEYC. UNIQUED. BOTH A and B答案:D7. 如果想要在查询结果中排除重复的行,应该使用哪个SQL语句?A. SELECT DISTINCTB. SELECT ALLC. SELECT UNIQUED. SELECT NODUPLICATE答案:A8. 在MySQL中,哪个函数用于获取当前日期和时间?A. NOW()B. CURRENT_DATEC. CURRENT_TIMED. BOTH B and C答案:A9. 以下哪个选项不是MySQL的权限类型?A. SELECTB. INSERTC. UPDATED. EXECUTE答案:D10. 在MySQL中,哪个命令用于查看当前数据库的版本?A. VERSION()B. SELECT VERSION()C. SHOW VERSIOND. ALL OF THE ABOVE答案:D二、填空题(每题2分,共20分)1. MySQL的______存储引擎支持事务处理。
mysql练习题和答案
1.数据库系统的核心是________。
A.数据模型B.数据库管理系统C.数据库D.数据库管理员2.E-R图提供了表示信息世界中实体、属性和________的方法。
A.数据B.联系C.表D.模式3.E-R图是数据库设计的工具之一,它一般适用于建立数据库的________。
A.概念模型B.结构模型C.物理模型D.逻辑模型4.将E.R图转换到关系模式时,实体与联系都可以表示成________。
A.属性B.关系C.键D.域5.在关系数据库设计中,设计关系模式属于数据库设计的________。
*A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段6.从E—R模型向关系模型转换,一个M:N的联系转换成一个关系模式时,该关系模式的键是________。
A.M端实体的键B.Ⅳ端实体的键C.M端实体键与N端实体键组合D.重新选取其他属性二、填空题1.数据库系统的三级模式结构是指数据库系统是由________、________和________三级构成。
2.数据库系统的运行与应用结构有客户/服务器结构(C/S结构)和________两种。
3.在数据库的三级模式体系结构中,外模式与模式之间的映射实现了数据库的________独立性。
4.用二维表结构表示实体以及实体间联系的数据模型称为________数据模型。
|5.数据库设计包括概念设计、________和物理设计。
6.在E-R图中,矩形表示________。
三、简答题1.请简述什么是数据库管理系统,以及它的主要功能有哪些2.请简述什么是数据库系统3.请简述什么是模式、外模式和内模式4.请简述C/S结构与B/S结构的区别。
5.请简述关系规范化过程。
第一章一、选择题—1.A 2.B 3.A 4.B 5.C 6.C1.模式外模式内模式2.浏览器/服务器结构(B/S结构) 3.逻辑4。
关系5.逻辑设计6.实体三、简答题1.略。
可参考第1章1.1节内容。
2.数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台和与数据库有关的人员(如DBA、程序设计者等)一起,就构成了一个完整的数据库系统。
mysql数据库考试试题及答案
mysql数据库考试试题及答案一、选择题1. MySQL中的InnoDB存储引擎支持的事务隔离级别有几种?A. 一种B. 两种C. 三种D. 四种答案:D2. 下列哪个命令可以查看MySQL服务器的版本信息?A. SHOW DATABASES;B. SHOW TABLES;C. SHOW VARIABLES;D. SHOW PROCESSLIST;答案:C3. 在MySQL中,如果需要对一个表进行备份,应该使用哪个命令?A. mysqldumpB. mysqlimportC. mysqladmin createD. mysqladmin backup答案:A4. 在SQL语句中,用于删除表中数据但不删除表结构的关键字是什么?A. TRUNCATEB. DROPC. DELETED. REMOVE答案:C5. 在MySQL中,创建新数据库的命令是什么?A. CREATE DATABASEB. NEW DATABASEC. BUILD DATABASED. INIT DATABASE答案:A二、填空题1. 在MySQL中,___________命令可以用来创建新的表。
答案:CREATE TABLE2. 如果需要查询数据库中所有的表,可以使用___________命令。
答案:SHOW TABLES3. 在SQL中,___________关键字用于指定唯一键值,保证表中每一行数据的唯一性。
答案:PRIMARY KEY4. 当需要对数据库进行优化时,可以使用___________命令。
答案:OPTIMIZE TABLE5. 在MySQL中,___________函数用于获取当前日期和时间。
答案:NOW()三、判断题1. 在MySQL中,使用TEXT类型的字段可以存储二进制数据。
(对/错) 答案:错2. 在MySQL中,外键约束可以用来级联更新和删除数据。
(对/错)答案:对3. 使用LIKE关键字进行模糊查询时,%和_分别代表任意多个字符和任意单个字符。
mysql考试题
mysql考试题一、选择题1. 下列关于MySQL的说法中,错误的是:A. MySQL是一个开源的关系型数据库管理系统B. MySQL支持多种操作系统,包括Windows、Linux和Mac OSC. MySQL使用SQL语言来进行数据库操作D. MySQL可以存储非结构化数据2. 在MySQL中,以下哪个是正确的数据类型:A. STRINGB. INTEGERC. BOOLEAND. MONEY3. 下列关于MySQL存储引擎的说法中,正确的是:A. InnoDB支持事务B. MyISAM支持行级锁C. MyISAM支持外键D. InnoDB不支持聚簇索引4. MySQL的连接方式有几种:A. 2B. 3C. 4D. 55. 下列哪个不是MySQL的客户端工具:A. MySQL WorkbenchB. NavicatC. HeidiSQLD. Apache二、填空题1. 在MySQL中,用于创建数据库的SQL语句是__________。
2. 在MySQL中,用于查询数据的SQL语句是__________。
3. MySQL默认端口号是__________。
4. 在MySQL中,用于删除表的SQL语句是__________。
三、简答题1. 请简要描述MySQL的特点以及其应用领域。
2. 什么是MySQL中的主键和外键?它们有什么作用?3. 请简述MySQL中存储引擎的概念,并说明各种存储引擎的特点。
四、综合题请设计一个MySQL数据库,包括至少3个表,每个表至少包含3个字段,各表之间要有关联。
以上为MySQL考试题,希望您能认真回答。
祝您顺利通过考试!。
mysql数据库查询练习45题
mysql数据库查询练习45题#建学⽣信息表studentcreate table student(sno varchar(20) not null primary key,sname varchar(20) not null,ssex varchar(20) not null,sbirthday datetime,class varchar(20));#建⽴教师表create table teacher(tno varchar(20) not null primary key,tname varchar(20) not null,tsex varchar(20) not null,tbirthday datetime,prof varchar(20),depart varchar(20) not null);#建⽴课程表coursecreate table course(cno varchar(20) not null primary key,cname varchar(20) not null,tno varchar(20) not null,foreign key(tno) references teacher(tno));#建⽴成绩表create table score(sno varchar(20) not null primary key,foreign key(sno) references student(sno),cno varchar(20) not null,foreign key(cno) references course(cno),degree decimal);#添加学⽣信息insert into student values('108','曾华','男','1977-09-01','95033');insert into student values('105','匡明','男','1975-10-02','95031');insert into student values('107','王丽','⼥','1976-01-23','95033');insert into student values('101','李军','男','1976-02-#添加教师表insert into teacher values('804','李诚','男','1958-12-02','副教授','计算机系');insert into teacher values('856','张旭','男','1969-03-12','讲师','电⼦⼯程系');insert into teacher values('825','王萍','⼥','1972-05-05','助教','计算机系');insert into teacher values('831','刘冰','⼥','1977-08-14','助教','电⼦⼯程系');#添加课程表insert into course values('3-105','计算机导论','825');insert into course values('3-245','操作系统','804');insert into course values('6-166','数字电路','856');insert into course values('9-888','⾼等数学','831');#添加成绩表insert into score values('103','3-245','86');insert into score values('105','3-245','75');insert into score values('109','3-245','68');insert into score values('103','3-105','92');insert into score values('105','3-105','88');insert into score values('109','3-105','76');insert into score values('103','3-105','64');insert into score values('105','3-105','91');insert into score values('109','3-105','78');insert into score values('103','6-166','85');insert into score values('105','6-166','79');insert into score values('109','6-166','81');题⽬:1、查询Student表中的所有记录的Sname、Ssex和Class列。
大学MySQL查找考试题及答案
大学MySQL查找考试题及答案一、选择题(每题2分,共20分)1. MySQL中用于创建新表的SQL语句是:A. CREATE DATABASEB. CREATE TABLEC. CREATE INDEXD. CREATE VIEW答案:B2. 在MySQL中,用于添加新数据行的SQL语句是:A. INSERT INTOB. UPDATEC. DELETED. SELECT答案:A3. 下列哪个选项是MySQL中用于删除表的SQL语句?A. DROP DATABASEB. DROP TABLEC. DROP INDEXD. DROP VIEW答案:B4. 用于更新表中数据的SQL语句是:A. INSERT INTOB. UPDATEC. DELETED. SELECT答案:B5. 在MySQL中,哪个关键字用于从表中检索数据?A. SELECTB. FROMC. WHERED. ORDER BY答案:A6. 如果要查找表中所有记录,应该使用哪个SQL语句?A. SELECT *B. SELECT ALLC. SELECT DISTINCTD. SELECT COUNT答案:A7. 在MySQL中,用于删除数据行的SQL语句是:A. INSERT INTOB. UPDATEC. DELETED. SELECT答案:C8. 以下哪个选项是用于在查询中过滤数据的SQL语句?A. SELECTB. WHEREC. ORDER BYD. GROUP BY答案:B9. 在MySQL中,哪个关键字用于对结果集进行排序?A. ORDER BYB. GROUP BYC. HAVINGD. LIMIT答案:A10. 使用哪个SQL语句可以在表中创建新列?A. ALTER TABLEB. CREATE TABLEC. DROP TABLED. RENAME TABLE答案:A二、填空题(每题3分,共30分)1. 在MySQL中,使用________语句可以创建一个新数据库。
mysql考试题
mysql考试题一、选择题1. 在MySQL中,用于创建数据库的命令是()。
A. CREATE TABLEB. CREATE DATABASEC. ALTER DATABASED. DROP DATABASE答案:B2. 下列哪个选项是MySQL中的字符类型()。
A. INTB. DATEC. VARCHARD. DECIMAL答案:C3. 在MySQL中,如果我们想要对一个表进行修改,应该使用哪个命令?()A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. TRUNCATE TABLE答案:B4. 在SELECT查询中,如果我们想要对结果进行排序,应该使用哪个关键字?()A. ORDER BYB. SORT BYC. ARRANGE BYD. LIST BY答案:A5. 在MySQL中,INNER JOIN和LEFT JOIN的区别是什么?()。
A. INNER JOIN返回两个表中有匹配的行,LEFT JOIN返回左表的所有行,即使右表中没有匹配。
B. INNER JOIN返回左表的所有行,LEFT JOIN返回两个表中有匹配的行。
C. INNER JOIN和LEFT JOIN没有区别。
D. 以上说法都不对。
答案:A二、填空题1. 在MySQL中,使用________关键字可以指定一个字段作为查询结果的分组依据。
答案:GROUP BY2. 当我们需要对查询结果中的每个分组应用聚合函数时,必须使用________关键字。
答案:HAVING3. 在MySQL中,________函数可以用来计算某个字段的总和。
答案:SUM4. 如果想要按照字符串的字典顺序进行排序,应该在ORDER BY后面使用________关键字。
答案:ASC5. 在MySQL中,使用________命令可以删除一个已经存在的数据库。
答案:DROP DATABASE三、简答题1. 请简述MySQL中的事务是什么以及它们的基本特性。
mysql 内连接查询 测试题
MySQL内连接查询测试题1.题目:假设有两个表,一个是学生表(students),包含学生ID(student_id)、姓名(name)和年龄(age);另一个是成绩表(scores),包含学生ID(student_id)和分数(score)。
现在要查询每个学生的姓名和年龄,以及他们对应的最高分数,应该使用什么类型的连接查询?答案:应该使用内连接查询(INNER JOIN)。
具体来说,应该使用学生表作为主表,成绩表作为连接表,通过学生ID进行连接。
在查询中,使用MAX函数获取每个学生的最高分数。
2.题目:假设有一个订单表(orders),包含订单ID(order_id)、客户ID(customer_id)、订单日期(order_date)和订单金额(amount)。
现在要查询每个客户的最近一次订单日期和金额,应该使用什么类型的连接查询?答案:应该使用自连接查询(self-join)。
具体来说,将订单表自连接两次,一次使用订单ID作为连接条件,另一次使用客户ID作为连接条件。
在查询中,使用MAX函数获取每个客户的最近订单日期,并使用对应的订单金额。
3.题目:假设有两个表,一个是员工表(employees),包含员工ID(employee_id)、姓名(name)和部门ID(department_id);另一个是部门表(departments),包含部门ID(department_id)和部门名称(name)。
现在要查询每个部门的员工姓名和数量,应该使用什么类型的连接查询?答案:应该使用左连接查询(LEFT JOIN)。
具体来说,将员工表作为主表,部门表作为连接表,通过部门ID进行连接。
在查询中,使用COUNT函数计算每个部门的员工数量,并使用GROUP BY子句按照部门进行分组。
计算机二级mysql考试题及答案
计算机二级mysql考试题及答案一、单项选择题(每题2分,共20分)1. 在MySQL中,用于创建数据库的命令是:A. CREATE TABLEB. CREATE DATABASEC. DROP DATABASED. ALTER DATABASE答案:B2. 以下哪个选项不是MySQL的数据类型?A. INTB. DATEC. TIMED. FLOAT答案:D3. 在MySQL中,使用哪个命令可以查看当前数据库?A. SHOW DATABASESB. SHOW TABLESC. SELECT DATABASED. USE DATABASE答案:C4. 如果想要在查询结果中包含重复的行,应该使用哪个关键字?A. DISTINCTB. GROUP BYC. ORDER BYD. UNION答案:D5. 在MySQL中,使用哪个命令可以删除表?A. DROP TABLEB. REMOVE TABLEC. DELETE TABLED. REMOVE答案:A6. 以下哪个选项是MySQL的索引类型?A. B-TreeB. HashC. R-TreeD. All of the above答案:D7. 在MySQL中,使用哪个命令可以添加新的列到现有表中?A. ADD COLUMNB. INSERT COLUMNC. CREATE COLUMND. ALTER TABLE答案:D8. 以下哪个选项是MySQL的存储引擎?A. InnoDBB. MyISAMC. MemoryD. All of the above答案:D9. 在MySQL中,使用哪个命令可以查看表的结构?A. DESCRIBEB. SHOW TABLEC. SELECT TABLED. EXPLAIN答案:A10. 在MySQL中,使用哪个命令可以备份数据库?A. BACKUPB. DUMPC. COPYD. EXPORT答案:B二、多项选择题(每题3分,共15分)1. 在MySQL中,以下哪些命令可以用来插入数据?A. INSERT INTOB. UPDATEC. CREATE TABLED. SELECT答案:A2. 以下哪些选项是MySQL的约束类型?A. PRIMARY KEYB. FOREIGN KEYC. UNIQUED. CHECK答案:ABC3. 在MySQL中,以下哪些命令可以用来删除数据?A. DELETEB. DROP TABLEC. REMOVED. TRUNCATE TABLE答案:AD4. 在MySQL中,以下哪些选项是事务的特性?A. AtomicityB. ConsistencyC. IsolationD. Durability答案:ABCD5. 在MySQL中,以下哪些选项是索引的作用?A. 提高查询速度B. 唯一性约束C. 排序D. 限制数据答案:AC三、简答题(每题5分,共10分)1. 请简述MySQL中主键和外键的区别。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(机试)
建库建表
a.建立一个公司数据库(gongsi)
CREATE DATABASE gongsi
b.建立一张部门表(部门编号b_id,部门名称b_name) ,
其中b_id为主键,自增长,b_name不允许为空CREATE TABLE bumen (
b_id INT PRIMARY KEY AUTO_INCREMENT,
b_name VARCHAR(10) NOT NULL
)ENGINE=INNODB
c.建立一张员工表(员工编号y_id,姓名y_name,性别y_sex,年龄y_age,住址y_address,部门编号b_id),
其中y_id为主键自增长。
住址默认为’不详’
b_id依赖于部门表的b_id
CREATE TABLE yg(
y_id INT PRIMARY KEY AUTO_INCREMENT,
y_name VARCHAR(10),
y_sex ENUM('男','女'),
y_age INT,
y_address VARCHAR(18) DEFAULT '不详',
b_id INT,
FOREIGN KEY (b_id) REFERENCES bumen(b_id)
)ENGINE=INNODB
1、查询年龄在25至30岁之间的男员工的姓名和住址。
SELECT y_name,y_address FROM bumen,yg WHERE bumen.b_id=yg.b_id AND y_sex=’男’ AND
y_age BETWEEN 25 AND 30
2、查询财务部所有40岁以下男员工的所有信息
SELECT * FROM bumen,yg WHERE bumen.b_id=yg.b_id AND b_name='财务部' AND y_age<=40 AND y_sex=’男’
3、查询人事部年龄最大的女员工姓名
Select * from yg where y_age=(
Select max(y_age)from yg,bumen where
bumen.b_id=yg.b_id
And y_sex=’女’ AND b_name=’人事部’
)
And y_sex=’女’AND b_id=(Select b_id from bumen where b_name=’人事部’)
4、2号新到一名员工,已知姓名,性别,年龄,将此员工加入到员工表
INSERT INTO yg (y_name,y_sex,y_age)VALUES('小灰灰','男',13) 5、在员工表中,将人事部年龄大于30岁的女同事,调到后勤部UPDATE yg SET b_id=(SELECT b_id FROM bumen WHERE
b_name='后勤部')
WHERE y_id IN(
SELECT * FROM
(SELECT y_id FROM yg WHERE b_id=(SELECT b_id FROM bumen WHERE b_name='人事部')
AND y_age>30) xx
)AND y_sex='女'
6:查询每个部门年龄最大的员工,显示部门名字和年龄。
SELECT b_name,y_age FROM bumen,yg WHERE
bumen.b_id=yg.b_id
GROUP BY b_name
HAVING MAX(y_age)
7:查询每个部门各有多少人,显示部门名字和人数,按人数倒序,如果人数相同,按部门编号正序。
SELECT b_name,COUNT(*) FROM bumen,yg WHERE bumen.b_id=yg.b_id
GROUP BY bumen.b_id
ORDER BY COUNT(*)DESC,bumen.b_id ASC
8:将张三的的名字改为李四,并调到财务部。
UPDATE yg SET y_name='李四',b_id=(
SELECT b_id FROM bumen WHERE b_name='财务部') WHERE y_name='张三'
9:将后勤部年龄大于60岁的员工删除。
DELETE FROM yg WHERE y_age>60 AND b_id IN( SELECT b_id FROM bumen WHERE b_name='后勤部') 10:查询财务部年龄不在20-30之间的男生信息。
SELECT * FROM bumen,yg WHERE bumen.b_id=yg.b_id AND b_name='财务部' AND y_sex=’男’
AND y_age NOT BETWEEN 20 AND 30。