1. 特殊别名 ( 重要指数 * )

当想起的别名中有特殊字符时,要用 “”括起来

select employee_id “#emp_id#”from employees;

2. DINSTINCT ( 重要指数 * )

当使用DISTINCT关键字时,即想要去除重复内容时,distinct一定要放在查询列表中的第一个位置

select distinct first_name, phone_number from employees;

3. escape 用法 ( 重要指数 * )

SELECT *
FROM ZHPPEXP05
WHERE WORK_DATE = '20080104'
AND BUYER2 LIKE 'XAA\_%' ESCAPE '\'

这样以后, _ 只代表普通字符,下划线,而没有特殊意义了。

4. 常用函数 ( 重要指数 ** )

CONCAT, INITCAP, INSTR, LENGTH, LOWER, UPPER, RPAD, LPAD, LTRIM, RTRIM, TRIM, SUBSTR, REPLACE, ABS, CEIL, FLOOR, MOD, ROUND, TRUNC, SIGN, ADD_MONTHS, LAST_DAY, MONTHS_BETWEEN, SYSDATE, TO_CHAR, TO_DATE, TO_NUMBER

具体函数内容, 请参阅另一篇, 函数大全。

5. 子查询 ( 重要指数 *** )

返回单值子查询比较符号 ( = , > , < , <> 等等 )

返回多值子查询比较符号( in , Any , All 等等 )

Any ( 同意词 some ) : <ANY means less than the maximum , >ANY means more than the minimum =ANY means IN

<ALL means less than the minimum , >ALL means more than the maximum

子查询: 最容易出现的错误就是返回 NULL , 而进行了相应的判断。

相关子查询

每一次执行,都要执行一遍子查询,而以上标量子查询,总共只需要执行一次子查询。

SELECT column1 , column2

FROM table1 outer --> 有时外部表和内部表是一个表, 所以使用别名好一点 , 必须的用

WHERE column1 operator

( SELECT column1 , column2

FROM table2

WHERE expr1 = outer.expr2 ) ;

使用 EXISTS 关键字 ( 只是逻辑判断,所以速度快,例如子查询可以查出10,000条数据,如果使用 exists的话,那么当发现可以查询到时,就返回。)

SEELCT column1, column2

FROM  table1 outer

WHERE exists ( select cola from table2 where expr1 = outer. expr2 ) ;

个人推荐 exists

修改使用子查询

UPDATE table1 别名1

SET column = ( SELECT expression FROM table2 别名2 WHERE 别名1.column = 别名2.column ) ;

删除使用子查询

DELETE FROM table1 别名1

WHERE column operator ( SELECT expression FROM table2 别名2 WHERE 别名1.column = 别名2.column ) ;

6. with 语句 ( 重要指数 * )

当写的query 太长时,可以将部分内容分解,然后用一个标识符将其替代, 这样,整个query看起来就没有那么复杂,类似C中函数分解功能

with

with_plan_qty as ( select plan from zhppexp05 ) ; 这样以后就可以使用 with_plan_qty 来代替括号中的内容。

7. merge ( 重要指数 ** )

merge的作用是,根据不同的条件来判断是进行 insert 操作,还是update操作, 一般是从一个 table | view 复制到另一个 table.

MERGE INTO copy_emp as c
USING employees e
ON ( C.employee_id = e.employee_id )
WHEN MATCHED THEN
UPDATE SET
c.first_name = e.first_name,

c.last_name = e.last_name,
c.department_id = e.department_id
WHEN NOT MATCHED THEN
INSERT(employee_id, first_name, last_name, department_id)

VALUES(e.employee_id,e.first_name,e.last_name,e.department_id)

注意, merge 最后不需要 ; 分号, 并且 update 和 insert 关键词后每有表明

8. Database transaction

DML , DCL , DDL

数据状态是 , 硬盘database data block保存一份 , 还有 undo segment也保存一份 , 当一个用户改变数据时 , 他可以读data block中的一份,在他没 commit 之前 , 只有他本人可以看到这个数据 , 其他用户查看的是 undo segment中的数据 , 当他 commit 之后 , 其他用户才可以看到data block中的内容, database 并将 undo segment 清空 , 而当用户 rollback 时 , The original , older version , of the data in the undo segment iswritten back to the table . All user can see this existed before the transaction began .

