傻瓜数据Oracle基础语句整理
表操作
1.创建表
CREAT TABLE 表名
(
列名 列的数据类型[null || not null]
[约束]
)
2更改表
ALTER TABLE 表名
(增加)ADD 列名 数据类型[null||not null]
(修改)MODIFY 列名 数据类型[null||not null]
(删除)Drop 列名
3 删除表
DROP TABLE 表名
4创建是增加主键约束
primay key (列名)
ADD CONSTRAINTS 列名 primay key 增加主键约束
DROP CONSTRAINT 约束名 删除主键约束
5外键约束
CONSTRAINT 约束名 FOREIGN KEY (列名)
REFERNCE 表名(列名)
ON DELETE CASCADS 连级删除 约束
6添加外键约束
ADD CONSTRAINT 外键名 FORIGN Key 列名
REFERENCE 表名(列名)
ON DELETE CASCADE;
7删除外键约束
DROP CONSTRAINT 外键名
8检查约束
CONSTRAINT 约束名 CHECK 检索语句 ·
9增加检索约束
ADD CONSTRAINT 约束名 CHECK 检索语句
10 删除检索语句
DROP CONSTRAINT 约束名
11创建唯一约束
CONSTRAINT 约束名 UNIQUE(列名)
12增加唯一约束
ADD CONSTRAINT 约束名 UNIQUE(列名)
13删除唯一约束
DROP CONSTRAINT 约束名
14增加非空约束
ALTER TABLE 表名
MODIFY column NOT NULL;
15 增加列表
INSERT INTO TABLE 表名 (列名1、列名2、列名3 ……) values(值1、值2、值3……)
16复制表
CREATE TABLE 表名 AS SELECT 列名1、列名2、……FROM 来源表;
17 修改 表名 的 列的值当满足条件
UPDATE 表名 SET 列名=值 WHERE 条件
18 按照 条件 删除 表名
DELETE FROM 表名 WHERE 条件
19 按照条件 在表名中 搜索 列名1 列名2 列名3……
SELECT 列名1、列名2、列名3…… FROM 表名 WHERE 条件
20 无条件删除表中全部数据
TRUN CATE TABLE 表名
21
如果满足条件执行更新语句
如果不满足条件执行增加语句
MERGE [INTO] 表名1 /参照/
USING 表名2 /参照/
ON(条件)
WHEN MATCH THEN 更新语句
WHEN NOT MATCH THEN 增加语句
select 语句
1基本样式
SELECT [DISTINCT/ALL] FROM 表名 [WHERE 条件] [group by 组条件] [HAVING 包含语句][order by 排序语句 ]
ORDER BY 排序关键词
{expr 表达式|表中的位置|别名} `
[asc 升序|desc降序]
[对空字段的处理方式 NULL FIRST 空字段放在第一个|NULL LAST 空字段放到最后一个]
{循环}
where 条件
1 关系条件 < 、<>、>、<= 、>=、 =、 !=
2比较操作符 :IS NULL 是空返回true 、LIKE 模糊比较字符串 、 BETWEEN …… and …… 验证值在某个值与某个值之间 IN 验证操作数在设定的系列值之间
3逻辑操作符: AND 两个条件都满足 OR 值满足一个 NOT 与某个逻辑相反
GROUP BY 组关键字
GROUP BY
{
expr
| {ROLLUP | CUBE} ({expr[,expr]…})
}
ROLLUP|CUBE:GROUP BY 子句的扩展,可以返回小计和总计记录
HAVING关键字
having关键字与组有关,与组GROUP BY 关键字相连 与where不同只与组有关,与组关键字连用
连接搜索
1、SELECT * FROM 表名、表名2······
搜索表名、表名2 ······数据库
等值连接
1、SELECT a.关键字1,b.关键字2 FROM 表名 a,表名 b WHERE a.关键字3 = b.关键3
2、SELECT a.关键字1 ,b.关键字2 FROM 表名 a INNER JOIN 表名2 ON a.关键3 =b.关键3
自连接
1、SELECT a.关键字1 ,b.关键字2 ,c.关键字3 FROM 表名1 a,表名2 b ,表名3 c WHERE 条件1 AND 条件2 AND 条件3······
2、SELECT a.关键字1 ,b.关键字2 ,c.关键字3 FROM 表名1 a, JOIN 表名2 b ON 条件1 AND 条件2 AND 条件3·······
外连接
1、左链接
SELECT a.关键字1 ,a.关键字2 ,b.关键字1 ,b.关键字2 FROM 表名 a LEFT JOIN 表名b ON 条件
a表显示全部
2、右链接
SELECT a.关键字1 ,a关键字2 ,b.关键字1 ,b.关键字2 FROM 表名 a RIGHT JOIN 表名 b ON 条件
b表显示全部
3、全链接
SELECT a.关键字1 ,a.关键字2 ,b.关键字1 , b.关键字2 FROM 表名 a FULL JOIN 表名 b ON 条件
显示全部
4、左链接另一个写法
SELECT a.关键字1 ,a关键字2 ,b.关键字1 ,b.关键字2 FROM 表名a 、表名b WHERE a.关键字3 = b.关键字3(+)
5、右链接另一个写法
SELECT a.关键字1 ,a关键字2, ,b.关键字1 ,b.关键字2 FROM 表名a 、表名b WHERE a.关键字3(+) = b.关键字3
基础内置函数语句
1、ABS(N) 绝对值
EX: ABS(100) ABS(-100) ABS(‘100’)
2、MOD(n2 ,n1)取余 n2/n1的余数
EX:MOD(5,2) MOD(-100/2.1)
3、SIGN(N) 函数 取符号 正数 1 负数0
4、COS(N) N的余弦
5、ACOS(N) N的反余弦
6、COSH(N) 双曲线余弦
7、SIN(N) 正弦
8、SINH(N) 双曲线正弦
9、ASIN(N) 反正弦
10、TAN(N) 正切
11、TANH(N) 双曲线正切
12、ATAN(N) 反正切
13、CEIL(N) 返回n大于等于N的最小值 注:必须是数值或者可以隐式可以转换的
14、SQRT(N) 返回N的平方根
注:n为数值时不能为负数、当N为BINARY_FLOAT或者BINARY_DOUBLE时,n<0将返回Nan
15、POWER(n2,n1) n2的n1次幂
注:n2为负数时,n1必须为正数(整数)
16、EXP(N) N的e次幂,e为常数常量
17、LOG(N1,N2) N1为底N2的对数,N1是除1和0 以外的任何正数
18、ROUND(N1,intieger) 四舍五入intieger位
intieger 为正整数时为第n位
为小数时,取整数部分
为负数时,取向左移动的部分
19、TRUNC(n,integer) 截取部分
integer 为正数时截取小数向右位置
为负数时截取小数向左位置
20、CHR(N[USING NCHAR_CS])
把ASCII转换 USING NCHAR_CS
21、LENGTH 返回字符串长度 变种有 LENGTH LENGTHB LENGTHC LENGTH2 LENGTH4
22、SUBSTR 字符串截取
SUBSTR(char,position[,substring_LENTHG])
变种
SUBSTR 以字符串为单位 SUBSTRB 以字节为单位 SUBSTRC 以UNICODE为单位 SUBSTR2 以USC2为单位 SUBSTR4以USC4为单位
postion 为初始位置、默认为1 如果为负数则从右边开始 substring_length 为截取长度
23、CONCAT(char1、char2) 连接字符串 与 ‘||’ 相似
参数可以 CHAR VARCHAR2 NCHAR NVARCHAR2 CLOB NCLOB
24、INSTR 字符串中搜索字符串
INSTR(string ,substring[,postion[,occurrence]])
string 待搜索的字符串 substring 要搜索的字符串 position搜索的开始位 occurrence:substring 第几次出现
25、UPPER 字符大小写转换位置(转大)
26、LOWER 字符大小写转换位置(转小)
27、 INICAP 所有单词首字符转换为大写
28、NLS_INITACP(char[,n[param]]) 将指定的参数的第一个字符转换为大写
29、NLS_UPPER(CHAR[,NLSPARAM]) 将指定的参数变成大写
30、NLSSOPT 将指定参数排序
31、REPLACE(char,search_string[,replacement_string]) 替换参数
char 表示搜索的目标的字符串
search_string 在目标字符串搜索的字符串
replacement_string 可迭,如果存在代表可替换的字符串如果没有,则是删除
32、RPAD 字符串填充函数
RPAD(EXP1,N[,EXPR2])
EXPR1 被 exp2 填充 直到长度为N为为止
如果expr2不存在则以空格填充
LPAD 则填充左边
33、TRIM([LEADING | TRAILING | BOTH][trim_charactertrim_source])
LEADING 前缀
TRAILING 后缀
BOTH 前缀和后缀
trim_charactr 删除的缀
trim_source 目标字符串
34、RTRIM 删除右边出现的缀
RTRIM(char[,set])
相反为LTRIM
35、NLS_CHARSET_ID(string) 获得字符ID
NLS_CHARSET_NAME(ID)从ID中获得字符
36、SYSDATE 获得系统时间
37、SYSTIMESTAMP 获得系统时间,包括时区,精确到秒
38、DBTIMEZONE 获得系统时间 时区 数据库时区
39、ADD_MONTHS(DATE,integer) 增加月份 date 指定时期 integer 指定月份数
40、SESSIONTIMEZONE 返回会话函数
41、LAST_DAY(date)返回指定时期所在月份最后一天
42、NEXT_DAY(date,char)返回指定时期向后的一周char的对应日期
43、CURRENT 该函数获得会话时区
44、EXTRACT(datetime) 获取指定部分的函数
45、MONTHS_BETWEEN(date1,date2)
表示 date1与date2中的月份数
当 date2>date 时正数否则为负数
如果两个日期表示为同某数个月同一天时或都是某月的最后一天 为整数,否则为小数
46、)NEW_TIME(date,time2eno1,time2eno2)
把date从第一个时区转到第二个时区
47、ROUND(date[fmt])
将date舍入到fmt指定的一天如果fmt为空则到最近的一天
48、TRUNC(date[,fmt])
将date截取或FMT格式如*fmt为空则为最近的一天
49、ASCIISTR(char)
将任意字符集转为ASCII码
50、BIN_TO_NUM(date[,date``````])
将二进制转换为十进制
51、CHARTOROWID(char)
注:将char转换或ROWID
ROWID格长度为18位
char 可以是CHAR、VACHAR(2)、NCHAR、NVARCHAR2 但必须符合 ROWID格式 ROWID 在整个数据库
52、ROWIDTOCHAR(rowID)将rowId转换为char
53、CONVERT(char,dest_char_sesti.source_char_set)
char 要转化的字符
可以是 CHAR VACHAR2 NCHAR NVARCHAR2 CLOB NCLOB类型
dest_char_set 目的字符集
source_char_set 原字符集
54、HEXTORAW(char)
将十六进制转换或RAW类型
char表示一个十六进制字符串
55、RAWTOHEX(RAW)
将RAW类型转换为十六进制
RAW为RAW型字符串
56、TO_CHAR(n[.fmt[,nlsparam]])
将数值n转换为R字符型
n为数值 fmt要转或字符的格式 nlsparam指定的特性
57、TO_CHAR(date[,*fmt[*nlsparam]])
date 时期
fml 指定时期形式
nlsparam[指定fml格式]
58、TO_DATE
TO_DATE(char[,fml[*nlsparam]])
char 代表日期的字符串
fml 日期的型氏
nlsparam 指定 fml的格式语句
59、TO_NUMBER(char,[*fml[,nlsparam]]) 数字转字符串
char可以是 CHAR VARCHAR2 NCHAR NVARCHAR2
60、TO_SINGLE_BYE(char) 全角转半角
61、COALESCE(expr) 返回 expr第一个不为 Null表达式
62、LNNVL(condition) 返回条件 condition 以外的数据
63、NVL(expr1,expr2) 返回列表 expr1 如果 expr为空则 expr2代提
64、AVG([all|distinct]expr) 平均值
all 全部 distinct 去重
expr 表达式 数值
65、COUNT(*|[distinct][all]expr)
*表示计算所有记录
distinct 表达式去重
all 表示全部
expr 要计算的对象 通常表示为例
66、MAX([distinct|all]expr) 返回值定列最大值
67、MIN([distinct|all]expr)返回值定列最小值
68、SUM([distinct|all]expr)分组计算指定列的和不分组,则一个表为一组
USER
SELECT USER FROM DUAL 返回登录名
USERENV(parameter) 返回会话以及上下信息
69、DECODE(expr,search,reult[,search1,result])
expe 符合条件 search 返回 result
PL/SQL
1、PL 模块
[DECLARE] 声明开始关键字
Degin/BEGIN 开始关键字
[EXCEPTION]····异常开始关键字
END 执行结束关键字
2、SET SERVEROUTPUT ON 可以打出输出脚本
3、变量名 变量类型
[
[NOT NULL]
{:=|DEFAULT} expression
]
4、常量名 CONSTANT 常量类型
[
[NOT NULL]
{:=|DEFAULT} expression
]
5、记录变量
TYPE 记录变量名 IS RECORD
{
[
记录成员名 记录成员类型
[NOT NULL]
{:=|DEFLAUT}expression
[,````````]
]
}
6、变量名 输出行类型%ROWTYPE
7、TYPE 键值名 IS TABLE OF
{
标量类型|数据类型|
}
[非空]
INDEX BY
{PLS_INTERGER |BINARY_INTGER}
VARCHAR2(V_SIZE)
}
8、VARRAY 变长数组
TYPE 数据名 IS{VARRY |VARYING ARRAY}(大小) of 类型[非空标识]
if条件使用
1、IF 条件 THEN
END IF
2、IF 条件 THEN
逻辑
ELSE
逻辑
END IF;
3、IF 条件 THEN
逻辑
ELSE IF 条件 THEN
逻辑
ELSE
逻辑
END IF;
CASE WHEN
1、[<<标签>>]
CASE 表达式
WHEN 对应值1 THEN
逻辑
[WHEN 对应值2 THEN 逻辑]
[可增加多个WHEN]
[ELSE 非所有对应值 逻辑]
END CASE
[<<标签>>]
2、
[<<标签>>]
CASE
WHEN 表达式(布尔值为true)THEN 逻辑
[WHEN 表达式(布尔值为true)THEN 逻辑]
[可增加多个WHEN]
ELSE 表达式(布尔值为FALSE)THEN 逻辑
END CASE
LOOP 循环
1、
[<<标签>>]
LOOP
逻辑语句
END LOOP[列名]
2、
WHILE 表达式
LOOP
逻辑
END LOOP
3、
FOR 计数器 IN
[REVERSE]指定从上标记到下标记 无从下标记到上标记
Lower_bound … Upper_bound
逻辑
END LOOP
函数
1、
CREATE[OF REPLACE(覆盖) FUNCTION [模式名称]] 函数名
[函数的参数]
RETURN 返回值 返回值类型
{IS/AS}
[声明]
BEGIN
逻辑
END 结束
游标
1、显示游标
CURSOR 游标名字
[(变量 变量类型)]
IS SELECT 语句
1)OPEN CORSOR 打开游标
2)读取游标
FETCH 游标名字 INTO RECORD_NAME
3)关闭游标
CLOSE 游标名字
4、FETCL 游标名 BULK COLLECT INTO 变量名 LIMIT 条件
5、FOR…IN 游标名
LOOP
逻辑游标名
END LOOP