MYSQL数据操作语言DML之数据查找select

MYSQL数据操作语言DML之数据查找select

SQL规范

查询表基本数据

select 标识哪些列
from   标识表
//查询所有的列
select * 
from 表名
//查询指定的列
select id as 别名,name 别名 //起别名时as是可以省略的,如果别名中有空格使用【"别 名"】
from 表名  

去除查询重复行

select distinct 标识列  //distinct是对所有的列名组合进行去重
from 表名

NULL值参与运算时,运算结果都为NULL

select id,price*2 ”别名“ //如果参与运算的price是NULL则结果也是NULL,一般价格是0而不是NULLL
from 表名

如果表名、函数等出现与mysql系统关键字一样需要使用着重号

select * from `order` //如取了表名为order需要用着重号,因为order也是关键字

查询时增加一个固定常量字段列

select ”高中“ high_school ,【其他列】
from 表名

查询过滤

select 标识列
from   表名
where  条件

常见条件
1. is not null //是否不为空
2. least(a,b...) //返回所有参数重中小值,有NULL则返回NULL
3. greatest(a,b...) //返回所有参数中最大值,有NULL则返回NULL
4. between a and b   //返回两个值之间
5. isnull //判断是否为空
6. in(a,b...) //属于运算符,还有not in(a,b...)
7. like //模糊匹配,常用通配符:【%】可以匹配0个或多个字符,【_】只能匹配一个字符
8. regexp a 和 rlike a 正则表达式运算符
9. not或!、and&&or||xor(异或)

排序

select 标识列
from   表名
where  条件
order by 列名 【降序:desc、升序:asc(默认)//多列排序需要前面列出现值一样才会进行排序

分页

select 标识列
from   表名
limit 偏移量,行数 //如limit 20,10:表示显示第21行到30行的数据

多表查询

在这里插入图片描述

select 表名.列名,表名.列名 //如果出现的列名两张表都有则需要指出表名
from1 别名,表2 别名
where 条件 //如相同:表1.name = 表2.name,连接n个表需要n-1条件,相当于内连接

select 表名1.列名,表名2.列名 
from1 别名1,表1 别名2  //相同的一张表取不同别名来形成虚拟的两张表
where 条件 //如相同:别名1.name = 别名2.name

内连接:结果集中不包含一个表与另外一个表不匹配的行【joinon 条件】
select 标识列 
from1
join2 on 连接条件 //表示内连接,如相同:表1.name = 表2.name
where 其他条件

外连接:结果集包含一个表与另外一个表不匹配的行,返回左或右中不满足的条件行,成为左外连接或右外连接
select 标识列 
from1
left/right join2 on 连接条件 //left表示左外连接,right表示右外连接
where 其他条件

union 和union all :都表示合并结果集,union all直接合并,union会去重,所以常用union all而不是union

select 标识列1 
from1
unionall// 两个查询的标识列相同。所以可以搭配实现上面的7个外连接
select 标识列1 
from1

子查询

查询价格高于电脑的商品
select 标识列
from 表名
where price >(
	select price 
	from 表名
	where name = “电脑”
)

分组查询

select avg(salary)
from 员工表
group by 部门id

常见函数

函数名意义
abs(x)返回x的绝对值
sign(x)x正数返回1,负数返回-1,0返回0
least(a,b…)返回参数中的最小值
greatest(a,b…)返回参数中的最大值
rand(x)返回0-1随机值
round(x)返回四舍五入后的值
concat(a,b…)返回字符串a.b…相连接
nullif(a,b)比较两个字符串,相同返回null,否则返回a
avg(x)返回平均值
sum(x)返回总和
max(x)返回最大值
min(x)返回最小值
count()返回数据条数,建议使用count(*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值