一、SQL简介
SQL 全名是结构化查询语言(Structured Query Language),是用于数据库中的标准数据查询语言,IBM 公司最早使用在其开发的数据库系统中。1986年10月,美国 ANSI 对 SQL 进行规范后,以此作为关系式数据库管理系统的标准语言 (ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。
各种通行的数据库系统在其实践过程中都对 SQL 规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL语言不能完全相互通用。 现在最新的标准是SQL99,ORACLE不但对标准的SQL完全兼容,而且有自己更为方便的增强SQL。
二、SQL的分类:
DML语句(数据操作语言)Insert、Update、 Delete、Merge 、Select DDL语句(数据定义语言)Create、Alter、 Drop、Truncate DCL语句(数据控制语言)Grant、Revoke 事务控制语句Commit 、Rollback、Savepoint
三、SQL运算符算术表达式 + - / *
连接运算符 || 空值 is null
比较运算符 > < (!= or <>) between and in操作 not in
模糊查询 like
去除重复行 distinct
逻辑运算符 or and not
四、字符函数
Ascii : 返回与指定的字符对应的十进制数;
Chr : 给出整数,返回对应的字符;
Upper :返回字符串, 并将所有的字符大写;
Lower :返回字符串,并将所有的字符小写;
Initcap :返回字符串将字符串的第一个字母变为大写;
例:
select ascii('A') from dual;
select chr(66) from dual;
select upper('abCDef') from dual;
select lower ('abCDef') from dual;
select initcap ('abCDef') from dual;
Substr(string,start,count) :取子字符串,从start开始,取count个;
Substrb(string,start,count) ;
Instr(C1,C2,I,J) :在一个字符串中搜索 指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串,C2 希望搜索的字符串,I 搜索的开始位置,默认为1,J 出现的位置,默认为1; Instrb(C1,C2,I,J);
Concat :连接两个字符串;
Length :返回字符串的长度;
Lpad :在列的左边粘贴字符;
Rpad :在列的右边粘贴字符;
Trim :删除两边出现的字符串;
Ltrim : 删除左边出现的字符串;
Rtrim : 删除右边出现的字符串;
五、数值函数
Abs : 返回指定值的绝对值;
Round :按照指定的精度进行四舍五入;
Ceil :返回大于或等于给出数字的最小整数;
Trunc :返回小于或等于给出数字的最大整数;
Floor : 对给定的数字取整数
六、日期函数
Months_between返回两个日期之间的月份;
Add_months增加或减去月份;
Next_day(date,’day’)给出日期date和星期x之后计算下一个星期的日期;
Last_day返回日期的最后一天;
Trunc:截取时间;例如:select trunc(sysdate,‘w’) from dual;
六、转换函数
To_char将日期转化为字符串;
To_number将给出的字符转换为数字;
To_date将字符串转化为日期 。
七、通用函数
NVL (exp1, exp2):如果表达式exp1 为空,返回exp2;
NULLIF (exp1, exp2) :如果表达式exp1与exp2的值相等则返回null,否则 返回exp1的值;
八、分组函数
Count:返回结果集的记录数;(如果结果是为空会怎样?)
Avg: 返回平均数;Max: 返回最大值;
Min: 返回最小值;Sum: 返回数值和;
<SPAN style="COLOR: #ff0000">DECODE()函数</SPAN>
<SPAN style="COLOR: #ff0000">DECODE()函数</SPAN> SELECT empno, ename, sal ,DECODE (deptno,10, '财务部', 20, '研发部', 30, '销售部','未知部门')部门 FROM emp; <SPAN style="COLOR: #ff0000"> CASE表达式</SPAN> SELECT empno,ename,sal,CASE deptno WHEN 10 THEN '财务部' WHEN 20 THEN '研发部' WHEN 30 THEN '销售部' ELSE '未知部门' END 部门 FROM emp;