DCL : SAVEPOINT A, SAVEPOINT B , ROLLBACK TO SAVEPOINT A

DML : INSERT 等等

DDL : CREATE TABLE

9. Date类型 & TIMESTAMP

Timestamp类型是指在传统的 date类型下 (最小单位是秒) , 更加精确 , 可以指定精确秒的位数 , 例如 TIMESTAMP(6) 精确到秒后6位

Timestamp主要是应对国际化的要求

oracle 时区分为2部分 : 数据库时区 和 session时区

SELECT DBTIMEZONE FROM DUAL ( 数据库时区 )

SELECT SESSIONTIMEZONE FROM DUAL ( session时区 )

数据类型 : DATE, TIMESTAMP, TIMESTAMP WITH TIMEZONE, TIMESTAMP WITH LOCAL TIMEZONE

DATE类型 : 存储日期和时间,精确到秒

TIMESTAMP : DATE类型的扩展,保留小数级别的秒,默认为小数点后6位,不保存时区和地区信息。

TIMESTAMP WITH TIMEZONE : 带时区的 TIMESTAMP类型

TIMESTAMP WITH LOCAL TIMEZONE: 和 TIMESTAMP WITH TIMEZONE的区别在于,数据库不保存时区信息,而是把客户端输入的事件转换为基于 database timezone 的时间后存入数据库(这也是 database timezone设置的意义 ) 当用户请求时, oracle把数据转为用户所在 session的时区返回给用户,所以,oracle建议吧 database timezone设置为标准时间 UTC, 这样可以节省转换的开销。

如何选择时间数据类型

当你不需要保存时区/地区信息的时候,选择使用TIMESTAMP数据类型,因为它一般需要7-11bytes的存储空间,可以节省空间。

当你需要保存时区/地区信息的时候,请选择使用TIMESTAMP WITH TIMEZONE数据类型。比如一个跨国银行业务应用系统,需要精确纪录每一笔交易的时间和地点(时区),在这种情况下就需要纪录时区相关信息。因为需要纪录时区相关信息,所以需要多一些的存储空间,一般需要13bytes。

当你并不关心操作发生的具体地点,而只是关心操作是在你当前时区的几点发生的时候,选择使用TIMESTAMP WITH LOCALTIME ZONE。比如一个全球统一的change controlsystem。用户可能只关心某某操作是在我的时间几点发生的(比如中国用户看到的是北京时间8:00am,而伦敦的用户看到的是0:00am)。记住,此类行不保存时区/地区信息,因此如果需要保存相关信息的要慎重!

存储时间间隔

interval year to month ( 年和月 )

interval day to second ( 天和秒 )

存储时间间隔,只存储一段时间,例如 1年3个月,是一个线或段, 而储存时间值,是某一个点。

