【CONNECT BY】使用connect by level/rownum實現連續數字的插入
在準備測試環境的過程中,經常會遇到需要大量連續數字的情況。在這種需求下我們如何快速地完成資料的準備工作呢?
使用文字編輯器編寫好初始化的指令碼固然可行,但是過於拙笨。Oracle提供的層次查詢(Hierarchical Queries)功能中的connect by子句可以協助我們便捷的達到目標。
1.建立測試表T
sec@ora10g> create table t (x int);
Table created.
2.使用“connect by level”完成插入1到10連續數字
sec@ora10g> insert into t select rownum from dual connect by level<=10;
10 rows created.
sec@ora10g> select * from t;
X
----------
1
2
3
4
5
6
7
8
9
10
10 rows selected.
3.使用“connect by rownum”完成插入1到10連續數字
sec@ora10g> insert into t select rownum from dual connect by rownum<=10;
10 rows created.
sec@ora10g> select * from t;
X
----------
1
2
3
4
5
6
7
8
9
10
10 rows selected.
4.使用巢狀子查詢功能
Oracle 10g版本對connect by進行了增強,可以結合巢狀子查詢功能完成連續數字的插入,這個功能在9i環境下是無效的。
sec@ora10g> insert into t select rownum from dual connect by level <= (select count(*) from all_objects);
11836 rows created.
或
sec@ora10g> insert into t select rownum from dual connect by rownum <= (select count(*) from all_objects);
11836 rows created.
以上SQL實現了向T表中插入all_objects檢視中總條數一樣多的連續數字。
5.小結
層次查詢中的connect by子句實現連續數字初始化的任務是非常便捷的。在準備測試資料的時候可以儘量使用這種方法來減少時間的浪費。
Good luck.
secooler
11.05.10
-- The End --
使用文字編輯器編寫好初始化的指令碼固然可行,但是過於拙笨。Oracle提供的層次查詢(Hierarchical Queries)功能中的connect by子句可以協助我們便捷的達到目標。
1.建立測試表T
sec@ora10g> create table t (x int);
Table created.
2.使用“connect by level”完成插入1到10連續數字
sec@ora10g> insert into t select rownum from dual connect by level<=10;
10 rows created.
sec@ora10g> select * from t;
X
----------
1
2
3
4
5
6
7
8
9
10
10 rows selected.
3.使用“connect by rownum”完成插入1到10連續數字
sec@ora10g> insert into t select rownum from dual connect by rownum<=10;
10 rows created.
sec@ora10g> select * from t;
X
----------
1
2
3
4
5
6
7
8
9
10
10 rows selected.
4.使用巢狀子查詢功能
Oracle 10g版本對connect by進行了增強,可以結合巢狀子查詢功能完成連續數字的插入,這個功能在9i環境下是無效的。
sec@ora10g> insert into t select rownum from dual connect by level <= (select count(*) from all_objects);
11836 rows created.
或
sec@ora10g> insert into t select rownum from dual connect by rownum <= (select count(*) from all_objects);
11836 rows created.
以上SQL實現了向T表中插入all_objects檢視中總條數一樣多的連續數字。
5.小結
層次查詢中的connect by子句實現連續數字初始化的任務是非常便捷的。在準備測試資料的時候可以儘量使用這種方法來減少時間的浪費。
Good luck.
secooler
11.05.10
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-694956/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 查詢與插入資料使用rownum與level
- PostgreSQLOracle相容性之-connectby高階選項CONNECT_BY_ISLEAF、SYS_CONNECT_BY_PATH、CONNECT_BY_ISCYCLE、LEVELSQLOracle
- Connect by實現樹查詢的妙用
- Oracle “CONNECT BY” 使用Oracle
- 【PL/SQL】向表中插入連續數字之PL/SQL方法SQL
- 【函式】Oracle “CONNECT BY” 使用函式Oracle
- 資料庫180:連續出現的數字資料庫
- database的connectDatabase
- oracle中connect by prior實現遞迴查詢Oracle遞迴
- Oracle connect byOracle
- start with ... connect by
- node的Connect使用session、cookie的使用方法SessionCookie
- UDP中使用bind和connect的作用UDP
- 【PL/SQL】Oracle--樹的使用(Connect By)SQLOracle
- 連線mysql時提示is not allowed to connect不允許連線MySql
- Kafka Connect如何實現同步RDS binlog資料?Kafka
- START WITH...CONNECT BY PRIOR簡單使用
- redis實現統計使用者連續登陸天數Redis
- mysql init_connect 引數的其他用處MySql
- CONNECT BY 擴充套件用法,實現獲取bom級聯擴充套件數量套件
- Laravel connect oracleLaravelOracle
- start with connect by prior
- start with connect by 用法
- session,connect,processSession
- oracle connect by用法Oracle
- Oracle Start with ....Connect ByOracle
- START WITH...CONNECT BY
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- oracle的connect by語句Oracle
- connect by 的排序問題排序
- oracle中的遞迴sql查詢 connect by prior實現遞迴Oracle遞迴SQL
- mysql遠端連線 Host * is not allowed to connect to this MySQL serverMySqlServer
- nodejs 連結mysql出現 connect ECONNREFUSED ::1:3306NodeJSMySql
- 使用rownum及replace實現行轉列
- ORACLE 內建函式和connect by使用Oracle函式
- connect by層內排序排序
- JDBC connect SCAN IPJDBC
- MySQL-undefinedfunctionmysql_connect()MySqlUndefinedFunction