:
接上篇 :约束和排序数据
逻辑条件关系
逻辑条件:逻辑条件组合两个比较条件的结果来产生一个基于这些条件的单个的结果,
或者逆转一个单个条件的结果。当所有条件的结果为真时,返回行。SQL 的三个逻辑运算
符是:AND 、OR 、NOT 。含义如下:
运算符的优先级:
优先规则:优先规则定义表达式求值和计算的顺序,表中列出了默认的优先顺序。你可
以用圆括号括住你想要先计算的表达式来覆盖默认的优先顺序。
使用ORDER BY 排序
ASC: 升序排序,默认
DESC: 降序排序
ORDER BY 子句:用于对结果集进行排序处理,提供了升序排序(ASC)与降序排序(DESC)如果不指定排序规则默认为升序排序。 在排序中也可以使用没有包括在 SELECT 子句中的列排序。如果未使用 ORDER BY 子句,排序次序就未定义,并且 Oracle 服务器可能对于相同查询的两次执行取回行的顺序不同。
ORDER BY语法
1.ORDER BY 子句在 SELECT 语句的最后
2.ORDER BY 后侧指定需要排序列
3.ASC 以升序排序行 (这是默认排序)
4.DESC 以降序排序行
排序规则:升序
1.对于数字值,小的值在前面显示—例如,1–999。
2.对于日期,早的日期在前面显示—例如,01-1-92 在 01-1-95 前面 。
3.对于字符值,依字母顺序显示—例如,A 第一,Z 最后。
4.对于空值,升序排序时显示在最后,降序排序时显示在最前面
降序与升序相反。
Oracle函数:
什么是函数:
函数:是数据库产品中提供的能够处理查询结果的方法。
函数能够用于下面的目的:
• 执行数据计算
• 修改单个数据项
• 格式化显示的日期和数字
• 转换列数据类型
• 函数有输入参数,并且总有一个返回值。
函数类型:
单行函数:这些函数仅对单个行进行运算,并且每行返回一个结果。
多行函数(聚合函数):这些函数能够操纵成组的行,每个行组给出一个结果,这些函数也被称为组函数。
函数语法
function_name(arg1,arg2,.....)
function_name:是函数的名字。
arg1, arg2:是由函数使用的任意参数。参数可以是一个列名、用户提供的常数、变量值、或者一个表达式。
单行函数
单行函数的特性包括:
• 作用于每一个返回行,每行返回一个结果
• 可能需要一个或多个参数
• 可以修改结果集的数据类型
• 可以嵌套
• 可能返回一个与参数不同类型的数据值
• 能够用在 SELECT、WHERE 和 ORDER BY 子句中
单行函数分类:
字符函数:
字符函数: 单行字符函数接受字符数据作为输入, 既可以返回字符值也可以返回数字值。
字符函数分类:1.大小写处理函数 2. 字符处理函数
大小写处理函数:
LOWER:转换大小写混合的字符串为小写字符串。
UPPER:转换大小写混合的字符串为大写字符串。
INITCAP:将每个单词的首字母转换为大写,其他字母为小写。
大小写处理函数需要一个参数,参数类型为字符串类型,返回一个字符串。
dual表的说明:
dual 是一张只有一个字段,一行记录的表。dual 表也称之为'伪表',因为他不
存储主题数据。如果我们不需要从具体的表来取得表中数据,而是单纯地为了得到一些我们
想得到的信息,并要通过 select 完成时,就要借助 dual 表来满足结构化查询语言的格式。
字符处理函数:
CONCAT(arg1,arg2):连接值在一起 (CONCAT 函数有两个输入参数)
arg1:字符串类型。字符拼接的值。
arg2:字符串类型。字符拼接的值。
SUBSTR(arg1,arg2,arg3):截取子串。
arg1:字符串类型。原字符串,
arg2:整数类型。开始位置(开始位置可以是一个负数,-1 表示原串的最后一位,-2 则
表示倒是第二位以此类推),
arg3:整数类型。截取个数。
SUBSTR(arg1,arg2):截取子串。
arg1:字符串类型。原字符串。
arg2 开始位置(开始位置可以是一个负数,-1 表示原串的最后一位,-2 则表示倒是第二
位以此类推)截取到末尾。
LENGTH(arg1):以数字值显示一个字符串的长度。
arg1:字符串类型。计算长度的字符串。
INSTR(arg1,arg2):找到一个给定字符的数字位置。
arg1:字符串类型。原字符串。
arg2:字符串类型。查找内容。
INSTR(arg1,arg2,arg3,arg4):指定查找位置以及出现的次数。
arg1:字符串类型。原字符串。
arg2:字符串类型。查找内容。
arg3:整数类型。开始位置。
arg4:整数类型。第几次出现。
数字函数:
ROUND(arg1,arg2):四舍五入指定小数的值。
arg1:数字类型。原数字。
arg2:整数类型。小数点保留的位数,可以是一个负数。负数则表示指定整数的位置。
ROUND(arg1):四舍五入保留整数。
arg1:数字类型。原数字。
TRUNC(arg1,arg2):截断指定小数的值,不做四舍五入处理。
arg1:数字类型。原数字。
arg2:整数类型。小数点保留的位数,可以使一个负数。负数则表示指定整数的位置。
TRUNC(arg1):四舍五入保留整数。
arg1:数字类型。原数字。
MOD(arg1,arg2):取余。
arg1:数字类型。被除数。
arg2:数字类型。除数。
日期处理:
SYSDATE 函数
SYSDATE 是一个日期函数,它返回当前数据库服务器的日期和时间。
用日期计算
• 从日期加或者减一个数,结果是一个日期值
• 两个日期相减,得到两个日期之间的天数
• 用小时数除以 24,可以加小时到日期上
日期函数
MONTHS_BETWEEN(date1,date2):计算 date1 和 date2 之间的月数。其结果可以是正
的也可以是负的。如果 date1 大于 date2,结果是正的。反之,结果是负的。
date1:日期类型。
date2:日期类型。
ADD_MONTHS(date, n): 添加 n 个日历月到 date。 n 的值必须是整数, 但可以是负的。
date:日期类型。
n:整数
NEXT_DAY(date, ‘char’): 计算在 date 之后的下一个周(‘char’)的指定天的日期。 char 的
值可能是一个表示一天的数或者是一个字符串。 如果使用数字表示星期, 1是从星期日开始。
数字范围为:1-7。
date:日期类型。
char:数字或字符串。
LAST_DAY(date):计算包含 date 的月的最后一天的日期。
date:日期类型。
ROUND(date,‘fmt’):返回用格式化模式 fmt 四舍五入到指定单位的 date ,如果格式模
式 fmt 被忽略,date 被四舍五入到最近的天。
date:日期类型。
fmt:字符串类型表示的日期。
TRUNC(date, ‘fmt’):返回用格式化模式 fmt 截断到指定单位的带天的。如果格式模式
fmt 被忽略,date 被截断到最近的天。
date:日期类型。
fmt:字符串类型。
数据类型装换
隐式数据类型转换
隐式转换:当源数据的类型和目标数据的类型不同的时候,如果没有转换函数,就会发
生隐式转换,也称自动转换。
对于直接赋值转换
对于表达式赋值
隐式转换的问题:
性能影响:
隐式转换的最大问题就是转换时会导致索引的无效,进而可能导致全表扫描。当表的数
据量很大的时候,产生会很大的性能问题。比如说,VARCHAR2 和 NVARCHAR2 隐式数据
类型转换导致的性能问题。
不便于阅读:
由于隐式转换使得数据库编程人员和 DBA 难以了解到究竟发生了怎样的类型转换,而
且如果代码很多很长的话要查出错误就需要费很大的劲。
显示数据类型转换
通过数据库中的转换函数完成数据类型的转换。
转换函数:
TO_CHAR(arg1,’fmt’):将一个日期或者数字转换为字符类型。带格式化样式 fmt。
arg1:数字或者日期类型。需要转换的数据。
fmt:转换格式。
to_char日期转换
日期格式模板的元素
未完待续。