数据库查询语句
-
在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 null 是null值的(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里面
- 只有分组列列才能进行列查询