SQLの基本

■概要

SQLとはデータベースを管理するために作成された言語で、
「エスキューエル」と読みますが、「シークェル」と読むこともあります。

●DB
	DB(データベース)とは整理されたデータの集まりのことです。
	バラバラなデータをデータベースに保存し、整理することで、
	検索や分析などで効果を発揮します。

●DBMS
	DBMSとはデータベースを管理するシステムまたはそのシステムを
	動かすためのソフトウェアのことです。
	ユーザーはDBのデータに対してSQLを使用して様々な
	要求(入力、更新、検索)を行い、DBMSはその結果をユーザーに返します。

	・DBMSの種類
		DBMSはオープンソースから商用まで数多くの種類があり、
		オープンソースでは「MySQL」、商用では「OracleDB」が有名です。
		このDBMSを動かすために作成された言語がSQLになります。

	・DBMSの注意点
		大きく異なっているわけではありませんが、
		SQLのルールが各DBMS毎に異なっています。
		例えば、MySQLのコードをそのままOracleDBで動作させようとしても
		動作する保障はありません。

●RDBMS
	RDBMSはDBMSの管理方法のひとつでデータを行と列で構成された
	表(テーブル)形式で管理する方法です。
	個々のデータが独立しているので管理しやすしく、
	テーブル同士を組み合わせて連携を取れることが特徴です。

	sql_0001

	・テーブル
		列と行からなる表のことです。
		テーブルを区別するために各テーブルに名前をつけます。

	・行(ロー)
		行(ロー)は1行がDBで管理するデータ1件分を表しており、
		「レコード」とも呼ばれています。
		上の画像では4行あるので、4件分のデータが
		あることを示しています。

	・列(カラム)
		列(カラム)はレコードに保存するデータを表しており、
		「フィールド」とも呼ばれています。
		上の画像では1つのレコードに6個のフィールドが
		あることを示しています。

	・列名(カラム名)
		列名(カラム名)は使用者が各列の情報を知るためにつける名前です。

●RDBMSの特性
	・主キー(PRIMARY KEY)
		主キー(PRIMARY KEY)とはレコードを識別するための特別なフィールドのことで、
		「テーブル内のフィールド上でユニークな値である」
		「NULL値は許可されない」という性質を持っています。
		この主キーの選択はDBMSが決めるのではなく、ユーザーが指定を行います。

	・複合主キー(composite primary key)
		複合主キーとは複数のフィールドの構成を主キーとするフィールドのことで
		「複数のフィールドを組み合わせた結果、ユニークなデータになっている」という
		性質を持っています。

	・ユニークキー(UNIQUE KEY)
		ユニークキー(UNIQUE KEY)とはユニークな値を保障する
		フィールドのことで、「フィールド上でユニークな値である」という
		性質を持っています。
		主キーとユニークキーの違いはNULLを許容するかどうかです。
		主キーはNULLは許されませんが、ユニークキーはNULL値に限り
		重複することを許容しています。

	・外部キー(FOREIGN KEY)
		外部キー(FOREIGN KEY)とはフィールドの値を別のテーブルの
		フィールドの値から指定する方式です。
		「別テーブルで指定したフィールドの項目しか値を設定できない」という
		性質を持っています。

	・ビュー
		ビューとは既存のテーブルから必要な部分だけを取り出して、
		仮のテーブルを表示する機能のことです。
		ビューを使用すると特定のフィールドのみを表示できるので、
		データの確認の効率が向上します。

■SQLの基本

●クエリ
	クエリとはRDBMSに出す要求のことです。
	この要求の内容をSQLの文法で記述します。

	・DB作成ツール
		phpMyAdminなどのDB作成をサポートしてくれるツールでは
		ボタン1つでテーブル作成やフィールドの変更が可能ですが、
		このツールの内部ではSQL文が自動で発行されており
		それを実行しています。

