DB2 ビュー、シーケンス、制約、外部キーの練習テスト
単純なビュー:
db2 => create view myview1 as select * from t1 where empnoDB20000I SQL コマンドが正常に完了しました。
db2 => select * from myview1
EMPNO NAME SEQNO
----------- ---------- -----------
10 wan qi 1
30 xu xin 3
50 bbbb 6
3 つのレコードが選択されました。
単純なシーケンス
db2 => シーケンス myseq を作成します。1 増分× 1 キャッシュで開始します。 5
DB20000I SQL コマンドが正常に完了しました。
db2 => タンク 1 の値に挿入(nextval for myseq,'asdf')
DB20000I SQL コマンドが正常に完了しました。
db2 => select * from Tank1
ID NAME
--------------- ----------
2 asdf
3 asdf
4 asdf
5 asdf
6 asdf
7 ASDF s 8 ASDF
単純な制約
Create Table Employee
(
ID Integer Null Null Constraint ID_PK PRIMARY KEY,
Name Varchar (9),
DEPT Smallint Constraint_ck 1
Check (dept between 10)と100) ,
JOB char(5) 制約 dept_ck2
check (JOB IN('Sales','Mgr','Clerk')),
HIREDATE date,
SALARY decimal(7,2),
制約 yearsal_ck
check (year ( HIREDATE) > 1986 OR SALARY > 40000 )
)
[db2inst2@localhost ~]$ db2 "従業員の値に挿入 (1,'asdf',11, 'Sales','1788-02-10' , 40100)"
DB20000I SQL コマンドが正常に完了しました。
[db2inst2@localhost ~]$ db2 "insert into従業員の値(1,'asdf',13, 'Sales','1788-02-10',40100)"
DB21034E このコマンドは SQL
ステートメントとして処理されます。これは無効な「コマンド ライン プロセッサ」コマンドであるためです。 SQL
処理中に、以下が返されました:
SQL0803N INSERT ステートメント、UPDATE ステートメント、または DELETE
ステートメントによって引き起こされた外部キー更新の 1 つ以上の値が、主キー、一意制約、またはによって識別された一意インデックスのため無効です。 "1"
テーブル "DB2INST2.EMPLOYEE"
のインデックス キーが重複する値を持たないように制限します。 SQLSTATE=23505
[db2inst2@localhost ~]$ db2 "insert into従業員値(2,'asdf',101, 'Sales','1788-02-10',40100)"
DB21034E このコマンドはSQL
として扱われますこれは無効な「コマンド ライン プロセッサ」コマンドであるため、処理するステートメントです。 SQL
の処理中に、次のメッセージが返されます:
SQL0545N 行がチェック制約
"DB2INST2.EMPLOYEE.DEPT_CK1" を満たしていないため、要求された操作は許可されません。
SQLSTATE=23513
[db2inst2@localhost ~]$ db2 "insert into従業員値(2,'asdf',99, 'Sales','1788-02-10',40100)"
DB20000I SQLコマンドが正常に完了しました。
[db2inst2@localhost ~]$ db2 "insert into従業員の値(3,'asdf',99, 'Kales','1788-02-10',40100)"
DB21034E このコマンドは SQL
ステートメントとして処理されます。これは無効な「コマンド ライン プロセッサ」コマンドであるためです。 SQL
の処理中に、次のメッセージが返されます:
SQL0545N 行がチェック制約
"DB2INST2.EMPLOYEE.DEPT_CK2" を満たしていないため、要求された操作は許可されません。
SQLSTATE=23513
[db2inst2@localhost ~]$ db2 "insert into従業員値(3,'asdf',99, 'Sales','1788-02-10',40100)"
DB20000I SQLコマンドが正常に完了しました。
[db2inst2@localhost ~]$ db2 "insert into従業員の値(4,'asdf',98, 'Mgr','1788-02-10',40100)"
DB20000I SQLコマンドが正常に完了しました。
[db2inst2@localhost ~]$ db2 "insert into従業員の値(5,'asdf',98, 'Mgr','1987-02-10',40)"
DB20000I SQLコマンドが正常に完了しました。
[db2inst2@localhost ~]$ db2 "insert into従業員の値(6,'asdf',98, 'Mgr','1984-02-10',40)"
DB21034E このコマンドは SQL
ステートメントとして処理されます。これは無効な「コマンド ライン プロセッサ」コマンドであるためです。 SQL
の処理中に、次のメッセージが返されます:
SQL0545N 行がチェック制約
"DB2INST2.EMPLOYEE.YEARSAL_CK" を満たしていないため、要求された操作は許可されません。
SQLSTATE=23513
[db2inst2@localhost ~]$ db2 "insert into従業員値(6,'asdf',98, 'Mgr','1981-02-10',41000)"
DB20000I SQLコマンドが正常に完了しました。
[db2inst2@localhost ~]$ db2 "従業員の値に挿入(6,'asdf',98, 'Mgr','1981-02-10',41000)"
簡単な主キーと外部キーのテスト
1、ビューの制約:
SELECT * FROM SYSCAT.TABCONST
2. 新しい親テーブルを作成します:
create table shopper.salesboys(sid int not null, name
varchar(40) not null,給与 double not null,制約
pk_boy_id 主キー (sid));
3. 新しいサブテーブルを作成します:
create tableemployee.salesboys(
sid int,
name varchar(30) not null,
phone int not null,
constraintfk_boy_id
foreignkey(sid)
referencesshopper.salesboys(sid)
on deletestrict //削除を制限
);
4. 親テーブルにデータを挿入します
[db2inst2@localhost ~]$ more inste2。 sql
shopper.salesboys に挿入 value(100,'raju',20000.00),
(101,'kiran',15000.00),
(102,'radha',10000.00),
(103,'wali',20000.00) 、
(104、'レイアン'、15000.00)
;
5. サブテーブルにデータを挿入します
[db2inst2@localhost ~]$ more inste3.sql
insert intoemployee.salesboysvalues(100,'raju',98998976),
(101,'kiran',98911176) )、
(102,'radha',943245176),
(103,'wali',89857330),
(104,'rayan',89851130);
6. 外部制約をテストします:
[db2inst2@localhost] ~ ]$ db2 "insert intoemployee.salesboysvalues(103,'rayan',89851130)"
DB20000I SQL コマンドが正常に完了しました。
[db2inst2@localhost ~]$ db2 "insert intoemployee.salesboysvalues(109,'rayan',89851130)"
DB21034E コマンドは無効な「コマンド行プロセッサー」オーダーであるため、SQL
ステートメントとして処理されました。 SQL
処理中に、以下が返されます:
SQL0530N FOREIGN KEY "EMPLOYEE.SALESBOYS.FK_BOY_ID"
の挿入または更新された値は、親テーブルのどの親キー値とも等しくありません。 SQLSTATE=23503
[db2inst2@localhost ~]$
7. 外部組み込みテストを削除します
[db2inst2@localhost ~]$ db2 "ALTER TABLE EMPLOYEE.SALESBOYS DROP FOREIGN KEY FK_BOY_ID"
DB20000I SQL コマンドが正常に完了しました。
[db2inst2@localhost ~]$ db2 "insert intoemployee.salesboysvalues(109,'rayan',89851130)"
DB20000I SQL コマンドが正常に完了しました。
[db2inst2@localhost ~]$
http://www.bkjia.com/PHPjc/1075174.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1075174.html技術記事 DB2 ビュー、シーケンス、制約、外部キーの練習テストの単純なビュー: db2 => create view myview1 as select * from t1 where empno DB20000I SQL コマンドが正常に完了しました。 db2 => select * from...