宝塔山 发表于 2025-4-5 16:41:25

【数据库】【MySQL】操作题 训练

前言-语法

创建表格的语法为:CREATE TABLE 表名(字段的界说,各字段用逗号分隔);
插入记录的语法为:INSERT INTO 表名 VALUES(插入的信息,各信息用逗号分隔);
查询所有记录的语法为:SELECT*FROM 表名;
查询部分记录的语法为(一):SELECT*FROM 表名 LIMIT 索引区间;
留意:索引区间从0开始。
查询部分记录的语法为(二):SELECT 字段名聚集,各字段用逗号分隔 FROM 表名;
说明:着实就是最后输出的字段列可选,不过假如想表现全部就用星号*。
查询指定信息的记录的语法为(三):SELECT * FROM 表名 WHERE 字段名 IN (字段包罗的信息聚集,各指定信息用逗号分隔);
查询指定区间信息的记录的语法为(四):SELECT * FROM 表名 WHERE 字段名 BETWEEN 左区间 AND 右区间;
字段重定名利用关键字:AS。
计算有多少(统计数据):关键字GROUP BY。语法:SELECT 字段聚集 FROM 表名 GROUP BY 要统计的那个字段名;
说明:一样平常会对字段聚会合的某字段进行COUNT或别的操作,关键字GROUP BY与关键字COUNT往往会并用。
对数值型记录可利用函数直接找出最大最小值:MAX(字段名),即可找出该字段中的最大值。
   数据库查询中,GROUP BY 子句通常与聚合函数一起利用,以便对一组数据进行汇总。聚合函数可以对一组值实行计算,并返回单个值。以下是一些常用的聚合函数及其用法:

[*] COUNT:计算行数。比方:SELECT COUNT(*) FROM table_name; 计算表中的总行数。
[*] SUM:计算数值列的总和。比方:SELECT SUM(column_name) FROM table_name; 计算某列的总和。
[*] AVG:计算数值列的平均值。比方:SELECT AVG(column_name) FROM table_name; 计算某列的平均值。
[*] MIN:找出数值列的最小值。比方:SELECT MIN(column_name) FROM table_name; 找出某列的最小值。
[*] MAX:找出数值列的最大值。比方:SELECT MAX(column_name) FROM table_name; 找出某列的最大值。


开始训练
https://i-blog.csdnimg.cn/direct/146ea3b44b154ddc8eb8ecea7cfaf1ec.png
 1.创建student和score表

CREATE TABLE student(
id INT(10) NOT NULL UNIQUE PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex VARCHAR(20),
birth YEAR,
department VARCHAR(20) NOT NULL,
address VARCHAR(50)
);

CREATE TABLE score(
id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,
stu_id INT(10) NOT NULL,
c_name VARCHAR(20),
grade INT(10)
); 2.为student和score表增长记录

INSERT INTO student VALUES(901, '张老大', '男', 1985, '计算机系', '北京市海淀区');
INSERT INTO student VALUES(902, '张老二', '男', 1986, '中文系', '北京市昌平区');
INSERT INTO student VALUES(903,'张三', '女',1990,'中文系', '湖南省永州市');
INSERT INTO student VALUES(904,'李四', '男',1990,'英语系', '辽宁省阜新市');
INSERT INTO student VALUES(905,'王五', '女',1991,'英语系', '福建省厦门市');
INSERT INTO student VALUES(906,'王六', '男',1988,'计算机系', '湖南省衡阳市');

INSERT INTO score VALUES(NULL,901,'计算机',98);
INSERT INTO score VALUES(NULL,901,'英语',80);
INSERT INTO score VALUES(NULL,902,'计算机',65);
INSERT INTO score VALUES(NULL,902,'中文',88);
INSERT INTO score VALUES(NULL,903,'中文',95);
INSERT INTO score VALUES(NULL,904,'计算机',70);
INSERT INTO score VALUES(NULL,904,'英语',92);
INSERT INTO score VALUES(NULL,905,'英语',94);
INSERT INTO score VALUES(NULL,906,'计算机',90);
INSERT INTO score VALUES(NULL,906,'英语',85);  3.查询student表的所有记录

SELECT * FROM student; https://i-blog.csdnimg.cn/direct/ebb99188ee9b45eb83c17fd7bd53faec.png

