ORACLE——常用函数、语句

null: select * from emp where comm is null;
nvl函数:select sal, comm,sal+nvl(comm,0) as 工资 from emp;
派生列:select empno,ename,'地址不祥' as 地址 from emp;
字符串相加:select ename,sal,ename||sal from emp;
查询日期:select sysdate from dual;
授权:grant select,update,insert on emp to dang;
解权:revoke all on emp from dang;
查询结构:select desc emp;
删除重复项:select distinct job from emp;
修改表名和派生列:select t.* , sal+comm from emp t;
范围查询:
select * from emp where empno in(10,20);
select * from emp where empno not in(10,20);
模糊查询,通配符:_:一个字符;%:任意长度字符
select job from emp where job like '_N';
insert into emp value (211231,'tom','make%',null,null,null,null,null);
转义字符,可以将特殊字符作为普通字符处理,查询job中带有/的用户信息:select * from emp where job like '%/%' escape '/';
插入日期:insert into emp 
---to_date把字符转转换成日期类型需要两个参数,一是被转的字符串,二是要转换成的格式.
把日期转换为字符串:
select ename,to_char(hiredate,'yyyy"年"mm"月"dd"日"') from emp;
select * from emp where hiredate<to_char('1981-1-1','yyyy-mm-dd');
取余:select mod (sal,2) from emp;
给系统日期加3个月:select add_months(sysdate,3) from dual;

全部变大写、小写,首字母大写:select upper('wewer'),lower('enter'),initcapz('he she') from dual;
ename列全部变小写:select lower(ename) from emp;
字符串拼接:selecte concat('hello','world') from dual;
截取第二个开始往后两个字符:select substr('234567890',2,2) from dual;
@在哪个位置:select instr('aswo@','wo@') from dual;
往左补18个字符:select lpad('sd',20,'*') from dual
往右补18个字符:select rpad('sd',20,'*') from dual
把指定字符串从左右两边去掉:select trim('h' from 'hhhherhhhwwehhh') from dual;结果:erhhhww
替换:select replace('18396868677','8','*') from dual;
小数部分去掉,:select mod(trunc(12.6),4) from dual;
数据类型转换:select to_char(45.232,'$999.99') from dual;$45.23
select to_number('324') from dual;324
char2[20]:可变长度的数据类型
plan_type为1则变为*否则为空:select plan_name,decode(plan_type,'1','*') as 领导交办 from t;
select plan_name,decode(plan_type,'2','*') as 临时任务 from t;

--创建一查询,显示与Blake在同一部门工作的雇员的姓名和受雇日期,--但是Blake不包含在内。select ename,hiredate from emp where deptno in (select deptno from emp where ename='BLAKE') and ename <> 'BLAKE';
--显示位置在Dallas的部门内的雇员姓名、编号以及工作
SELECT * FROM EMP WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE LOC='DALLAS');
--显示被King直接管理的雇员的姓名以及工资。
SELECT A.* FROM EMP A,EMP B WHERE A.MGR=B.EMPNO AND B.ENAME='KING';
select * from emp where mgr=(select empno from emp where ename='KING');
--创建一查询,显示能获得与Scott一样工资和奖金的其他雇员的姓名、受雇日期以及工资
SELECT * FROM EMP WHERE (SAL,NVL(COMM,0))=(SELECT SAL,NVL(COMM,0) FROM EMP WHERE ENAME='SCOTT');

猜你喜欢

转载自blog.csdn.net/u010622242/article/details/81078136