第4章 リレーショナルデータベース言語SQL 4.1 4.2 4.3 4.4 4.5 4.6 背景と基本概念 データ定義 アクセス権限 問合せ データ更新 アプリケーションからのデータ操作 4.5 データの更新 1.追加 INSERT INTO 表名[(列名1[,列名2・・・])] {VALUES(値指定[,値指定・・・])|問合せ式} ①列名を省略したときは、その表のすべての列を左から順に指定したものと 同等である。 ②値指定の代わりに空値を用いることもできる。 ③列名を指定したとき、指定した列だけにVALUES句で指定した値が左から順 に対応する列の値として入る。指定されていない列には空値が入る。 ④VALUES句では算術式を指定できない。 ⑤問合せ指定を指定すると、問い合せた導出表が表に追加される。 ⑥INSERT INTOの次の表名は問合せ指定中の表名と同じであってはならない 【例1】表「社員」に社員を追加 INSERT INTO 社員 VALUE('1007','山本哲哉',400,'P') 社員ID 氏名 年収 課ID 1001 浅田克郎 800 D 1002 佐藤史郎 600 D 1003 田中吉彦 900 S 1004 中原圭吾 800 S 1005 羽田康子 700 S 1006 山田悦子 500 NULL 1007 山本哲哉 400 P 【例2】年収・所属が未定の社員を追加 INSERT INTO 社員 VALUE('1007','山本哲哉',NULL,NULL) または INSERT INTO 社員(社員ID,氏名) VALUE('1007','山本哲哉' 社員ID 氏名 年収 課ID 1001 浅田克郎 800 D 1002 佐藤史郎 600 D 1003 田中吉彦 900 S 1004 中原圭吾 800 S 1005 羽田康子 700 S 1006 山田悦子 500 NULL 1007 山本哲哉 NULL NULL 【例3】D課の社員情報を設計課作業表に追加 INSERT INTO 設計課作業表 SELECT * FROM 社員 WHERE 課ID = 'D' (事前に以下を定義しておくこと) CREATE TABLE 設計課作業表( 社員ID CHAR(4) NOT NULL, 氏名 NCHAR VARYING(20), 年収 INTEGER, 課ID CHAR(1), PRIMARY KEY (社員ID), FOREIGN KEY (課ID) REFERENCES 組織) 設計課作業表 社員ID 氏名 年収 課ID 1001 浅田克郎 800 D 1002 佐藤史郎 600 D 2.変更 UPDATE 表名 SET 列名 = 値式[,列名=値式・・・] [WHERE 探索条件] ①探索条件で真となった行が変更の対象となる。 ②WHERE句を省略するとすべての行が対象となる。 ③SET句の列の値が値式に置き換わる。 ④値式の代わりに空値を指定できる。 【例4】社員の年収を5%増額 UPDATE 社員 SET 年収=年収*1.05 社員ID 氏名 年収 課ID 社員ID 氏名 年収 課ID 1001 浅田克郎 800 D 1001 浅田克郎 840 D 1002 佐藤史郎 600 D 1002 佐藤史郎 630 D 1003 田中吉彦 900 S 1003 田中吉彦 945 S 1004 中原圭吾 800 S 1004 中原圭吾 840 S 1005 羽田康子 700 S 1005 羽田康子 735 S 1006 山田悦子 500 NULL 1006 山田悦子 525 NULL 【例5】D課の社員の年収を10%増額 UPDATE 社員 SET 年収=年収*1.1 WHERE 課ID='D' 社員ID 氏名 年収 課ID 社員ID 氏名 年収 課ID 1001 浅田克郎 800 D 1001 浅田克郎 880 D 1002 佐藤史郎 600 D 1002 佐藤史郎 660 D 1003 田中吉彦 900 S 1003 田中吉彦 900 S 1004 中原圭吾 800 S 1004 中原圭吾 800 S 1005 羽田康子 700 S 1005 羽田康子 700 S 1006 山田悦子 500 NULL 1006 山田悦子 500 NULL 【例6】社員1004を未配属にする UPDATE 社員 SET 課ID=NULL WHERE 社員ID='1004' 社員ID 氏名 年収 課ID 社員ID 氏名 年収 課ID 1001 浅田克郎 800 D 1001 浅田克郎 800 D 1002 佐藤史郎 600 D 1002 佐藤史郎 600 D 1003 田中吉彦 900 S 1003 田中吉彦 900 S 1004 中原圭吾 800 S 1004 中原圭吾 800 NULL 1005 羽田康子 700 S 1005 羽田康子 700 S 1006 山田悦子 500 NULL 1006 山田悦子 500 NULL 3.削除 DELETE FROM 表名 [WHERE 探索条件] ①探索条件で真となった行が削除される。 ②表自体はなくならないので、再び行を追加することができる。 【例7】社員1004が退職したので削除 DELETE FROM 社員 WHERE 社員ID='1004' 社員ID 氏名 年収 課ID 社員ID 氏名 年収 課ID 1001 浅田克郎 800 D 1001 浅田克郎 800 D 1002 佐藤史郎 600 D 1002 佐藤史郎 600 D 1003 田中吉彦 900 S 1003 田中吉彦 900 S 1004 中原圭吾 800 S 1005 羽田康子 700 S 1005 羽田康子 700 S 1006 山田悦子 500 NULL 1006 山田悦子 500 NULL 【例8】西プロジェクトは終了したので削除 DELETE FROM 西プロジェクト DELETE FROM プロジェクト構成員 WHERE プロジェクトID='西' 西プロジェクト プロジェクト構成員 構成員 プロジェクトID 構成員 プロジェクトID 構成員 1002 東 1001 東 1001 1003 東 1002 東 1002 1005 東 1003 東 1003 東 1004 東 1004 西 1002 西 1003 西 1005 構成員
© Copyright 2024 ExpyDoc