MySQLの基本
文字列と数値の記述
unknown
数値
数値の先頭に-を付けた場合は、負の数として扱われます。
浮動小数点はドットが区切り文字に使われます。
# 有効な整数 123 0 -123 # 有効な浮動小数点 294.42 -32032.6809e+10 148.00
バージョン4.1.0以降、定数TRUEは1、定数FALSEは0として評価されます。
文字列
文字列は、シングルクウォートまたはダブルクウォートで囲みます。
# 有効な文字列
'文字列'
"文字列"
数値はシングルクウォート、ダブルクウォートでで囲む必要はありません。
囲んだ場合は数値文字列として扱われますので注意して下さい。
以下の文字列は、文字列中で特別な意味を持ちます。
文字列中で使用する場合は、エスケープ文字\を先頭につける必要があります。
# ASCII 0(NULL)文字 \0 # シングルクウォート(') \' # ダブルクウォート(") \" # バックスペース文字 \b # 改行文字(LF) \n # キャリッジターン(CR) \r # タブ文字 \t # ASCII(26)(Control-Z) \z # バックスラッシュ(\) \\ # パーセント(%)文字(そのまま使うとワイルドカードと解釈されるため) \% # アンダースコア(_)文字(そのまま使うとワイルドカードと解釈されるため) \_
シングルクウォートで囲んだ文字内でシングルクウォートを使用する場合は、'これは''リンゴ''です'のように''と記述します。
文字列中でのシングルクウォート、ダブルクウォートの扱い
ダブルクウォートで囲んだ文字内でダブルクウォートを使用する場合は、"これは""リンゴ""です"のように""と記述します。
mysql> SELECT 'hello', '"hellow"', "'hello'", '""hello""', "''hello''"; +-------+----------+---------+-----------+-----------+ | hello | "hellow" | 'hello' | ""hello"" | ''hello'' | +-------+----------+---------+-----------+-----------+ | hello | "hellow" | 'hello' | ""hello"" | ''hello'' | +-------+----------+---------+-----------+-----------+ 1 row in set (0.00 sec)
予約語の扱い
unknown
MySQLのデータ型や関数名をテーブル名に付けることはできませんが、カラム名に含める事は可能です。 ただし、関数名と同一のカラム名はシングルクウォートまたはダブルクウォートで括る必要があります。
以下の予約語はMySQLにおいて明示的に予約されており、SQL-99 でテーブル名・カラム名として使用することが禁じられています。 ただし、以下のシンボルは、SQL-99 では禁止されていますが、既に一般的な名前として使われているため、テーブル名・カラム名として問題ありません。
| ACTION | BIT | DATE |
| ENUM | NO | TEXT |
| TIME | TIMESTAMP |
以下はテーブル名・カラム名に使用不可な予約語です。
| ADD | ALL | ALTER |
| ANALYZE | AND | AS |
| ASC | BEFORE | BETWEEN |
| BIGINT | BINARY | BLOB |
| BOTH | BY | CASCADE |
| CASE | CHANGE | CHAR |
| CHARACTER | CHECK | COLLATE |
| COLUMN | COLUMNS | CONSTRAINT |
| CONVERT | CREATE | CROSS |
| CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP |
| CURRENT_USER | DATABASE | DATABASES |
| DAY_HOUR | DAY_MICROSECOND | DAY_MINUTE |
| DAY_SECOND | DEC | DECIMAL |
| DEFAULT | DELAYED | DELETE |
| DESC | DESCRIBE | DISTINCT |
| DISTINCTROW | DIV | DOUBLE |
| DROP | DUAL | ELSE |
| ENCLOSED | ESCAPED | EXISTS |
| EXPLAIN | FALSE | FIELDS |
| FLOAT | FLOAT4 | FLOAT8 |
| FOR | FORCE | FOREIGN |
| FROM | FULLTEXT | GRANT |
| GROUP | HAVING | HIGH_PRIORITY |
| HOUR_MICROSECOND | HOUR_MINUTE | HOUR_SECOND |
| IF | IGNORE | IN |
| INDEX | INFILE | INNER |
| INSERT | INT | INT1 |
| INT2 | INT3 | INT4 |
| INT8 | INTEGER | INTERVAL |
| INTO | IS | JOIN |
| KEY | KEYS | KILL |
| LEADING | LEFT | LIKE |
| LIMIT | LINES | LOAD |
| LOCALTIME | LOCALTIMESTAMP | LOCK |
| LONG | LONGBLOB | LONGTEXT |
| LOW_PRIORITY | MATCH | MEDIUMBLOB |
| MEDIUMINT | MEDIUMTEXT | MIDDLEINT |
| MINUTE_MICROSECOND | MINUTE_SECOND | MOD |
| NATURAL | NOT | NO_WRITE_TO_BINLOG |
| NULL | NUMERIC | ON |
| OPTIMIZE | OPTION | OPTIONALLY |
| OR | ORDER | OUTER |
| OUTFILE | PRECISION | PRIMARY |
| PRIVILEGES | PROCEDURE | PURGE |
| RAID0 | READ | REAL |
| REFERENCES | REGEXP | RENAME |
| REPLACE | REQUIRE | RESTRICT |
| REVOKE | RIGHT | RLIKE |
| SECOND_MICROSECOND | SELECT | SEPARATOR |
| SET | SHOW | SMALLINT |
| SONAME | SPATIAL | SQL_BIG_RESULT |
| SQL_CALC_FOUND_ROWS | SQL_SMALL_RESULT | SSL |
| STARTING | STRAIGHT_JOIN | TABLE |
| TABLES | TERMINATED | THEN |
| TINYBLOB | TINYINT | TINYTEXT |
| TO | TRAILING | TRUE |
| UNION | UNIQUE | UNLOCK |
| UNSIGNED | UPDATE | USAGE |
| USE | USING | UTC_DATE |
| UTC_TIME | UTC_TIMESTAMP | VALUES |
| VARBINARY | VARCHAR | VARCHARACTER |
| VARYING | WHEN | WHERE |
| WITH | WRITE | X509 |
| XOR | YEAR_MONTH | ZEROFILL |
| CHECK | FORCE | LOCALTIME |
| LOCALTIMESTAMP | REQUIRE | SQL_CALC_FOUND_ROWS |
| SSL | X509 | XOR |
| BEFORE | COLLATE | CONVERT |
| CURRENT_USER | DAY_MICROSECOND | DIV |
| DUAL | FALSE | HOUR_MICROSECOND |
| MINUTE_MICROSECOND | MOD | NO_WRITE_TO_BINLOG |
| SECOND_MICROSECOND | SEPARATOR | SPATIAL |
| TRUE | UTC_DATE | UTC_TIME |
| UTC_TIMESTAMP | VARCHARACTER |
命名規則について
unknown
MySQLの「データベース名」、「テーブル名」、「インデックス名」、「エイリアス名」はすべて同じ命名規則です。
| 識別子 | 最大長(バイト) | 使用可能な文字 |
|---|---|---|
| データベース | 64 | ディレクトリ名に使用可能なすべての文字(/、\、.を除く) |
| テーブル | 64 | ファイル名に使用可能なすべての文字(/、.を除く) |
| カラム | 64 | すべての文字 |
| エイリアス | 255 | すべての文字 |
識別子が予約語である場合、識別子に特殊文字が含まれている場合は、引用符として使用したバッククォート(「`」)でその識別子を囲る必要があります。
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
カラム参照について
unknown
| カラム名 | この名前のカラムが組み込まれたクエリで使用されているテーブル内のカラム。 |
| データベース名.テーブル名.カラム名 | 現在選択されているデータベースの指定したテーブル名内のカラム。 |
| テーブル名.カラム名 | 指定したデータベース名の指定したテーブル名内のカラム。 ※MySQL 3.22 以降で使用可。 |
| 'カラム名' | カラム名が予約語あるいは特殊文字を含んだカラム名の場合は、バックスラッシュ`で囲みます。 |
大文字小文字の区別
unknown
MySQLでは、大文字小文字を区別しません。
以下のように大文字と小文字が混在していようとも、同じSQL文として扱われます。
mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE; mysql> select userid,firstname,lastname from tbl_customer where useid is not null; mysql> SELECT UserID,FirstName,LastName FROM tbl_Customer WHERE UserID IS NOT NULL;
エイリアス(別名)の使用
unknown
MySQLでは、GROUP BY節、ORDER BY節、HAVING節において、カラムを参照する場合にエイリアス(別名)を付けることができます。
# 年齢ごとにグループ化し、各データ件数を cnt と言う別名で取得 mysql> SELECT Age, COUNT(Age) AS cnt FROM tbl_Customer Enter -> GROUP BY Age HAVING cnt > 0; Enter +------+-----+ | Age | cnt | +------+-----+ | 18 | 1 | | 21 | 2 | | 22 | 1 | | 30 | 1 | | 35 | 1 | | 45 | 1 | +------+-----+ 6 rows in set (0.00 sec) # UserIDのカウント数の結果を、user_max と言う別名で取得 mysql> SELECt COUNT(userID) AS user_max FROM tbl_Customer; Enter +----------+ | user_max | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
コメントの書き方
unknown
1行コメントの場合は
#または--、 複数行コメントの場合は、/*~*/を使用します。