Oracle_sql :
第一单元:select 语句:
①:字符串连接操作符: ||
②:去除重复行:distinct
 
第二单元:条件限制和排序
①:关键字:where
②:比较操作符:=,>,<,between...and...,in,like,is null
     :使用like做模糊匹配:可使用%或者_作为通配符;%代表0个或多个字符。_代表一个单个字符。escape为标识转义字符 escape '/'。
③:排序:order by  asc(升序默认)/desc(倒序)
 
第三单元:单行函数
①:大小写转换:lower() A——a
                          upper()a——A
                          initcap()first——First
②:字符串操作函数
函数                                   结果
CONCAT('Hello', 'World')    HelloWorld
SUBSTR('HelloWorld',1,5)    Hello
LENGTH('HelloWorld')        10
INSTR('HelloWorld', 'W')      6
LPAD(salary,10,'*')               *****24000
RPAD(salary, 10, '*')             24000*****
TRIM('H' FROM 'HelloWorld')elloWorld
TRIM(' HelloWorld')              HelloWorld
TRIM('Hello World')              Hello World
③:数字操作函数:
函数                          结果
ROUND(45.926, 2)   45.93
TRUNC(45.926, 2)    45.92
MOD(1600, 300)      10
④:日期操作函数:
函数                                                                               结果
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')              19.6774194
ADD_MONTHS ('11-JAN-94',6)                                      11-Jul-94
NEXT_DAY ('01-SEP-95','FRIDAY')                                   8-Sep-95
NEXT_DAY ('01-SEP-95',1)                                              3-Sep-95
NEXT_DAY ('1995-09-01',1)                                            ORA01861:literal does not match format string
NEXT_DAY (to_date('1995-09-01','YYYY-MM-DD'),1)      3-Sep-95
LAST_DAY('01-FEB-95')                                                   28-Feb-95
ROUND('25-JUL-95','MONTH')                                       1-Aug-95
ROUND('25-JUL-95' ,'YEAR')                                           1-Jan-96
TRUNC('25-JUL-95' ,'MONTH')                                        1-Jul-95
TRUNC('25-JUL-95','YEAR')                                              1-Jan-9
⑤:不同类型的数据转换函数:
Oracle数据类型的隐私转换规则:
对于赋值操作可以: 从到
VARCHAR2 or CHAR            NUMBER
VARCHAR2 or CHAR            DATE
NUMBER                              VARCHAR2
DATE                                    VARCHAR
对于表达式比较操作仅可以:
从到 VARCHAR2 or CHAR       NUMBER
        VARCHAR2 or CHAR        DATE
 
TO_CHAR() 函数:日期到字符串的转换
TO_CHAR(date, 'format_model') ;
日期格式化元素意义
YYYY                  4位数字表示的年份
YEAR                  英文描述的年份
MM                    2位数字表示的月份
MONTH              英文描述的月份
MON                  三个字母的英文描述月份简称
DD                      2位数字表示的日期
DAY                    英文描述的星期几
DY                      三个字母的英文描述的星期几简称
HH24:MI:SS AM  时分秒的格式化
DDspth               英文描述的月中第几天
fm                      格式化关键字,可选
 
TO_CHAR() 函数:数字到字符串的转换
TO_CHAR(number, 'format_model') ;
数字格式化元素意义
9表示一个数字
0强制显示0
$放一个美元占位符
L使用浮点本地币种符号
.显示一个小数点占位符
,显示一个千分位占位符
 
 
TO_NUMBER() 函数:字符串到数字的转换
TO_NUMBER(char[, 'format_model']) ;
TO_DATE() 函数:字符串到日期的转换
TO_DATE(char[, 'format_model'])
 
 
其他常用单行函数
函数用途
NVL (expr1, expr2)如果expr1为空,这返回expr2
NVL2 (expr1, expr2, expr3)如果expr1为空,这返回expr3(第2个结果)否则返回expr2
NULLIF (expr1, expr2)如果expr1和expr2相等,则返回空
COALESCE (expr1, expr2, ..., exprn)
如果expr1不为空,则返回expr1,结束;否则计算expr2,直到找到 一个不为NULL的值或者如果全部为NULL,也只能返回NULL 
 
 
条件表达式:decode函数:
DECODE(col|expression, search1, result1 [, search2, result2,...,] [, default])
 
