練習データベース言語6 - INSERT / UPDATE / DELETE / NULL / VIEW

挿入結果

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';
公開された14元の記事 ウォン称賛10 ビュー3834

おすすめ

転載: blog.csdn.net/jiesfriend/article/details/105176291