select简单使用

语法

先大致看一下,后面都会讲,distinct用来去重,from 指明表名,where语句则用来控制查询条件,order by则用来对结果进行升序/降序排序,limit则用来分页。

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

注意:mysql不区分大小写,我这里是在命令行敲打的,大多数直接就干脆写成一行了,为了方便观察单词,采用小写。具体使用包包按照要求就行。

基本查询

1、全列查询

语法:select * from 表名

2、指定列查询

语法select 字段1,字段2,字段3... from 表名  (各个字段之间以逗号分隔,注意这里的逗号是英文那个,不是中文)

3、查询结果重命名

语法:select 字段1 新名,字段2 新名,字段3 新名... from 表名  (旧的字段与新名之间用空格隔开)

4、去重查询

语法:select distinct 字段1,字段2.... from 表名 (distinct后面跟几个字段,就表明这几个字段必须相同才会去重)

如果是select distinct * from 表名,则表示表中必须所有字段全部相同,才会去重,只要有一个字段不同,就不会去重。

where条件

我们可以通过where语句,来对查询的条件进行一些限制,比如要查询成绩大于90,小于100的所有人,此时就可以通过where语句,进行条件筛选。

运算符

运算符 说明
>, >=, <, <=
大于,大于等于,小于,小于等于
=
等于,NULL不参与计算
<=>
等于,NULL参与计算
!= 不等于
between a and b 范围属于[a,b],也就是a<= value <=b
in (a,b,c,d......) 只要结果是括号内的范围中的其中一个,条件就成立
is NULL 用来判断是否为NULL
is not NULL 判断是否不为NULL
like 模糊匹配,%表示0或多个任意字符, _表示一个任意字符。比如姓孙的:'孙%',         孙某:'孙_'

逻辑运算符

运算符 说明
and and两边必须同时满足条件
or a or b ,满足ab其中之一就可以
not 用来取相反结果

这里来举个例子来进行讲解,先看这么一个表:

例1

筛选英语不及格的同学,以及对应的英语成绩:

例2
筛选语文成绩在80-90之间的同学,以及对应的语文成绩

与逻辑运算符配合使用案例

例1(含in(...)的使用)

筛选数学成绩是58,59,98,99其中之一的同学以及其数学成绩

这里我们可以采用or,进行连接:

也可以采用上面的运算符,in(a,b,c,d...)

例2(like模糊匹配的使用)

筛选出孙某同学,以及他的语文、数学成绩

筛选出姓孙的同学,以及对应的总分

例3(where后面也可以进行字段比较)

筛选出语文大于数学成绩的同学,以及对应的语文、数学成绩

例4(and与not)

筛选出语文成绩大于80,并且不姓孙的同学及其成绩

例5(括号表示一整个大的条件)

如果是孙某,直接筛选,其它人则满足:总分大于200,并且语文小于数学,并且英语大于80

order by对结果排序

前面查询出来的结果都是无序的,我们可以通过order语句,对结果进行排序,这里需要注意,NULL值在里面是最小值。

升序

order by xxx asc:根据xxx进行升序排序

例1:

还是上面那张表,根据语文成绩进行升序排序

例2:

针对总分进行升序显示:

降序

order by xxx desc:根据xxx,对结果进行降序

用法与升序相同,只不过讲asc变成desc了。这里sql语句默认如果不指明的话,是默认asc的。

查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
例(与where语句配合使用)

查询出姓曹的,以及姓孙的数学成绩,并且按照数学降序排序

limit筛选分页结果

有时候我们只想一个页面显示10条信息,则用到了limit分页,此时再跳到章节开始,可以看到最后的limit。

建议:对未知表进行查询时,最好加一条 LIMIT 1 ,避免因为表中数据过大,查询全表数据导致数据库卡死

注意一点,limit起始下标从0开始

常见有三种用法,如下:我们先来看一张完整的表,以此来实验

limit n

从0开始,筛选n条结果。

limit s,n

从s开始,显示n条结果

limit n offset s

与limit s,n意义相同,只不过相比于limit s,n,更加习惯于用这个罢了。

可以看到与上面结果相同。

讲这张表按照id降序,分成3页,每页显示3条记录

至此,一张表被分成了三页,每页3条记录。

基本单表查询结束,可以配合各种场景,利用where、order by、distinct、limit根据需求配合灵活使用——爱你的包包。

猜你喜欢

转载自blog.csdn.net/qq_60192898/article/details/134995185