--day03
--创建一个包含下面信息的表,并添加一些记录待用
--EMPLOYEE_ID NOT NULL NUMBER(6)
--FIRST_NAME VARCHAR2(20)
--LAST_NAME NOT NULL VARCHAR2(25)
--EMAIL NOT NULL VARCHAR2(25)
--PHONE_NUMBER VARCHAR2(20)
--HIRE_DATE NOT NULL DATE
--JOB_ID NOT NULL VARCHAR2(10)
--SALARY NUMBER(8,2)
--COMMISSION_PCT NUMBER(2,2)
--MANAGER_ID NUMBER(6)
--DEPARTMENT_ID NUMBER(4) SELECT * FROM employees;
DESC employees
--AS 可以改变标题样式,相当于使用别名
SELECT employee_id as id,CONCAT(first_name,last_name) as name from employees --WHERE 限制查询条件,数字可以不用单引号,字符串和日期等都需要单引号
--查询条件可以使用若是苏子可以使用四则运算,日期可以叫做加减操作表示加减天数
select *from employees
where salary = 9000;
-- WHERE 条件中可以使用< , > , <= , >= , = , !=,
-- AND且 ,OR或,可有多个条件
--LIKE模糊查询
SELECT *FROM EMPLOYEES
WHERE SALARY<9000;
SELECT *FROM employees
WHERE SALARY !=9000;
SELECT *FROM EMPLOYEES
WHERE SALARY<9000 AND HIRE_DATE<'1997-06-21';
--LIKE模糊查询 %:表示0到多个字符;_:表示单个字符
SELECT *FROM employees
WHERE first_name LIKE 'Al%y%';
--IN ,NOT IN
SELECT *FROM EMPLOYEES
WHERE SALARY IN(9000,8000) ;--相当于或的作用,不表示范围,选出salary为9000和8000的
SELECT *FROM EMPLOYEES
WHERE SALARY NOT IN(9000,8000); --BETWEEN...AND...筛选符合某个取值范围内的数据
SELECT *FROM EMPLOYEES
WHERE SALARY BETWEEN 8000 AND 9000; --IS NULL, IS NOT NULL
SELECT *FROM EMPLOYEES
WHERE COMMISSION_PCT IS NULL AND SALARY BETWEEN 8000 AND 9000; SELECT *FROM EMPLOYEES
WHERE COMMISSION_PCT IS NOT NULL AND SALARY BETWEEN 8000 AND 9000; --ANY,ALL
-- >ANY大于最小 , <ANY 小于最大
-- >ALL 大于最大, <ALL 小于最小
SELECT *FROM EMPLOYEES
WHERE SALARY >ANY(3500,4000,4500); SELECT *FROM EMPLOYEES
WHERE SALARY >ALL(3500,4000,9000); --DISTINCT 过滤掉重复值
SELECT DISTINCT SALARY FROM EMPLOYEES --ORDER BY 排序;默认是asc升序; ASC升序; DESC降序
SELECT *FROM EMPLOYEES
WHERE SALARY >ALL(3500,4000,9000)
ORDER BY SALARY DESC;
--多条件排序,若第一列数据形同,再以第二列排序,以此类推,每一列都需要设置排序
SELECT *FROM EMPLOYEES
WHERE SALARY >ALL(3500,4000,9000)
ORDER BY SALARY ASC,first_name ASC; --聚合函数分组函数/多行函数/集合函数 :主要完成一些数据统计等工作,例如算平均值、统计部门人数等
--统计最大值
SELECT MAX(SALARY) max_sal,MIN(salary) min_sal FROM employees
--AVG 用来计算表达式的平均值 ;SUM 用来计算和值
SELECT AVG(SALARY) avg_sal,SUM(SALARY) sum_sal FROM EMPLOYEES;
--统计记录条数
SELECT COUNT(SALARY) TOTAL_NUM FROM EMPLOYEES
WHERE SALARY >8000
--聚合函数忽略NULL值,当某一列包含NULL值时,比较下面两条语句
SELECT AVG(commission_pct) avg_commission_pct FROM employees; --null值会忽略
SELECT AVG(NVL(commission_pct,0)) avg_commission_pct FROM employees; --把null值转换成了0计算 --GROUP BY 把记录划分若干小组
--HAVING 对分组后的数据进一步限制
SELECT salary ,MAX(salary) max_sal FROM employees
GROUP BY salary
HAVING MAX(salary)>8000
ORDER BY salary; --查询语句的执行顺序,可以提高查询效率
--FROM:执行顺序为 从后往前,从右往左,数据量较少的表尽量放在后面;
--WHERE:执行顺序 自下而上,从右往左,最大的过滤条件写在最后面;
--GROUP BY:执行顺序从左往右分组
--HAVING :尽量避免使用,having会在检索后才对结果进行过滤,需要排序等操作,消耗资源;尽量把过滤条件放在WHERE中;
--SELECT: 少用 * ,尽量用字段名称,消耗时间;
--ORDER BY :执行顺序 从左往右,消耗资源 --关联查询 :
--实际应用中根据需要,一般需要查询两个或两个以上的表或视图,这种查询叫做 连接查询;
--连接查询一般建立在存在互相关系的的父子表之间; --笛卡尔积:关联操作的每一个表的每一行都和其他表的每一行组合;
--例如一个表X条数据,另一个表Y条数据,则两个表的查询结果会返回X*Y条数据; --等值连接 --创建连个表待用
CREATE TABLE animal(
name VARCHAR2(20),
leg NUMBER(2)
)
INSERT INTO animal(name,leg)
VALUES('CAT',4);
INSERT INTO animal(name,leg)
VALUES('MONKEY',4);
INSERT INTO animal(name,leg)
VALUES('MEN',2);
ALTER TABLE animal ADD( id NUMBER(2))
INSERT INTO animal(name,leg,id)
VALUES('MEN',2,3);
DELETE FROM animal WHERE NAME = 'MEN' AND ID IS NULL;
UPDATE animal SET ID=1 WHERE NAME = 'CAT'
UPDATE animal SET ID=2 WHERE NAME = 'MONKEY'
SELECT *FROM animal; CREATE TABLE local(
place VARCHAR2(20)
)
INSERT INTO local(place)
VALUES('南京');
INSERT INTO local(place)
VALUES('四川');
INSERT INTO local(place)
VALUES('安徽');
ALTER TABLE local ADD(ID NUMBER(2))
UPDATE local SET ID = 1 WHERE place ='南京';
UPDATE local SET ID = 2 WHERE place ='四川';
SELECT *FROM local; --内连接:返回满足连接条件的数据记录,不满足关联条件的记录都是无法在关联查询中查出来的
--用 join ... on 多张表时条理比较清楚
SELECT animal.name,local.place FROM animal ,local;
--出现笛卡尔集,通常没什么意义,数量大时还容易溢出,大部分需要添加关联条件
--要避免笛卡尔集,n张表就需要n-1个连接条件
SELECT ani.name,loc.place FROM animal ani ,local loc; --给表添加别名可以简化SELECT语句复杂度
SELECT ani.name,loc.place FROM animal ani ,local loc WHERE ani.id=loc.ID;
SELECT ani.name,loc.place FROM animal ani JOIN local loc ON (ani.ID =loc.id);
--左外连接、右外连接一样的效果,那边有+号那边补null
SELECT ani.name,loc.place FROM animal ani JOIN local loc ON ani.ID(+) =loc.id;
SELECT ani.name,loc.place FROM animal ani JOIN local loc ON ani.ID =loc.id(+); --外连接:不仅能返回满足连接条件的记录,还将返回不满足条件的记录;不能两边都有+号
--左外连接join左侧表示驱动表(所有数据都被查出来),那么当表中的某条记录不满足连接条件时来自右侧表中的字段全部填null
SELECT ani.name,loc.place FROM animal ani LEFT OUTER JOIN local loc ON (ani.ID =loc.id);
--右外连接join右侧表示驱动表(所有数据都被查出来),那么当表中的某条记录不满足连接条件时来自左侧表中的字段全部填null
SELECT ani.name,loc.place FROM animal ani RIGHT OUTER JOIN local loc ON (ani.ID =loc.id); --全外连接:除了返回满足连接条件的记录,还会返回不满足条件的所有其他行,是 左外连接和右外连接 查询结果的综合
SELECT ani.name,loc.place FROM animal ani FULL OUTER JOIN local loc ON (ani.ID =loc.id); --自连接是一种特殊的连接查询,数据的来源是一个表,即关联关系来自单表中的多个列;处理同类型数据又存在上下界关系的树状结构
--自连接简单来说就是把一张表当成两张表看待就可以了
--自连接是通过将表用别名虚拟成两个表的方式实现,可以是等值或不等值连接
--例如超市里的商品,只有一个表,可能商品之间有关系,这时候用自连接比较方便
--再如一张员工信息表,里面可以体现员工上下级关系的表就可以用自连接

Oracle DB Day03(SQL)的更多相关文章

  1. Oracle DB Day01(SQL)

    --时间为什么不是现在呢? --设置时区和显示时间 ALTER DATABASE SET TIME_ZONE='+08:00' select to_char(current_timestamp at ...

  2. Oracle DB Day02(SQL)

    --数据库下表一般都是从1开始,例如字符串等 SELECT *FROM employees --字符串连接CONCAT() ,CONCAT(CONCAT(EMPLOYEE_ID,','),SALARY ...

  3. Oracle DB 总结(SQL)

    --SQL结构查询语言 数据库定义语言(DDL)用于建立.删除和修改数据库对象 CREATE ALTER DROP TRUNCATE 数据库操纵语言(DML)用于改变数据库表中的数据 INSERT U ...

  4. 在silverlight中通过WCF连接ORACLE DB数据库(转)

    转自 http://hi.baidu.com/qianlihanse/item/458aa7c8d93d4e0cac092ff4 这不是我的原创,我也是上网学习的~ How to get data f ...

  5. Oracle DB 存储增强

    • 设置Automatic Storage Management (ASM)  快速镜像 再同步 • 使用ASM 首选镜像读取 • 了解可伸缩性和性能增强 • 设置ASM 磁盘组属性 • 使用SYSA ...

  6. Oracle DB 使用调度程序自动执行任务

    • 使用调度程序来简化管理任务 • 创建作业.程序和调度 • 监视作业执行 • 使用基于时间或基于事件的调度来执行调度程序作业 • 描述窗口.窗口组.作业类和使用者组的用途 • 使用电子邮件通知 • ...

  7. Oracle DB 管理数据库的空间

    • 描述4 KB 扇区磁盘的概念及使用 • 使用可移动表空间 • 描述可移动表空间的概念 数据库存储 数据库存储 数据库包括物理结构和逻辑结构.由于物理结构和逻辑结构是分开的,因此管理数据的物 理存储 ...

  8. Oracle DB 备份和恢复的概念

    • 确定Oracle DB 中可能发生的故障类型 • 说明优化实例恢复的方法 • 说明检查点.重做日志文件和归档日志文件的重要性 • 配置快速恢复区 • 配置ARCHIVELOG模式   部分工作内容 ...

  9. 用户与 Oracle DB 交互具体过程

    与 Oracle DB 交互 以下的演示样例从最主要的层面描写叙述 Oracle DB 操作.该演示样例说明了一种 Oracle DB 配置,在该配置中,用户和关联server进程执行于通过网络连接的 ...

随机推荐

  1. vue和angular的区别:

    相同: 1.数据绑定:vue和angular绑定都可以用{{}} 2.都支持内置指令和自定义指令 3.都支持内置过滤器和自定义过滤器. 区别: 1.学习成本和API 设计:vue相比于angular来 ...

  2. redis数据库的基础

    redis数据库 redis有以下三个特点 redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用 redis不仅仅支持简单的key-value类型的数据,同时还提 ...

  3. thinkPHP HTML输出多条查询结果

    控制端 $select=M('Baojiao')->query("select * from think_Baojiao where COMPANY='$comname'") ...

  4. Carthage入门篇-安装和使用

    在iOS开发过程中,用到最多的三方库管理工具也许是Cocoapods.Cocoapods会自动为你创建一个workspace,然后自动将你要用到的三方库集成到Project中,而整个过程,你只需要对P ...

  5. js操作文章、字符串换行

    操作前: 操作后: 第一步: 把中英文的逗号和顿号置换为 '\n’ support_unit = support_unit.replace(/,|,|./g, '\n')   第二步: //为了使\n ...

  6. Nginx+Django-Python+BPMN-JS的整合工作流实战项目

    前言 找一个好用的画图工具真心不容易,Activiti 工作流自带的 Web 版画图工具,外表挺华丽,其实使用起来各种拧巴:Eclipse 的 Activiti 画图插件,对于相对复杂的流程也是很不友 ...

  7. 随心测试_软测基础_005 <测试人员工作内容>

    接上篇:清楚了_测试人员的工作职责范围,那每项 测试活动的具体工作内容有哪些呢? Q1:如何理解测试工程师的工作内容? A1:SX的观点:综合一体化 现如今互联网行业如何哪达,每一项IT职业的工作职责 ...

  8. PHP按权重随机

    之前业务部门提了一个需求,要求将广告按照ecpm高低进行随机.(即:ecpm高的获取流量的几率大) 如下数组: //要求AD1的概率要求为50%,AD2概率为25% ,AD3的概率为15%,AD4的概 ...

  9. java-环境变量的配置

    java基础教程 链接:https://pan.baidu.com/s/1dGHrkghUJi2lew8dbWlIvg 提取码:87mi

  10. 移除 iview的Table组件固定两头后box-shadow阴影效果

    .ivu-table-fixed{ box-shadow:0 0 0 #fff; }