资源描述
简单的 sql 语句
查询语句中数据量少的放在后面,过滤条件多的也放在后面 。
Select 中避免使用 * 。
含有任何null值的数学表达式最后的值都为null.
select ename||' ''s manager is'||mgr from emp;
(红色的两个单引号表示为一个单引号)
SMITH 's manager is7902.
在select 语句中使用单引号,必须将一个单引号替换为两个单引号。
select distinct mgr from emp;
消除重复的数据。
select * from emp where ename = 'KING';
单引号中的字符串内容是要区分大小写的
条件判断符号 : = , > , < , <= ,>= ,<>
对字符串也可以使用不等值比较,字符串进比较大小的时候,首先会比较第一个字符,如果第一个字符就已经能够判断大小,就不再继续向下比较了,如果第一个字符相等,才回比较第二个字符,以此类推。(字符串比较大小写是敏感的,同时也不是比较的整个字符串的长度)
select ename from emp where ename > 'BCF';
select e.sal from emp e where e.sal between 800 and 2500;
使用between ..... and 的时候,所查询的结果包含了最大值和最小值即为 >= and <=。
IN 语句,可用于筛选某些数值中的一个,也可用于某些字符串的操作。
select e.sal from emp e where e.sal between 800 and 2500;
select e.ename,e.job from emp e where e.ename in('SMITH','KING','ADAMS');
处理日期,oracle的默认日起格式为”DD-MON-RR”,(两位的日期-月缩写(对中文来说是全称)-两位的年份)。
select e.ename from emp e where e.hiredate > '20-2月-81';
另外我们如果想要用特定的日期格式,可以用to_date()函数。这个函数有两个参数,第一个参数为一个自定义的日期字符串,第二个参数为指定的这个字符串的日期格式。
select to_date('1989-11-07','YYYY-mm-DD') from dual;
这个方法显示的是系统日期格式,这里你即使定义的格式为YYYY-mm-DD,但是你的系统格式是YY/MM/DD,那显示的时间就是89/11/07.所以要和系统格式相对应.
还可以用to_char()方法来把日期表示为自定义的任意格式。
如下图:
格式元素
含义
YYYY、YY
代表四位、两位数字的年份
MM
用数字表示的月份
MON
月份的缩写、对中文月份来说就是全称
DD
数字表示的日
DY
星期的缩写,对中文的星期来说就是全称
HH24,HH12
12小时或者24小时进制下的时间
MI
分钟数
SS
秒数
select to_char(sysdate,'yyyy-mm-dd hh-mi-ss') from dual;
格式控制的参数大小写无所谓,默认的是12小时制的。hh12,hh24.
查询条件的组合:AND OR NOT
select ename, sal from emp where deptno = 10 and sal > 1000;
select ename, job , deptno from emp where deptno = 10 or job = ‘CLERK
select ename, sal from emp where sal not in (800, 1500, 2000);
模糊查询:关键字LIKE。LIKE通常和通配符一起使用,通配符有两个:’%’(表示零个或多个字符,’_’(表示一个字符)。
select e.ename from emp e where e.ename LIKE '%A%';
select e.ename from emp e where e.ename LIKE '_A%';
当我们要查询名字中含有’%’等通配符的时候,要用到转义字符。
select e.ename from emp e where e.ename LIKE'%\%A' escape '\';
escape关键字,设置转移字符。上面的例子中的转义字符为’\’.
排序:order by (默认方式是按照升序来排列的)asc(升序) desc(降序)
select e.deptno,e.ename,e.sal from emp e order by e.deptno asc,e.sal desc;
SQL中的函数Lower()将字符串转换为小写,upper()将字符串转化为大写,substr()截取字符串。
select lower(ename) from emp;
select ename from emp where lower(ename) like '%a%';
select ename from emp where upper(ename) like '%A%';
--将所有雇员中名字含有A或者a的人全部找出来。
select substr(ename,2,3) from emp;
Chr()求一个与某个ASCII码数值所对应的字符。
select Chr(66) from dual;
ASCII()求某个字符所对应的ASCII码
select ascii('A') from dual;
round(),对参数进行四舍五入的操作
select round(23.432) from dual;
select round(23.432,2) from dual; -- 还可以指定小数点后几位
select round(233.3234,-1) from dual; --还可以通过负数来为小数点前面几位进行四舍五入
to_char() 用于将数字或者日期转换为特定的字符串。他有两个参数,第一个参数为需要进行转换的日期或者数字,第二个参数为特定格式的转换格式。如下表:
控制符
含义
9
代表一位数字,如果该位没有数字则不进行显示,但对于小数点后面的部分仍会强制显示
0
代表一位数字,如果该位没有数字则强制显示0
$
显示美元符号
L
显示本地货币符号
.
显示小数点
,
显示千分位符号
select to_char(sal,'$00,999.999') ,to_char(sal,'L00,999.999') from emp ;
to_number()将特定格式的字符串转换成数字格式,这个函数有两个参数,第一个参数为一个自定义的数字字符串,第二参数指定这个数字字符串的格式。
Select ename ,sal from emp where sal > to_number('$1,250,00','$99,999,99');
nvl()用来处理空值,这个函数有两个参数,第一个为字段名或表达式,如果这个参数的值为null,那么就返回第二个参数的值,否则返回第一个参数的值。
select ename, sal*12+nvl(comm,100) from emp;
展开阅读全文