CRUD MySQL数据库必会的增删查改操作( 二 )


语法:
select * from 表名;其中上面的*表示通配符 , 表示一个表所有的列 。
栗子 , 查询上面新建的学生表和日期表 。
mysql> insert into time values (3, now());Query OK, 1 row affected (0.01 sec)mysql> select * from student;+------+-----------+-------+| id| name| score |+------+-----------+-------+|1 | 喜羊羊|98.0 ||2 | 懒羊羊|NULL ||3 | 美羊羊|92.0 ||4 | 沸羊羊|70.0 ||5 | 暖羊羊|88.0 |+------+-----------+-------+5 rows in set (0.00 sec)mysql> select * from time;+------+---------------------+| id| time|+------+---------------------+|1 | 2022-03-12 00:00:00 ||2 | 2022-03-12 20:22:22 ||3 | 2022-03-12 20:13:39 |+------+---------------------+3 rows in set (0.00 sec)这个输出显示的表是服务器端数据库返回给客户端的一个临时表 , 使用查询操作不会对服务器中的数据造成影响 。且该临时表在客户端打印后也随之销毁了 。
2.2.2指定列查询指定列查询后 , 服务器返回的数据量会大大减少 , 因此查询一般指定列来进行查询 。
语法格式:
select 列名, 列名, ... from 表名;比如我们只查询学生表中的姓名和成绩:
mysql> select name, score from student;+-----------+-------+| name| score |+-----------+-------+| 喜羊羊|98.0 || 懒羊羊|NULL || 美羊羊|92.0 || 沸羊羊|70.0 || 暖羊羊|88.0 |+-----------+-------+5 rows in set (0.00 sec)2.2.3指定字段为表达式查询如果我们期望对数据表中的某列统一加上一个权重进行查询 , 我们可以指定列的表达式来查询 , 比如对学生表的成绩统一减少10分进行查询:
mysql> select name, score-10 from student;+-----------+----------+| name| score-10 |+-----------+----------+| 喜羊羊|88.0 || 懒羊羊|NULL || 美羊羊|82.0 || 沸羊羊|60.0 || 暖羊羊|78.0 |+-----------+----------+5 rows in set (0.00 sec)我们发现null不受影响 。
我们重新再建一个表 , 该表里有学号 , 姓名 , 语文成绩 , 数学成绩 , 英语成绩 , 计算机综合成绩 , 满分都为100分 。
我们现在需要统计表中所有同学的总成绩和每个学生的平均分 。
-- 建表mysql> create table exam_score(id int, name varchar(50), chinese double(4,1), math double(4,1),english double(4,1), computer double(4,1));Query OK, 0 rows affected (0.02 sec)-- 插入数据mysql> insert into exam_score values (1,'美羊羊',99.5,90.5,98,82),-> (2, '懒羊羊', 58.5,32.5,24,66.5),-> (3, '喜羊羊', 92,98,88,100),-> (4, '沸羊羊', 78,72,74.5,81),-> (5, '暖羊羊', 90,91,98,76),-> (6, '灰太狼', 33,91,12,98.5),-> (7, '小灰灰', 81, 82,78,88),-> (8, '黑大帅', 10,11,9,20);Query OK, 8 rows affected (0.01 sec)Records: 8Duplicates: 0Warnings: 0-- 整表查询mysql> select * from exam_score;+------+-----------+---------+------+---------+----------+| id| name| chinese | math | english | computer |+------+-----------+---------+------+---------+----------+|1 | 美羊羊|99.5 | 90.5 |98.0 |82.0 ||2 | 懒羊羊|58.5 | 32.5 |24.0 |66.5 ||3 | 喜羊羊|92.0 | 98.0 |88.0 |100.0 ||4 | 沸羊羊|78.0 | 72.0 |74.5 |81.0 ||5 | 暖羊羊|90.0 | 91.0 |98.0 |76.0 ||6 | 灰太狼|33.0 | 91.0 |12.0 |98.5 ||7 | 小灰灰|81.0 | 82.0 |78.0 |88.0 ||8 | 黑大帅|10.0 | 11.0 |9.0 |20.0 |+------+-----------+---------+------+---------+----------+8 rows in set (0.00 sec)-- 统计每一位同学的总分与平均分mysql> select name, chinese+math+english+computer,(chinese+math+english+computer)/4 from exam_score;+-----------+-------------------------------+-----------------------------------+| name| chinese+math+english+computer | (chinese+math+english+computer)/4 |+-----------+-------------------------------+-----------------------------------+| 美羊羊|370.0 |92.50000 || 懒羊羊|181.5 |45.37500 || 喜羊羊|378.0 |94.50000 || 沸羊羊|305.5 |76.37500 || 暖羊羊|355.0 |88.75000 || 灰太狼|234.5 |58.62500 || 小灰灰|329.0 |82.25000 || 黑大帅|50.0 |12.50000 |+-----------+-------------------------------+-----------------------------------+8 rows in set (0.00 sec)2.2.4指定别名字段查询上面查询总成绩与平均成绩时 , 输出的表头是一个表达式 , 不是非常合适作为表头标题 , 那能不能修改别名呢?答案是肯定的 。
语法格式:
select 列名或表达式 as 别名, ... from 表名;其中as可以省略 , 但是不建议这样做 , 因为可读性会变差 。
以上面的考试成绩表为例 , 
mysql> select name, chinese+math+english+computer as total,(chinese+math+english+computer)/4 as average from exam_score;+-----------+-------+----------+| name| total | average|+-----------+-------+----------+| 美羊羊| 370.0 | 92.50000 || 懒羊羊| 181.5 | 45.37500 || 喜羊羊| 378.0 | 94.50000 || 沸羊羊| 305.5 | 76.37500 || 暖羊羊| 355.0 | 88.75000 || 灰太狼| 234.5 | 58.62500 || 小灰灰| 329.0 | 82.25000 || 黑大帅|50.0 | 12.50000 |+-----------+-------+----------+8 rows in set (0.00 sec)


推荐阅读