1.建表:
1)常规建表:
createtabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15));
创建字段为TempCode,TempName的temp_1表,新创建的表中无数据,如下图所示:
2)根据查询结果建表:
createtabletemp_1asselecttempcode,tempnamefromtemp_2;
创建字段为TempCode,TempName的temp_1表,新创建的表中存在temp_2的存储结果,如下图所示:
3)创建事务级临时表:
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows
创建字段为TempCode,TempName的temp_1表,新创建的表为事务级临时表,当该表事务进行提交commit/回滚rollback时,清除表内所有数据(truncate)
4)创建会话级临时表:
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitpreserverows
创建字段为TempCode,TempName的temp_1表,新创建的表为会话级临时表,当会话结束时,清除表内所有数据(truncate)
2.新增
1)单行插入
insertintotemp_1(tempcode)values('1001');--指定字段插入insertintotemp_1values('1001','张三同学');--全字段插入
执行insert操作,如下图所示:
2)根据查询结果插入
insertintotemp_1(tempcode)selecttempcodefromtemp_2;--指定字段插入insertintotemp_1selecttempcode,tempnamefromtemp_2;--全字段插入
指定字段插入,如下图所示:
全字段插入,如下图所示:
3.删除
1)delete:删除表数据,不删除表结构,事务提交后删除,DML语句,不释放表空间,激活触发器
2)truncate:删除表数据,不删除表结构,执行后自动提交,DDL语句,保留原始表空间,不激活触发器
(外键约束引用的表和参与视图索引的表不能使用truncate)
3)drop:删除表数据、表结构等,DDL语句,释放表空间,删除触发器
性能比较:drop>truncate>delete
4.更新
1)单列更新
updatetemp_1settempname='张三(new)'wheretempcode='1001';--单列更新
2)多列更新
updatetemp_1settempname='李四(new)',tempcode='1002new'wheretempcode='1002';--多列更新
3)根据查询结果更新
updatetemp_1set(tempname,tempcode)=(selecttempname,tempcodefromtemp_2wheretempcode='1003new')wheretempcode='1003';--根据查询结果更新
执行更新操作后,结果如下图所示:
4)Mergeinto
mergeintotemp_1ausing(selecttempcodecode,tempnamenamefromtemp_2wheretempcode='1001')bon(a.tempcode=b.code)whenmatchedthenupdateseta.tempname=b.namewhennotmatchedtheninsert(tempcode,tempname)values(b.code,b.name)
条件满足,tempcode='1001'时,执行update操作;
把tempcode='1001'换成tempcode='1004',条件不满足,执行insert操作;
结果如下图所示:
5.完整的查询SQL语句格式:
select<查询结果集>
from<被查询表集>
where<查询条件集>
groupby<分组条件集>
having<分组结果过滤>
orderby<查询结果过滤>
6.连接
1)交叉连接:笛卡尔集全连接
createtabletemp_1asselecttempcode,tempnamefromtemp_2;0
2)内连接:对于不匹配的都会进行舍弃
createtabletemp_1asselecttempcode,tempnamefromtemp_2;1
3)全外连接:左右无都补null
createtabletemp_1asselecttempcode,tempnamefromtemp_2;2
4)左外连接:左为基表,右表无则补null
createtabletemp_1asselecttempcode,tempnamefromtemp_2;3
5)右外连接:右为基表,左表无则补null
createtabletemp_1asselecttempcode,tempnamefromtemp_2;4
7.集合
1)unionall:求并集,记录可以重复,不自动排序
createtabletemp_1asselecttempcode,tempnamefromtemp_2;5
2)union:求并集,排除重复数据,自动排序
createtabletemp_1asselecttempcode,tempnamefromtemp_2;6
3)minus:求差集,自动排序
createtabletemp_1asselecttempcode,tempnamefromtemp_2;7
4)intersect:求交集,自动排序
createtabletemp_1asselecttempcode,tempnamefromtemp_2;8
8.排序
1)orderby
createtabletemp_1asselecttempcode,tempnamefromtemp_2;9
倒序结果如下图所示:
2)排名函数
rank()/dense_rank()/row_number()over(partitionby分组条件orderby排序条件)
[1]rank()over:进行排序,会跳过空出的名次,如(1,2,2,4,5)
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows0
按tempsubject学科分组,按tempscore成绩倒序排列,结果如下图所示:
[2]dense_rank()over:进行排序,不会跳过空出的名次,如(1,2,2,3,4)
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows1
按tempsubject学科分组,按tempscore成绩倒序排列,结果如下图所示:
[3]row_number()over:进行排序,不会考虑成绩是否相同,即使相同也会继续排序,如(1,2,3,4,5)
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows2
按tempsubject学科分组,按tempscore成绩倒序排列,结果如下图所示:
9.常用函数
1)字符函数
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows3
查询结果如下图所示:
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows4
查询结果如下图所示:
2)数字函数
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows5
查询结果如下图所示:
3)日期函数
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows6
查询结果如下图所示:
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows7
查询结果如下图所示:
4)分组函数
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows8
5)转换函数
[1]日期格式转字符串
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitdeleterows9
[2]字符串转日期格式
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitpreserverows0
[3]字符串转数字格式
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitpreserverows1
6)其他函数
createglob altemporarytabletemp_1(Tempcodevarchar2(30)notnull,TempNamevarchar2(15))oncommitpreserverows2