一、表的创建
创建Oracle中的table 主要有两种方式:直接创建和通过子查询创建
1、直接创建
CREATE TABLE DEPT(obj_id varcha2(42) ,dept_name VARCHAR2(100))
直接创建要输入字段名称,字段长度,有些复杂的表还要有主键,所属表空间等,平时记不住。
2、子查询创建
我们要创建一张表,但不记得建表语句怎么办?或者不知道数据类型怎么定义,但我们知道有个类似表可以直接用
Create table A as select * from B ---将按B表模式创建A表,(其实这就是数据库表的备份,不仅把表建了,数据也自动复制好了,效率还比较高)
那如果我A表只想用B表中一部分字段呢?很简单
Create table A as select b.obj_id ,b.dept_name from B ---把B表的需要的字段直接写出来就好了
那如果我只想建立一张空表呢?可以按以上方法用 truncate table A 语句直接清除数据(这里顺便说下truncate删除与delete 不同,delete类似于放入回收站了,删除后还要提交下,提交后就进入回收站了,有数据恢复的可能性,truancate 类似于用shift+delete 删除文件,直接删除,不会提示的,无法恢复)
Create table A as select * from B where 1=2 --别小看这个1=2,足以说明你有个好的sql语句素养,说明你知道where 语句目的是把from后面的数据集都看一遍,满足条件的标记个truncate删除数据T,不满足的标记F,如果写1=2,那干脆对B表数据不看了,都不满足,因为1不可能等于2.
还有一种建表方法可了解(SELECT vale1, value2 into Table2 from Table1)
以上讲的是表的创建,其实也在讲数据如何备份。下面将数据插入,类似数据迁移。
二、数据插入
1、直接插入
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
现在应该没人用直接插入的方法了,因为Oracle有for update ,可以直接改写。
2、批量插入
Insert into Table2(field1,field2,...) select value1,value2,... from Table1 –这里要注意:1、table2必须已经创建,2、此处没有“values“
三、dual的使用
什么是dual? Dual其实也是一张表,比较特殊,这个表只有一行,不能存储数据,那干什么用呢?我们一般用他测试函数或组成一个序列。
例如:我研究 sysdate 函数:select sysdate from dual 显示当前时间
Sys_guid()函数:select sys_guid() from dual 显示一个42位随机数,执行一次变一次;
select substr(sys_guid(),1,32 ) from dual—截取随机数的前32位。
四、解读select、from 、where
会sql的人都能写上select * from B where b.num >1,那么select、from、where都起什么作用呢?
1、Select
Select 后面不只是表的字段,是连接一些列参数,包括常量和变量。
例如 select 1,2 from A
Select sysdate,sys_guid(),’AAA’,A.obj_id from A
Select a.* from A,B
2、from
From 后面不只是表,是一个数据集合
例如 select * from (select A.obj_id,A.name from A)
Select * from A,B where a.obj_id=b.obj_id
3.where
Where 前面已经讲了,是要对数据集做一个标记,符合条件的标记T,不合条件的标记F,最终把符合T的展示出来,当然where保持一票否决的权利,where 1=2 或where a=b 等。
五、待续Start with connect by prior 的使用
……
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论