15
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL初心者の基本のキ

15
Posted at

はじめに

業務でoracleについて扱うことが出てきたので、初心者なりに書籍や実務で身につけたSQLについて記載してこうと思います。
データベース全般初心者なので簡単な内容から記載していきます。。

SQLとは

そもそもSQLとはなんぞやから始まり調べればすぐ出てくるんですが、データベースを操作するためのプログラミング言語であり、「Structured Query Language」から略されてSQLになったそうです。
データベースと言ってもリレーショナルデータベース(RDBMS)という種類のデータベースでSQLは使われるそうです。

SQLの基本命令

続いて、SQLの基本命令を見ていきます。
基本命令は4つで、以下になります。
・SELECT:データの抽出
・INSERT:データの挿入(追加)
・UPDATE:データの更新
・DELETE:データの削除
小難しい話は一旦置いておいて、今回はこの4つについて簡単に触れていきます。

例えばこんなテーブルがあったとします。
テーブル名:EX_TABLE

EMP_ID NAME DEPARTMENT SALARY
a0001 Saito Sales 300000
b0001 Suzuhara IT 450000
b0003 Takada SE-Support 320000

SELECT:データの抽出

基本的な形として、

test_ex1.sql
SELECT * FROM テーブル名;

となり、「*」はすべて(All)を意味するワイルドカードとなり、これを今回の例で当てはめると、

test1.sql
SELECT * FROM EX_TABLE;

となります。これを実行すると、以下のように当該テーブルに入ってるデータが出てきます。

EMP_ID NAME DEPARTMENT SALARY
a0001 Saito Sales 300000
b0001 Suzuhara IT 450000
b0003 Takada SE-Support 320000

「*」を使わないで、必要な情報だけを取得するときはその列名(カラム名)を書けばよいです。
EMP_IDとNAMEを抽出したいときは、

test2.sql
SELECT EMP_ID, NAME FROM EX_TABLE;

とすれば,以下が出力されます。

EMP_ID NAME
a0001 Saito
b0001 Suzuhara
b0003 Takada

さらに、「SALARY」の項目で320000以上のデータだけ抽出したいときは「WHERE」を使って条件を絞って抽出できます。

test3.sql
SELECT * FROM EX_TABLE WHERE SALARY >=320000;

実行結果が以下です。

EMP_ID NAME DEPARTMENT SALARY
b0001 Suzuhara IT 450000
b0003 Takada SE-Support 320000

INSERT:データの挿入(追加)

INSERTはデータを追加することができます。

test_ex2.sql
INSERT INTO テーブル名 VALUES ('値1', '値2', 値3・・・);

※数字以外の値を入れるときはシングルクォーテーション「'」で囲ってください。

これを今回の例で実施してみます。
新しく「b0004」「Tanaka」「IT」「500000」で追加してみます。

test4.sql
INSERT INTO EX_TABLE VALUES ('b0004', 'Tanaka', 'IT', 500000);

これを実行してエラーが起きず、「1件追加しました」のような文言がでればOKです。

この後に、もう1度「test1.sql」と同じ内容を実施すると、以下が出力され、データが追加されました。

EMP_ID NAME DEPARTMENT SALARY
a0001 Saito Sales 300000
b0001 Suzuhara IT 450000
b0003 Takada SE-Support 320000
b0004 Tanaka IT 500000

UPDATE:データの更新

データのすでに入っているデータを更新もします。

test_ex3.sql
UPDATE テーブル名 SET 列名(カラム名) = '変更後の値';

このままだと、列名(カラム名)の値をすべて更新してしまうので、「WHERE」で条件を付けて、更新したいデータのみが抽出できるようにします。

test_ex4.sql
UPDATE テーブル名 SET 列名(カラム名) = '変更後の値' WHERE 条件;

としてあげます。今回の例で試してみます。
EMP_IDの「b0004」のSALARYを「550000」に更新したいときは以下のようにします。

test5.sql
UPDATE EX_TABLE SET SALARY = 550000 where EMP_ID = 'b0004';

これを実行してエラーが起きず、「1件更新しました」のような文言がでればOKです。

この後に、もう1度「test1.sql」と同じ内容を実施すると、以下が出力され、データが更新されました。

EMP_ID NAME DEPARTMENT SALARY
a0001 Saito Sales 300000
b0001 Suzuhara IT 450000
b0003 Takada SE-Support 320000
b0004 Tanaka IT 550000

DELETE:データの削除

データの削除は文字通りいらなくなったデータを削除します。

test_ex5.sql
DELETE FROM テーブル名 WHERE 条件;

「WHERE 条件」がなくても動作しますが、そのテーブル名の入ってるデータをすべて消すので、基本的には条件を付けます。

今回はEMP_IDの「a0001」の項目を削除してみます。

test6.sql
DELETE FROM EX_TABLE WHERE EMP_ID = 'a0001';

これを実行してエラーが起きず、「1件削除しました」のような文言がでればOKです。

この後に、もう1度「test1.sql」と同じ内容を実施すると、以下が出力され、データが削除されました。

EMP_ID NAME DEPARTMENT SALARY
b0001 Suzuhara IT 450000
b0003 Takada SE-Support 320000
b0004 Tanaka IT 550000

おわりに

今回あげた4つの基本命令は、条件をさらに細かく指定したり、昇順降順にしたりするなど他にもできることはあります。
今回は一旦これくらいにしておきますが、また身についてきたら記事にできればと思います。

なお、今回は以下のオンライン上でSQLのコマンドを試せる環境で実施しました。
Oracle FreeSQL

参考文献

イラストで理解 SQL初めて入門 (著:朝井 淳/出版:技術評論社)

15
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?