ITPub博客

首页 > 数据库 > Oracle > oracle 常用SQL语句

oracle 常用SQL语句

Oracle 作者:csluowei 时间:2013-04-17 09:25:32 0 删除 编辑
alter user account unlock;

desc <>

select * from <>

select xx,xx from <>

select xx,xx "别名" from <>;

任何含有空值的数学表达式都是空值!

select xx||xx from <>; 字符连接相当于JAVA“+”


select xx||'字符' from <>;

select xx||'das''dasd' from <>;

消除重复的行:select distinct xx from <>;
消除组合重复的行:select distinct xx,xx from <>;


select * from <> where xx = > < <> XX;

select ename,sal from emp where sal between 800 and||or1500;相当于select ename,sal from emp where sal>=800 and||or sal<=1500;


空值的处理:错误的 select ename,sal comm from emp where comm = null;
正确的 select ename,sal comm from emp where comm is null;
select ename,sal comm from emp where comm is not null;


where中的in:select ename,sal comm from emp where sal not in||in (800,1500,2000);
select ename,sal comm from emp where ename in('SMITH','KING','ABC');


select ename,sal hiredate from emp where hiredate > '20-2月-81';


select ename from emp where ename like '%ALL%'
第二个字母 select ename from emp where ename like '_A%'


转义字符:select ename from emp where ename like '%&%%' escape '&';


排序:select * from dept order by deptno desc;降序
select empno ename from emp order by empno asc;升序
按两个字段排序:select empno ename from emp where deptno <> 10 order by empno asc,deptno desc;



function
大写转小写:select lower(ename) from emp;
select ename from emp where lower(ename) like '%_a%';

截字符:select substr(ename,1,3) from emp;

转字符:select chr(65) from dual;
select ascii('A') from dual;

四舍五入:
select round(24.561) from dual; 25
select round(24.561,2) from dual 24.56

转化格式:
数字:select to_char(sal,'$999,999.9999') from emp
日期:select to_char(hiredate,'YYYY-MM-DD HH:MI:SS') from emp
select to_char(hiredate,'YYYY-MM-DD HH24:MI:SS') from emp

to_date: select ename,hiredate from emp where hiredate > to_date('1981-11-17 00:00:00','YYYY-MM-DD HH24:MI:SS' )

to_number:select sal from emp where sal > to_number('$1,250.00','$9,999.99')
nvl: select ename,sal*12 +nvl(comm,0) from emp



max():select max(sal) from emp
min():select min(sal) from emp
avg():select avg(sal) from emp
select to_char(avg(sal),'9999999.99') from emp
sum():select sum(sal) from emp
count():select count(*) from emp


group by: select deptno,avg(sal) from emp group by deptno

join() on ()


自连接:select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr = e2.deptno

CROSS 是迪卡尔积 所得到的结果记录数是相连接的两个表的记录数相乘 cross join
select ename,dname from emp cross join dept (select ename,dname from emp,dept)



等值连接:select ename,dname from emp,dept where emp.deptno = dept.deptno
(select ename,dname from emp join dept on(emp.deptno = dept.deptno))
(select ename,dname from emp join dept using(deptno))

非等值连接:select ename,grade from emp e join salgrade s on(e.sal between s.losal and s.hisal)

select ename,dname,grade from emp e
join dept d on (e.deptno = d.deptno)
join salgrade s on (e.sal between s.losal and s.hisal)
where ename not like '_A%'

外连接:select e1.ename,e2.ename from emp e1 left join emp e2 on (e1.mgr = e2.empno)
select ename,dname from emp e right outer join dept d on (e.deptno = d.deptno)
select ename,dname from emp e full outer join dept d on (e.deptno =d.deptno)


求部门中哪些人的薪水最高:
select ename,sal from emp join (select max(sal) max_sal,deptno from emp group by deptno) t
on (emp.sal = t.max_sal and emp.deptno = t.deptno)

求部门平均薪水等级:select deptno,avg_sal,grade from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on (t.avg_sal between s.losal and s.hisal)

求部门平均的薪水等级:select deptno,avg(grade) from (select deptno,ename,grade from emp join salgrade s on (emp.sal between s.losal and s.hisal)) t group by deptno

雇员中哪些人是经理人:select ename from where empno in (select distinct mgr from emp)
(select distinct ename from (select e1.ename,e1.empno,e2.mgr from emp e1 join emp e2 on(e1.empno = e2.mgr)) t )


不准用组函数,求薪水的最高值(面试题):select distinct sal from emp where sal not in
(select distinct e1.sal from emp e1 join emp e2 on (e1.sal < e2.sal))

求平均薪水最高的部门的部门编号:select deptno,avg_sal from (select deptno,avg(sal) avg_sal from emp group by deptno)
where avg_sal = (select max(avg_sal) from (select deptno,avg(sal) avg_sal from emp group by deptno))

求平均薪水最高的部门的部门名称:
select dname from dept where deptno =(select deptno from (select deptno,avg(sal) avg_sal from emp group by deptno)
where avg_sal = (select max(avg_sal) from (select deptno,avg(sal) avg_sal from emp group by deptno)))


求平均薪水的等级最低的部门的部门名称:
select dname,t1.deptno,grade,avg_sal from (select deptno,grade,avg_sal from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on (t.avg_sal between s.losal and s.hisal)) t1
join dept on (t1.deptno = dept.deptno)
where t1.grade = (
select min(grade) from (select deptno,grade,avg_sal from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on (t.avg_sal between s.losal and s.hisal)))


rownum < 5
select ename from emp where rownum < 5;
rownum 只能写< <= 没有大于,等于


DML语句
insert update delete

备份
create table emp2 as select * from emp


insert
insert into dept2 values (50,'game','bj')
insert into dept2 (deptno,dname) values (60,'game2')
insert into dept2 select * from dept

update
update emp2 set sal = sal*2,ename=ename||'-' where deptno =10

delete
delete from dept2 where deptno < 25


create
create table t(a varchar2(10))
drop
drop table t

alter(修改表结构)
alter table stu modify (addr varchar2(100))
alter table stu drop (addr)
alter table stu add(addr varchar2(100));

删除或者增加 约束条件
alter table stu drop constraint stu_class_fk;
alter table stu add constraint stu_class_fu foreign key (class) references class(id);


transaction 开始于dml语句 结束于rollback或者committ或者ddl语句或者正常断开连接等


varchar2(),char(),long(),date, (number(1) default 1)......
创建表
create table t (a varchar2(10),b varchar2(10))


非空约束not null
唯一约束unique
CHECK约束
主键约束primary key
外键约束foreign key外键约束参考的字段必须是主键


字段约束:
create table stu
(
id number(6), primary key
name varchar2(20) constraint stu_name_nn not null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4) references class(id),
email varchar2(50) unique
);

表级约束:
create table stu
(
id number(6),
name varchar2(20) constraint stu_name_nn not null,
sex number(1),
age number(3),
sdate date,
grade number(2) default 1,
class number(4),
email varchar2(50) ,
constraint stu_class_fk foreign key(class) references class(id),
constraint stu_id_pk primary key (id),
constraint stu_name_email_uni unique(email,name)
) ;



create table class
(
in number(4) primary key,
name varchar2(20) not null
);
<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8639632/viewspace-1116046/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2008-06-10

最新文章