多语言展示
当前在线:568今日阅读:75今日分享:44

数据操作语言基本查询-mysql

数据操作语言基本查询-mysql
工具/原料

mysql

方法/步骤
1

1.查询语句基本形式select 子句【from 子句】【where 子句】【group 子句】【having子句】【order 子句】【limit 子句】;select子句select  【all | distinct 】字段或表达式1  【as 别名1】,字段或表达式2  【as 别名2】,.......

2

2.all :表示列出所有满足条件的数据,并不考虑行是否重复;这是默认值,不写就是它。distinct:表示会考虑行是否重复,并自动消除重复行;

3

from子句from子句表示数据源——数据的来源。形式:from  表名;from  表名1,表名2,....;#连接查询;from  表名1  某种 join  表名2   on  条件;  #连接查询;  where子句含义:就是对前面from子句的“数据源”,来设定筛选条件。只有满足条件的数据行,才会被取出来。注意:其筛选是对数据源的数据,“一行一行”进行判断!!!where子句的本质:其实就是相当于if语句的判断条件,或where循环的判断条件——最终结果就是true或者falsewhere子句的基本形式:判断条件1  逻辑运算符1  判断条件2  逻辑运算符2  判断条件3 ......——其实,就是一个if语句通常的那种表达式。where  id > 8  and  age < 18   or  edu = ‘大学’对比PHP中:if( $v1 > 8  &&  $v2 < 18  ||  $v3 == ‘大学’) {....} 基本(常用)运算符:算术运算符:+   -   *   /   %比较运算符:>   >=   <   <=   =(等于)    <>(不等于)    ==(等于)   !=(不等于)逻辑运算符 逻辑与:  and逻辑或:  or逻辑非:  not   is运算符它只用于对布尔值和空值(null)进行判断,综合起来,就只有如下4种情形:XX字段  is  true  //表示某个字段的值是true,则结果是true,否则结果就是false。XX字段  is  false //表示某个字段的值是false,则结果是true,否则结果就是false。XX字段  is  nullXX字段  is  not  null 注意:null(空,空值),跟数字0,空字符串’’ 是不同的。数字0和空字符串’’  其实是“非空”(not null)

4

4.between运算符就是用于限定某个字段的值在某两个给定值的范围(between就是“在....之间”的意思)形式:XX字段   between  值1  and  值2;注意:1,通常,它只用于数字类型的字段2,值1不能大于值2——否则什么也找不到。3,其实它含义是:XX >= 值1   and  XX <= 值2举例:age  between  18  and  28;相当于:age  >= 18  and  age <= 28; in 运算符:形式:XX字段   in  (值1,值2,值3,..... )说明:1,它可以用于各种数据类型,但值必须是“字面值”;2,它表示该字段的值,等于 列出来的其中任意某一个,就表示符合条件;3,即相当于:XX  = 值1  or  XX=值2  or  .....

5

5.like运算符like运算符用于对字符类型的数据进行“模糊查找”。形式:XX字段  like  ‘要查找的字符’含义:表示该字段中有设定的要查找的字符,就算满足条件。说明:1,like并不能独立完成模糊查找,而是需要结合2个特殊“字符”(符号):%  :表示任意个数的任意字符;_  :表示一个任意字符;2,如果要在字段中,找这两个特殊字符本身,怎么办?——转义就ok:XX  like  ‘%\%%’;  #这里,表示找其中包含“%”的所有数据,中间的“\%”就是转义XX  like  ‘%\_%’;  #同理举例: realName like '罗%'; #可以找出:罗,罗成,罗六奇,罗哥哥,罗叔叔,罗大脑袋,罗胡罗卜.... realName like '罗_'; #可以找出:罗成,罗奇,罗哥,罗叔..... realName like '_罗'; #可以找出:大罗,小罗,老罗,C罗..... realName like '%罗%'; #这种形式就是最经常使用的最典型形式,只要改字段包含有一个“罗”,不管位置在哪里,都能找出。 group  by子句形式:group  by  字段名1 【Asc | Desc】, 字段名2 【Asc | Desc】,......说明:1,用于将从数据源中取得的满足where条件的数据,进行某种标准(字段)的分类(分组);2,分组之后,要有一个重要理念:select出来的数据,每一行,就是代表“一组”!!!即该行的每一个字段的值,都应该是对该“组”的信息描述!!!3,还可以使用Asc或者Desc来设定按该组的值的大小进行正序(默认情况)或倒序排列。 特别注意:如果使用group by 子句,就需要考虑select子句中的“可出现字段”——它会受group by子句的影响!基本上,此时,select子句中,只能出现如下3种数据(字段)了:1,该分组字段本身;2,每一组中的原始数据行数: count(*)就可以得到!3,每一组中“原始数字字段”的“统计信息”(又叫聚合信息),只包括如下几个:avg(字段名) :求得该组的平均值;max(字段名) :求得该组的最大值;min(字段名) :求得该组的最小值;sum(字段名) :求得该组的总和值;

6

6.对其按“品牌”进行分组:

7

7.结果为:

8

8.可见,分组之后,我们要有这个观念:我的眼里只有组(信息); 实际上,对一个表,如果不进行分组(group 操作),就可以将整个表当做“一个组”来进行信息统计:

9

9.结果为:

10

10.having子句having子句跟where的使用方法和作用是一样的!唯一区别是为了区别where:其实是where只能跟着from后,having只能跟着group by后。即:having是对一个表的数据进行了分组之后,对“组信息”进行相应 条件筛选;可见:having筛选时,只能根据select子句中可出现的字段(数据)来进行条件设定。 举例:找出平均价超过6000的品牌数据:

11

11.结果为:

12

12.也可以写成:

13

13.结果:

14

14.order by 子句形式:order  by  字段名1 【Asc | Desc】, 字段名2 【Asc | Desc】,......说明:1, 可以设定多个字段进行排序,但后面字段的排序,都是在前一字段 排序 值“相等”的情况下,才是有意义的。2,Asc:正序,Desc 倒序 举例:

15

15.再来一个:

推荐信息