SQLメモ

/web/server-side

Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。

SQLとは、データの操作や定義を行うための問い合わせ言語のこと。
リレーショナルデータベースマネジメントシステム(RDBMS)を操作する、標準言語。OracleもMySQLもPostgreSQLも、概ね同じSQL文で動作する。

SQLは Structured Query Language (構造化問合せ言語)の略である、とされる。IBM社のRDBMSである「SQL」を指すならば、これは正しい。しかしIBM社のSQLと標準SQLは厳密には別であり、標準SQLについては特に何かの略ではないとのこと。

標準SQLはISOで言語仕様の標準化が行われており、IBM社独自で唱えるRDBMSでは無い。IBM社のSQLは「シークェル」と読まれることもある。

DB作成・削除

DB作成
create database DB名;
DB削除
drop database DB名;
DBに入る
use DB名;

memo: DB名として使える文字は、’英数字“か’_“か’$“。

テーブルの編集

  1. CREATE TABLE bbs (
  2. bbs_id int(11) PRIMARY KEY AUTO_INCREMENT,
  3. bbs_title varchar(255),
  4. bbs_author varchar(128) NOT NULL,
  5. bbs_text text NOT NULL,
  6. bbs_create datetime NOT NULL default'0000-00-00 00:00:00',
  7. bbs_update TIMESTAMP(14),
  8. bbs_delete enum('Y','N') NOT NULL default'N'
  9. );
テーブルの一覧を表示
show tables;
テーブルを削除
drop table テーブル名
テーブルを作成
create table テーブル名 { フィールド名 データ型 初期値, ... };
テーブル名の変更
alter table 現テーブル名 rename 新テーブル名

フィールドの編集

データ型 内容 データ範囲
int 4バイト整数 -2147483648~2147483647
char( ) 固定長文字列 最大長255バイト
varchar( ) 可変長文字列 最大長255バイト
text 可変長文字列 最大長65535バイト
enum(' ', ' ', ...) 列挙 最大65535個の固有値
set(' ', ' ', ...) リスト 最大64個の要素
date 日付 1000-1-1~9999-12-31
datetime 日付と時刻 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp(14) 現在の日付と時刻 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
一覧を表示
desc テーブル名;
フィールドを追加 (フィールドAの後に、前に)
alter table テーブル名 add フィールドB データ型 初期値 after フィールドA;
alter table テーブル名 add フィールドB データ型 初期値 first フィールドA;
フィールドの変更
alter table テーブル名 change 現フィールド名 新フィールド名 データ型 初期値;
フィールドのデータ型を変更
alter table テーブル名 modify データ型;
フィールドの削除
alter table テーブル名 drop フィールド名;
初期値の設定/削除
alter table テーブル名 alter フィールド名 set default '初期値';
alter table テーブル名 alter フィールド名 drop default;
インデックスの追加/削除
alter table テーブル名 add unique (フィールド名);
alter table テーブル名 add index フィールド名;
alter table テーブル名 drop index フィールド名;
主キーの設定/削除
alter table テーブル名 add primary key( フィールド名, ...);
alter table テーブル名 drop primary key;

レコードの編集

新規レコードを追加
insert into テーブル名 ( フィールド1, フィールド2, ... ) values( 値1, 値2, ... );
insert into テーブル名 values( 値1, 値2, ... , 値7 );
レコードを選択して取り出す(降順)
select フィールド名 from テーブル名 where 条件 order by フィールド名 desc;
レコードを更新する
update テーブル名 set フィールド名 = 値 where 条件;
レコードを削除
delete from テーブル名 where 条件;
テーブルを空にする
delete from テーブル名

Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。