4.查询student表的第2条到第4条记录

留意:第一条记录的索引为0,以是第2条到第4条记录索引区间为1到3。
SELECT * FROM student LIMIT 1,3; https://i-blog.csdnimg.cn/direct/897352ea11dd401089157347db33208d.png

5.从student表查询所有门生的学号id、姓名name和院系department的信息

SELECT id,name,department FROM student; https://i-blog.csdnimg.cn/direct/11798e4f39784ad797273f919090924c.png

6.从student表中查询计算机系和英语系的门生信息

SELECT * FROM student WHERE department IN ('计算机系', '英语系') https://i-blog.csdnimg.cn/direct/8e19d086c245417aa0fb763c5ebc6d86.png
7.从student表中查询年龄18~22岁的门生信息

说明:2013-birth(2013减出生年份)表现计算每位门生在2013年时的年龄。
写法一:
SELECT id,name,sex,2013-birth AS age,department,address FROM student WHERE 2013-birth BETWEEN 18 AND 22; 写法二:
SLECT id,name,sex,2013-birth AS sge,department,address FROM student WHERE 2013-birth>=18 AND 2013-birth<=22; https://i-blog.csdnimg.cn/direct/6002a9e3ca6a410aa1ad4455c8f59203.png
8.从student表中查询每个院系有多少人

SELECT department,COUNT(id) FROM student GROUP BY department; https://i-blog.csdnimg.cn/direct/425ee65edcbe42a9b955bad9320031da.png
9.从score表中查询每个科目的最高分

SELECT c_name,MAX(grade) FROM score GROUP BY c_name; 说明:这里是函数MAX()和关键字GROUP BY 的并用。
https://i-blog.csdnimg.cn/direct/e3a43aa1efa147bda532e94424a16fc5.png
10.查询李四的测验科目c_name和测验成绩grade

SELECT c_name,grade FROM score WHERE stu_id=(SELECT id FROM student WHERE name='李四'); 说明:该语句的逻辑是

[*]子查询 (SELECT id FROM student WHERE name = '李四'):首先从student表中找出名为“李四”的门生的学号(id)。
[*]外层查询:利用子查询得到的门生学号,从score表中查询对应的测验科目(c_name)和成绩(grade)。
https://i-blog.csdnimg.cn/direct/b5d5c65eb2cf4d4aa7e729e9c620291d.png
11.用连接的方式查询所有门生的信息和测验信息

SELECT student.id,name,sex,birth,department,address,c_name,grade
FROM student,score WHERE student.id=score.stu_id; https://i-blog.csdnimg.cn/direct/5eacfddd50564703890ac1899155ff3a.png
12.计算每个门生的总成绩

SELECT student.id,name,SUM(grade) FROM student,score
WHERE student.id=score.stu_id GROUP BY id; https://i-blog.csdnimg.cn/direct/38da44bb326d40a98010dae3f39f22ad.png
13.计算每个测验科目的平均成绩

SELECT c_name,AVG(grade) FROM score GROUP BY c_name; https://i-blog.csdnimg.cn/direct/193594c50d554f168f924c8bba23ba34.png
14.查询计算机成绩低于95的门生信息

SELECT * FROM student WHERE id IN
(SELECT stu_id FROM score WHERE c_name='计算机' and grade<95) https://i-blog.csdnimg.cn/direct/2e0f7476b08d4202b6500253ff524da8.png
15.查询同时参加计算机和英语测验的门生的信息

https://i-blog.csdnimg.cn/direct/c06009b86e614e43a7edab604b729b28.png
16.将计算机测验成绩按从高到低进行排序

https://i-blog.csdnimg.cn/direct/852fcb30f1b84f9cbed63895cb07e297.png
17.从student表和score表中查询出门生的学号,然后合并查询结果

https://i-blog.csdnimg.cn/direct/2a08dfa811594ca997d4d7db59fc9956.png
18.查询姓张或者姓王的同学的姓名、院系和测验科目及成绩

https://i-blog.csdnimg.cn/direct/fc3b2b7f48a447e6908cd56769576aaf.png
19.查询都是湖南的门生的姓名、年龄、院系和测验科目及成绩

https://i-blog.csdnimg.cn/direct/516a091df66e4776970d87e2946611fd.png









免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【数据库】【MySQL】操作题 训练