DB2 ビュー、シーケンス、制約、外部キーの実践テスト_PHP チュートリアル
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 ~]$

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

Motorola は今年数え切れないほどのデバイスをリリースしましたが、そのうち折りたたみ式デバイスは 2 つだけです。ちなみに、世界の大部分ではこのペアが Razr 50 および Razr 50 Ultra として受け入れられていますが、Motorola は北米では Razr 2024 および Razr 2 として提供しています。
