Oracle-SQL系列知识点(一)

Oracle-SQL

这是对Oracle-SQL知识点详细介绍的文章系列,其他文章如下:


结构化查询语言

  • 简介
    结构化查询语言(Structured Query Language)
    )简称SQL,是操作和检索关系型数据库的标准语言;

  • 分类

数据查询语言(DQL:Data Query Language):语句主要包括 SELECT ,用于从表中检索;

数据操作语言(DML:Data Manipulation Language):主要包括 insert,update,delete,用于添加、修改和删除表中的行数据;

事务处理语言:(TPL:Transaction Process Language):语句主要包括 commit, rollback,用于提交和回滚;

数据控制语言:(DCL:Data Control Language):主要包括 grant,revoke,用于进行授权和收回权限;

数据定义语言(DDL:Data Definition language):主要包括 create, drop, alter,用于定义、销毁、修改数据库对象;

简单查询

  • 1、基本select 语句语法
1477111910004.png
  • SQL语句的书写规则

    • 不区分大小写,也就是说SELECT,select,Select,执行时效果是一样的。
    • 可以单行来书写,也可以书写多行,建议分多行书写,增强代码可读性,通常以子句为单位进行分行。
    • 关键字不可以缩写、分开以及跨行书写,如SELECT不可以写成SEL或SELE CT等形式。
    • 关键字最好使用大写,其它语法元素(如列名、表名等)小写。
    • Tab和缩进的使用可以提高程序的可读性
  • 2、算数运算符

    • 可以在SELECT语句中使用算术运算符,改变输出结果
      ![Uploading 1477113225660_194572.png . . .]
1477112140341.png
  • 3、算术运算符优先级

    • 乘除优先于加减;
    • 相同优先权的表达式按照从左至右的顺序依次计算;
    • 括弧可以提高优先权,并使表达式的描述更为清晰;
  • 4、空值NULL

    • 空值是一种无效的、未赋值的、未知的或不可用的值;
    • 空值不同于零或空格;
    • 任何包含空值的算术表达式运算后的结果都为空值;
  • 列别名

    • 用来重新命名列的显示标题;
    • 如果SELECT语句中包含计算列,通常使用列别名来重;
    • 新定义列标题;
  • 使用列别名的方法

    • 方式1:列名 列别名
    • 方式2:列名 AS 列别名
  • 以下三种情况列别名两侧需要添加双引号

    • 列别名中包含有空格
    • 列别名中要求区分大小写
    • 列别名中包含有特殊字符
  • 5、连接操作符

    • 用于连接列与列、列和字符;
    • 形式上是以两个竖杠||;
    • 用于创建字符表达式的结果列;
  • 6、原义字符串

    • 原义字符串是包含在SELECT列表中的一个字符、一个数字或一个日期。
    • 日期和字符字面值必须用单引号引起来。
    • 每个原义字符串都会在每个数据行输出中出现
  • 7、消除重复行
    在SELECT字句中使用关键字DISTINCT可消除重复行;

限定数据和对数据排序

  • 1、选择限定数据行

使用WHERE子句可以返回限定的数据行,语法如下:

1477113225660.png

WHERE子句紧跟在FROM子句之后condition(s)表示条件表达式,通常格式为:列名 比较操作符 要比较的值

  • 2、比较操作符
1477113310673.png
  • 字符型数据作为被比较的值时,必须用单引号引起来

  • 字符型数值区分大小写

  • 日期型数值作为被比较的值时,必须用单引号引起来。

  • 日期型数值是区分日期表达形式的,默认的日期形式是DD-MON-RR

  • 3、特殊比较运算符

1477113427983.png
  • 4、逻辑运算符

当需要和多个条件表达式进行比较时,需要使用逻辑运算符把多个表达式连接起来;

1477113536775.png
  • 5、运算符的优先级

括号’()’优先于其他操作符

1477113594138.png
  • ORDER BY子句

使用ORDER BY子句能对查询结果集进行排序,语法结构如下;

1477113658988.png

其中:

  • 可以按照列名、表达式、列别名、结果集的列序号排序;

  • ASC: 升序,默认值 DESC: 降序;

  • ORDER BY 子句必须写在SELECT语句的最后;

  • 排序规则

    • 数字升序排列小值在前,大值在后。即按照数字大小顺序由小到大排列。
    • 日期升序排列相对较早的日期在前,较晚的日期在后;
    • 字符升序排列按照字母由小到大的顺序排列。即由A-Z排列;中文升序按照字典顺序排列。
    • 空值在升序排列中排在最后,在降序排列中排在最开始;

单行函数

  • 1、SQL函数概述
1477114054240.png
  • 2、SQL函数分类
1477114093869.png
  • 3、单行函数语法
    语法:
函数名[(参数1,参数2,…)]

其中的参数可以是以下之一:

变量
列名
表达式

  • 4、单行函数特征

    • 单行函数对单行操作;
    • 每行返回一个结果
    • 有可能返回值与原参数数据类型不一致;
    • 单行函数可以写在SELECT、WHERE、ORDER BY子句中;
    • 有些函数没有参数,有些函数包括一个或多个参数;
    • 函数可以嵌套
  • 5、单行函数的分类

1477114317083.png
  • 6、字符函数

