一歩一歩ORACLEワールドを攻める(四)
この説明では、DML文について説明します.
INSERT:文の挿入
UPDATE:更新文
DELETE:文の削除
DML:Data Manipulation Languageデータ操作言語とは!専門的ですね.
(1)操作文の挿入
注意事项、具体的な文法はすべて文がしわだらけで、话さないで、见ると分かります!しかし、注意してください.
数字の列を挿入するには、純粋な数字をそのまま使用し、文字列と日付には単一引用符を使用します.
例1.列を指定しない場合は、すべての列にデータを指定する必要があります.
例3.指定したフォーマットの日付列挿入データ
特に注意してto_to_ではなくdate()char()は,前者が挿入日付フォーマットであり,後者が一般的に表示に用いられる.
同時に検索した結果が「YYYY-MM-DD」形式ではないことを発見し、点解?実は私が使っているツールが日付の表示方法を設定しただけです.
例4.デフォルトdefault挿入データ
小結:文を挿入するときは、列を挿入する順序に注意してください.いくつかのキーワードに注意してください:valueではなくvalues、defaultsではなくdefaults
(2)サブクエリ挿入データ
主な用途は、1つのテーブルのデータが別のテーブルに挿入されることです.
構文:insert into[colunm....]subquery
ここでsubqueryは、指定したターゲットテーブルにデータを提供するサブクエリです.
特に注意:カラム名のデータ型と個数の一致に注意してください.
例1.
例2.
(3)マルチテーブル挿入
すなわち、1枚のテーブルのデータが複数のテーブルに挿入される.
まず、いくつかのテーブルを作成します.
例1.allマルチテーブル挿入データ
all挿入方式を使用すると、重複する可能性があります.次のようになります.
繰り返し挿入があるのはall挿入方式で、ずっと下に実行され、条件になるたびに挿入されるからです.だからdeptno=10の場合
データを挿入し、dname='ACCOUNTING'に遭遇したときに、この重複したデータを再び挿入します.
例2.firstマルチテーブル挿入データ
以前の条件を満たし、データベースに挿入され、現在の条件も満たされているのに、データベースに繰り返し挿入したくない場合はfirstが機能します.
簡単に言えばfirstは重複挿入を許さない.
以上の結果から,deptno=10を満たし,dname='ACCOUNTING'も満たすが,1つのデータのみを挿入する.
INSERT:文の挿入
UPDATE:更新文
DELETE:文の削除
DML:Data Manipulation Languageデータ操作言語とは!専門的ですね.
(1)操作文の挿入
注意事项、具体的な文法はすべて文がしわだらけで、话さないで、见ると分かります!しかし、注意してください.
数字の列を挿入するには、純粋な数字をそのまま使用し、文字列と日付には単一引用符を使用します.
例1.列を指定しない場合は、すべての列にデータを指定する必要があります.
- SQL> insert into dept values(50,'TRAIN','BOSTON');
- 1 row inserted
- SQL> select * from dept where deptno=50;
- DEPTNO DNAME LOC
- ------ -------------- -------------
- 50 TRAIN BOSTON
2.
- SQL> insert into emp(empno,ename,job,hiredate) value(1234,'JONY','CLERK','01-3 -86');
- 1 row inserted
- SQL> select * from emp where empno=1234;
- EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
- ----- ---------- --------- ----- ----------- --------- --------- ------
- 1234 JONY CLERK 1986/3/1
例3.指定したフォーマットの日付列挿入データ
- SQL> insert into emp(empno,ename,job,hiredate)values(1256,'TYYK','CLERK',to_date('2012-11-12','YYYY-MM-DD'));
-
- 1 row inserted
-
- SQL> select * from emp where empno=1256;
-
- EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
- ----- ---------- --------- ----- ----------- --------- --------- ------
- 1256 TYYK CLERK 2012/11/12
特に注意してto_to_ではなくdate()char()は,前者が挿入日付フォーマットであり,後者が一般的に表示に用いられる.
同時に検索した結果が「YYYY-MM-DD」形式ではないことを発見し、点解?実は私が使っているツールが日付の表示方法を設定しただけです.
例4.デフォルトdefault挿入データ
- SQL> insert into dept values(60,'MARKET',DEFAULT);
-
- row inserted
-
- SQL> select * from dept where deptno=60;
-
- EPTNO DNAME LOC
- ------ -------------- -------------
- 0 MARKET
default , NULL。
小結:文を挿入するときは、列を挿入する順序に注意してください.いくつかのキーワードに注意してください:valueではなくvalues、defaultsではなくdefaults
(2)サブクエリ挿入データ
主な用途は、1つのテーブルのデータが別のテーブルに挿入されることです.
構文:insert into[colunm....]subquery
ここでsubqueryは、指定したターゲットテーブルにデータを提供するサブクエリです.
特に注意:カラム名のデータ型と個数の一致に注意してください.
例1.
- SQL> select * from employee;
-
- DEPTNO EMPNO ENAME SAL
- ------ ----- ---------- ---------
-
- SQL> select empno,ename,sal,deptno from emp where deptno=20;
-
- EMPNO ENAME SAL DEPTNO
- ----- ---------- --------- ------
- 7369 SMITH 880.00 20
- 7566 JONES 3272.50 20
- 7788 SCOTT 2706.00 20
- 7876 ADAMS 1210.00 20
- 7902 FORD 3300.00 20
-
- SQL> insert into employee(empno,ename,sal,deptno)
- 2 select empno,ename,sal,deptno from emp
- 3 where deptno=20;
-
- 5 rows inserted
-
- SQL> select * from employee;
-
- DEPTNO EMPNO ENAME SAL
- ------ ----- ---------- ---------
- 20 7369 SMITH 880.00
- 20 7566 JONES 3272.50
- 20 7788 SCOTT 2706.00
- 20 7876 ADAMS 1210.00
- 20 7902 FORD 3300.00
例2.
- SQL> insert /*+append*/ into employee(empno,ename,sal,deptno)
- 2 select empno,ename,sal,deptno from emp
- 3 where deptno=20;
-
- 5 rows inserted
-
, ,/*+append*/ 。
(3)マルチテーブル挿入
すなわち、1枚のテーブルのデータが複数のテーブルに挿入される.
まず、いくつかのテーブルを作成します.
- SQL> create table dept10(DEPTNO NUMBER(2) ,DNAME VARCHAR2(14),LOC VARCHAR2(13));
-
- Table created
-
- SQL> create table dept20(DEPTNO NUMBER(2) ,DNAME VARCHAR2(14),LOC VARCHAR2(13));
-
- Table created
-
- SQL> create table dept30(DEPTNO NUMBER(2) ,DNAME VARCHAR2(14),LOC VARCHAR2(13));
-
- Table created
-
- SQL> create table other(DEPTNO NUMBER(2) ,DNAME VARCHAR2(14),LOC VARCHAR2(13));
-
- Table created
例1.allマルチテーブル挿入データ
- SQL> insert all
- 2 when deptno=10 then into dept10
- 3 when deptno=20 then into dept20
- 4 when deptno=30 then into dept30
- 5 else into other
- 6 select * from dept;
-
- 6 rows inserted
-
- SQL> select * from dept10;
-
- DEPTNO DNAME LOC
- ------ -------------- -------------
- 10 ACCOUNTING NEW YORK
all挿入方式を使用すると、重複する可能性があります.次のようになります.
- SQL> insert all
- 2 when deptno=10 then into dept10
- 3 when dname='ACCOUNTING' then into dept10
- 4 when deptno=20 then into dept20
- 5 else into other
- 6 select * from dept;
-
- 7 rows inserted
-
- SQL> select * from dept10;
-
- DEPTNO DNAME LOC
- ------ -------------- -------------
- 10 ACCOUNTING NEW YORK
- 10 ACCOUNTING NEW YORK
- 10 ACCOUNTING NEW YORK
繰り返し挿入があるのはall挿入方式で、ずっと下に実行され、条件になるたびに挿入されるからです.だからdeptno=10の場合
データを挿入し、dname='ACCOUNTING'に遭遇したときに、この重複したデータを再び挿入します.
例2.firstマルチテーブル挿入データ
以前の条件を満たし、データベースに挿入され、現在の条件も満たされているのに、データベースに繰り返し挿入したくない場合はfirstが機能します.
簡単に言えばfirstは重複挿入を許さない.
- SQL> insert first
- 2 when deptno=10 then into dept10
- 3 when deptno=20 then into dept20
- 4 when dname='ACCOUNTING'then into dept10
- 5 else into other
- 6 select * from dept;
-
- 6 rows inserted
-
- SQL> select * from dept10;
-
- DEPTNO DNAME LOC
- ------ -------------- -------------
- 10 ACCOUNTING NEW YORK
-
以上の結果から,deptno=10を満たし,dname='ACCOUNTING'も満たすが,1つのデータのみを挿入する.