Oracle学习笔记之二——SQL语言基础
1.SQL语言分类
a.数据查询语言(Select语句): 用于检索数据,功能和语法较复杂,同时也应用最多
b.数据操纵语言(DML):用于改变数据库数据,包括Insert,Update,Delete三类,分别用于插入,更新,删除数据
c.数据定义语言(DDL):用于建立,修改和删除数据库对象,包括Create Table, Alter Table, Drop Table三类,分别用于创建表,更新表结构和删除表,DDL语句会自动提交事务
d.数据控制语句(DCL):用于执行权限授予和权限收回操作,包括Grant和Revoke两类语句,Grant用于给用户授予权限,Revoke用于收回用户所具有的权限,DCL语句也会自动提交事务
e.事务控制语句(TCL):用于维护数据一致性,包括Commit,Rollback,Savepoint三类语句,Commit用于确认已经进行的数据库改变,Rollback用于取消已经进行的数据库改变,Savepoint用于设置保存点,部分取消改变
2.SQL语法规则
a.SQL关键字不区分大小写
b.对象名和列名不区分大小写
c.字符值和日期值区分大小写
d.可以将一条很长的SQL语句分行完成,结尾以分号结尾
3. Select语句
语法:
SELECT [ALL | DISTINCT TOP n [PERCENT] WITH TIES select_list]
[INTO [new_table_name]]
[FROM {table_name | view_name}][table_name2 | view_name2]...[table_name16 | view_name16]
[WHERE clause]
[GROUP BY clause]
[HAVING clause]
[ORDER BY clause]
[COMPUTE clause]
[FOR BROWSE]
语法详解
使用FROM字句指定表,多个表之间用英文半角逗号分开,有时还需要制定数据库的Schema名称
使用SELECT + Column Name 查询指定列,多个列使用逗号分开;可以使用 * 来查询所有的列
使用WHERE字句进行条件过滤, WHERE字句中可以出现如下运算符(=, !=, <>, <, >, <=, >=, LIKE)
其中使用LIKE可以进行模糊查询,%可以匹配任意长度的字符,_可以匹配一个字符
WHERE字句中还可以使用OR, AND, NOT, BETWEEN...AND, IN, NOT IN等布尔运算符
使用ORDER BY字句进行排序,升序关键字ASC,降序关键字DESC
使用DISTINCT检索唯一的列值
使用算术运算符: +, - , *, /, MOD
4.使用基本函数1
字符函数
ASCII(Str):返回字符串第一个字母的ASCII码,使用CHR()函数则可将ASCII码转为字符串
CONCAT(Str1, Str2):Str1,Str2均为字符串,函数将Str2连接到Str1的后面,如果Str1为null则返回Str2,如果Str2为null则返回Str1,如果Str1与Str2均为null则返回null,该函数和 || 作用相同
INSTR(Str1, Str2 [,i[,j]]):Str1,Str2均为字符串,函数返回Str2在Str1中第j次出现的位置,搜索位置从Str1的第i个字符开始,当没有发现时返回0,如果i为负数,那么将从右到左进行,但是位置计算还是从左到右,i和j的默认值为1
LENGTH(Str1):Str1为字符串,该函数返回字符串的长度
LOWER(Str1):Str1为字符串,该函数返回Str1的小写字符串
UPPER(Str1):Str1为字符串,该函数返回Str1的大写字符串
LDAP(Str1,i,Str2):Str1,Str2均为字符串,i为整数,在Str1的左侧用Str2补足长度至i,如果i小于Str1的长度,那么只返回i那么长的Str1字符,其余部分将被截去,Str2默认为空格
RPAD(Str1,i,Str2):Str1,Str2均为字符串,i为整数,在Str1的右侧用Str2补足长度至i,如果i小于Str1的长度,那么
只返回i那么长的Str1字符,其余部分将被截去,Str2 默认为空格
LTRIM(Str1,Str2):Str1,Str2均为字符串,把Str1最左边的字符去掉,使其第一个字符不在Str2中,如果没有Str2,Str1不变
RTRIM(Str1,Str2):Str1,Str2均为字符串,把Str1最右边的字符去掉,使其第一个字符不在Str2中,如果没有Str2,Str1不变
REPLACE(Str1, [Str2,Str3]):函数用Str3代替出现在Str1中的Str2后返回结果
SELECT REPLACE('uptown', 'up', 'down') FROM DUAL ---> downtown
STBSTR(Str1,i[,j]):Str1为字符串,i,j为整数,从Str1的第i位返回长度为j的子串,如果j为空,则直到Str1的尾部
SOUNDEX(Str1):返回与Str1发音相似的词
TRANSLATE(Str1, Str2, Str3):用于从字符串的头部,尾部或两端截取特定的字符串,Str1为要截去的字符,Str2是源字符
数字函数
ABS(n):返回n的绝对值
ASIN(n):返回n的反正弦值,n为弧度,返回值介于-1和1之间
ACOS(n):返回n的反余弦值,n为弧度,返回值介于-1和1之间
ATAN(n):返回n的反正切值,n为弧度
SIN(n):返回n的正弦值,n为弧度
COS(n):返回n的余弦值,n为弧度
TAN(n):返回n的正切值,n为弧度
SINH(n):返回n的双曲线正弦值,n为弧度
COSH(n):返回n的双曲线余弦值,n为弧度
TANH(n):返回n的双曲线正切值,n为弧度
CEIL(n):向上取整,返回大于或等于n的最小整数值
FLOOR(n):向下取整,返回小于或等于n的最打整数值
ROUND(n1,n2):返回舍入小数点右边n2位的n1的值,n2的默认值是0,如果n2为负数舍入就到小数点左边相应的位上,n2必须是整数
EXP(n):返回e的n次幂
LN(n):返回n的自然对数,n必须大于0
LOG(n1,n2):返回以n1为底n2的对数
POWER(n1, n2):返回n1的n2次方
SQRT(n):返回n的平方根,n为弧度
MOD(n1, n2):返回n1除以n2的余数
TRUNC(n1,n2):返回截尾到n2位小数的n1的值,n2缺省设置为0,当n2为缺省设置时会将n1截尾为整数,如果n2为负值,就截尾在小数点左边相应的位上