2025/12/18追記 : 誤解だらけで破綻したので取りやめた記事です。
この記事は戒めというか、一応記録に残す目的だけでとってます。
↓次
序文
ためになるかどうかよりも自分のメモ書き程度で書いてる備忘録です。随時編集
間違いや、(結構古い本を参考にしてる分)今は構文が変わってるところとかあったら指摘してくれると個人的に喜びます
(一応) 環境
- Windows 7
- XAMPP 1.7.7
- Oracle MySQL 5.5.16
(参考の本「基礎からのMySQL改訂版」通りの環境)
解釈とメモ書き綴ってます。より正確な情報はこの本で
ユーザー作成
CREATE USER <ユーザー名> IDENTIFIED BY '<パスワード>';
権限付与
GRANT <許可するクエリをカンマ区切り> ON <操作を許可するテーブル - ワイルドカード使用可> TO <対象ユーザー>;
いろいろ
データの階層
データベース
→テーブル
→レコード
→カラム
テーブルの句
テーブル(カラム1, カラム2, ...) : テーブルの中でもカラム1, カラム2, ...を指す
MySQLデータベースはMySQLとしてのユーザー情報とかが入ってるっぽいやつ...?
クエリー
データベース系クエリ
表示系
データベースを作る
CREATE DATABASE <データベース名>;
データベース一覧の表示
SHOW DATABASES;
useコマンドで使用宣言した?データベースを表示する (一覧表示ではない)
SELECT database();
データベースのテーブルを見る
SHOW TABLES;
操作系
属性 : PRIMARY KEY (主キー), UNIQUE, AUTO_INCREMENT, 位置など
変数 : AUTO_INCREMENT
テーブルを作る
CREATE TABLE <テーブル名>(カラム1の名前 型 (属性), カラム2の名前 型 (属性), ...) <変数>;
テーブルのカラムに関する説明を見る
DESC <対象のテーブル>;
クエリの結果を元にテーブルを作る
CREATE TABLE <テーブル名> <クエリー>;
カラム構造だけコピーしてテーブルを作る
※変数はコピーされない
CREATE TABLE <新規テーブル名> LIKE <元のテーブル>;
テーブル
クエリ
関数
| 関数 | 何する |
|---|---|
| SUM(...) | 合算する |
| AVG(データ) | 平均する |
| COUNT(データ) | 要素数を計算する |
| CONCAT(...) | 文字列を結合する |
| LEFT(データ, n) | 文字列データの左からn文字 |
| RIGHT(データ, n) | 文字列データの右からn文字 |
| SUBSTRING(データ,start,n) | 文字列データのstart文字目からn文字を抽出 |
| REPEAT(文字列, n) | 第一引数の文字列をn回繰り返す |
演算子 : +-/*, 全てのレコードに適用される
SELECT句
全てのカラムを選択する
CUIでは選択が出力される
SELECT * FROM <テーブル>;
カラムを選択する
エイリアス : カラムの句 AS 表示名
SELECT <フィルタ・並び替えされたカラムに対する処理> FROM <テーブル> <フィルタ・並び替えなど>;
例 : SELECT AVG(<カラム>) AS <エイリアス> FROM <テーブル> ...;
DELETE句
条件に合うレコードをテーブルから消す
DELETE FROM <テーブル> WHERE <条件文>;
WHERE 句
WHERE <条件式>
単一の条件式
= : 左辺と右辺が等しい
>
>=
<
<=
<> : 異なる
n IN a : aリスト内にnがあるか
n NOT IN a : ↑の反転
n BETWEEN a AND b : nがa以上b以下か
n NOT BETWEEN a AND B : ↑の反転
n IS NULL : nがNULLか
n IS NOT NULL : ↑の反転
LIKE "<書式>" : ~はなんかの文字, %はなんらかの文字列
条件式の組み合わせ
<条件式> OR <条件式>
<条件式> AND <条件式>
<条件式> XOR <条件式>
ANDが優先して処理される。
OR,などの優先順位が低い条件を先に評価したい場合はカッコで囲む
ORDER句
キーカラムに沿って並び替える。(大 - 小, A - Zなど)
ORDER BY <キーカラム> <ASC (昇順)/DESC (降順)>
LIMIT句 + OFFSET句
表示するレコードを上から何個か指定する場合
LIMIT <上から標準するレコード数>
オフセットをかける場合
LIMIT <上から表示するレコード数> OFFSET <オフセット>
テーブルを消す
DROP TABLE <対象テーブル>;
カラム
属性
位置や、入力するデータなどについて決めることができる
主キー・ユニーク
主キー (PRIMARY KEY) : 一つのレコードを特定できる一意のキー。NULL・重複なし
ユニーク (UNIQUE) : 重複が許容されない。NULLあり、またNULLのレコードはいくつあってもいい
カラムの位置
FIRST : テーブルの最も初めの位置
AFTER カラム : カラムの次の位置
他
規定値 (DEFAULT 規定値) : NULL時の規定の値
連番 (AUTO_INCREMENT) : 0またはNULLの時に、自動的に連番になる。AUTO_INCREMENT++的な挙動をする。この属性が指定されていても明示的に値を指定することは可能。その値がAUTO_INCREMENTよりも大きい場合はAUTO_INCREMENTの値が更新される。
クエリ
ALTER TABLE
ALTER TABLEでの位置の指定
- FIRST : テーブルの一番先頭
- AFTER <特定のカラム> : 特定カラムと、その末尾側の隣り合ってるカラムの間
テーブルの変数をいじる
ALTER TABLE <対象テーブル> <変数=値>;
MODIFY
カラムの型を変える
ALTER TABLE <対象カラムのあるテーブル> MODIFY <カラム名> <変更したい先の型>
カラムの属性を変更する
ALTER TABLE <対象カラムのあるテーブル> MODIFY <カラム名> <型> <属性>
※ 注意 : 型が元のカラムと違う場合変換される。引数で型を書くのは、カラムを指定すること自体と関係がない
CHANGE
カラムをリネーム・型変換する
ALTER TABLE <対象カラムのあるテーブル> CHANGE <リネーム・型変換対象カラム名> <リネーム後の名前> <ここで指定した型に変換>
ADD
位置を指定していない基本形 (末尾にカラムを追加)
ALTER TABLE <対象テーブル> ADD <追加するカラムの名前> <型>
位置を指定してカラムを追加する
ALTER TABLE <対象テーブル> ADD <追加するカラムの名前> <型> <先の位置の指定の構文>
DROP
カラムを消す
ALTER TABLE <対象テーブル> DROP <消すカラムの名前>
他
(変数設定)
AUTO_INCREMENTの値をゼロにする
インデックス
検索の際に利用する索引
クエリ
インデックスを作成する
CREATE INDEX <インデックス名> ON <対象テーブル>(<索引に利用するカラム>);
インデックスを削除する
DROP INDEX <インデックス名> ON <対象テーブル>
レコード
クエリ
レコードを挿入する
INSERT INTO <対象テーブル>(<(オプション)VALUESのカラム順をカンマ区切り>) VALUES (<データ>)
レコードを全消去する
DELETE FROM <全消去するテーブル>;
カラムに指定する型
数値
| 型 | 大体のプログラムで対応するもの |
|---|---|
| TINYINT | 符号付き8ビット整数 |
| SMALLINT | 符号付き16ビット整数 |
| MEDIUMINT | 符号付き24ビット整数 |
| INT | 符号付き32ビット整数 |
| BIGINT | 符号付き64ビット整数 |
| FLOAT | 単精度浮動小数点数 |
| DOUBLE | 倍精度浮動小数点数 |
| DECIMAL(最大桁数, 内小数点以下の桁数) | 固定小数点数 |
※整数型はUNSIGNEDをつけることで符号なし整数も使用可能
文字列
| 型 | 個人的な解釈 |
|---|---|
| CHAR(文字長) | ~255文字, 指定された文字長丁度でデータが保管される。内部的に常に同じデータの大きさになる |
| VARCHAR(文字長) | ~255文字, 可変長文字列。文字の長さ分内部的に確保される |
| TEXT | ~65536文字, 可変長文字列。 |
| LONGTEXT | ~4294967295文字, 他はTEXT同様? |
日付時刻型
| 型 | 入力方法 | |
|---|---|---|
| DATETIME | 日付時刻, 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | YYYY-MM-DD hh:mm:ss |
| DATE | 日付だけ, 1000-01-01 ~ 9999-12-31 | YYYY-MM-DD |
| TIME | 時刻だけ, -838:59:59 ~ 838:59:59 | hh\:mm\:ss |
| YEAR | 年だけ, 1901~2155, 2桁指定での解釈は70~69 : 1970 ~ 2069 |
YYYY, YY
|