第四单元:多表关联查询:1,等于链结
2,不等链结。3,外链接(左链结,右链结)。4,自联结
 
第五单元:分组计算函数和group by句子
分组计算函数:相对于单行函数,也可称之为多行函数,它的输入是多个行构成得一个行集(这个行集可以是 一张表的所有行,也可以是按照某个维度进行分组后的某一组行),而输出都是一个值;
 
分组计算函数(常用):包括
1、求和(SUM)
2、求平均值(AVG)
3、计数(COUNT)
4、求标准差(STDDEV)
5、求方差(VARIANCE)
6、求大值(MAX)
7、求小值(MIN)
8、COUNT 函数说明:
函数用法意义
COUNT(*) 返回满足选择条件的所有行的行数,包括值为空的行和重复的行
COUNT(expr)返回满足选择条件的且表达式不为空行数。
COUNT(DISTINCT expr)返回满足选择条件的且表达式不为空,且不重复的行数。
9、group by
SELECT 查询语句中同时选择分组计算函数表达式和其他独立字段时,其他字段必须出现在Group By子 句中,否则不合法。
不能在Where 条件中使用分组计算函数表达式,当出现这样的需求的时候,使用Having 子句
 
 
第六单元:子查询
SELECTselect_list FROMtable WHEREexproperator
(SELECTselect_list FROM  table);
 
 
第七单元:dml语句
DML: Data Manipulation Language , 数据操纵语言;简单的说就是SQL中的增、删、改等语句
 
INSERT INTO table [(column [, column...])] VALUES(value [, value...]);
UPDATE table SETcolumn= value[, column = value, ...] [WHERE condition];
DELETE [FROM]table [WHEREcondition];
 
 
第九章:数据库对象-表
规则要求:表的命名要求和表中列的命名要求:
1、必须以字母开头
2、长度不能超过30个字符
3、只能包含A–Z, a–z, 0–9, _, $, and #
4、不能与数据库中的已有对象重名
5、不能使用Oracle  数据库的保留
 
 
数据类型描述
VARCHAR2(size)可变长字符串
CHAR(size)  定长字符串
NUMBER(p,s)  可变长数值
DATE 日期时间
LONG 可变长大字符串,大可到2G
CLOB可变长大字符串数据,大可到4G
RAW and LONG RAW 二进制数据
BLOB大二进制数据,大可到4G BFILE存储于外部文件的二进制数据,大可到4G
ROWID64进制18位长度的数据,用以标识行的地址
TIMESTAMP精确到分秒级的日期类型(9i以后提供的增强数据类型)
INTERVAL YEAR TO MONTH表示几年几个月的间隔(9i以后提供的增强数据类型-极其少见)
INTERVAL DAY TO SECOND表示几天几小时几分几秒的间隔(9i以后提供的增强数据类型-极其 少见)
 
 
 
更改表的语法:
添加列:
ALTER TABLE table
ADD(column datatype[DEFAULT expr] [, column datatype]...);
更改列:
ALTER TABLE table
MODIFY(column datatype[DEFAULT expr] [, column datatype]...);
删除列:
ALTER TABLE table
DROP(column);
删除表:
DROP TABLE tableName;
更改表名:
RENAME oldtablenameto  newtableName;
 
 
第十单元:数据库对象-约束
约束的概念:Oracle 数据库使用“约束”来阻止对数据库表中数据的不合法的“增删改”动作。
常用的约束有如下几种:
NOT NULL      (非空约束)
UNIQUE (唯一性约束)
PRIMARY KEY   (主键约束)
FOREIGN KEY   (外键约束)
CHECK         (自定义约束)
 
 
单独创建约束语法:
ALTER TABLE tablename
ADD CONSTRAINT  constraintname constrainttype(column1,…);
 
 
删除约束:
ALTER TABLE tablename
DROP CONSTRAINT  constraintname;
 
 
失效/生效约束:
ALTER TABLE tablename 
DISABLE CONSTRAINT constraintname CASCADE;
 
