当前位置:网站首页>数据库系统原理与应用教程(059)—— MySQL 练习题:操作题 1-10(三)

数据库系统原理与应用教程(059)—— MySQL 练习题:操作题 1-10(三)

2022-07-28 12:30:00 睿思达DBA_WGX

数据库系统原理与应用教程(059)—— MySQL 练习题:操作题 1-10(三)

1、基础查询(1):查询表中的所有列

题目:要查看用户信息表中所有的信息,编写 SQL 语句取出相应结果。

示例:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

查询应返回以下结果:

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学Zhejiang
55432male25山东大学Shandong

表结构及数据如下:

/* drop table if exists user_profile; CREATE TABLE `user_profile` ( `id` int NOT NULL, `device_id` int NOT NULL, `gender` varchar(14) NOT NULL, `age` int , `university` varchar(32) NOT NULL, `province` varchar(32) NOT NULL); INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学','BeiJing'); INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学','Shanghai'); INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学','BeiJing'); INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学','ZheJiang'); INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学','Shandong'); */

解答:

-- 使用 *
mysql> select * from user_profile;
+----+-----------+--------+------+--------------+----------+
| id | device_id | gender | age  | university   | province |
+----+-----------+--------+------+--------------+----------+
|  1 |      2138 | male   |   21 | 北京大学     | BeiJing  |
|  2 |      3214 | male   | NULL | 复旦大学     | Shanghai |
|  3 |      6543 | female |   20 | 北京大学     | BeiJing  |
|  4 |      2315 | female |   23 | 浙江大学     | ZheJiang |
|  5 |      5432 | male   |   25 | 山东大学     | Shandong |
+----+-----------+--------+------+--------------+----------+
5 rows in set (0.00 sec)

-- 使用字段列表
mysql> select id, device_id, gender, age, university, province  from user_profile;
+----+-----------+--------+------+--------------+----------+
| id | device_id | gender | age  | university   | province |
+----+-----------+--------+------+--------------+----------+
|  1 |      2138 | male   |   21 | 北京大学     | BeiJing  |
|  2 |      3214 | male   | NULL | 复旦大学     | Shanghai |
|  3 |      6543 | female |   20 | 北京大学     | BeiJing  |
|  4 |      2315 | female |   23 | 浙江大学     | ZheJiang |
|  5 |      5432 | male   |   25 | 山东大学     | Shandong |
+----+-----------+--------+------+--------------+----------+
5 rows in set (0.00 sec)

2、基础查询(2):查询多列

题目:要查询用户的设备 id 对应的性别、年龄和学校信息,请你取出相应数据,编写 SQL 语句取出相应结果。

示例:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学Zhejiang
55432male25山东大学Shandong

查询应返回以下结果:

device_idgenderageuniversity
2138male21北京大学
3214male复旦大学
6543female20北京大学
2315female23浙江大学
5432male25山东大学

解答:

mysql> select device_id, gender, age, university  from user_profile;
+-----------+--------+------+--------------+
| device_id | gender | age  | university   |
+-----------+--------+------+--------------+
|      2138 | male   |   21 | 北京大学     |
|      3214 | male   | NULL | 复旦大学     |
|      6543 | female |   20 | 北京大学     |
|      2315 | female |   23 | 浙江大学     |
|      5432 | male   |   25 | 山东大学     |
+-----------+--------+------+--------------+
5 rows in set (0.00 sec)

3、基础查询(3):查询结果去重

题目:要查看用户来自于哪些学校,从用户信息表中取出学校的去重数据。

示例:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

查询应返回以下结果:

university
北京大学
复旦大学
浙江大学
山东大学

解答:

mysql> select distinct university from user_profile;
+--------------+
| university   |
+--------------+
| 北京大学     |
| 复旦大学     |
| 浙江大学     |
| 山东大学     |
+--------------+
4 rows in set (0.00 sec)

4、基础查询(4):限制查询结果返回的行数

题目:要查看前 2 个用户的设备ID数据,从用户信息表 user_profile 中取出相应结果。

示例:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

查询应返回以下结果:

device_id
2138
3214

解答:

mysql> select device_id from user_profile limit 2;
+-----------+
| device_id |
+-----------+
|      2138 |
|      3214 |
+-----------+
2 rows in set (0.00 sec)

5、基础查询(5):为查询到的列指定别名

题目:要查看前 2 个用户的设备 ID,并将列名改为 ‘user_infos_example’,从用户信息表取出相应结果。

示例:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

查询应返回以下结果:

user_infos_example
2138
3214

解答:

-- 不使用 as
mysql> select device_id user_infos_example from user_profile limit 2;
+--------------------+
| user_infos_example |
+--------------------+
|               2138 |
|               3214 |
+--------------------+
2 rows in set (0.01 sec)

-- 使用 as
mysql> select device_id as user_infos_example from user_profile limit 2;
+--------------------+
| user_infos_example |
+--------------------+
|               2138 |
|               3214 |
+--------------------+
2 rows in set (0.00 sec)

