数据查询

1.基本查询

select [all | distinct] 字段或表达式列表 [from子句] [where子句] [group by子句] [having子句] [order by子句] [limit子句];

 [all | distinct]

用于设定所select出来的数据是否允许出现重复行(完全相同的数据行)

all:允许出现——默认不写就是All(允许的)。

distinct:不允许出现——就是所谓的“消除重复行”。

[where子句]

between:

XX  between  值1  and   值2;

含义:字段XX的值在值1和值2之间(含值1和值2),相当于:XX >=值1 and XX<=值2;

in:XX in (1,2,3,4,5)        XX not in ()

Xx = 1 or  xx = 2 or xx =3...

XX  in (值1,值2,......);

含义:XX等于其中所列出的任何一个值都算成立,相当于:

XX = 值1  or XX = 值2  or  XX = 值2

like(模糊查找):

语法形式: XX like  ‘要查找字符’;

% 代表任意个数的任意字符

_代表1个任意字符

'%a' 以a结尾的数据

'a%' 以a开头的数据

'%a%' 含有a的数据

'_a_' 三位且中间字母是a的

'_a' 两位且结尾字母是a的

'a_' 两位且开头字母是a的

[group by分组子句]

形式:group  by  字段1  排序方式1,字段2 排序方式2, ......

分完组后还能用的值:

1.本身依据值(分组字段的值)

2.组内成员的个数,组内某些字段的最大值、最小值、平均值、总和值

其他字段,通常就不能用了

在分组查询中,基本都依赖于一下几个函数(聚合函数,统计函数):

count(*):  统计一组中的数量,通常用“*”做参数

max(字段名):获取该字段中在该组中的最大值。

min(字段名):获取该字段中在该组中的最小值。

sum(字段名):获取该字段中在该组中的总和。

avg(字段名):获取该字段中在该组中的平均值。

group_concat(字段名):获取该分组内的这个字段所有信息,每条逗号分隔

[having子句]

having必须在group by之后

[order by子句]

形式:order  by  排序字段1  [排序方式],  排序字段2  [排序方式], ......

正序: ASC(默认值),可以省略

倒序: DESC  从大到小

[limit子句]

形式:limit   [起始行号start], 要取出的行数num

起始行号start:第一行的行号为0,不写则默认为第一行

2.连接查询:扩充字段

select stu.sno,sc.cno,sc.degree from student stu join score sc on stu.sno=sc.sno;

3.联合查询:添加数据
select sno,sname from student union select tno,tname from teacher;
4.子查询:把查询结果当条件
select sno,cno from score where degree=(select max(degree) from score);

 

原文地址:https://www.cnblogs.com/liangdong/p/10132190.html