一、表的创建
创建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的使用
什么是dualDual其实也是一张表,比较特殊,这个表只有一行,不能存储数据,那干什么用呢?我们一般用他测试函数或组成一个序列。
例如我研究 sysdate 函数select sysdate from dual 显示当前时间
      Sys_guid()函数select sys_guid() from dual 显示一个42位随机数,执行一次变一次;
      select substr(sys_guid(),1,32 ) from dual—截取随机数的前32位。
解读selectfrom where
会sql的人都能写上select * from B where b.num >1那么selectfromwhere都起什么作用呢
1Select
Select 后面不只是表的字段,是连接一些列参数,包括常量和变量。
例如 select 1,2 from A
    Select sysdatesys_guid(),’AAA’,A.obj_id from A
    Select a.* from A,B
2from
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小时内删除。