--oracle表的管理

 --创建表
create table users(userName varchar2(20));
--删除表
drop table users;
--创建表
create table student(xh number(4),xm varchar2(20),sex char(2),birthday date,sal number(7,2));
create table classes(classId number(2),cnmae varchar2(40));
--添加一个字段
alter table student add (classId number(2));
--修改字段长度
alter table student modify(xm varchar2(30));
--修改字段类型/或者名字(不能有数据)
alter table student modify(xm char(30));
--删除一个字段 不要删字段
alter table student drop column sal;
--修改表的名字
rename student to stu;
--删除表
drop table student;
--oracle中迷人的日期格式'DD-MON-YY' DD代表日,MON代表月 YY代表年
--变更日期的输入默认格式 临时生效
alter session set nls_date_format='DD-MM-YYYY'
--插入空值
insert into student(xh,xm,sex,birthday) values(1,'aa','女',null);
--查询数据为空的
select * from student where birthday is null;
--查询数据非空
select * from student where birthday is not null;
--把所有的男员工的工资减为原来的一半
update student set sal=sal/2 where sex='男';
--删除数据
--删除所有的记录,表结构还在,写日志,还可以恢复,速度慢
delect from student;
--删除表的结构和数据
drop table student;
--删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快
truncate table student;
--设置保存点
savepoint a;
--回滚到a点
rollback to a;
--///////////////////////////////
commit
--表的查询
--查询表结构
sesc dept;
select * from emp;
select * from dept;
--疯狂复制
create table users(userId varchar2(20),userName varchar2(20),userpasswd varchar2(20));
insert into users values('','aaa','12aaa');
insert into users(userId,userName,userpasswd) select * from users;
--取消重复行 distinct
select distinct deptno,job from emp;
--查询SMITH雇员的deptno,job,sal信息
select deptno,job,sal from emp where ename='SMITH'
--使用算术表达式
--显示所有雇员的年工资
select ename,sal*13 "年工资" from emp;
--加上奖金的
--处理null志使用 nvl判断是否为空值
--如果查询出comm查询出为空值就用0替代,不为零则使用comm值
select ename,sal*13+nvl(comm,0)*13 "年工资" from emp;
--显示工资高于3000的员工
select * from emp where sal>3000;
--查找1982年1.1后入职的员工
select ename,hiredate from emp where hiredate>'1-1-1982';
--显示工资在2000到2500之间的
select * from emp where sal>2000 and sal<2500;
--like操作符号
--%代表任意的0到多个字符
-- _表示任意单个字符
--显示首字母是大写字母人的工资
select ename ,sal from emp where ename like 'S%'
--显示第三个字母为大写O的人的工资
select ename ,sal from emp where ename like '__O%'
--使用in
select * from emp where empno in (7844,234,345);
--显示没有上级的人
select * from emp where mgr is null; --逻辑操作符号
select * from emp where (sal>500 or job='MANAGER') and ename like 'J%'
--薪水从低到高排
select * from emp order by sal;
--工资从高到底
select * from emp order by sal desc;
--按照部门编号排序升序,并按照薪水从高到底(降序)
select * from emp order by deptno ,sal desc;
--按照部门和升序,入职时间降序
select * from emp order by deptno,hiredate ;
--使用列的别名排序 按照年薪升序排列
select ename,sal*12+nvl(comm,0)*12 "年薪" from emp order by "年薪";
---////////////////////////
--表的复杂查询
--分组函数和非分组函数不能放在一起
--查询出最高工资和最低工资
select max(sal),min(sal) from emp;
--查询出最高工资的人名
select ename,sal from emp where sal =(select max(sal) ab from emp);
--显示工资高于平均工资的员工
select * from emp where sal<( select avg(sal) from emp);
--group by 分组
--having 过滤
--显示各个部门的平均工资和最高工资
select avg(sal),max(sal),min(sal),deptno ,job from emp group by deptno,job;
--显示平均工资低于2000的部门号和它的平均工资
select avg(sal),max(sal),deptno from emp group by deptno having avg(sal)>2000;
--总结
--分组函数只能出现在选择列表,having,order by子句中
--在select中使用的顺序group by>having>order by
select avg(sal),max(sal),deptno from emp group by deptno having avg(sal)>2000 order by avg(sal) desc;
--//////////////////////////////////
--多表查询
--显示雇员名,雇员工资,及所在部门名称,要用到emp表和dept表
select ab.ename ,ab.sal ,ac.dname from emp ab,dept ac where ab.deptno=ac.deptno
--如何显示部门号为10的部门名,员工名和工资
select a1.ename,a2.dname,a1.sal from emp a1,dept a2 where a1.deptno=a2.deptno and a1.deptno=10
--显示雇员名,雇员工资,及所在部门的名字,并按照部门排序
select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno=a2.deptno order by a1.deptno;
--自连接
--显示某个员工的上级 'FORD'
select worker.ename "员工",boss.ename "上级" from emp worker ,emp boss where worker.mgr=boss.empno and worker.ename='FORD';
--子查询
--多列子查询
---查询和smith部门号,工作职位一样的员工
select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH')
--如何显示高于自己部门平均工资的员工的信息
--1.各个部门的平均工资
select avg(sal) mysal ,deptno from emp group by deptno
--2.把上面的查询看做是一张子表
select * from emp a2,(select avg(sal) mysal ,deptno from emp group by deptno) a1 where a2.deptno=a1.deptno and a2.sal>a1.mysal;
---////////////////////////////////////////
--oracle分页,一共有三种
--1.rownum分页
select * from emp;
--2.显示rownum
select a1.* ,rownum rn from (select * from emp) a1 ;
--3.分页
--a,指定查询列,只需改变最里面的
--b,排序,也只需修改最里面的查询
select a2.* from (select a1.* ,rownum rn from (select ename,sal from emp order by sal) a1 where rownum<9)a2 where rn>=6;
--/////////////////////
--用查询结果创建一张新表
create table myemp2(id,ename,sal)as select empno,ename,sal from emp;
desc myemp2;
select * from myemp2;
--合并查询
--为了合并多个select语句的结果,可以使用集合操作符号 union ,union all,minus,intersect
--union 改操作符号用于取得两个结果的的并集,当使用该操作符号时会自动去掉结果集合中的重复行
--union 改操作符号和union相似,但不会取消重复行,而且不会排序
--minus 改操作符号,用于取得两个结果集的差集,只会显示在第一个集合的,而不存在第二个集合中的数据

