Linux – SQLデータ管理

最近更新

◆ SQLとは

SQL(Structured Query Language)とは、RDB(リレーショナルデータベース)を操作するための言語。
リレーショナルデータベースは現在広く用いられているデータベースの方式であり、データはテーブル表に
格納されます。テーブルは列(
フィールド)と行(レコード)から構成して、テーブルのデータが関連付け
られます。下図は社員テーブルの「支店ID」と支店テーブルの「支店ID」の列の関連付け(リレーショナル)

SQLは大きく分けて、DDLDMLDCLの3種類から構成されます。DMLには、SELECT(データの選択)
 INSERT(追加)、UPDATE(更新)、DELETE(削除)等があります。以降はDMLにフォーカスして解説。

 

種類 和訳 説明
 DDL ( Data Definition Language ) データ定義言語  データベースやテーブル作成時に使用
 DML ( Data Manipulation Language ) データ操作言語  データ操作時に使用
 DCL ( Data Control Language ) データ制御言語  トランザクション制御時に使用

 リレーショナルデータベースの管理システムをRDBMS(Relational DataBase Management System)といい、
代表的なオープンソフトウェアにMySQL、商用製品にはOracle Database DB2、MS SQL Serverがあります。

 

 ◆ SQL – SELECT

データベースからデータを抽出するには
SELECT文というSQLの命令を使用します。構文は以下です。

 ◆ 構文 : SELECT 列名 FROM テーブル名 ;

◆ 実行例 : employeeテーブルから「 name 」列の取り出し

 SELECT name FROM employee;

    

 ◆ 実行例 : employeeテーブルから「id」と「name」列の取り出し

 SELECT id,name FROM employee;

   

 ◆ 実行例 : employeeテーブルから全ての列の取り出し

 SELECT * FROM employee;

  

 SELECT文でデータを抽出する際に以降で紹介。

・ WHERE
・ ORDER BY
・ GROUP BY

上記を使用することで、検索条件を指定しデータを抽出したり検索結果をソートして表示したり、指定した列について、グループ化して表示させられます。以降で、これら3つを詳細を解説していきます。

 

 ◇ WHERE
⇒ データを抽出する際に、特定の条件を満たしたものだけを取得するためには
WHEREを併用します。

 ◆ 構文 : SELECT 列名 FROM テーブル名 WHERE 検索条件;

 ◆ 実行例 : employeeテーブルから branchid が 20 である「 id と name列 」の取り出し

 SELECT id,name FROM employee WHERE branchid = 20;

      

◇ ORDER BY
⇒ データを抽出する際に、検索結果をソートして表示するためにはORDER BYを併用します。

 ◆ 構文 : SELECT 列名 FROM テーブル名 ORDER BY 列名;

◆ 実行例 : employeeテーブルから「 salary列 」を昇順にソートして、全ての列の取り出し

 SELECT * FROM employee ORDER BY salary;

  

◇ GROUP BY
⇒ データをグループ化し計算した上で抽出する際にはGROUP BYを併用します。

 ◆ 構文 : SELECT 列名 FROM テーブル名 GROUP BY グループ化する列名;

 ◆ 実行例 : employeeテーブルで「 branchid 列 」をグループ化して抽出し、salary の合計を算出。

 SELECT branchid, SUM(salary) FROM employee GROUP BY branchid;

  

上記のSUMはSQLで使用する関数です。グループ化したデータの処理を行える関数には、その他には
 MAX(最大値)、MIN(最小値)、COUNT(データ数)などがあります。

 

 

 ◆ SQL – INSERT

データベースにデータを追加するには
INSERT文というSQLの命令を使用します。構文は以下です。

 ◆ 構文 : INSERT INTO テーブル名 (列名) VALUES (値);

◆ 実行例 : employeeテーブルに、以下の新規レコードの追加

 INSERT INTO employee (id, name, branchid) VALUES (‘6′,’Ken’,’30’);

  

◆ SQL – UPDATE

データベースのレコードを追加するには、UPDATE文というSQLの命令を使用します。構文は以下です。
なお、レコードの更新対象はWHERE句の条件式を満たすレコードとなります。

 ◆ 構文 : UPDATE テーブル名 SET 列名=値 WHERE 条件式;

 ◆ 実行例 : employeeテーブルにおいて、name列の値が「 Mike 」のレコードで branchid列を「 20 」に更新

 UPDATE employee SET branchid=’20’ WHERE name=’Mike’;

  

 

 ◆ SQL – DELETE

データベースのレコードを削除するには、
DELETE文というSQLの命令を使用します。構文は以下です。
なお、レコードの削除対象はWHEREの条件式を満たすレコードが対象(未指定なら全レコードが対象)

 ◆ 構文 : DELETE FROM テーブル名 WHERE 条件式;

 ◆ 実行例 : employeeテーブルにおいて、name列の値が「 Tom 」のレコードを削除

 DELETE FROM employee WHERE name=’Tom’;

  

◆ SQL – SELECT with JOIN

データベースのデータは、複数のテーブルに格納されることが多いですが、データの抽出時にそれらの
データをまとめて取得したい場合、複数のデータのテーブルを結合できるINNER JOIN句を使用します。

 SELECT aaa.name, bbb.branch FROM aaa INNER JOIN bbb ON aaa.branchid=bbb.branchid;