6、比较运算符(1):查询学校是【北京大学】的学生信息

题目:要筛选出所有北京大学的学生信息,从用户信息表中取出满足条件的数据,返回设备 id 和学校。

示例:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

查询应返回以下结果:

device_iduniversity
2138北京大学
6543北京大学

解答:

mysql> select device_id, university from user_profile where university = '北京大学';
+-----------+--------------+
| device_id | university   |
+-----------+--------------+
|      2138 | 北京大学     |
|      6543 | 北京大学     |
+-----------+--------------+
2 rows in set (0.00 sec)

7、比较运算符(2):查询年龄大于 24 岁的用户信息

题目:要查询 24 岁以上的用户信息,取出满足条件的设备 ID、性别、年龄、学校。

用户信息表:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

查询应返回以下结果:

device_idgenderageuniversity
5432male25山东大学

解答:

mysql> select device_id, gender, age, university  from user_profile where age > 24;
+-----------+--------+------+--------------+
| device_id | gender | age  | university   |
+-----------+--------+------+--------------+
|      5432 | male   |   25 | 山东大学     |
+-----------+--------+------+--------------+
1 row in set (0.01 sec)

8、比较运算符(3):查找某个年龄段的用户信息

题目:要查询 20 岁及以上且 23 岁及以下的用户信息,取出满足条件的 设备ID、性别、年龄。

用户信息表:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

查询应返回以下结果:

device_idgenderage
2138male21
6543female20
2315female23

解答:

-- 使用 between ... and ...
mysql> select device_id, gender, age  from user_profile where age between 20 and 23;
+-----------+--------+------+
| device_id | gender | age  |
+-----------+--------+------+
|      2138 | male   |   21 |
|      6543 | female |   20 |
|      2315 | female |   23 |
+-----------+--------+------+
3 rows in set (0.01 sec)

-- 使用比较运算符和逻辑运算符
mysql> select device_id, gender, age  from user_profile where age >= 20 and age <= 23;
+-----------+--------+------+
| device_id | gender | age  |
+-----------+--------+------+
|      2138 | male   |   21 |
|      6543 | female |   20 |
|      2315 | female |   23 |
+-----------+--------+------+
3 rows in set (0.00 sec)

9、比较运算符(4):查找除复旦大学以外的用户信息

题目:要查看除复旦大学以外的所有用户信息,取出设备 id,性别,年龄,学校。

示例:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

查询应返回以下结果:

device_idgenderageuniversity
2138male21北京大学
6543female20北京大学
2315female23浙江大学
5432male25山东大学

解答:

-- 使用 <>
mysql> select device_id, gender, age, university from user_profile where university <> '复旦大学';
+-----------+--------+------+--------------+
| device_id | gender | age  | university   |
+-----------+--------+------+--------------+
|      2138 | male   |   21 | 北京大学     |
|      6543 | female |   20 | 北京大学     |
|      2315 | female |   23 | 浙江大学     |
|      5432 | male   |   25 | 山东大学     |
+-----------+--------+------+--------------+
4 rows in set (0.00 sec)

-- 使用 not
mysql> select device_id, gender, age, university from user_profile where not university = '复旦大学';
+-----------+--------+------+--------------+
| device_id | gender | age  | university   |
+-----------+--------+------+--------------+
|      2138 | male   |   21 | 北京大学     |
|      6543 | female |   20 | 北京大学     |
|      2315 | female |   23 | 浙江大学     |
|      5432 | male   |   25 | 山东大学     |
+-----------+--------+------+--------------+
4 rows in set (0.00 sec)

10、比较运算符(5):过滤空值

题目:要查看年龄不为空的用户,取出用户的设备ID,性别,年龄,学校信息。

示例:user_profile 表的数据如下。

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

查询应返回以下结果:

device_idgenderageuniversity
2138male21北京大学
6543female20北京大学
2315female23浙江大学
5432male25山东大学

解答:

-- 使用 age is not null
mysql> select device_id, gender, age, university from user_profile where age is not null;
+-----------+--------+------+--------------+
| device_id | gender | age  | university   |
+-----------+--------+------+--------------+
|      2138 | male   |   21 | 北京大学     |
|      6543 | female |   20 | 北京大学     |
|      2315 | female |   23 | 浙江大学     |
|      5432 | male   |   25 | 山东大学     |
+-----------+--------+------+--------------+
4 rows in set (0.00 sec)

-- 使用 not age is null
mysql> select device_id, gender, age, university from user_profile where not age is null;
+-----------+--------+------+--------------+
| device_id | gender | age  | university   |
+-----------+--------+------+--------------+
|      2138 | male   |   21 | 北京大学     |
|      6543 | female |   20 | 北京大学     |
|      2315 | female |   23 | 浙江大学     |
|      5432 | male   |   25 | 山东大学     |
+-----------+--------+------+--------------+
4 rows in set (0.00 sec)
原网站

版权声明
本文为[睿思达DBA_WGX]所创,转载请带上原文链接,感谢
https://wanggx.blog.csdn.net/article/details/126016653