oracle学习笔记(二)表的查询的更多相关文章

  1. Bootstrap学习笔记(二) 表单

    在Bootstrap学习笔记(一) 排版的基础上继续学习Bootstrap的表单,编辑器及head内代码不变. 3-1 基础表单 单中常见的元素主要包括:文本输入框.下拉选择框.单选按钮.复选按钮.文 ...

  2. Oracle学习笔记八 表空间

    表空间 表空间是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间 .   分区表 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下 ...

  3. ofbiz学习笔记01--多表关联查询

    不管做什么项目,肯定会用到多表关联查询数据,从网络查询得知ofbiz有三种多表关联查询方法 实现一:Screem.xml 中的 section 里,加 <action>, 加 get-re ...

  4. Oracle 学习笔记(二)

    一.索引 表的数据是无序的,所以叫堆表(heap table),意思为随机存储数据.因为数据是随机存储的,所以在查询的时候需要全表扫描.索引就是将无序的数据有序化,这样就可以在查询数据的时候 减少数据 ...

  5. Oracle 学习笔记二

    一.oracle通用函数vnl(a,b) 用于任何类型,如果a的值不为null返回a的值否则返回b的值 条件判断oracle中可以使用 case 字段 when 条件1 then 表达式1 when ...

  6. Oracle学习笔记二 初识Oracle(二)

    Windows 中的 Oracle 服务 Oracle 9i的每个实例在Windows中都作为一项服务启动 服务是在 Windows 注册表中注册的可执行进程,由 Windows 操作系统管理 “服务 ...

  7. oracle学习笔记(二)

    1. Oracle字符串操作 1.1. 字符串类型 1.1.1. CHAR和VARCHAR2类型 CHAR和VARCHAR2类型都是用来表示字符串数据类型,用来在表中存放字符串信息, 比如姓名.职业. ...

  8. Oracle学习笔记二

    多表查询: 笛卡尔积: 实际上是两张表的乘积,但是在实际开发中没有太大意义 格式: select * from 表1,表2 select * from emp; select * from dept; ...

  9. Oracle学习笔记(5)——查询

    基本查询语句 SELECT [DISTINCT] column_name1,...|* FROM table_name [WHERE conditions] 在SQL*PLUS中设置格式 更改显示字段 ...

  10. oracle学习笔记(十三) 查询练习(三) 子查询查询

    子查询练习 create table empployee_demo( empno number(4) not null primary key, --员工编号,主键 ename varchar2(10 ...

随机推荐

  1. C#string与char互转

    string s = "asdf"; //字符转char char[] c = s.ToCharArray(); Console.WriteLine(s[]); //char转st ...

  2. h5标签canvas关于getImageData跨域的问题

    h5标签canvas关于getImageData跨域的问题 在学习h5的时候,canvas标签中getImageData()报错:security error! 具体代码如下(chrome浏览器): ...

  3. 单源最短路径 hdu 2066

    #include<string.h> //和prim类似#include<stdio.h> //prim所考虑的是节点与当前所建成的树的距离最小using namespace ...

  4. Jquery 判断IE

    if( $.browser.msie && ( $.browser.version == '7.0' || $.browser.version == '8.0' ) ){ alert( ...

  5. JavaScript键盘事件全面控制代码

    JavaScript键盘事件全面控制,它可以捕获键盘事件的输入状态,可以判断你敲打了键盘的那个键,ctrl.shift,26个字母等等,返回具体键盘值. <html> <head&g ...

  6. Python函数小结(1)--参数类型(*, ** 的区别), 闭包

    刚开始学习python,python相对于java确实要简洁易用得多.内存回收类似hotspot的可达性分析, 不可变对象也如同java得Integer类型,with函数类似新版本C++的特性,总体来 ...

  7. webpack,react,babel

    window搭建webpack,react,babel傻瓜教程   首先现在的webpack教程已经很多了,写这篇的原因是因为自己在从小白开始的搭建过程中,并没有找到比较好的教程,花费了很多的时间,s ...

  8. jquery easyui根据需求二次开发记录

    1.tree需要显示多个图标 实际需求:设备树上节点需搁三个图片,分别标识运行状态.告警状态.设备类型 解决方法:给tree的iconCls传入一个数组,分别是各状态下的class(css),然后要改 ...

  9. Android Activity 生命周期的透彻理解

    说来惭愧,虽然已经做了一年多的android开发,但是最近被人问起activity的生命周期的时候,却感觉自己并不能很自信很确定的回答对方的问题,对activity的生命周期的理解还不透彻啊.     ...

  10. $parse , $interpolate ,$complie , $destroy

    $parse 是angular 提供的javascript解析器 . var getter = $parse(expression); var setter = getter.assign; cont ...