ALTER TABLE tablename
ENABLE CONSTRAINT  constraintname;
 
查询系统中存在哪些约束:
SELECT constraint_name, constraint_type, search_condition
FROM user_constraints
 
 
 
第十一单元:数据库对象-视图
视图的概念:
有的时候我们需要关联多张表获得一个查询结果集,有的时候我们需要写很复杂的条件得到一个想要的结果集, 我们不想每次要想这些数据的时候都重新去写很复杂的SQL语句,怎么办?
我们可以把这些结果集创建为视图-View
 
视图创建的语法:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]]
 
删除视图:
drop view viewname;
 
 
 
第十二章:数据库对象-序列、索引、同义词
 
序列的概念:
有的时候我们定义某一张表中某一列为主键,当我们往表中插入数据的时候,对于主键字段的赋值要求唯一性, 我们希望能有个自增长类型的数据库对象,我们每获取一次,它自动增长,保证下次获取时肯定是不一样的值, 这样我们就方便了,Oracle 数据库提供“序列”这种对象来满足我们的要求
 
 
 
序列的创建:
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n| NOMAXVALUE}]
[{MINVALUE n| NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n| NOCACHE}];
 
 
更改序列定义:
ALTER SEQUENCE sequence
INCREMENT BY 20
MAXVALUE 999999
NOCACHE 
NOCYCLE;
删除序列:
DROP SEQUENCE sequence;
 
 
索引创建举例:
CREATE INDEX emp_last_name_idx
ON employees(last_name);
 
 
同义词的概念:
当数据库用户A要访问数据库用户B中的一张表Table1的时候,需要加前缀
Select * from B.table1
但我们要通过DB-LINK访问另一个数据库中的某张表的时候我们需要加@后缀
Select * from table1@db-link-name
为了在程序中能够简化写法,Oracle 提供同义词,也就是可以在A用户下建立一个同义词指向B用户下的 Table1, 以后访问的时候可以直接访问这个同义词,而不用加前缀了
语法:CREATE SYNONYM Table1 for B.Table1
 
 
第十三单元:控制用户权限
 
语法:
GRANT object_priv [(columns)]
ON  object T
O{user|role|PUBLIC}
[WITH GRANT OPTION]  (传递权限)
 
收回权限:
REVOKE {privilege [, privilege...]|ALL}
ON   object
FROM   {user[, user...]|role|PUBLIC}
 
 
UNION
UNION  ALL   保留重复记录
 
INTERSECT   取交集
 
MINUS  取差集
SELECT employee_id,job_id
FROM   employees
MINUS
SELECT employee_id,job_id FROM   job_history;
 
 
第十四单元:group by 句子增强
①:在Group By 中使用Rollup 产生常规分组汇总行以及分组小计:
1、常规分组行;2,3 、分层小计行; Rollup 后面跟了n个字段,就将进行n+1次分组,从左到右每次减少一个字段进行分组;然后进行 union
②:在Group By 中使用Cube产生Rollup结果集+ 多维度的交叉表数据源:
 
 
 

