データベースとかSQLとかの勉強メモ : RDBMS / MySQL

データベース勉強したいけど何から勉強したらいいのか…テキトーに検索して出てきたデータベースの基礎を理解しよう! プログラミング未経験から始めるPHP入門(6)(1/4):CodeZineと 10_weeks_webdev_learninng - PukiWiki(サイト消えた) が分かりやすそうなので、とりあえず読んで動かしてみる。

復習用のメモ

用語の意味は?なんの略語?どういう命令がある?構文は?使い方は? … DBMS / RDBMS / SQL / DDL / DML / カラム / レコード / 階層型・ネットワーク型・リレーショナル型 / 断片化・再編成 / 正規化(第1~3) / (整合性)制約 / ストアドプロシージャ / トリガー / アカウント / インスタンス・システムグローバル領域 / トランザクション・コミット・ロールバック・ACID特性

DDL(Data Definition Language)

データベースの構造を定義するためのコマンド。

  • データベース/テーブル の 作成/削除
  • カラム の 追加/削除
  • 制約 の 追加/削除

DML (Data Manipulation Language)

データベース内のデータを操作するコマンド。

  • SELECT : 検索
  • INSERT : 挿入
  • UPDATE : 更新
  • DELETE : 削除

データベースの作成 と 削除

phpMyAdminログイン画面

phpMyAdmin にログインして…

phpMyAdminログイン後の画面

SQL のタブをクリックして…

phpMyAdminのSQL実行する画面

ここでSQLを実行してデータベースを操作しますよ…と。 以下のコードでデータベースの作成と削除ができる。

/* $sql = "CREATE DATABASE `fernwelt`;"; */
CREATE DATABASE  `fernwelt` ;

/* データベースの削除 */
DROP DATABASE `fernwelt` ;

CREATE TABLE テーブルの作成

CREATE TABLE *** (
  カラム名  [制約]
) DEFAULT CHARSET = utf8

という構文でデータベースにテーブルを作成できる。

DROP TABLE IF EXISTS animals ;
CREATE TABLE animals(
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT ,
  genus_name VARCHAR( 255 ) NOT NULL ,
  name VARCHAR( 255 ) NOT NULL ,
  age INT,
  birthday DATE
) DEFAULT CHARSET = utf8 ;

/*
$sql = "DROP TABLE IF EXISTS animals;# 返り値が空でした(行数0)\n"
    . "\n"
    . "CREATE TABLE animals (\n"
    . " id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,\n"
    . " genus_name VARCHAR(255) NOT NULL,\n"
    . " name VARCHAR(255) NOT NULL,\n"
    . " age INT,\n"
    . " birthday DATE\n"
    . ")DEFAULT CHARSET = utf8 ;# 返り値が空でした(行数0)\n"
    . "";
*/

INSERT レコードの追加

INSERT INTO テーブル名(カラム名1, カラム名2) VALUES('値1','値2');

という構文でレコードを追加できる。

INSERT INTO
  animals(id, genus_name, name, age, birthday)
  VALUES('1', 'cat', 'tama', '5', '2010-10-10');

/*
$sql = "INSERT INTO\n"
    . "  animals(id, genus_name, name, age, birthday)\n"
    . "  VALUES(\'2\', \'dog\', \'poti\', \'3\', \'2011-10-10\');";
*/

SELECT 検索

SELECT colmn1, colmn2 FROM table WHERE conditon

と、こんな感じの構文で検索する

SELECT * FROM animals;
/*
$sql = "\n"
    . "SELECT * FROM animals LIMIT 0, 30 ";
*/

結果

id | genus_name | name | age | birthday
1 | cat | tama | 5 | 2010-10-10
2 | dog | poti | 3 | 2011-10-10
3 | fish | sakanakun | 30 | 1975-10-10
4 | ant | ari | 0 | 2015-11-11
SELECT id, name, birthday FROM animals WHERE name = 'tama' ;
/*
$sql = "SELECT id, name, birthday FROM animals WHERE name = \'tama\' ";
*/

結果

1 | tama | 2010-10-10

WHERE 以降で条件を絞り込める。SELECT構文:WHEREで検索条件を設定する | SQL講座 [Smart]を参照。

SELECT id FROM animals WHERE NOT id != '1';
SELECT id FROM animals WHERE id < 2 AND id >= 1;
SELECT id FROM animals WHERE id = 1 OR id < 2;
SELECT id FROM animals WHERE (id = 1 OR id > 2) AND id < 2;
SELECT id FROM animals WHERE id BETWEEN 0 AND 1;
/*
LIKE演算子でワイルドカード(_,%)
によるパターンマッチが使用できる
*/
SELECT id FROM animals WHERE name LIKE 'ta_%';
SELECT id FROM animals WHERE id NOT IN(2, 3, 4, 5);

結果

id | 1

UPDATE データの更新

UPDATE table SET colmn = value WHERE condition

というような構文でレコードの更新ができる。WHERE は必須ではないけど条件がない場合は全てのレコードが更新される。実質必須じゃなイカ

UPDATE animals SET age = 100 WHERE name = 'poti';
SELECT * FROM animals WHERE name = 'poti';

結果

2 | dog | poti | 100 | 2011-10-10

DELETE データの削除

DELETE FROM table WHERE condition

という構文。他のよりもだいぶシンプルだね。。WHEREは省略可能だけど省略すると全てのレコードが削除される。

用語

次はPHPのPDOを勉強するぜ!

Share
関連記事