时区介绍 : 全球共分为24个时区 , 每个时区占经度15度 , 以本初子午线为中央经线的时区为 零 时区 , 由零时区向东 , 向西各分为12 时区 . 地球是自西向东转动 , 东边比西边先看到太阳 , 东边的时间比西边早 , 每个相领时区相差1个小时 , 但是有的国家为了时间统一 , 不是按照时区作为时间基础 , 例如 : 中国以北京 ( 东8区 ) 作为统一时间 . ( 本初子午线时区为标准时间 , 其余的时区参考这个时间 , 例如 : 本初的时间为 0 时 , 东一区 时间为 -1 , 西一区时间为 1 , 12, 11,10,9,8,7,6,5,4,3,2,1, 0 , -1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12 。所以中间的时间为基准时间 ( standard time ) 其他的是参考时间 ( reference time ) 中间基准时间又叫 GMT = UTC ( 0 度经线 ) .

10. 利用查询语句创建一个 table

create table as select * from employees;

温习 SQL 01(Z)相关推荐

  1. SQL 01 按部门统计内部员工薪资排名--partition by--order by--dense_rank()

    SQL系列文章目录 文章目录 SQL系列文章目录 前言 一.背景 二.创建"背景"的代码 三.解题 总结 前言 SQL 01 按部门统计内部员工薪资排名–partition by– ...

  2. s平面上的圆对应的z平面上的图形

    简 介: 对于2021年期末信号与系统复习过程中学生提出の关于拉普拉斯变换定义域s平面与z变换的定义与z平面上的圆形对应关系进行实验讨论.显示了不同半径的s平面的上的圆形对应在z平面上的具有不同交叉点 ...

  3. db2 EXPLAIN分析SQL

    #利用EXPLAIN分析SQL ------------------------------------------------------------------------------------ ...

  4. gpu z linux版本,gpu-z linux

    Popular Alternatives to GPU-Z for Linux. Explore 7 Linux apps like GPU-Z, all suggested and ranked b ...

  5. SQL server 创建数据库代码

    USE MASTER --选择要操作的数据库 go --批处理命令create database test --数据库名称 on primary -- 主文件组 (name = test_data1, ...

  6. 关于autotrace和explain plan是否可以反映真实的执行计划

    一.引言: 今天在测试绑定变量的时候,发现使用绑定变量时,用autotrace看的执行计划有误,由此想到autotrace和explain plan是否可以反映真实的执行计划? 实验环境: 操作系统: ...

  7. 记录XPO查询 日志

    记录由XPO产生和执行的sql语句 //z 2013-02-27 14:01:30 IS2120@BG57IV3.T2355831976.K[T215,L2906,R88,V3140] 1. 在App ...

  8. 阿里云ACP大数据分析师 | 笔记纪要

    2021-9-10更新:已通过认证!! Alibaba Cloud Certified Professional-Data Analyst 重点不完整记录 分析报告 5 大部分 目标与背景 发现与结论 ...

  9. WPF:Documents文档--Annomation批注(3)

    AnnotationStyling批注样式 1.实现效果 可以选择不同便笺样式,对所有批注应用样式 选择文本后实现对批注的文本.墨迹便笺创建.删除 对选择文本的部分创建高亮不同颜色的批注,及实现清除命 ...

最新文章

  1. noip2018——题解总结
  2. LwIP 之五 详解动态内存管理 内存堆(mem.c/h)
  3. Android RemoteController使用
  4. Floyd —Warshall(最短路及其他用法详解)
  5. jQuery插件定义
  6. datatables 添加时间按钮_Java 添加页面跳转按钮到PDF文档
  7. centos怎么编写java_编写的java程序在centos后台运行的方法
  8. python 菜鸟-Python 列表(List)
  9. 内码输入法手机版下载_win7 64位内码输入法下载
  10. 使用命令修改dns服务器地址,Windows下使用命令行设置ip地址的DNS服务器
  11. 【学习资料分享】光纤KVM坐席管理系统解决方案
  12. 11个能够帮助Java开发者提升编程能力的Java论坛汇总
  13. 高位在前低位在后是啥意思_精喹禾灵原药报价在25.5万元/吨高位,草甘膦原药保持2.5万元/吨...
  14. 【游戏王arc-v卡片力量SP改名字ID教程】
  15. Debug Blocker
  16. vscode背景图片无法删除
  17. 分布式事务(三):分布式事务解决方案之TCC(Try、Confirm、Cancel)
  18. 设备联网工作建设方法和步骤
  19. Android:国家气象局天气预报接口JSON完全解析
  20. 院士解读:海洋研究为何需要超级计算机?

热门文章

  1. First Unique Character in a String(leetcode387)
  2. Mybatis之一级缓存,二级缓存
  3. 一键安装lamp之php插件
  4. 北纬39°54上的采访
  5. 推荐一篇文章,感觉学完Iterator模式后应当读一读
  6. acm数论之欧几里得gcd
  7. WordCount程序
  8. Arista将Spine-Leaf路由/交换产品进行芯片升级
  9. SharePoint 2016 必备组件离线安装介绍
  10. Reporting Service 告警w WARN: Thread pool pressure. Using current thread for a work item