①在sql中不等于使用的是<>
eg:select * from emp where deptno <>10;
①模糊匹配 关键字是like _代表一个字符,%代表0个或多个.
eg: select ename from emp where ename like ‘_A%‘;
②sql中的转义字符用 escape 关键字后面跟上‘使用的字符‘(经实验‘‘中字符可以为任意字符,数字和字母也可以,但必须能能是1个字符)
eg:SELECT * FROM student WHERE sname LIKE ‘%\%%‘ ESCAPE ‘\‘ ;
SELECT * FROM student WHERE sname LIKE ‘%$%%‘ ESCAPE ‘$‘ ;
③使用order by排序时 默认是按升序排列 asc 可以不写,降序是用desc.
使用组合时,是先按使用排序的第一个字段排序,第一个字段顺序拍好后,内部的顺序再用后面的字段排序规则
eg:select ename,sal,deptno from emp order by deptno asc,ename desc;
上面的例子先按deptno的升序拍好后,在同一个deptno内的数据按ename的降序排列
所以,一定要考虑好排序的主字段是哪个!!!
④ 一个简单的综合sql语句
select ename,sal*12 年薪 from emp
where ename not like ‘_A%‘ and sal > 800
order by sal desc;
⑤字符函数:substr(字段名,开始的字符位置,截取的字符段长度) 字符串的下标是从1开始的 经实验起始字段写0和1结果都是从第一个字符开始的
eg: select substr(ename,0,2 ) from emp;
select substr(ename,1,2 ) from emp;
上面两句的执行结果是一样的
⑥数字函数:Ⅰ round(m)四舍五入到整数; round(m,n) n是正数,代表小数的位数 ,n是负数,则是正数的四舍五入
select round(23.456) from dual;//结果23
select round(23.456,2)from dual;//结果23.46
select round(23.456,-1)from dual;//结果 20
select round(123.456,-2)from dual;//结果100
Ⅱ trunc(m,n) 截断 n是正数时是小数点后保留的位数,是负数时,该位为0;
select trunc(23.456,1)from dual;//结果23.4
select trunc(23.456,-1)from dual;//结果-1
★⑦转换函数:to_char( 要转换的数据,格式) 在日期格式转换中,hh24是24小时制,hh是12小时制 分钟用mi
eg:select to_char(sysdate ,‘yyyy-mm-dd hh24:mi:ss‘) from dual;输出结果:2014-09-13 15:13:17
select to_char(sysdate ,‘yyyy-mm-dd hh:mi:ss‘) from dual; 输出结果:2014-09-13 03:13:17
★⑧聚合函数:sum(),avg(),count(),max(),min()
count(1)和count(*)都是查询表中总共多少条记录数.推荐使用count(1)说效率快,自己没做实验,
count(字段名) 代表本字段非空的记录数.
count(distinct 字段名) 去掉重复后本字段的记录数
eg:select count(1) from emp;//结果 14 说明表中总共14条记录
select count(*) from emp;//结果 14 说明表中总共14条记录
select count(comm) from emp;//结果 4 说明comm列非空的是4条记录
select count(deptno) from emp;//结果14 说明表中deptno非空的记录数是14条
select count(distinct deptno) from emp;//结果 3 说明表中不重复的detpno记录是3