環境(利用するソフトウェア)
- MySQL (RDBMS:リレーショナルデータベース管理システム)
- Apache (Webサーバー)
- php (プログラム言語)
SQLとは
- データを作るときの「create table ・・・」やデータを挿入するときの「insert intto ・・・」などデータベースに対して処理する内容を指定するコマンドをクエリという。このクエリを書くときの規則が、SQLという言語です。
作成編
SQLコマンド
-
データベースの作成
- 'create database データベース名;'
コマンドの最後には、「;」(デミリタ)をつける
- 'create database データベース名;'
-
テーブルの作成
- 'create database テーブル名 (カラム名 データ型, カラム名 データ型, カラム名 データ型 ・・・);'
- 例)'create database users (id INT AUTO_INCREMENT PRIMATY KEY, name VARCHAR(25), email VARCHAR(50), password VARCHAR(50));'
idカラムに、データ型(INT), AUTO_INCREMENT(連続番号1,2,3,4,5,・・・を宣言), PRIMATY KEY(主キーを設定)
nameカラムに、データ型(VARCHAR(25))を指定。VARCHARは、文字データの保管。(25)は、文字数制限をしていて25文字までの文字が入るようになる。passwordカラムも同様。
-
テーブルのデータの作成
- 'insert into テーブル名 values(データ, データ, データ ・・・);'
- 例)'insert into users(name, email, password) values('yyy', 'yyy@example.com', 'whywhywhy');'
usersテーブルのnameに'yyy', emailに'yyy@example.com', password に'whywhywhy'というデータを作成している。
- 複数データの作成
- 'insert into users(name,email,password) values('yyy','yyy@example.com','whywhywhy'),('zzz','zzz@example.com','zzzzzzzzzz'),('xxx','xxx@example.com','xxxxxxxxxxx');'
usersテーブルに3つのレコード作成している。作成したいデータを「,」で繋げる。・・・,(),(),・・・
- 'insert into users(name,email,password) values('yyy','yyy@example.com','whywhywhy'),('zzz','zzz@example.com','zzzzzzzzzz'),('xxx','xxx@example.com','xxxxxxxxxxx');'
-
インデックスの作成
インデックスとは、テーブルの索引のこと。膨大なデータから必要なレコードの情報を調べるときに使う。
- 'create index インデックス名 ON テーブル名(カラム名)'
- 例)'create index my_ind on users(name)'
usersテーブルのnameカラムに、'my_ind'というインデックスを設定している。
その他
- 作成したデータベースの確認
- 'show databases;'
- 使うデータベースを指定する
- 'use データベース名;'
- 現在しようしているデータベースの表示
- 'select database();'
- 内部結合(複数のテーブルを結合して表示する)
- テーブル構成
usersテーブル(id, name, email, password)
articlesテーブル(id, title, body, created_at, updated_at, user_id) - 今回は、articlesテーブルの title と created_at, usersテーブルの name を結合して表示する。
- 'select カラム名 from テーブル1 join 結合するテーブル2 on テーブル1のカラム=テーブル2のカラム;'
- 'select articles.title, articles.created_at, users.name
from articles
join users
on articles.user_id=user.id;'
- テーブル構成