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语句对列进行查询时,在结果中可以输出对列值计算后的值

 

posted @ 2019-01-15 13:25  越长大越孤单哦  阅读(1001)  评论(2编辑  收藏  举报