SQL查询语句(一)
一,SELECT 语句
从上到下为书写顺序,数字为执行顺序
(7) Select //SELECT 子句用于指定输出的字段
(8) Distinct < select_list> //将查询结果去重
(1) from <left table> //数据来源于哪些表
(3) <join_type(如left,right,inner)> join <right table> //用于多个表的连接
(2)on <tablename.column=other tablename.column> //on和join连接使用,join是连接多个表,on后面跟的是两个表之间的连接条件
(4) where <constraint expression> //行级过滤 where 子句用于检索满足指定条件的行
(5) group by <group_by_list> //group by 子句用于对检索到的记录进行分组
(6) having <constraint expression> //对每组的条件进行筛选,可以使用聚合函数
(9) order by <column ASCIDESC> //将数据按照一定顺序排序
(10) limit 0.10 // 限制返回数据的行数
select和from是必须的,其他的是可选的
SQL不区分大小写,最好以 ; 分号作为结束语句。
简略图解
二,检索数据 列的选择和指定
(1)如果查询一个表中 所有列 ,则可在select语句指定列的位置上直接使用 * 通配符,
SELECT *
FROM 表名
(2)若查询列为单个
(3)若查询列有多个,则各个列名之间需要用逗号进行分隔,查询结果返回时,结果集中各列的次序是依照select语句中指定列的次序给出的
(4)在表中,可能会包含重复值。有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。
作用于单列
作用于多列
select DISTINCT StuName,StuSex,Pwd,DeptNo
FROM student; 除非StuName,StuSex,Pwd,DeptNo都相同,否则所有行都会被检索出来;
(5)限制结果,使用 limit 可以指定从哪行进行搜索,搜索几行数据
select * from Customer LIMIT 10;--检索前10行数据,显示1-10条数据;
select * from Customer LIMIT 1,10;--检索从第2行开始,累加10条id记录,共显示id为2....11
select * from Customer limit 5,10;--检索从第6行开始向前加10条数据
三,排序检索数据 ORDER BY
(1)在select语句中,可以使用 ORDER BY子句将结果集中的数据行按一定的顺序进行排列
对单个列进行排序
; 对检索出来的结果按照 Score的降序进行排序输出
(2)按多个列进行排序
SELECT *
FROM Product
ORDER BY Score DESC,StuNo 仅在多个行具有相同的Score时,才对StuNo进行排序
(3)指定排序方向
升序 ESC(字母是 从A-Z,数字是从小到大),降序DESC(字母是 从Z-A,数字是从大到小)。默认排序为升序排序ESC可以省略不写
DESC只作用于前面的字段,如果需要多个字段都降序则每个字段前面都要加 DESC
(4)ORDER BY和 LIMIT 组合可以找出最高或最低值
SECT *
FROM Product
ORDER BY Score DESC
LIMIT 1; 找出最低分数
四,过滤数据 WHERE
(1)select 语句中,可以使用 WHERE 子句指定过滤条件(也称查询条件)
SELECT *
FROM Product
WHERE id=5;
(2)比较运算符
比较运算用于比较两个表达式的值。 【=,<>不等于,!=不等于,<,<=,>,>=,between 指定的两个值之间】
(3)判定范围
between...and
当查询条件被限定在值的某个范围时,可以使用关键字 between
(4).判定空值
当需要判定一个表达式的值是否为空时,可以使用关键字 is null
(5).and,or 表示符合任一条件就行
计算次序,and和 or 还有()括号在一起的时候,括号()的优先级最高,and次之,or 的最低的。
select name,price
from product
where (id=2 or id=3) and price>=10
(6)in
使用关键字 in 可以指定一个值的枚举列表,该表中会列出所有可能的值
in可以包含select子句
NOT:否定它之后所跟的任何条件
select name,price
from products
where id not in(5,7); 从products 查询出来 id 是5和7 name和 price
五,使用通配符进行过滤。LIKE,%,_
为在搜索句子中使用通配符,必须使用LIKE操作符。LIKE指示MySQL后面跟的是搜索模式利用通配符
百分号(%)通配符,表示任何字符出现的任意次数
select name,price
from products
where name LIKE ‘Jack%’ ; 在products表中,搜索 name以Jack开头的 name和price的值。无论Jack后面是一个字符还是多个字符
下划线(_)通配符只能匹配单个字符
select name,price
from products
where name LIKE ‘Jack_’ ; 在products表中,搜索 name以Jack开头的 name和price的值。Jack后面只能是一个字符
通配符搜索的处理时间比较长。
(4)进行查询时若希望得到对某些列的查询分析结果,而不是原始数据,则可以在select语句中替换这些列,需要用到case表达式
(5)使用select语句对列进行查询时,在结果中可以输出对列值计算后的值