目录
1.条件查询:
不是将表中的所有数据都查出来,查出来符合条件的;
格式:select 字段1,字段2,....from表名where 条件;
= | 等于 | select empno,ename,sal from emp where sal=3000; |
<>或者!= | 不等于 | select empno,ename,sal from emp where sal<>3000; |
< | 小于 | select empno,ename,sal from emp where sal<3000; |
<= | 小于等于 | select empno,ename,sal from emp where sal<=3000; |
> | 大于 | select empno,ename,sal from emp where sal>3000; |
>= | 大于等于 | select empno,ename,sal from emp where sal>=3000; |
between...and...或者>=and<= | 两个值之间 | select empno,ename,sal from emp where sal>=3000; select empno,ename,sal from emp where sal>=3000; |
is null,is not null | 空,非空 | select empno,ename,sal,comm from where comm is not null; |
and | 并且 | ...where job=’MANGER’ and sal > 1000; |
or | 或者 | ...where job=’MANGER’or or job=’SALESMAN’; |
in,not in | 包含 | ...while job in(‘MANGER’,’SALESMAN’); |
like | 模糊查询 | select enamefrom empwhere ename like ‘%O%’;名字含有 select enamefrom empwhere ename like ‘O%’;以O开始 select enamefrom empwhere ename like ‘%O’;以O结尾 select enamefrom empwhere ename like ‘_O%’;第二个字母O select enamefrom empwhere ename like ‘%O’;第三个字母O select enamefrom empwhere ename like ‘%\_%’;含有 _的名字 |
注意:
1. 数据库中null不能使用等号衡量,需要使用is null,不能使用等号
2. and和or同时出出现,and的优先级比较高,所以可以加小括号
3. in 不是一个区间,而是一个具体的值
4.like支持%和_匹配,前者指的是匹配任意多个字符,后者是任意一个字符
5.找出名字中含有特殊含义的数据,加转义字符“\”
2.单字段排序(默认是升序):
select ename,sal from emp order by sal asc; 指定升序
select ename,sal from emp order by sal desc; 指定降序
多字段排序:
要求:当薪资一样,按照名字的升序排列
注意:排序前面的起主导作用,后边的是在相等的时候才会轮到它
select ename,sal from emp order by sal,ename asc;
自定义位置排序:
注意:因为不健壮,所以不建议在开发中书写
select ename sal from emp order by 2;
3.排序综合案例:
要求:找出工资在1250到3000之间的员工信息,要求按照薪资的降序排序
注意:执行顺序不能改变,from where select order by
select ename,sal from emp where sal between 1250 and 3000 order by sal desc;
4.数据处理函数(单行处理函数):
特点:一个输入对应一个输出;和单行相对应的是多行处理函数(多输入对应单输出);
解释:单行为一条记录一条记录的允许输入输出;多行,举例就是求和;
lower | 转换小写 | select lower(ename) as ename from emp; 14输入,14输出 |
upper | 转换大写 | select upper(ename) as ename from emp; 14输入,14输出 |
substr(string,int,int) | 取子串 | select substr(ename,1,4) as ename from emp; 取子串 select ename from emp where substr(ename,1,1)=’a’;首字母为A |
concat | 拼接字符串 | select concat(ename,empno) as result from emp;字符串拼接 |
length | 取长度 | select length(ename) as result from emp; 取字符串的长度 |
trim | 去掉空格 | select *from emp where ename=trim(‘ KING’); |
str_to_date | 字符串转化日期 | 转 |
date_format | 格式化日期 | 转 |
format | 设置千分位 | 转 |
round | 四舍五入 | select round(123.678,0) as result from emp; 0为整数 |
rand() | 生成随机数 | select rand() from emp; |
ifnull | 将null转化具体值 | select ename,(sal+ifnull(comm,0))*12 as yearsal from emp; |
注意:
1. 如果select后边跟着“字面量/字面值”或者“字段名”,当是前者时候,会生成多 行字面值。 select 1000 as result from emp; select ‘abc’ as result from emp;
2.字符串拼接不能用‘+’号,用concat。
3.在round中为0则是保留整数,1则是一位小数,-1则是保留到10位,依次同理
4.只有null参与的数学运算,最终结果就是NULL
5.ifnull当为null的时候,被看做后边的值
5.数据处理函数综合案例:
要求:首字母大写?
select concat(upper(substr(ename,1,1)),substr(ename,2,length(ename)-1)) as result from emp;
要求:100以内的随机数?
select round(rand()*100,0) from emp;
补充:case....when...then....when....then...else..end
要求:当员工的工资岗位是manger的石红,工资上调10%,salesman上调50%。其他正常
select ename,sal as oldsal,job,(case job when ‘MANAGER’ then sal*1.1 when ‘SALESMAN’ then sal*1.5 else sal end)as newsal from emp;