Mysql数据库查询语句DQL(Data Query Language)—— 基本查询

基本语法形式:

Select 【all|distinct】字段或表达式列表 【from 子句】 【where 子句】 【group by 子句】 【having 子句】 【order by 子句】 【limit 子句】;

 

字段或表达式列表

(1)字段,来源于表,依赖于from子句

(2)表达式是类似这样的一个内容:8,8+3,now()

示例:select 8,8+3,now(),concat(‘aa’,’bb’);

Concat()函数时mysql中的系统函数,用于连接多个字符串

(3)每个输出项(字段或表达式列表)都可以设定一个别名。形式为:

字段或表达式列表  as  别名

 

All和distinct

用于设定select出来的数据,是否消除“重复行”,默认值是all(不消除)

Distinct:消除重复行

 

from 子句

表示select部分取得数据的数据源---表

通常,后面接表名,如 from tab 或from tab1,tab2

也可能是一些数据来源

 

where 子句

(1)对from子句中的数据源的数据进行筛选的条件设定,依赖于from子句

(2)通常都需要使用各种“运算符”。

  算术运算符:+  -  *  /  %

  比较运算符:>  >= <  <=  = <>  ==  !=

  逻辑运算符:and  or  not

示例:select * from tab where not(sex=‘女’);

(3)where true 表示全部取出。Where false 表示什么也不取

(4)is运算符:空值与布尔值的判断

   XXis null:判断某个字段是“null”值----就是没有值;

XX is not null: 判断某个字段不是“null”值

XX is true:判断某个字段为真(true)

XX is false:判断某个字段为假(false):0  0.0  ‘’ null

布尔值是tinyint(1)这个类型的别名,本质上,判断这个数字是不是为0

(5)between运算符:范围判断

 用于判断某个字段的数据值是否在某个给定的范围----适用于数字类型

语法:

  XX  between 值1 and 值2;

含义:XX字段的值在给定“值1”与”值2“之间

(6)in运算符:给定确定数据的范围判断

语法:

  XX  in (值1,值2,值3…);

含义:表示字段XX的值为所列出的这些值(零散无规律)中的一个。

(7)like运算符:对字符串进行模糊查询

语法:

  XXlike ’要查找的内容‘;

含义:

实现对字符串的某种特征信息的模糊查找,依赖于2个特殊的符号:

%:代表任何个数的任何字符

_:代表任何一个字符

示例:

  namelike ’安%‘;

如果要找到字段中含有%的行,使用转义。示例:XX like ’%\%%‘; 表示XX中含有百分号这个字符的所有行

 

group by 子句

形式:group by 字段1 【desc |asc】,字段2【desc|asc】,……

说明:(1)分组是对已经找出的数据进行分组

(2)该分组结果,指定排序方式desc(倒序)asc(升序)

(3)通常就一个字段

(4)分组后,就只有以下几种可用的组信息(即可出现在select中)

     1)分组依据本身的信息,就是该分组依据的字段名

     2)每一组的数量信息:用count(*)获得

     示例:selectpinpai,count(*) as 数量 from product group by pinpai;

    3)原来数据中的“数值类型字段的聚合信息”,包括如下几个:

       Max(字段名)  最大值        min(字段名)  最小值

       Avg(字段名)   平均值       sum(字段名)  总和值

   均为系统内部函数

 

having 子句

与where完全一样,对分组的结果进行筛选(分组之后的数据)

示例:select pinpai,count(*) as 数量 from product group by pinpai having count(*)>2;

 

 

order by 子句

对查询到的数据进行排序以输出结果,多个字段的排序,在前一个排序的基础上,对相等值以后续字段排序

形式:order by字段1 【desc |asc】,字段2【desc|asc】,……

 

limit 子句

对查询到的数据,按指定的行取出来:从第几行开始取多少行

形式:limit 起始行号,要取出的行数;

简写:limit 行数;(相当于起始行号从0开始算起)

 

 

总结:

1.在形式上,select很多子句可省略,但是如果出现,其顺序不能打乱,必须按照给定的顺序写出

2.where子句依赖于from子句:即没有from 不能有where

3.having子句依赖于group by 子句:即没有groupby 不能有having

4.select中的字段依赖于from子句

5.内部执行过程:从from的数据源获得所有数据,然后where子句对这些数据筛选,之后再使用group by对筛选出的数据进行分组,接下来使用having子句对这些分组进行筛选,然后才可以order by 和limit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章