いつか、技術ブログを

新人SE(OJT中)が技術ブログを書きたがっているブログです

UPDATE文、INSERT文、DELETE文の基本知識と練習問題(応用情報対策)

SELECT文は慣れてきたのですが、UPDATE文(更新)、INSERT文(挿入)、DELETE文(削除)が苦手なので、まとめました。

基本の書き方

[ ]内は省略可能です。

UPDATE文

条件に合ったレコードを更新します。

UPDATE 表名 SET 列名 = 値式 [WHERE 条件式]

WHERE句を省略すると、すべての行が更新されます。

INSERT文

レコードを挿入します。
その1 普通に値を挿入する

INSERT INTO 表名[(列名リスト)] VALUES(値リスト)

↑列名リストを省略した時は、値リストの列数は表の列数と同じじゃないといけません。

その2 別の表から条件にあったレコードを抽出して挿入する

INSERT INTO 表名[(列名リスト)] 問い合わせ文
DELETE文

条件に合ったレコードを削除します。

DELETE FROM 表名 [WHERE 条件式]

WHERE句を省略すると、すべての行が削除されます。

練習問題

ログイン不要なので、paiza.IOからMySQLを選び、練習していきます。

paiza.io

準備

こんな感じの表を作ります。Oracle Masterによく出るタイプの表です(empnoは社員番号、enameは社員名、deptnoは部門番号)。

empno ename deptno
1001 田中 10
1002 山田 20
1003 鈴木 10

以下のSQLをコピペして表を作ります。

CREATE TABLE emp(
    empno CHAR(4),
    ename CHAR(10),
    deptno CHAR(2)
);
INSERT INTO emp VALUES("1001", "田中", "10");
INSERT INTO emp VALUES("1002", "山田", "20");
INSERT INTO emp VALUES("1003", "鈴木", "10");

コピペした下にSQLを追加していきます。

問題

問1. 社員番号(empno)1001の田中さんの部門番号(deptno) を30に変更してください。

問2. 社員番号(empno)1004、部門番号30の佐藤さんを追加してください。

問3. 社員番号(empno)1002の山田さんのレコードを削除してください。
 
 
 
 
 
 
 
 
 

答え

問1. 社員番号(empno)1001の田中さんの部門番号(deptno) を30に変更してください。

UPDATE emp SET deptno = "30" WHERE empno = "1001";

 
問2. 社員番号(empno)1004、部門番号30の佐藤さんを追加してください。

INSERT INTO emp VALUES ("1004", "佐藤", "30");

または

INSERT INTO emp(empno, ename, deptno) VALUES ("1004", "佐藤", "30");

 
問3. 社員番号(empno)1002の山田さんのレコードを削除してください。

DELETE FROM emp WHERE empno = "1002";

 

感想

基本的な書き方を覚えられてなくて、この記事も色々見ながら書いたので、応用情報までにちゃんと覚えたいです。