主要指参数类型是字符型,不同函数返回值可能是字符型或数值型;

1477114449959.png
  • 大小写转换函数

LOWER(列名|表达式):将大写或大小写混合的字符转换成小写

UPPER(列名|表达式) :将小写或大小写混合的字符转换成大写

INITCAP(列名|表达式) :将每个单词的第一个字母转换成大写,其余的字母都转换成小写

  • 字符处理函数

CONCAT(column1|expression1,column2|expression2) 连接两个值 ,等同于||;

SUBSTR (column|expression,n1[,n2])

  • 返回第一个参数中,从第n1位开始,长度为n2的子串
  • 如果n2省略,取第n1位开始的所有字符。
  • 如果n1是负值,表示从第一个参数的后面第abs(n1)位开始向右取长度为n2的子串。

LENGTH(column | expression) 取字符长度;

INSTR(s1,s2,[,n1],[n2])
返回s1中,子串s2从n1开始,第n2次出现的位置。n1,n2默认值为1

LPAD(s1,n1,s2)
返回s1被s2从面填充到n1长度后的字符串。

RPAD(s1,n1,s2)
返回s1被s2从右面填充到n1长度后的字符串。
TRIM:去除字符串头部或尾部(头尾)的字符格式:TRIM(leading | trailing | both trim_character From trim_source)

REPLACE(s1,s2,s3)
把s1中的s2用s3替换。

  • 7、数值函数

ROUND : 将列或表达式所表示的数值四舍五入到小数点后的第n位。格式: ROUND(column| expression, n)

TRUNC : 将列或表达式所表示的数值截取到小数点后的第n位。格式:TRUNC(column| expression, n)

MOD : 取m除以n后得到的余数格式:MOD(m,n)

  • 8、日期类型数学运算

SYSDATE :返回系统当前日期
add_months(sysdate,12) 加1年
add_months(sysdate,1) 加1月
sysdate+1 加一天sysdate+1/24 加1小时sysdate+1/(2460)* 加1分钟
sysdate+1/(246060)** 加1秒钟
EXTRACT :返回日期类型数据中的年份、月份或者日;
MONTHS_BETWEEN :返回两个日期类型数据之间间隔的自然月数
NEXT_DAY:返回某一日期的下一个指定日期
LAST_DAY:返回指定日期当月最后一天的日期

  • 9、转换函数
1477115197320.png
  • 隐式数据类型转换规则

    • 对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型
    • 对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型
    • 当比较一个字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型
    • 当比较字符型和日期型的数据时,oracle会把字符型转换为日期型
    • 用连接操作符(||)时,oracle会把非字符类型的数据转换为字符类型
    • 如果字符类型的数据和非字符类型的数据(如number、date、rowid等)作算术运算,则oracle会将字符类型的数据转换为合适的数据类型,这些数据类型可能是number、date、rowid等;
  • 显式数据类型转换

通常是在字符类型、日期类型、数值类型之间进行显式转换。主要有3个显式转换函数:

  • TO_CHAR
  • TO_NUMBER
  • TO_DATE
1477115361003.png
  • 10、通用函数

与空值(NULL)相关的一些函数,完成对空值(NULL)的一些操作。主要包括以下函数:

  • NVL
    语法:NVL (expr1,expr2)
    如果expr1不是null,返回expr1,否则返回expr2

  • NVL2

语法:NVL2(expr1,expr2,expr3)
如果expr1不是null,返回expr2,否则返回expr3

  • NULLIF

语法: NULLIF(expr1,expr2)
比较两个表达式,如果相等,返回null,否则,返回第一个表达式

  • COALESCE

COALESCE (表达式1, 表达式2, ... 表达式n);
函数是对NVL函数的扩展。COALESCE函数的功能是返回第一个不为空的参数,参数个数不受限制。

条件处理函数:

  • CASE表达式
1477115556000.png
  • DECODE

DECODE(字段|表达式, 条件1,结果1[,条件2,结果2…,][,缺省值])

  • 11、函数的嵌套

    • 单行函数可以嵌套于任何层。
    • 嵌套的函数是从最里层向最外层的顺序计算的!
1477115638859.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 197,368评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,941评论 2 374
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,369评论 0 326
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,848评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,719评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,505评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,904评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,528评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,819评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,848评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,652评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,468评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,912评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,095评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,389评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,906评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,120评论 2 339

推荐阅读更多精彩内容

  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,688评论 0 2
  • SQL SELECT 语句 一、查询SQL SELECT 语法 (1)SELECT 列名称 FROM 表名称 (2...
    有钱且幸福阅读 5,401评论 0 33
  • 世人对《小王子》的推崇无需赘述,就是这样的一个小故事,却填充了我诸多的漫漫时光。年少轻狂、深夜孤寂、闲暇懒散,静静...
    陈儿阅读 839评论 0 1
  • 在这森林里 水泥悄悄萌着芽 钢筋开着花 花儿结成的果实 既四方又规矩 深夜果实里的夫妻在叫骂 红墙里锁了孩子的哭啼...
    仓央格桑阅读 569评论 0 0
  • 1、建立项目 制定规范 编写一个名为“学习笔记”的Web应用程序,让用户能够记录感兴趣的主题,并在学习每个主题的过...
    summer_zhou阅读 1,142评论 0 4