SQL
Structured Query Language
概要
SQLとは
SQLとは、DBMS(Database Management System)を操作するためのデータベース言語で、データベースの作成、テーブルの作成、テーブルへのデータの追加、更新、削除、また設定変更などを行うコマンドが体系化されています。
SQLによるデータベース操作には「対話型」と「埋め込み型」の2種類があります。対話型は、Terminal接続や、phpMyAdmin のようなGUIツール上で、ユーザーが直接SQLのコマンドを打ち込むもので、埋め込み型は、PHPやJavaなどのプログラミング言語で記述したソースコードにSQL文を埋め込むものです。
SQLは、 あくまでもデータの操作や定義を行うためのデータベース言語で、それ自体はプログラミング言語ではありません。実際的には、様々なアプリケーションにおけるデータベースへのアクセスのために、他のプログラミング言語(ホスト言語)に埋め込まれて利用されるのが一般的です。
SQL が扱うデータ構造
リレーショナルデータベースで SQLが対象とするデータベースは、TABLE, COLUMN, RECORD, FIELD の4つの要素から構成されています。
- TABLE:スプレッドシート1ページに該当するもの
- COLUMN:スプレッドシートの「列(カテゴリ属性)」に該当。垂直方向。
- RECORD:スプレッドシートの「行(一件分の記録)」に該当。水平方向。
- FIELD:スプレッドシートの「セル」に該当。データの最小単位。
ちなみに、データベース全体は複数の TABLE から構成されるので、複数のシートを持ったスプレッドシートファイル全体に該当します。
PRIMARY KEY について
PRIMARY KEY(主キー)とは、TABLE に登録する RECORD 全体の中で、特定の RECORD をユニークに把握するためのカラムのことで、例えば、右図の名簿の中では、ID(会員番号)のように、重複なく振られるものです。
データ管理上の主たるテーブルとは異なるログ(利用記録)テーブルのようなもの場合は、PRIMARY KEY を設定しないこともありますが、基本的には、レコードを特定できる情報がある方が、様々な操作に対応しやすくなります。
SQL の分類
SQLはその機能によって「データ定義言語」「データ操作言語」「データ制御言語」の3種類に分類されます。以下、それぞれの概要と命令文の例です。
- DDL(Data Definition Language:データ定義言語)
- CREATE:オブジェクトを制作する
- JOIN:テーブルを結合する
- DROP:オブジェクトを削除する
- ALTER:オブジェクトの内容を変更する
- TRUNCATE:データを全削除する
- DML(Data Manipulation Language:データ操作言語)
- SELECT:データを検索して取得する
- INCERT:データを追加する
- DELETE:データを削除する
- UPDATE:データを更新する
- DCL(Data Control Language:データ制御言語)
- GRANT:ユーザーに権限を付与する
- REVOKE:ユーザーの権限を削除する
- BEGIN:トランザクションを開始する
- COMMIT:トランザクションを確定する
- ROLLBACK:トランザクションを取り消す
データベース自体の操作
- CREATE DATABASE [データベース名];:データベースを作成する
CREATE DATABASE sample_db;
- SHOW DATABASES;:データベースの一覧を確認する
SHOW DATABASES;
- DROP [データベース名];:データベースを削除する
DROP sample_db;
データ定義
- CREATE TABLE テーブル名 (列名 データ型, ...);
CREATE TABLE member ( id INT, name VARCHAR(255) );
- ALTER TABLE テーブル名 変更操作;
ALTER TABLE member ADD ( email VARCHAR(255) );
- ADD (列名 データ型) :列を追加
- MODIFY 列名 データ型:データ型や制約を変更
- DROP COLUM 列名:列を削除
- ADD 制約:制約を追加
- DROP 制約 :制約を削除
- DROP TABLE テーブル名
DROP TABLE member;
データ操作
追加・修正・削除
- INSERT INTO テーブル名 ( カラム名 , カラム名, ・・) VALUES ( 値, 値,・・);
INSERT INTO member ( id, name ) VALUES ( 101, '川添' );
- UPDATE テーブル名 SET 列名 = 値 WHERE 条件式;
UPDATE member SET e-mail = 'kwz@example.com' WHERE id = 101;
- DELETE FROM テーブル名 WHERE 条件式;
DELETE FROM member WHERE id = 101;
検索
- SELECT * FROM テーブル名; ・・テーブル全体の表示
SELECT * FROM member
- SELECT 列名 FROM テーブル名; ・・特定の列を抜き出す
SELECT id, name FROM member
- SELECT 列名 FROM テーブル名 WHERE 条件式; ・・条件を指定
SELECT id, name FROM member WHERE id = 101
データ制御
- COMMIT:確定
COMMIT;
- ROLLBACK:取り消し
ROLLBACK;