挿入結果
INSERT
INTO <表名> [(<属性列1> [,<属性列2>… )]
子查询;
[3.72]は各システムの場合は、学生の平均年齢を検索し、データベースに格納された結果は、
このステップは、2つのステップに分けることができる。
ステップ1:表の作成します
CREATE TABLE Dept_age
(Sdept CHAR(15)
Avg_age SMALLINT);
:ステップ2
年齢層システムを平均化することによってStduentテーブルに、次にテーブルに格納されています
INSERT INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;
修正データ
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
[3.74]学生201 215 121例の年齢は22歳に変更されました。
UPDATE Student
SET Sage=22
WHERE Sno='201215121';
[3.74]の場合は、1歳の歳のすべての生徒のために増加します。
UPDATE Student
SET Sage=Sage+1;
[3.75]例示的なコンピュータサイエンス部門は、すべての生徒の成績はゼロ。
UPDATE SC
SET Grade=0
WHERE Sno IN
(SELECT Sno
FROM Student
WHERE Sdept='CS');
データを削除
DELETE
FROM <表名>
[WHERE <条件>];
学生の[例] 3.76消去学生数は201215128を記録します。
DELETE
FROM Student
WHERE Sno=201215128;
あなたはノート整合性ルールを削除すると、ブログの解決策を確認します。
[3.77]学生の入学レコードのすべてのケースを削除します。
DELETE
FROM SC;
[3.78例】コンピュータサイエンス学部は、すべての学生の削除レコードを選択科目。
DELETE
FROM SC
WHERE Sno IN(
SELECT Sno
FROM Student
WHERE Sdept='CS');
[3.79]タプルのSCテーブルに挿入された場合、学生番号「201215125」であり、コース番号が「1」であり、結果は空です。
INSERT INTO SC(Sno,Cno,Grade)
VALUES('201215125','1',NULL);
若しくは
INSERT INTO SC(Sno,Cno)
VALUES('201215125','1');
[例]学生表3.80学校の学生番号「201 215 123」の部門では、学生はNULL値に変更属しています。
UPDATE Student
SET Sdept = NULL
WHERE Sno='201215123';
[3.81]学生情報データの例を見つけるためには、Studentテーブルから欠落しています。
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 Sno
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;
CHECK OPTION句と組み合わせると、挿入を視野にした後、変更、および削除操作は、リレーショナルデータベース管理システムが自動的にSdeptを追加=条件「IS」。
【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';
ビューをベースとすることができるだけではなく、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,2020-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='女';
[削除]を表示
DROP VIEW <视图名>[CASCADE];
ビューは、他のビューをエクスポートする場合、CASCADEがビューにDELETE文をカスケード接続し、そこから派生したすべてのビューが一緒に削除されます。
[例] 3.91削除ビューBT_SとIS_S1。
DROP VIEW BT_S; /*成功执行*/
DROP VIEW IS_S1;/*拒绝执行*/
カスケード削除を使用するIS_S2の必要性
DROP VIEW IS_S1 CASCADE;
前のケースと同様に、SQL SeverのはCASCADEキーワードをサポートしていません。
[3.92] 20歳の学生情報システムの学生の視点より若い患者を識別するために。
SELECT Sno,Sage
FROM IS_Student
WHERE Sage<20;
リレーショナルデータベース管理システムの最初のクエリテーブルに関与する有効性チェックをチェックする、ビューに対してクエリを実行するときに、ビューなどが存在します。存在する場合、ビューのデータ辞書定義、サブクエリの定義から除去し、結合するようにユーザに問い合わせされ、ベーステーブルに対して同等のクエリに変換された後、補正されたクエリを実行します。この変換プロセスが呼び出されるビュー消化。
変換されたクエリ:
SELECT Sno,Sage
FROM Student
WHERE Sdept='IS' AND Sage<20;
[例] S_Gクエリビュー学生番号、90点以上の平均スコアにおける3.94成績平均点は
SELECT *
FROM S_G
WHERE Gavg>=90;
クエリおよびビューの定義S_Gワードクエリの組み合わせ:
SELECT Sno,AVG(Grade)
FROM SC
WHERE AVG(Grade)>=90
GROUP BY Sno;
この補正後のクエリの構文エラーの実装は、集計関数を使用しての条件として表示されますので、WHERE句は、表現されていないため。
利用転換をHAVING
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90;
また、派生テーブルのクエリを使用して行うことができます
SELECT *
FROM (SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno) AS S_G(Sno,Gavg)
WHERE Gavg>=90;
[3.95]の場合は「201 215 122」は、学生の名前が読みIS_Student高校の生徒情報の番号を表示します「劉チェンを。」
UPDATE IS_Student
SET Sname='刘辰'
WHERE Sno='201215122';
変換後:
UPDATE Student
SET Sname='刘辰'
WHERE Sno='201215122' AND Sdept='IS';
レコードの学生が「201 215 129」として学生の数は、名前が「趙」、20歳歳IS_Sを表示するには、[例3.96]新しい学生情報システムを挿入します。
INSERT
INTO IS_Student
VALUES('201215129','赵新',20);
更新は、基本的な表に変換しました:
INSERT
INTO Student(Sno,Sname,Sage,Sdept)
VALUES('200215129','赵新',20,'IS' );
[例]番号「201 215 129」のための3.97削除学生情報ビューIS_Student高校レコード
DELETE
FROM IS_Student
WHERE Sno= '201215129';
更新は、基本的な表に変換しました:
DELETE
FROM Student
WHERE Sno= '201215129' AND Sdept='IS';