●SQLの基本動作
	・データの取得
		データベースから特定のデータを取得することができます。

	・データの操作
		・追加
			テーブルに新しいデータを追加することができます。

		・削除
			テーブルのデータを削除することができます。

		・更新
			テーブルのデータを新しいデータに更新することができます。

	・データベース、テーブルの作成
		データベースやテーブルを新しく作成することができます。

■DB

SQLでデータを管理するためには、DBを作成する必要があります。
DBという空間にいくつものテーブルを作成し、
そのテーブルに対してレコードを追加、更新、削除を行っていきます。

	sql_0007

●作成
	DBを作成するには「CREATE DATABASE」を使用します。

	・書式
		・書式例
			CREATE DATABASE データベース名;

		・具体例
			CREATE DATABASE test_db;

●指定
	使用したいDBを指定するには「USE」を使用します。

	・USEの意図
		DBMS上管理しているDBは1つだけということはなく、
		基本的に複数のDBを管理していています。
		なので、自分がこれから使用するDBをきちんと指定しないと
		こちらの意図したデータとは異なるデータを受け取ることになります。

	・書式
		・書式例
			USE データベース名;

		・具体例
			USE test_db;

●削除
	データベースの削除は「DROP DATABASE」を使用します。

	・書式
		・書式例
			DROP DATABASE データベース名;

		・具体例
			DROP DATABASE test_db;

■テーブル関連の命令

DBが作成されたらテーブルの作成、削除になります。
テーブルの追加時の注意としてきちんと追加を行うDBが指定されているかの
確認を行ってください。

●テーブルの作成
	新しいテーブルを作成するには「CREATE TABLE」を使用します。
		
	・書式
		・書式例
			CREATE TABLE テーブル名 (
				カラム名 データ型
				    ・
					・
				    ・
			);

		・具体例
			CREATE TABLE test_table (
				a INT,
				b INT,
				c INT
			);

			上のテーブル作成が成功すると以下のテーブルが作成されます。

				テーブル名:
					test_table

				カラム:
					int a
					int b
					int c

●テーブルの削除
	テーブルを削除するには「DROP TABLE」を使用します。

	・書式
		・書式例
			DROP TABLE テーブル名;

		・具体例
			DROP TABLE test_table;

			上のSQLが成功するとtest_tableというテーブルが削除されます。

●レコードの追加
	レコードを追加する場合は「INSERT」を使用します。
	
	・書式
		・書式例
			INSERT INTO テーブル名 (列名1, 列名2, …)
			VALUES (データ1, データ2, ……);

		・具体例
			INSERT INTO enemydata (ID, Name, Speed)
			VALUES ('9', 'ゴブリン', '2.0');

		追加するレコードのテーブルを指定し、初期化したいカラムを
		列名の箇所で指定し、VALUESで具体的な値を設定します。
		具体例ではENEMY_DATAテーブルにカラム「ID」「Name」「Speed」に対して
		ID => 9、Name => ゴブリン、 Speed => 2.0で初期化するようにしています。

	・短縮
		全てのカラムにデータを設定する場合は、列名を省略可能です。
		※宣言しているカラムの順番に設定をする必要があります。

		例:
			カラム
				int ID
				varchar(32)
				float

			INSERT INTO enemydata VALUES ('10', 'ボブゴブリン', '3.0')

●レコードの更新
	レコードを更新するには「UPDATE」を使用します。

	・書式
		UPDATE テーブル名 SET 列名 = 値, 列名 = 値, …… WHERE 条件

	・具体例
		UPDATE enemydata SET Name="ゴブリンアーチャー" WHERE ID=10

	具体例のSQLを実行するとID10のレコードのNameが
	「ゴブリンアーチャー」に変更されます。

●レコードの削除
	レコードの削除には「DELETE」を使用します。

	・書式
		・書式例
			DELETE FROM テーブル名 WHERE 条件

		・具体例
			DELETE FROM enemydata WHERE ID = 100;

		具体例のSQLを実行するとenemydataテーブルのID100番の
		レコードが削除されます。