概述:
在MySQL基本操作(一)中,介绍了一些常用的简单的MySQL操作命令,这一篇我主要是想记录一下select 查询操作,包括多表联和查询。以及数据的导入导出。为了让自己别忘记。这里我建立了几张测试表,用于测试。分别是class_1,class_2,class_3,每张表里有student_ID ,name ,sex ,grade_scores_of_Chinese,Math_score,English_score,Physical_achievements,Total_score 这几个字段。
一、单表查询
1. 去掉重复值,关键词 distinct
mysql> select distinct 列名 from 表名;
2. 条件查询,常用关键字 select、from、where、group by、having、order by 等
查询语句的编写顺序一般为 select…from…where…group by…having…order by
---- 关系运算符:> >= < <= = != <>
<> :不等于符号 ----标准SQL语法
!= :不等于符号 ----非标准SQL语法
---- like 模糊查询:"_" 代表的是任意一个字符,“%” 代表的是多个字符。例如:
图中的SQL语句,表示查询class_1表中Math_score字段以2结尾的数据。
---- in 获取括号内的数据。例如:
获取name 字段为"汪洋",“王宁”的数据
3. 排序查询:order by 关键字(放在查询语句最后面)
asc:ascend 升序(默认排序方式)
desc:descend 降序
例如: select * from class_1 order by Math_score desc ;
4. 聚合函数,这里要注意:where 条件后不能接聚合函数。sum() 求和,avg() 求平均值,count() 统计数量,max() 最大值,min() 最小值。
例 :查询全班数学成绩平均分。
二、多表查询
1. 合并两张表的查询结果,关键字union,union all。
这两个指令都是将两个SQL语句合并在一起,但是不同之处在于,union all 会将每一笔符合条件的结果都列出来,无论结果有无重复。
例如: 查询两张表的 student_ID 字段和Total_score字段。
2. 多表联合查询
前面讲的查询语句都是针对一张表的,但是在关系型数据库中,表和表之间是存在联系的,所以实际应用中,我们经常要用到多表联合查询。
例:我现在有两张表 class_1 和 class_2 ,我要查询表1的name字段,和表二的name字段,条件是 Math_score的值相同,已左表为基表。如果右表中没有符合条件的字段,显示为NULL 。
SQL语句:
select a.name,b.name from class_1 as a left join class_2 as b on a.Math_score = b.Math_score;