--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. ORACLE 物化视图

    最近几天,我负责的P项目环境中提供给W系统的一个视图,由于查询逻辑复杂,数据量比较大,导致每次查询视图的时候,查询速度慢,效率低下,遭到了w系统人员的投诉.想了想,还是改成物化视图吧,用了物化视图,腰 ...

  2. Codeforces Round #279 (Div. 2)f

    树形最大上升子序列 这里面的上生子序列logn的地方能当模板使  good #include<iostream> #include<string.h> #include< ...

  3. Java语言实现简单FTP软件------>FTP软件效果图预览之上传功能(三)

    下面展示一下上传功能的过程 1.上传前 上传前选择好要将文件或文件夹上传到远程FTP服务器的哪个目的目录下. 2.上传中 添加上传任务 上传任务完成进度显示 3.上传完成 ============== ...

  4. 原生拖拽,拖放事件(drag and drop)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. python 中变量的命名规范

    出自:http://www.diybl.com/course/3_program/python/20111130/563643.html 模块名: 小写字母,单词之间用_分割 ad_stats.py ...

  6. HTML&CSS基础学习笔记1.10—添加链接

    我们可以设置链接的目标,使我们点击后可以跳转到我们想要去的地方. <a>标签的 href 属性用于指定超链接目标的 URL. 在页面中添加的<a>标签,浏览器会用特殊效果显示, ...

  7. Python学习笔记总结(三)类

    一.类简单介绍 1.介绍 类是Python面向对象程序设计(OOP)的主要工具,类建立使用class语句,通过class定义的对象. 类和模块的差异,类是语句,模块是文件. 类和实例 实例:代表程序领 ...

  8. ARM 之LCD和LCD控制器

    既然提到 了LCD那么我们首先必须要了解的就是他的种类,CD(liquid crystal  display), 即液晶显示器,是这一种采用了液晶控制透光度计数来实现色彩的显示器,他与传统的CRT显示 ...

  9. Reshaper 快捷键

    配置单个键盘快捷键 1.在主菜单上,选择Tools | Options 2.在导航视图中选择Environment | Keyboard 3.在命令列表中,选择启动ReSharper的命令名称.浏览列 ...

  10. commons-pool2-中的一些配置

      /**                     * 连接失效检测相关                     */                    // 空闲时进行连接测试,会启动异步evi ...