Oracle SQL的一些語法
真是慚愧,以前認為Oracle的SQL語法沒有懂各個具體引數麼,所有使用格式都已經不在
話下了。結果看了1z0-047的內容,發現自己有點過於狂妄了。
這裡要講的都是insert的語法。
通常情況下,我們看到的insert的語法不外乎以下幾種:
insert into [table_name]([column_list]) values([values_list]);--最簡單的
insert into [table1]([column_list]) select ([column_list]) from [table2];--從table2中取資料插入到table1中
insert into [table_name] values row; --這裡row是一個關鍵字,用在forall/for等的insert迴圈中
根據我以往的經驗,總結下來,應該就只有這麼三種了。
但是實際上Oracle還支援這樣的語法:
第一種:
帶檢查的插入語句
insert into (select a,b,c from test1 t where t.id=10 with check option) values(1,2,3);
insert into (select a,b,c from test1 t where t.id=10 with check option) select 1,2,3 from dual;
該語法的含義是:在test1表中插入一條記錄,該記錄的id必須為10(因為有with check option選項)。
第二種:
insert first / insert all語法
用於向多個表插入資料:
insert first時首先根據第一個when進行檢索,將結果插入第一條件指定的表。
當遇到第二個when時,將第一個when中檢索結果集外的資料與第二個when做條件匹配
然後將匹配到的資料插入第二個條件指定的表。
以此類推。例子(轉自網路):
create table table_storage
(
table_name varchar2(30),
tablespace_name varchar2(30),
pct_free number,
pct_used number,
ini_trans number,
max_trans number,
initial_extent number,
next_extent number,
min_extents number,
max_extents number,
pct_increase number,
freelists number,
freelist_groups number
);
(
table_name varchar2(30),
tablespace_name varchar2(30),
pct_free number,
pct_used number,
ini_trans number,
max_trans number,
initial_extent number,
next_extent number,
min_extents number,
max_extents number,
pct_increase number,
freelists number,
freelist_groups number
);
create table table_stat
(
table_name varchar2(30),
num_rows number,
blocks number,
empty_blocks number,
avg_space number,
chain_cnt number,
avg_row_len number
);
(
table_name varchar2(30),
num_rows number,
blocks number,
empty_blocks number,
avg_space number,
chain_cnt number,
avg_row_len number
);
insert all
into table_storage values(table_name, tablespace_name, pct_free, pct_used, ini_trans,
max_trans, initial_extent, next_extent, min_extents, max_extents,
pct_increase, freelists, freelist_groups)
into table_stat values(table_name, num_rows, blocks, empty_blocks, avg_space, chain_cnt, avg_row_len)
select * from user_tables;
select * from table_storage
select * from table_stat
create table table_all(table_name varchar2(30));
create table index_all(index_name varchar2(30));
create table object_other(object_name varchar2(30), object_type varchar2(30));
insert all
when object_type = 'TABLE' then
into table_all values(object_name)
when object_type = 'INDEX' then
into index_all values(object_name)
when object_type not in('TABLE','INDEX') then
into object_other values(object_name, object_type)
select * from user_objects o;
when object_type = 'TABLE' then
into table_all values(object_name)
when object_type = 'INDEX' then
into index_all values(object_name)
when object_type not in('TABLE','INDEX') then
into object_other values(object_name, object_type)
select * from user_objects o;
select * from table_all;
truncate table table_all;
truncate table tablespace_users ;
truncate table tablespace_users ;
create table tablespace_users(name varchar2(30), type varchar2(30));
insert all
when (segment_type = 'TABLE') then
into table_all values (segment_name)
when (tablespace_name = 'LYONTBS') then
into tablespace_users values (segment_name, segment_type)
select segment_name, segment_type, tablespace_name
from user_segments;
select * from table_all ;
select * from tablespace_users;
select * from tablespace_users;
insert first
when (segment_type = 'TABLE') then
into table_all values (segment_name)
when (tablespace_name = 'LYONTBS') then
into tablespace_users values (segment_name, segment_type)
select segment_name, segment_type, tablespace_name
from user_segments;
when (segment_type = 'TABLE') then
into table_all values (segment_name)
when (tablespace_name = 'LYONTBS') then
into tablespace_users values (segment_name, segment_type)
select segment_name, segment_type, tablespace_name
from user_segments;
由於佔用版面太大,只將語句放上來。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-612420/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [SQL] Oracle基礎語法SQLOracle
- Oracle常用sql語法集合OracleSQL
- Oracle sql with 語句語法與例子OracleSQL
- ORACLE SQL Loader的詳細語法OracleSQL
- oracle優化sql語句的一些建議Oracle優化SQL
- Oracle SQL Loader的詳細語法 <轉>OracleSQL
- ORACLE常用的SQL語法和資料物件OracleSQL物件
- ORACLE 常用的SQL語法和資料物件OracleSQL物件
- Oracle9i的簡化SQL語法OracleSQL
- ORACLE常用的SQL語法和資料物件(轉)OracleSQL物件
- 常用的 SQL 語法SQL
- generator的一些語法
- Oracle和SQL對比語法總結OracleSQL
- SQL語法SQL
- sql的 INNER JOIN 語法SQL
- 一些SQL語句SQL
- 整理SQL語法SQL
- SQL基本語法SQL
- sql 99 語法SQL
- oracle的sql語句OracleSQL
- sql case語法和plsql case語法!SQL
- sql語句的一些規則SQL
- sql server 中的一些實用的sql語句SQLServer
- C++11的一些語法C++
- Oracle環境下SQL語句的不同寫法效率對比OracleSQL
- Oracle SQL寫法OracleSQL
- sql語法總結SQL
- sql語法case用法SQL
- sql中as的用法和一些經典的sql語句SQL
- 一些sql語句的關鍵詞SQL
- Oracle Discoverer中一些有用的SQLOracleSQL
- 建立Oracle包的語法Oracle
- ORACLE的基本語法(轉)Oracle
- MySQL的一些常用的SQL語句整理MySql
- python 中的一些特殊語法Python
- SQL語法之SQL 萬用字元SQL字元
- oracle sql語句OracleSQL
- SQL語句規範的寫法SQL