ORACLE基础学习(2)—SQL语言
上一篇大家已经,对于ORACLE的安装已经完成,接下来,将是ORACLE学习深入,学习SQL语言,如何操作ORACLE。
本篇中主要分为:
SQL语言分类
基本函数
DDL语句
DML语句
SQL语言分类:
1. 数据查询语言(DQL):用于检索数据库数据。
2. 数据操纵语言(Data Manipulation Language,DML):用于改变数据库数据,
包括INSERT,UPDATE,DELETE
3. 事务控制语言(Transactional Control Language,TCL):用于维护数据的一致性,
包括COMMIT,ROLLBACK,SAVEPOINT。
4 数据定义语言(Data Definition Language,DDL):用于建立、修改删除数据库对象。
包括CREATE TABELE,ALTER TABLE DROP TABLE。DDL语句会自动提交事务。
4. 数据控制语言(Data Control Language,DCL):用于权限授予和权限回收操作,包括
GRANT和REVOKE,DCL语句也是自动对于事务进行提交的。
基本函数
字符类型函数
ASCII('字符') 返回字符的ASCII码值
CHR chr(39)--> ' chr(10)-->\n返回n的字符值 n是ASCII码数
LOWER 小写转换
UPPER大写转换
INITCAP(列名|表达式)
每个词的词头大写 其他小写
CONCAT(列名|表达式,列名|表达式)
将第一个字符串和第二个字符串连接
SUBSTR(列名|表达式,m,[n])
返回指定子串,该子串是从第m个字符开始,其长度为n,不指定n值则从m到最后
LENGTH(列名|表达式)
返回字符串的长度
INSTR (列名|表达式,'字符串',[m],[n])
从表达式或列中搜索给定的字符串的所处位置,m代表从第几个开始搜,n代表第几次出现. m和n默认都是1
TRIM([leading|]trailing|both 要去掉的字符 FROM 源字符串)
从源字符串中去掉指定的字符 可以用leading tailing来修饰去掉的字符串是在开头或结尾,默认是两者都 默认截取的是空格
lpad 左填充
rpad 右填充
REPLACE(源字符串,OLD字符串,NEW字符串)
从源字符串中找到搜索的old字符串,替换成new字符串
数值型函数
ROUND(列名|表达式,n)
四舍五入到小数点后的n位
TRUNC(列名|表达式,n)
截取到小数点后的n位
MOD(m,n)
求m除以n的余数
CEIL 取整 向上补1 和trunc相反
power(底数,指数) 求次方
ROUND(列名|表达式,n)
四舍五入到小数点后的n位
日期类型函数
ADD_MONTHS(日期,n)
把n个月加到日期上
NEXT_DAY(日期,星期)
从当天算起,求下一个指定星期几是几号. 如果是中文系统将MONDAY改成"星期一"
LAST_DAY(日期)
返回该日期的所在月的最后一天
MONTHS_BETWWEN(d1,d2)
返回d1和d2之间月的数目,如果d1,d2的日期都相同,或者都是该月的最后一天.
NEW_TIME(d1,tz1,tz2)
D1是一个日期数据类型,当时区tz1中的日期和时间都是d时, 返回时区tz2的日期和时间.
NEXT_DAY(d.char)
该函数用于返回指定日期后的第一个工作日。
SYADATE
返回当前日期和时间
TRUNC(d,[fmt])
返回由fmt指定的单位日期d.
转换函数
CHARTORWID(c)
C是一个字符串,函数将c转换为RWID数据类型.
CONVERT(c,dset,sset)
C是字符串,dset,sset是两个字符集,函数闺怨字符串c由sset字符集转换为dset字符集,sset的缺省设置为数据库的字符集.
HEXTORAW(x)
X为16进制的字符串,函数闺怨16进制的x转换为RAW数据类型.
RAWTOHEX(X)
X是RAW数据类型字符,函数闺怨RAW数据类型转换为16进制的数据类型。
ROWIDTOCHAR(rowid)函数将ROWID数据类型转换为CHAR
O_CHAR(x,fmt[n,nlsparam[]]\
X是一个data或者number数据类型,函数将x转换为fmt指定格式的char数据类型
TO_DATE (x,fmt[n,nlsparam[]])
TO_MULTI_BYTE(c)
C表示一个字符串,函数将c的单字节字符转换为多字节字符
TO_NUMBER([c,[fmt[,nlsparam]]]
TO_SINGLE_BYTE(c)
将字符串c中的多字节字符转换成等价的单字节字符。
组函数
AVG
MAX
MIN
STDDEV
SUM
VARIANCE
case
简单case实现的是等值比较(表达式在when之前)
SQL> select ename,sal,case deptno when 10 then 'AAA'
when 20 then 'BBB'
else 'CCC'
end
from emp order by deptno;
SQL>
ENAME SAL CAS
---------- ---------- ---
CLARK 2450 AAA
KING 5000 AAA
MILLER 1300 AAA
JONES 2975 BBB
FORD 3000 BBB
ADAMS 1100 BBB
SMITH 800 BBB
SCOTT 3000 BBB
WARD 1250 CCC
TURNER 1500 CCC
ALLEN 1600 CCC
JAMES 950 CCC
BLAKE 2850 CCC
MARTIN 1250 CCC
14 rows selected.
搜索case实现的是不等值比较(表达式在when之后)
SQL> select ename,sal,case when sal<=1000 then sal+1
when sal>1000 and sal<=2000 then sal+2
when sal>2000 and sal<=3000 then sal+3
else sal+4
end "up_sal"
from emp order by sal;
ENAME SAL up_sal
---------- ---------- ----------
SMITH 800 801
JAMES 950 951
ADAMS 1100 1102
WARD 1250 1252
MARTIN 1250 1252
MILLER 1300 1302
TURNER 1500 1502
ALLEN 1600 1602
CLARK 2450 2453
BLAKE 2850 2853
JONES 2975 2978
SCOTT 3000 3003
FORD 3000 3003
KING 5000 5004
DECODE
DECODE(value,search_value,result,default_value)对value与search_value进行比较,如果相等返回result,否则返回default_value.
使用DDL语句
Oracle支持的数据类型存放在DBA_TYPES数据字典中,可以DBA登录系统进行查询:
Select TYPE_NAME from dba_types where owner is null;
主键
1)创建主键:
2)使用alter table语句定义主键
3)alter table语句修改主键的状态
4) 删除主键
外键
约束
也称为完整性约束,Oracle系统完整性约束包括主键,外键及CHECK,NOT NULL,Unique Index共5 种
Check 约束
用于增强表中数据内容规则的一致性。
CHECK约束可以被创建或者增加为在某个列级别上的约束。
NOT NULL 约束
用于单一数据列上,该数据列不能为空值
UNIQUE 唯一性约束
唯一性约束要求一列或一组中的每一个都是唯一的。
索引
视图
序列
同义词:
DML语句
INSERT
UPDATE
DELETE
MERGE
TRUNCATE
DESCRIBE
ORACLE基础学习(2)—SQL语言
上一篇大家已经,对于ORACLE的安装已经完成,接下来,将是ORACLE学习深入,学习SQL语言,如何操作ORACLE。
本篇中主要分为:
SQL语言分类
基本函数
DDL语句
DML语句
SQL语言分类:
1. 数据查询语言(DQL):用于检索数据库数据。
2. 数据操纵语言(Data Manipulation Language,DML):用于改变数据库数据,
包括INSERT,UPDATE,DELETE
3. 事务控制语言(Transactional Control Language,TCL):用于维护数据的一致性,
包括COMMIT,ROLLBACK,SAVEPOINT。
4 数据定义语言(Data Definition Language,DDL):用于建立、修改删除数据库对象。
包括CREATE TABELE,ALTER TABLE DROP TABLE。DDL语句会自动提交事务。
4. 数据控制语言(Data Control Language,DCL):用于权限授予和权限回收操作,包括
GRANT和REVOKE,DCL语句也是自动对于事务进行提交的。
基本函数
字符类型函数
ASCII('字符') 返回字符的ASCII码值
CHR chr(39)--> ' chr(10)-->\n返回n的字符值 n是ASCII码数
LOWER 小写转换
UPPER大写转换
INITCAP(列名|表达式)
每个词的词头大写 其他小写
CONCAT(列名|表达式,列名|表达式)
将第一个字符串和第二个字符串连接
SUBSTR(列名|表达式,m,[n])
返回指定子串,该子串是从第m个字符开始,其长度为n,不指定n值则从m到最后
LENGTH(列名|表达式)
返回字符串的长度
INSTR (列名|表达式,'字符串',[m],[n])
从表达式或列中搜索给定的字符串的所处位置,m代表从第几个开始搜,n代表第几次出现. m和n默认都是1
TRIM([leading|]trailing|both 要去掉的字符 FROM 源字符串)
从源字符串中去掉指定的字符 可以用leading tailing来修饰去掉的字符串是在开头或结尾,默认是两者都 默认截取的是空格
lpad 左填充
rpad 右填充
REPLACE(源字符串,OLD字符串,NEW字符串)
从源字符串中找到搜索的old字符串,替换成new字符串
数值型函数
ROUND(列名|表达式,n)
四舍五入到小数点后的n位
TRUNC(列名|表达式,n)
截取到小数点后的n位
MOD(m,n)
求m除以n的余数
CEIL 取整 向上补1 和trunc相反
power(底数,指数) 求次方
ROUND(列名|表达式,n)
四舍五入到小数点后的n位
日期类型函数
ADD_MONTHS(日期,n)
把n个月加到日期上
NEXT_DAY(日期,星期)
从当天算起,求下一个指定星期几是几号. 如果是中文系统将MONDAY改成"星期一"
LAST_DAY(日期)
返回该日期的所在月的最后一天
MONTHS_BETWWEN(d1,d2)
返回d1和d2之间月的数目,如果d1,d2的日期都相同,或者都是该月的最后一天.
NEW_TIME(d1,tz1,tz2)
D1是一个日期数据类型,当时区tz1中的日期和时间都是d时, 返回时区tz2的日期和时间.
NEXT_DAY(d.char)
该函数用于返回指定日期后的第一个工作日。
SYADATE
返回当前日期和时间
TRUNC(d,[fmt])
返回由fmt指定的单位日期d.
转换函数
CHARTORWID(c)
C是一个字符串,函数将c转换为RWID数据类型.
CONVERT(c,dset,sset)
C是字符串,dset,sset是两个字符集,函数闺怨字符串c由sset字符集转换为dset字符集,sset的缺省设置为数据库的字符集.
HEXTORAW(x)
X为16进制的字符串,函数闺怨16进制的x转换为RAW数据类型.
RAWTOHEX(X)
X是RAW数据类型字符,函数闺怨RAW数据类型转换为16进制的数据类型。
ROWIDTOCHAR(rowid)函数将ROWID数据类型转换为CHAR
O_CHAR(x,fmt[n,nlsparam[]]\
X是一个data或者number数据类型,函数将x转换为fmt指定格式的char数据类型
TO_DATE (x,fmt[n,nlsparam[]])
TO_MULTI_BYTE(c)
C表示一个字符串,函数将c的单字节字符转换为多字节字符
TO_NUMBER([c,[fmt[,nlsparam]]]
TO_SINGLE_BYTE(c)
将字符串c中的多字节字符转换成等价的单字节字符。
组函数
AVG
MAX
MIN
STDDEV
SUM
VARIANCE
case
简单case实现的是等值比较(表达式在when之前)
SQL> select ename,sal,case deptno when 10 then 'AAA'
when 20 then 'BBB'
else 'CCC'
end
from emp order by deptno;
SQL>
ENAME SAL CAS
---------- ---------- ---
CLARK 2450 AAA
KING 5000 AAA
MILLER 1300 AAA
JONES 2975 BBB
FORD 3000 BBB
ADAMS 1100 BBB
SMITH 800 BBB
SCOTT 3000 BBB
WARD 1250 CCC
TURNER 1500 CCC
ALLEN 1600 CCC
JAMES 950 CCC
BLAKE 2850 CCC
MARTIN 1250 CCC
14 rows selected.
搜索case实现的是不等值比较(表达式在when之后)
SQL> select ename,sal,case when sal<=1000 then sal+1
when sal>1000 and sal<=2000 then sal+2
when sal>2000 and sal<=3000 then sal+3
else sal+4
end "up_sal"
from emp order by sal;
ENAME SAL up_sal
---------- ---------- ----------
SMITH 800 801
JAMES 950 951
ADAMS 1100 1102
WARD 1250 1252
MARTIN 1250 1252
MILLER 1300 1302
TURNER 1500 1502
ALLEN 1600 1602
CLARK 2450 2453
BLAKE 2850 2853
JONES 2975 2978
SCOTT 3000 3003
FORD 3000 3003
KING 5000 5004
DECODE
DECODE(value,search_value,result,default_value)对value与search_value进行比较,如果相等返回result,否则返回default_value.
使用DDL语句
Oracle支持的数据类型存放在DBA_TYPES数据字典中,可以DBA登录系统进行查询:
Select TYPE_NAME from dba_types where owner is null;
主键
1)创建主键:
2)使用alter table语句定义主键
3)alter table语句修改主键的状态
4) 删除主键
外键
约束
也称为完整性约束,Oracle系统完整性约束包括主键,外键及CHECK,NOT NULL,Unique Index共5 种
Check 约束
用于增强表中数据内容规则的一致性。
CHECK约束可以被创建或者增加为在某个列级别上的约束。
NOT NULL 约束
用于单一数据列上,该数据列不能为空值
UNIQUE 唯一性约束
唯一性约束要求一列或一组中的每一个都是唯一的。
索引
视图
序列
同义词:
DML语句
INSERT
UPDATE
DELETE
MERGE
TRUNCATE
DESCRIBE