[データベース原則]リレーショナルデータベース標準言語SQLおよびリレーショナルデータベース管理システムSQLサーバー(6)

補遺を確認してください。

結合クエリ。

複合クエリは、演算子を使用UNIONしてさまざまなクエリからのデータ組み合わせ、包括的な情報を持つクエリ結果を形成することです。UNIONこの操作では重複するデータ行が自動的に削除されますが、結合クエリに参加する各サブクエリで使用されるテーブル構造は同じである必要があります。つまり、各サブクエリのデータ数と対応するデータ型は同じである必要があります。

[例] SCデータテーブルから学生IDがS1 SCの学生の学生IDと合計スコアをクエリし、テーブルから学生IDがS5の学生の学生IDと合計スコアをクエリして、2つのクエリ結果を1つにマージします。結果セット。

SELECT SNo AS 学号,SUM(Score) AS 总分
FROM SC
WHERE SNo='S1'
GROUP BY SNo
UNION
SELECT SNo AS 学号,SUM(Score) AS 总分
FROM SC
WHERE SNo='S5'
GROUP BY SNo

クエリ結果をデータテーブルとして保存します。

ステートメントSELECT ...INTO使用して、クエリ結果を新しいデータテーブルまたは一時テーブルに保存します。

[例]データテーブルからSC生徒IDと全生徒の合計スコアをクエリし、クエリ結果を新しいデータテーブルに保存しますCal_Table

SELECT SNo AS 学号,SUM(Score) AS 总分
INTO Cal_Table
FROM SC
GROUP BY SNo

この例では、クエリの結果は新しく作成されたデータテーブルCal_Tableに保存されます。2行目のステートメントをに変更するINTO #Cal_Tableと、クエリの結果は一時テーブルに保存され、メモリにのみ保存されます、データベースに保存されていないため、存在時間が非常に短い。

データテーブルにデータを追加します。

SQLが提供するデータ操作関数には、主に次の3つの関数が含まれます。

  • データを追加する
  • データを変更する
  • データを削除する

まず、データの追加に使用するSQLコマンドはINSERT INTOであり、次の状況に分類できます。

  • [データの行を追加]構文形式は次のとおりです。
INSERT INTO NAME_OF_TABLE (Col_1,Col_2,...,Col_n)
VALUES (Val_1,Val_2,...,Val_n)

その中にNAME_OF_TABLEは、新しいレコードが追加されるテーブルがあります。次のn列はオプションで、VALUES追加するデータのnフィールドを指定し、句は追加するデータの特定の値を指定します。n列名の出現順序は、データテーブルが定義されているときの順序と正確に同じVALUESである必要はありませんが、句の特定の値は、前に表示されるn列の順序と一致している必要があり、データ型は1対1で対応することに注意してください。

【例】向S表中添加一条学生记录,学号:S7;姓名:郑东;性别:女;年龄:21;系别:计算机。

INSERT INTO S (SNo,SN,Sex,Age,Dept)
VALUES ('S7','郑东',21,'女','计算机')

注意!必须用逗号将VALUES子句中的数据隔开,字符型的数据要用单引号括起。如果INTO子句中没有指定列名的顺序,则新添加的记录必须在每个定义好的属性列上均有值,且VALUES子句中值的排列顺序要和表中各个属性列的排列顺序一致。

【例】在选课关系表中添加一条记录(S7,C1).

INSERT INTO SC (SNo,CNo)
VALUES ('S7','C1')

VALUES子句中的值按照INTO子句中指定列名的顺序添加到表中,对于INTO子句中没有出现的列,例如本题中的Score属性,则系统会将新数据记录在该列上的值赋为NULL。但有一些表中的属性列,在定义时添加了NOT NULL约束,插入时就必须给这样的列赋值。

  • 【添加多行数据】这一操作多用于表间的复制,即将一个表中的数据抽取数行添加到另一个表中,可以通过子查询来实现。

【例】求出各系教师的平均工资,并且将结果置于新建立的表AvgSal中。

//First,construct the table AvgSal.
CREATE TABLE AvgSal
(Department VARCHAR(20),
Average SMALLINT)

//Second,append data into AvgSal.
INSERT INTO AvgSal
SELECT Dept,AVG(Sal)
FROM T
GROUP BY Dept

修改数据表中的数据.

SQL提供UPDATE语句来对数据表中的一行或多行记录的某些属性值进行修改,其完整的语法格式如下:

UPDATE NAME_OF_TABLE
SET NAME_OF_COLUMN=EXPRESSION
WHERE EXPRESSION

显然地,NAME_OF_TABLE是要修改的表,SET子句给出要修改的属性列以及修改后的属性值,WHERE子句指定待修改记录应当满足的条件。

【例】将刘伟老师转到信息系。

UPDATE T
SET Dept='信息'
WHERE TN='刘伟'

【例】将所有学生的年龄增加一岁。

UPDATE S
SET Age=Age+1

【例】将工资小于等于1000元的那些职称为讲师的教师的工资提高20%.

UPDATE T
SET Sal=1.2*Sal
WHERE Sal<=1000 AND Prof='讲师'

【例】将讲授C5课程的教师的津贴提高100元。

UPDATE T
SET Comm=Comm+100
WHERE TNo IN (
			  SELECT TNo 
			  FROM T,TC 
			  WHERE T.TNo=TC.TNo AND CNo='C5'
			  )

【例】将所有教师的工资修改为平均工资的1.2倍。

UPDATE T
SET Sal=(SELECT 1.2*AVG(Sal) FROM T)

从数据表中删除数据.

SQLには、DELETEデータを削除するためのステートメントが用意されています。データベースを削除したり、基本テーブルを削除したりする場合のDROPステートメントとは異なりますDELETEステートメントの基本的な構文形式は次のとおりです。

DELETE
FROM NAME_OF_TABLE
WHERE CONDITION

そのうちNAME_OF_TABLEWHERE削除するデータテーブル参照し、句は削除するレコードが満たすべき条件を指定します。

【例】劉偉先生の記録を削除する。

DELETE
FROM T
WHERE TN='刘伟'

[例]すべての教師の教育記録を削除します。

DELETE
FROM TC

TCは既に空のテーブルですが、その定義はまだ存在しています。つまり、TCテーブルは削除されておらず、データを追加できます。

【例】劉偉先生の講義録を削除する。

DELETE
FROM TC
WHERE TNo=(SELECT TNo FROM T WHERE TN='刘伟')

おすすめ

転載: blog.csdn.net/weixin_44246009/article/details/108062684