3.5.1挿入データ
を挿入データモードの2種類
- 挿入タプル
- 挿入サブクエリの結果は
、複数のタプルを挿入することができます
挿入タプル
INSERT INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>]… );
[実施例3.72]各部門のために、学生の平均年齢を見つけ、その結果をデータベースに格納されています
CREATE TABLE Dept_age
( Sdept CHAR(15)
Avg_age SMALLINT);
INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;
INSERTステートメントの実行時に自動的にRDBMSテーブルで定義された整合性ルールを破壊するタプル挿入確認
- エンティティ整合性
- 参照整合性
- ユーザー定義の整合性
3.5.2の変更データ
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
関数が
指定されたテーブルのタプルを満たしWHERE句の条件を修正する
特定のSET句を<式>に対応する属性列の代わりに
句が省略されている場合は、すべてのタプルは、テーブルを変更すると
修正の三種類
- 1組の値を変更します
- タプルの複数の値を変更
- ストラップクエリ変更ステートメント
1.変更1組の値
[実施例3.73] 201人の215 121歳の学生22歳
UPDATE Student
SET Sage=22
WHERE Sno=' 201215121 ';
2. [変更タプルの複数の値
[例3.74]は学生が1歳ずつ増加します。
UPDATE Student
SET Sage= Sage+1;
3.テープのクエリ文修正
[例3.75]コンピュータサイエンス学部すべての学生の成績がゼロに。
UPDATE SC
SET Grade=0
WHERE Sno IN
SELETE Sno
FROM Student
WHERE Sdept= 'CS' );
修正文の実装ではRDBMSが動作エンティティ整合性ルールを修正するかどうかをチェックするテーブルの整合性が定義されて弱体化させる
マスタコードは、ユーザ定義の整合性を変更することはできません
3.5.3削除データ
DELETE
FROM <表名>
[WHERE <条件>];
ファンクション
満足WHERE句の条件タプルことを指定したテーブルを削除する
句がで
削除されるタプルのデフォルトは、テーブルのすべてのタプルを削除することを約束し、テーブルはまだ辞書を定義しています
削除する方法の三種類
- 1組の値を削除します。
- 削除複数値タプル
- ストラップクエリdelete文
1組の値を削除1.
[実施例3.76]学生レコード201215128の削除学生番号。
DELETE
FROM Student
WHERE Sno= 201215128 ';
2組の複数の値を削除し
、学生の入学のすべてのレコードを削除するには、[例3.77]を。
DELETE
FROM SC
3.ドロップステートメントストラップクエリ
[3.78例]科コンピュータサイエンスコースの記録はすべての学生を削除します。
DELETE
FROM SC
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept= 'CS') ;
タプルのリストに挿入されたSCは、学生番号が「201215126」である[実施例3.79]は、コース番号が「1」であり、結果はヌルです。
INSERT INTO SC(Sno,Cno,Grade)
VALUES('201215126 ','1',NULL);
若しくは
INSERT INTO SC(Sno,Cno)
VALUES(' 201215126 ','1');
[例3.80]高校生基づいて、Studentテーブル番号「201215200」の学生はNULL値に属します。
UPDATE Student
SET Sdept = NULL
WHERE Sno='201215200';
[例3.81]は、データが欠落している学生情報の学生テーブルから検索するには
SELECT *
FROM Student
WHERE Sname IS NULL OR Ssex IS NULL OR Sage IS NULL OR Sdept IS NULL;
[例3.82]は失敗した選択科目1人の学生の数を見つけること。
SELECT Sno
FROM SC
WHERE Grade < 60 AND Cno='1';
[実施例3.83]障害の生徒が選択科目番号1及び不在学生を選択します。SELECTスノ
FROM SC
WHERE Grade < 60 AND Cno='1'
UNION
SELECT Sno
FROM SC
WHERE Grade IS NULL AND Cno='1'
若しくは
SELECT Sno
FROM SC
WHERE Cno='1' AND (Grade<60 OR Grade IS NULL);
ビューの確立
CREATE VIEW
<视图名> [(<列名> [,<列名>]…)]
AS <子查询>
[WITH CHECK OPTION];
[例3.84]は、学生の情報ビューを確立しました。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= 'IS';
[例3.85]施設情報、学生の視野と要件を変更し、まだその学生情報システムビューのみ挿入動作を保証します。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= 'IS'
WITH CHECK OPTION;
[実施例3.86]情報部門を確立するには、(番号、名前、結果を含む)学生番号1コースビューを登録しました。
CREATE VIEW IS_S1(Sno,Sname,Grade)
AS
SELECT Student.Sno,Sname,Grade
FROM Student,SC
WHERE Sdept= 'IS' AND
Student.Sno=SC.Sno AND
SC.Cno= '1';
[実施例3.87] 90点以上を考慮して情報システム第1選択科目と生徒の成績を確立します。
CREATE VIEW IS_S2
AS
SELECT Sno,Sname,Grade
FROM IS_S1
WHERE Grade>=90;
[例3.88]ビューの誕生の学生年の反射を定義します。
CREATE VIEW BT_S(Sno,Sname,Sbirth)
AS
SELECT Sno,Sname,2014-Sage
FROM Student;
[実施例3.89]学習の生徒の数と平均スコアは、図のように定義されます
CREATE VIEW S_G(Sno,Gavg)
AS
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno;
[例3.90]はStudentテーブルには、すべての女の子のビューとして定義されている記録します
CREATE VIEW F_Student(F_Sno,name,sex,age,dept)
AS
SELECT *
FROM Student
WHERE Ssex=‘女’;
[実施例3.91]および削除ビューBT_S IS_S1
DROP VIEW BT_S; /*成功执行*/
DROP VIEW IS_S1; /*拒绝执行*/