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行コメントの場合は
#
または--
、 複数行コメントの場合は、/*
~*/
を使用します。