Oracle DB Day03(SQL)
--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)的更多相关文章
- Oracle DB Day01(SQL)
--时间为什么不是现在呢? --设置时区和显示时间 ALTER DATABASE SET TIME_ZONE='+08:00' select to_char(current_timestamp at ...
- Oracle DB Day02(SQL)
--数据库下表一般都是从1开始,例如字符串等 SELECT *FROM employees --字符串连接CONCAT() ,CONCAT(CONCAT(EMPLOYEE_ID,','),SALARY ...
- Oracle DB 总结(SQL)
--SQL结构查询语言 数据库定义语言(DDL)用于建立.删除和修改数据库对象 CREATE ALTER DROP TRUNCATE 数据库操纵语言(DML)用于改变数据库表中的数据 INSERT U ...
- 在silverlight中通过WCF连接ORACLE DB数据库(转)
转自 http://hi.baidu.com/qianlihanse/item/458aa7c8d93d4e0cac092ff4 这不是我的原创,我也是上网学习的~ How to get data f ...
- Oracle DB 存储增强
• 设置Automatic Storage Management (ASM) 快速镜像 再同步 • 使用ASM 首选镜像读取 • 了解可伸缩性和性能增强 • 设置ASM 磁盘组属性 • 使用SYSA ...
- Oracle DB 使用调度程序自动执行任务
• 使用调度程序来简化管理任务 • 创建作业.程序和调度 • 监视作业执行 • 使用基于时间或基于事件的调度来执行调度程序作业 • 描述窗口.窗口组.作业类和使用者组的用途 • 使用电子邮件通知 • ...
- Oracle DB 管理数据库的空间
• 描述4 KB 扇区磁盘的概念及使用 • 使用可移动表空间 • 描述可移动表空间的概念 数据库存储 数据库存储 数据库包括物理结构和逻辑结构.由于物理结构和逻辑结构是分开的,因此管理数据的物 理存储 ...
- Oracle DB 备份和恢复的概念
• 确定Oracle DB 中可能发生的故障类型 • 说明优化实例恢复的方法 • 说明检查点.重做日志文件和归档日志文件的重要性 • 配置快速恢复区 • 配置ARCHIVELOG模式 部分工作内容 ...
- 用户与 Oracle DB 交互具体过程
与 Oracle DB 交互 以下的演示样例从最主要的层面描写叙述 Oracle DB 操作.该演示样例说明了一种 Oracle DB 配置,在该配置中,用户和关联server进程执行于通过网络连接的 ...
随机推荐
- C#几个经常用到的字符串的截取
string str="123abc456";int i=3;1 取字符串的前i个字符 str=str.Substring(0,i); // or str=str.Remov ...
- js坚持不懈之12:var b = {a:1};
今天看到一篇博客,在声明一个变量的时候用了如下格式的语法: var b = {a:1}; 不明白,百度一下.作如下解释: var: 声明一个变量 b: 表示变量的名称 =: 赋值符号 {}: 表示一个 ...
- PHP 函数漏洞总结
1.MD5 compare漏洞 PHP在处理哈希字符串时,会利用"!="或"=="来对哈希值进行比较,它把每一个以"0E"开头的哈希值都解释 ...
- 「技巧」如何快速安装 Sketch 插件
Sketch拥有强大丰富的插件,但是这些插件天各一方,四处查找下载地址非常麻烦.这里提供一个技巧,通过一个入口可以安装各种插件,基本涵盖了市面上所有靠谱的插件. 准备 Sketch54 Runner ...
- PowerDesigner 提示 Existence of index、key、reference错误
一.建立一个表后,为何检测出现Existence of index的警告 A table should contain at least one column, one index, one key, ...
- 数据库【mongodb篇】练习操作
本文的目标是通过大量的示例,来更好的理解如果在Mongodb中进行数据操作: 初入客户端刚利用 mongod命令进入客户端环境,此时对数据库一无所知: 举目四望,想知道现在有哪些数据库, show ...
- PHP字符串函数、常量、数组排序
PHP字符串函数.常量.数组排序 strlen() 说明:strlen(),可以统计字符串长度 用途:strlen() 常用于循环和其他函数,在确定字符串何时结束很重要时.(例如,在循环中,我们也许需 ...
- MySQL数据库聚合函数
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库聚合函数时间:2019年2月25日内容:MySQL数据库聚合函数重点:MySQL数据库聚合函 ...
- 小小知识点(十三)——MATLAB中怎么保存和读取.mat文件
1.存储 利用save函数 save(filename) %将当前工作区中的所有变量保存在 MATLAB® 格式的二进制文件(MAT 文件)filename 中. save(filename,var ...
- 02Spring Boot配置文件详解
02Spring Boot配置文件详解 文章指导 学习笔记 学习代码 自定义属性 在src/main/java/resources目录下创建一个application.properties或appli ...