mysql查询数据

Ø  基本格式

Select 属性列表

From 表名和视图名列表

[where 条件表达式1]

[group by 属性名1 [having条件表达式2]]

[order by 属性名2 [asc|desc]]

 

属性列表:*代表选择全部属性,不然就挨个选择,中间用‘,‘隔开。如果查看的时候想换一个名字输出属性名,可以用as ‘自定义名。例如:id as ’编号

表名和视图名列表:选择表,不同的表用‘,’隔开。如果后面还会用到表名,可以临时起一个简单的名称,例如:select * fromstudent s wheres.id=1;

[where 条件表达式1]:可以选择查询条件,满足条件才会输出,不同的条件可以用and/or连接。

[group by 属性名1 [having条件表达式2]]:可以分组,对于一个字段,值相同的将分为一组,经常与count(),max(),min()等函数一同使用。

Having 表达式也可以限定查询条件,而且是分组之后的查询条件,比where多了分组的内容。

[order by 属性名2 [asc|desc]]:对于输出进行排序,asc是正序,desc是逆序,默认为asc

 

 

查询条件

符号或者关键字

比较

=,<,<=,>,>=,!=,<>,!>,!<

指定范围

Between and,not between and

指定集合

In,not in

匹配字符

Like,not like

是否为空值

Is null,is not null

多个查询条件

And,or

 

Ø  带in的关键字查询

[not] in(元素1,元素2)

例:select * from employee where id in(1001,1002,.1003);

 

Ø  带between and的范围查询

[not] between 取值1 and 取值2

例:select * from employee where age between 15 and 25;

 

Ø  带like的字符匹配查询

[not] like ‘字符串’

%代表任意长度字符串,_代表单个字符串。b%k可以查询到 bk,bck

Bcdk break等,b_k只能查询到bck,bdk,bok等三个字符的。

例:select * from employee where name like ‘aric%’;

 

Ø  查询空值

Is [not] null;

select * from employee where id is null;

 

Ø  带有and|or

条件表达式1 and 条件表达2

select * from employee where id i=1 and age>25;

 

Ø  查询结果不重复

Select distinct 属性名

例:select distinct age from employee ;

这样同一个年龄值的只会出现第一个,其他隐藏。

 

Ø  查询结果排序

select * from employee   order by age [asc|desc];

 

Ø  分组查询

groupby 属性名1 [having 条件表达式2];

select* from employee group by sex;

--group_concat():该函数能显示每个分组的全部字段。

Selectsex, group_concat() from employee group by sex;

Count():统计每个分组里的数量

Selectsex ,count() from employee group by sex;

 

Ø  Limit限制查询数量

Select* from employee limit 2;

表示只查询两行。

 

Select* from employee limit 3 2;

表示从第三行开始,查询两行

 

Ø  集合函数

Count():查询有多少行

sum():某个字段的总和

avg():某个字段的平均数咯。

max():某个字段的最大值
min():最小值

 

~      连接查询

Ø  内连接

字段相同时

Select * from employee e,department dwhere e.id=d.id;

 

Ø  外连接

Select 属性列表

         From表1 left|right join 表2

         On表1.属性=表2.属性;

 

~      子查询

Ø  带in的子查询

Select * from employee where d_id in

         (selectid from department where id>5);

简单说就是in后面的元素可以用查询替代

 

Ø  带比较符的查询

Select * from students where socre>(selectscore form table01 where leve=1)

比较符后面的也可以跟子查询

 

Ø  带exists的子查询

Select * from students where exists (selectscore form table01 where leve=1);

就是说内层查询,没查询到,就不继续,查询到了,才经行外层查询,但内外数据没有依赖关系。

 

Ø  带any关键字

Select * from students where score>any(selectscore form table01 where leve=1);

Score 满足any其中的任意一个条件就可以了。

Ø  带all关键字

Select * from students where score>all(selectscore form table01 where leve=1);

Score 满足all的所有条件才能被查询到。

~      合并查询结果

Select 语句1

Union|union all

Select 语句2

Union|union all

Select 语句N

 

可以把不同的查询结果合并,但字段名要一致,、

union会去掉重复部分,union all不会去掉重复部分。

 

~      正则表达式查询

属性名regexp ‘正则表达式’

Select * from employ where name regexp ‘正则表达式’;

正则表达式

正则表达式的模式字符

含义

^

匹配字符串开始的部分

$

匹配字符串结束的部分

.

代表字符串中的任意一个字符,包括回车和换行

[字符集合]

匹配’字符集合’中的任意一个

[^字符集和]

匹配除了’字符集合’中的任意一个

S1|S2|S3

匹配S1,S2,S3中的任意一个字符

*

代表多个该符号之前的字符,包括0个和1个

+

代表多个该符号之前的字符,包括1个

字符串{N}

字符串出现N次

字符串{M,N}

字符串至少出现M次,至多出现N次

 

举例:

 

查询字符或字符串开头的记录

^L’

Lucy Lily

^aaa’

Aaa aaabd

查询字符或字符串结尾的记录

‘c$

Aric eric

‘aaa$

aaa dadaaa

用‘.’来代替字符串中的任意部分

‘^L..y$’

Lucy Lily

匹配指定字符串中的任意一个字符

[ceo]

Aric eric jack lucy tom abc12

[0-9]

Abd12 ad321

[a-c0-9]

Aric eric jack lucy aaa dadaaa ‘’aaabd abc12 ad321

匹配指定字符以外的

[^a-w0-9]

Lucy Lily

匹配指定字符串

ic

Aric eric

使用*和+来匹配多个字符

‘a*c’

Aric eric jack lucy abc12

‘a+c’

jack

使用{M}或者{M,N}来指定字符串连续出现次数

‘ab{1,3}

aaabd abc12 ababb

‘a{3}

aaa dadaaa aaabd

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值