oracle sql 知识小结的更多相关文章

  1. Oracle常用知识小结

    前言: 前一段时间项目开发数据库环境为Oracle,作为一个SQLer,表示各种不适应.所以刚开始的时候走了一些弯路,浪费了一席时间.因此就想把这些常用的东西给总结一下,算是对自己学习的总结,也希望能 ...

  2. 2008-03-18 22:58 oracle基础知识小结

    oracle 数据类型: 字段类型                 中文说明                                                  限制条件         ...

  3. oracle基础知识小结

    一.查看oracle用户.角色信息1.查看所有用户 select * from all_users; select * from user_users; 2.查看用户或角色系统权限 select * ...

  4. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  5. Atitit  补充说明 sql知识图谱与线路图attilax总结补充说明

    Atitit  补充说明 sql知识图谱与线路图attilax总结补充说明 1. 常见编程语言的分类  :命令式语言.函数式语言.逻辑语言1 1.1. 按照编程语言的代际划分,又2gl,3gl,4gl ...

  6. 45个非常有用的 Oracle 查询语句小结

    45个非常有用的 Oracle 查询语句小结 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 ...

  7. Oracle SQL篇(一)null值之初体验

           从我第一次正式的写sql语句到现在,已经超过10年的时间了.我写报表,做统计分析和财务对账,我一点点的接触oracle数据库,并尝试深入了解.这条路,一走就是10年,从充满热情,到开始厌 ...

  8. Oracle SQL 调优健康检查脚本

    Oracle SQL 调优健康检查脚本 我们关注数据库系统的性能,进行数据库调优的主要工作就是进行SQL的优化.良好的数据架构设计.配合应用系统中间件和写一手漂亮的SQL,是未来系统上线后不出现致命性 ...

  9. 图说Oracle基础知识(一)

    本文主要对Oralce数据库操作的基础知识进行一下梳理,以便进行归纳总结.适用于未使用过Oracle数据库的读者,或需要学习Oracle数据库方面的基础知识.如有不足之处,还请指正. 关于SQL介绍的 ...

随机推荐

  1. HDU 1068 Girls and Boys 二分图最大独立集(最大二分匹配)

    Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. (五)Jquery Mobile列表

    Jquery Mobile列表 一.JM列表 1.普通列表            效果:            带序号的列表 将ul换成ol      效果:       2.data-inset=& ...

  3. 51驱动LCD12864

    LCD12864与LCD1602最大的区别在于LCD12864可以显示汉字,同时也可以拿来画图;当然,作为图形显示不推荐lcd12864,推荐NOKIA5110 12864引脚基本和1602的引脚吻合 ...

  4. 【转】VS2013动态库文件的创建及其使用详解

    一.VS2013动态库文件的创建 1.新建项目,win32,win32项目,输入项目名称,例如MakeDll. 2.”确定“——”下一步“,选择”DLL“选项,再点”完成“: 3.菜单栏选择”项目“— ...

  5. Java链表的一些操作:

    [还有一些其他的算法提]http://blog.csdn.net/WalkingInTheWind/article/category/906980 [转]http://blog.csdn.net/lu ...

  6. sublime text2的插件熟悉

    今天加班,开会.于是整理下sublime text的插件. 1.安装了tag插件.负责html的格式化.从百度云下载了文件,放入了插件包的目录下. 2.启用了alignment 快捷键 ctr+alt ...

  7. Microsoft Visual 的变态

    Microsoft Visual 里面使用指针 的时候, 声明要放在函数开始的位置,否则报错,真变态啊 刚刚发现,C的变量必须在语块开始声明,后面声明会报错,太不灵活了

  8. 递归添加 另一个ds 里的DataRow 时 报错:该行已经属于另一个表。

    public void create_tree(DataSet ds, int parentid)        { DataSet newds = new DataSet();            ...

  9. UVa 11308 - Bankrupt Baker

    题目大意:给出一些原料和价钱和若干份菜谱,每份菜谱都标明所需的原料和数量,找出所有不超过预算的菜谱. 没什么好说的,主要是对map的运用. #include <cstdio> #inclu ...

  10. Visual Studio Team Services 帐户管理操作

    Visual Studio Team Services 网址: https://www.visualstudio.com/ 1.登陆 2.登陆后新建账户 3.删除团队项目 (1)点击自己的Visual ...