Search

文字列と数値の記述

unknown

数値

数値の先頭に-を付けた場合は、負の数として扱われます。
浮動小数点はドットが区切り文字に使われます。

# 有効な整数
123
0
-123

# 有効な浮動小数点
294.42
-32032.6809e+10
148.00

バージョン4.1.0以降、定数TRUE1、定数FALSE0として評価されます。

文字列

文字列は、シングルクウォートまたはダブルクウォートで囲みます。

# 有効な文字列
'文字列'
"文字列"

数値はシングルクウォート、ダブルクウォートでで囲む必要はありません。
囲んだ場合は数値文字列として扱われますので注意して下さい。

以下の文字列は、文字列中で特別な意味を持ちます。
文字列中で使用する場合は、エスケープ文字\を先頭につける必要があります。

エスケープシーケンス
# 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 では禁止されていますが、既に一般的な名前として使われているため、テーブル名・カラム名として問題ありません。

テーブル名・カラム名に使用可能な予約語
ACTIONBITDATE
ENUMNOTEXT
TIMETIMESTAMP 

以下はテーブル名・カラム名に使用不可な予約語です。

MySQLの予約語一覧
ADDALLALTER
ANALYZEANDAS
ASCBEFOREBETWEEN
BIGINTBINARYBLOB
BOTHBYCASCADE
CASECHANGECHAR
CHARACTERCHECKCOLLATE
COLUMNCOLUMNSCONSTRAINT
CONVERTCREATECROSS
CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP
CURRENT_USERDATABASEDATABASES
DAY_HOURDAY_MICROSECONDDAY_MINUTE
DAY_SECONDDECDECIMAL
DEFAULTDELAYEDDELETE
DESCDESCRIBEDISTINCT
DISTINCTROWDIVDOUBLE
DROPDUALELSE
ENCLOSEDESCAPEDEXISTS
EXPLAINFALSEFIELDS
FLOATFLOAT4FLOAT8
FORFORCEFOREIGN
FROMFULLTEXTGRANT
GROUPHAVINGHIGH_PRIORITY
HOUR_MICROSECONDHOUR_MINUTEHOUR_SECOND
IFIGNOREIN
INDEXINFILEINNER
INSERTINTINT1
INT2INT3INT4
INT8INTEGERINTERVAL
INTOISJOIN
KEYKEYSKILL
LEADINGLEFTLIKE
LIMITLINESLOAD
LOCALTIMELOCALTIMESTAMPLOCK
LONGLONGBLOBLONGTEXT
LOW_PRIORITYMATCHMEDIUMBLOB
MEDIUMINTMEDIUMTEXTMIDDLEINT
MINUTE_MICROSECONDMINUTE_SECONDMOD
NATURALNOTNO_WRITE_TO_BINLOG
NULLNUMERICON
OPTIMIZEOPTIONOPTIONALLY
ORORDEROUTER
OUTFILEPRECISIONPRIMARY
PRIVILEGESPROCEDUREPURGE
RAID0READREAL
REFERENCESREGEXPRENAME
REPLACEREQUIRERESTRICT
REVOKERIGHTRLIKE
SECOND_MICROSECONDSELECTSEPARATOR
SETSHOWSMALLINT
SONAMESPATIALSQL_BIG_RESULT
SQL_CALC_FOUND_ROWSSQL_SMALL_RESULTSSL
STARTINGSTRAIGHT_JOINTABLE
TABLESTERMINATEDTHEN
TINYBLOBTINYINTTINYTEXT
TOTRAILINGTRUE
UNIONUNIQUEUNLOCK
UNSIGNEDUPDATEUSAGE
USEUSINGUTC_DATE
UTC_TIMEUTC_TIMESTAMPVALUES
VARBINARYVARCHARVARCHARACTER
VARYINGWHENWHERE
WITHWRITEX509
XORYEAR_MONTHZEROFILL
MySQL 4.0 で追加された予約語
CHECKFORCELOCALTIME
LOCALTIMESTAMPREQUIRESQL_CALC_FOUND_ROWS
SSLX509XOR
MySQL 4.1 で追加された予約語
BEFORECOLLATECONVERT
CURRENT_USERDAY_MICROSECONDDIV
DUALFALSEHOUR_MICROSECOND
MINUTE_MICROSECONDMODNO_WRITE_TO_BINLOG
SECOND_MICROSECONDSEPARATORSPATIAL
TRUEUTC_DATEUTC_TIME
UTC_TIMESTAMPVARCHARACTER 

命名規則について

unknown

MySQLの「データベース名」、「テーブル名」、「インデックス名」、「エイリアス名」はすべて同じ命名規則です。

識別子最大長(バイト)使用可能な文字
データベース64ディレクトリ名に使用可能なすべての文字(/\.を除く)
テーブル64ファイル名に使用可能なすべての文字(/.を除く)
カラム64すべての文字
エイリアス255すべての文字

識別子が予約語である場合、識別子に特殊文字が含まれている場合は、引用符として使用したバッククォート(「`」)でその識別子を囲る必要があります。
mysql> SELECT * FROM `select` WHERE `select`.id > 100;

カラム参照について

unknown

カラム参照方法
カラム名この名前のカラムが組み込まれたクエリで使用されているテーブル内のカラム。
データベース名.テーブル名.カラム名現在選択されているデータベースの指定したテーブル名内のカラム。
テーブル名.カラム名指定したデータベース名の指定したテーブル名内のカラム。
※MySQL 3.22 以降で使用可。
'カラム名'カラム名が予約語あるいは特殊文字を含んだカラム名の場合は、バックスラッシュ`で囲みます。

コメントの書き方

unknown

1行コメントの場合は#または--、 複数行コメントの場合は、/**/を使用します。

mysql> SELECT * FROM table_name; # 1行コメント
mysql> SELECT * FROM table_name; -- 1行コメント

mysql> SELECT * FROM table_name; /* 1行コメント */
/*
複数行
コメント
です
*/

大文字小文字の区別

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)

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop