zoukankan      html  css  js  c++  java
  • Oracle_2 随便写写

    select * from emp natural join dept order by DEPTNO DESC ; --自然查询 natural join 可以自己识别出两表中 相同的字段进行关联。
    select * from emp e,dept d where e.deptno=d.deptno;

    select * from dept d left join emp e on e.deptno=d.deptno; --left join 左连接
    select * from dept d left join emp e where e.deptno=d.deptno; --left join 不可以和where进行使用 否则提示缺少关键字 on, 需要 left join on 这是一个完整的语法。

    select * from emp e right join dept d on e.deptno=d.deptno; --right join 右链接


    select count(d.dname) from emp e right join dept d on e.deptno=d.deptno;
    select * from emp e right join dept d on e.deptno=d.deptno;

    select count(*) from emp; --count(求记录数)
    select min(sal) Minsal ,max(sal) Maxsal ,avg(sal) Avgsal ,sum(sal) Samsal from emp where deptno=20; -- min 求最小值 max 求最大值 avg 求平均值 sum 求总和


    select deptno,count(deptno) from emp group by Deptno;

    select count(deptno) from emp where deptno=10;

    select * from dept;

    select count(d.deptno),d.deptno from dept d left join emp e on d.deptno=e.deptno where d.deptno=20 group by d.deptno;


    select count(job),d.deptno,d.dname from emp e right join dept d on d.deptno=e.deptno group by d.deptno,d.dname ,e.job order by d.deptno desc;

    select count(job),d.deptno,e.job from emp e right join dept d on d.deptno=e.deptno group by d.deptno ,e.job order by d.deptno desc;

    select count(*), job, deptno from emp group by deptno, job order by deptno; --count* 会以job来统计记录还是以deptno来统计记录。


    select * from emp;
    select * from dept;
    select * from emp e right join dept d on e.deptno=d.deptno;

    --查询平均工资大于2000的部门
    select avg(sal) from emp group by deptno having avg(sal)>2000;
    select count(empno) from emp e right join dept d on d.deptno=e.deptno group by d.deptno;
    select count(d.deptno) from emp e right join dept d on d.deptno=e.deptno group by d.deptno;

    select sum(sal),job from emp where job!='SALESMAN' and sal>2000 group by job, sal order by sal ;
    select sum(sal) abc ,job from emp group by job, sal having job!='SALESMAN' and sal>2000 order by sum(sal) ;


    select count(*), job, deptno from emp group by deptno, job order by deptno; --count* 会以job来统计记录还是以deptno来统计记录。

    select e.sal
    from emp e
    where e.sal > (select sal from emp e1 where empno = 7654);


    --查询比7654工资高 且跟7788工作职位相同。

    select *
    from emp t
    where t.sal > (select sal from emp e where e.empno = 7654)
    and t.job = (select job from emp r where r.empno = 7788);


    select e.empno ,e.ename,e.job
    from emp e
    where e.sal>(select sal from emp q where q.empno=7654)
    and e.job=(select job from emp w where w.empno=7788);




    select a.sal,a.ename,a.deptno from emp a where sal in (select min(sal) from emp e group by e.deptno) ;

    select * from emp w,
    (select min(e.sal) eoo,e.deptno from emp e group by e.deptno) e
    where w.sal=e.eoo and w.deptno=e.deptno;



    select w.ename,w.sal 工资 from emp w where w.sal in(select min(e.sal) from emp e group by e.deptno);


    select w.* from emp w ,( select min(e.sal) ttt from emp e group by e.deptno ) e where w.sal=e.ttt;



    select d.deptno from dept d where d.deptno in(select e.deptno from emp e group by deptno); --group by 比distinct 性能要高, group by只需要读取分组的记录, distinct需要读取所有记录
    select d.deptno from dept d where d.deptno not in(select distinct e.deptno from emp e );


    select * from dept d where exists(select * from emp e where e.deptno=d.deptno);

    --union 查询集合去并集时可以去除重复的数据
    select * from emp where emp.sal>1000
    union
    select * from emp where emp.sal>2000;

    select * from emp where emp.sal>1000 or emp.sal>2000;

    --union all 查询集合去并集时 不会去除重复的数据
    select * from emp where emp.sal>1000
    union all
    select * from emp where emp.sal>2000;


    select empno,ename,job from emp where empno=7788
    union
    select empno,ename,job from emp where empno=7654;

    --并集时 要合并的列名可以不一致,但列名的类型必须一致 并且union时 两条语句的列数必须要保持一致
    select empno,job , ename from emp where empno=7788
    union
    select empno,ename,job from emp where empno=7654



    create table myemp as select * from emp;

    select * from myemp for update;

    select sysdate from dual;

    insert into myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values(1234,'LiMing','Sport',7788,to_date('1999-01-01','YYYY-MM-DD'),2000,200,30) --增 insert into 表名(列1,列2) values(值1,值2)

    update myemp set empno =1235,ename='MingLi123' ,Job='Book' where Empno=1235 --改 update 表名 set 列名= 值 where 条件

    delete from myemp where empno=1235 --删除 delete from 表名 where条件 Oracle可以省略from,但mysql中必须写from,并且Oracle可以定义别名, mysql删除时表不能定义别名。

    --事务对 增删改 都生效
    commit;--事务提交 commit
    rollback;--事务未提交时可进行回滚,已提交则不能回滚 rollback


    create table person(
    pid number,
    pname varchar2(10),
    birthday date
    )

    insert into person values(001,'张三',to_date('2020/01/01 12:59','yyyy/mm/dd hh:mi'),18)
    insert into person values(001,'张三',to_date('2020/01/01 12:59','yyyy/mm/dd hh:mi'),1888)

    select * from person;

    drop table person;


    alter table person add(age number); --现有表中添加 列 add

    alter table person modify(age number(6,2))--现有表中的列进行修改 列的类型 modify


    --截断表 会直接删除表中的数据, 不会保留执行提交或回滚的操作,直接删除。 delete删除时会进行提示和保留提交和回滚的操作。
    truncate table person;


    drop table person;
    -- 定义主键 primary key 主键约束

    create table person(
    pid number primary key,
    pname varchar2(10),
    birthday date
    )

    insert into person values( '','张三',to_date('2020/01/01 12:59','yyyy/mm/dd hh:mi'))
    --自定义主键名称 constraint 约束
    create table person(
    pid number ,
    pname varchar2(10),
    birthday date,
    constraint person_person_id_pk primary key(pid)
    )
    --自定义多个约束的名称 constraints

    -- 唯一约束 unique
    drop table person;
    create table person(
    pid number ,
    pname varchar2(10) ,
    birthday date null,
    constraint person_person_id_pk primary key(pid) ,
    constraint person_pname_uk unique(pname)
    )

    insert into person values( 002,'2',to_date('2020/01/01 12:59','yyyy/mm/dd hh:mi'))

    select * from person;

    --非空约束 not null

    drop table person;
    create table person(
    pid number ,
    pname varchar2(10) not null,
    birthday date null,
    constraint person_person_id_pk primary key(pid)
    )

    insert into person values( 001,'1',to_date('2020/01/01 12:59','yyyy/mm/dd hh:mi'))

    select * from person;

    -- 唯一约束 unique
    drop table person;
    create table person(
    pid number ,
    pname varchar2(10) unique,
    birthday date null,
    constraint person_person_id_pk primary key(pid)
    )

    insert into person values( 002,'2',to_date('2020/01/01 12:59','yyyy/mm/dd hh:mi'))

    select * from person;


    --外键约束 foreign key references

    drop table orders;
    --订单表
    create table orders(
    order_id number(4),
    order_price number(6,2),
    order_time date,
    constraint orders_order_id primary key(order_id)
    );

    drop table order_detail;
    --订单明细表
    create table order_detail(
    detail_id number(4),
    item_name varchar2(10),
    price number(6,2),
    quantity number(4),
    order_id number(4),
    constraint order_detail_detail_id_pk primary key(detail_id),
    constraint order_detail_order_id_FK foreign key(order_id) references orders (order_id) on delete cascade
    )


    insert into orders values (001,6000,sysdate);
    insert into order_detail values(1000,'iphone',2000,3,001);


    delete from orders;
    drop table orders cascade constraint; --cascade constraint


    select * from order_detail;

    select rownum-1 ,e.* from emp e;


    select rownum rw, a.* from (select * from emp ) a where rownum<6;


    --查询数据
    -- 拿查询结果集当做一个表 然后限定条件
    -- 拿上一个结果集再当一个表 之后使用 rownum的别名进行限定条件使用

    select *from
    (select rownum rw, a.* from (
    select * from emp
    ) a where rownum < 11) b
    where b.rw > 5


    --视图
    grant connect,resource,dba to scott;


    create view view_emp_deptno20 as select * from emp where deptno=20;


    select ename from view_emp_deptno20;
    -- 创建视图 语法:create view 视图名称 as 语句
    --or replace 创建视图或视图存在时直接覆盖现有视图。 创建或覆盖
    --with read only 是不允许视图被修改, 如果表数据有变更,视图查询的数据也会同步。
    create or replace view view_myemp20 as select * from myemp where deptno=20 with read only;

    update view_myemp20 set ENAME='liming' where EMPNO=7369;

    update myemp set ename='史密斯' where empno=7369;
    select * from view_myemp20;

  • 相关阅读:
    Github Https方式push错误”Empty reply from server”
    github克隆项目中的子模块submodule时遇到的问题
    安卓SDK Manager自动管理各种包
    学会爱上iOS自动布局(Auto Layout)
    WWDC2014之iOS使用动态库
    WWDC2014之App Extensions学习笔记
    Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64
    C++类型处理:typedef decltype
    C++引用和指针
    OpenGL入门1.1:窗口
  • 原文地址:https://www.cnblogs.com/java-263/p/14548655.html
Copyright © 2011-2022 走看看