现在的位置: 首页 > 综合 > 正文

02_SQL语句(二)

2013年02月10日 ⁄ 综合 ⁄ 共 1959字 ⁄ 字号 评论关闭

()、对查询结果排序  (ORDER BY 子句)

语法格式:

SELECT {DINTINCT} *|具体的列 别名 FROM 表名 WHERE条件(S){ORDER BY 排序的字段1 ASC|DESC,排序的字段2  ASC|DESC}

1.       升序排序 (ASC 一般默认的就是升序,即不写排序类型时默认是升序)

例:查询出emp表的内容 并按薪水 升序排列

SELECT * FROM emp ORDER BY sal ;

SELECT * FROM emp ORDER BY sal ASC;

 

2.       降序排列 (在排序字段后加DESC)

例:查询出emp表的内容 并按薪水降序排列

SELECT * FROM emp ORDER BY sal DESC;

 

3.       多个排序排序条件  此时先按第一个条件排序 第一个条件的内容相等 在按第二个条件排序

例:查询出emp表的内容 先按薪水由高到低排序 如果薪水一样 则按雇佣日期 由早到晚排序

SELECT * FROM emp ORDER BY sal DESChiedate ASC;

 

()、单行函数

在数据库系统中,每个数据库之间唯一不同的最大区别就在于函数的支持上,使用函数可以完成一系列的操作

单行函数语法:

Function_name(column | expression,[arg1,arg2…..])

参数说明:

 Function_name:函数名称

 Column:数据库列名

 Expression:字符串或计算表达式

 arg1 arg2 :在函数中使用的参数

 

1、单行函数的分类:

       |--- 字符函数 接受字符输入并返回字符或数值

       |--- 数值函数 接受数值输入并返回数值

       |--- 日期函数 对日期数据进行操作

       |--- 转换函数 从一种数据类型转换为另一种数据类型

       |--- 通用函数 NVL函数 DECODE函数

 

2、字符函数

专门处理字符的函数 字符的大小写变更 求出字符的长度

(1)、将小写变为大写 UPPER(‘’)

SELECT UPPER(‘smith’) FROM DUAL; àSMITH

 

(2)、将大写变小写  LOWER(‘’)

SELECT LOWER(‘SMITH’) FROM DUAL; àsmith

 

(3)、将单词的第一个字符大写 INITCAP(“”) 注:使用词语不论输入的字符是什么样的大小写格式 输出的均是首字符大写 其余小写的形式

SELECT INITCAP(‘SMITH’) FROM DUAL; àSmith

例:将雇员表中的雇员姓名变为首字母大写

SELET INITCAP(ename) FROM emp;

 

(4)、字符串除了可以使用  || 连接外 还可以使用CONCAT( ) 进行连接

SELECT CONCAT(‘Hello’,’World’) FROM DUAL; à使用CONCAT() 进行字符串连接

SELECT ‘HELLO’||’WORLD’ FROM DUAL; à使用 || 进行字符串的连接操作

但是可以看出 CONCAT()并没用 || 好用

 

(5)、字符串的长度LENGTH(‘xxxx’)

SELECT LENGTH(‘Hello’) FROM DUAL;

 

(6)、字符串的替换 REPLACE(‘xxx’,’被替换的内容’,’替换的内容’)

SELECT REPLACE(‘Hello’,’H’,’W’) FROM DUAL;

注:如果被替换的内容不在字符串中 SQL语句可以执行 但不会产生替换效果

SELECT REPLACE(‘Hello’,’a’,’r’);

Hello将不会变化

(7)、截取SUBSTR(‘Hello’,n,m)   表示从第n位开始截取 截取m

:SELECT SUBSTR(‘Hello’,1,3) 截取,LENGTH(‘Hello’) ;     

注:关于SubStr()面试相关的问题

ORACLESUBSTR()的截取点是从0还是 1开始

       |--0 1 开始都是一样的 因为 oracle比较智能

 

     例:查询出所有雇员的姓名及姓名的后三个字符

SELECT ename,SUBSTR(ename,LENGTH(ename)-2) FROM emp;

注:如果从第n为开始截取 不写截取多少位 那么默认从第n位一致截取到最后

 

可以看出因为每个雇员姓名的长度不一样 所以需要求出姓名的长度在减去2,这样比较麻烦

     例:查询出所有雇员的姓名及姓名的倒数第二个字符

SELECT ename,SUBSTR(ename,-2,1) FROM emp;

为了方便的进行字符串的截取 oraclesubstr()函数提供了更加方便的机制 可以采用倒着截取的方式,只有输入的位数是负数 就表示倒着截取

 

 

 

4、日期函数

Oracle提供了很多和日期操作有关的函数,包括加减日期 但日期进行加减结果会有一些规律

       |-- 日期+/-数字 = 日期

       |-- 日期

抱歉!评论已关闭.