SQL查询语句

本文详细介绍了SQL查询语句的使用,包括不区分大小写的设置、列别名的设定、计算方法、条件查询以及单行处理函数。还讨论了如何进行逻辑运算、模糊查询、分组函数和ORDER BY子句的运用。同时,提到了NULL值的处理和CASE语句在复杂查询中的应用。此外,文章还涵盖了分组函数和HAVING子句的正确使用方式,强调了它们在查询过程中的执行顺序。
摘要由CSDN通过智能技术生成

数据库查询语句

  • 在sql语句中 不区分大小写(linux下需要区分)

  • 以分号结尾(命令行下)

为列起别名的方式

1. select name 姓名 from user
2. select name as 姓名 from user
3. select 姓名=name from user

+ 如果别名中有空格 使用‘’("")包裹 如: select name '姓 名' from user

计算

mysql> select ename '姓名',sal*12 as '年薪' from emp;
+--------+----------+
| 姓名   | 年薪     |
+--------+----------+
| SMITH  |  9600.00 |
| ALLEN  | 19200.00 |
| WARD   | 15000.00 |
+--------+----------+
14 rows in set (0.00 sec)
  • 字符类型不能参加运算

条件查询

select 字段1,字段2 from 表名 where 条件;

= 等于  
<> != 不等于
<= 大于等于
< 大于
>= 小于等于
> 小于
between ... and ... 两值之间(小的值在前)(等价于 <= and >= )
is nullnull值的(not is null 不是null)null 不能使用等号衡量)
and 并且
or 或者
in 包含 (not in不包含)
like 模糊查询 (%一个或多个字符 _一个字符 [ab]a或者b [!ab]([^ab])不是a和b )
and  or 优先级 
and的优先级高
查询工资高于2500 并且部门编号是20或者10
select * from emp where sal>2500 and (deptno = 20 or deptno=10)
这样的SQL在执行逻辑有问题 由于and优先级高于or 使用括号

在这里插入图片描述

 若找出名字含有_的 
 select name from user where name like '%_%' # 不行
 有特殊含义的字符使用 \ 转译
 select name from user where name like '%\_%' # 不行

单行处理函数

一行一行处理

10条记录,处理完还是10条

## lower(column) 转换为小写
select lower(ename) as ename from emp;

## upper(column) 转换为大写
select upper(ename) as ename from emp; 

## substr(column,1,n) 截取 (下标从1开始)
select substr(1,2) as ename from emp; 

## length(column) 长度
select length(ename) as ename from emp; 

## trim(column) 去除空格
select trim(ename) as ename from emp; 

## round(数字,保留几位) 四舍五入(-1保留到十位,0保留到个位,1保留到小数点后一位)
select round(55555.5555,0) ;

## 随机小数  - 100以内的数
select rand();  select round(rand()*100);

## 在sql运算中 如果有null值 结果为null
select ename ,sal ,comm ,(sal+comm)*12 '年薪' from emp;
## ifnull(column,替代值) 如果为null由0代替
select ename ,sal ,comm ,(sal+ifnull(comm,0))*12 '年薪' from emp;

## case column when '满足1' then '则1' when '满足2' then '则2' else column 
select ename ,sal old_salay,job,
(CASE JOB
	WHEN 'MANAGER' THEN
		sal*1.5
	WHEN 'SALESMAN' THEN
		sal*1.1 
	else 
		sal
END) new_salay from emp;

分组函数

select sum(comm),avg(comm),min(comm),max(comm),count(comm) from emp;

-- ×
select * from emp where avg(comm)>100

select 字段
from 表名
where ...
group by ....
having ...
order by ...
## 以上语句执行顺序
## 1.首先执行where语句原始数据过滤
## 2.执行group by进行分组
## 3.执行having对分组数据进行筛选
## 4.执行select选出数据
## 5.执行order by排序
  • 分组函数不能用在where里面
  • 只有分组列列才能进行列查询
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明明吃了饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值