- Home ›
- MySQLの使い方 ›
- MySQLの基本構文
識別子と予約語
MySQL で作成したデータベースやテーブルに付ける名前のことを識別子と呼びます。通常識別子はそのまま記述することができるのですが、予約語として登録されている単語を使用する場合には特別な記述方法をする必要があります。ここでは MySQL における識別子と予約語の扱い、および MySQL の予約語の一覧について解説します。
(Last modified: )
識別子の記述方法
データベースやテーブル、カラム、インデックスをなどを作成する時に名前を指定します。この名前のことを識別子と呼びます。
識別子は例外を除いてシングルクォーテーションなどで囲う必要はありません。そのまま記述できます。
create database personal;
create table addresstbl (id int, address varchar(20));
識別子に予約語をそのまま使用する場合や特別な文字が含まれる場合は引用符で囲う必要があります。引用符はバッククォート(`)です。
create database `where`;
ただし予約語や特別な文字を含むような識別子を使うことはできる限り避けるべきだと思います。
データベース名やテーブル名として識別子を付ける場合には長さに制限があります。
データベース名 64byte テーブル名 64byte カラム名 64byte インデックス名 64byte エイリアス名 255byte
文字数ではなくバイト数である点に注意して下さい。
MySQLの予約語一覧
MySQL で予約語として登録されている単語は以下の通りです。
ACCESSIBLE ADD ALL ALTER ANALYZE AND ARRAY AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHARACTER CHECK COLLATE COLUMN CONDITION CONSTRAINT CONTINUE CONVERT CREATE CROSS CUBE; became reserved in 8.0.1 CUME_DIST added in 8.0.2 (reserved) CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR DATABASE DATABASES DAY_HOUR DAY_MICROSECOND DAY_MINUTE DAY_SECOND DEC DECIMAL DECLARE DEFAULT DELAYED DELETE DENSE_RANK; added in 8.0.2 (reserved) DESC DESCRIBE DETERMINISTIC DISTINCT DISTINCTROW DIV DOUBLE DROP DUAL EACH ELSE ELSEIF EMPTY; added in 8.0.4 (reserved) ENCLOSED ESCAPED EXCEPT EXISTS EXIT EXPLAIN FALSE FETCH FIRST_VALUE; added in 8.0.2 (reserved) FLOAT FLOAT4 FLOAT8 FOR FORCE FOREIGN FROM FULLTEXT FUNCTION; became reserved in 8.0.1 GENERATED GET GRANT GROUP GROUPING; added in 8.0.1 (reserved) GROUPS; added in 8.0.2 (reserved) HAVING HIGH_PRIORITY HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND IF IGNORE IN INDEX INFILEx INNER INOUT INSENSITIVE INSERT INT INT1 INT2 INT3 INT4 INT8 INTEGER INTERVAL INTO IO_AFTER_GTIDS IO_BEFORE_GTIDS IS ITERATE JOIN JSON_TABLE; added in 8.0.4 (reserved) KEY KEYS KILL LAG; added in 8.0.2 (reserved) LAST_VALUE; added in 8.0.2 (reserved) LATERAL; added in 8.0.14 (reserved) LEAD; added in 8.0.2 (reserved) LEADING LEAVE LEFT LIKE LIMIT LINEAR LINES LOAD LOCALTIME LOCALTIMESTAMP LOCK LONG LONGBLOB LONGTEXT LOOP LOW_PRIORITY MASTER MASTER_BIND MASTER_SSL_VERIFY_SERVER_CERT MATCH MAXVALUE MEDIUMBLOB MEDIUMINT MEDIUMTEXT MEMBER; added in 8.0.18 (reserved) MIDDLEINT MINUTE_MICROSECOND MINUTE_SECOND MOD MODIFIES NATURAL NOT NO_WRITE_TO_BINLOG NTH_VALUE; added in 8.0.2 (reserved) NTILE; added in 8.0.2 (reserved) NULL NUMERIC OF; added in 8.0.1 (reserved) ON OPTIMIZE OPTIMIZER_COSTS OPTION OPTIONALLY OR ORDER OUT OUTER OUTFILE OVER; added in 8.0.2 (reserved) PARTITION PERCENT_RANK; added in 8.0.2 (reserved) PRECISION PRIMARY PROCEDURE PURGE RANGE RANK; added in 8.0.2 (reserved) READ READS READ_WRITE REAL RECURSIVE; added in 8.0.1 (reserved) REFERENCES REGEXP RELEASE RENAME REPEAT REPLACE REQUIRE RESIGNAL RESTRICT RETURN REVOKE RIGHT RLIKE ROW; became reserved in 8.0.2 ROWS; became reserved in 8.0.2 ROW_NUMBER; added in 8.0.2 (reserved) SCHEMA SCHEMAS SECOND_MICROSECOND SELECT SENSITIVE SEPARATOR SET SHOW SIGNAL SMALLINT SPATIAL SPECIFIC SQL SQLEXCEPTION SQLSTATE SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT SSL STARTING STORED STRAIGHT_JOIN SYSTEM; added in 8.0.3 (reserved) TABLE TERMINATED THEN TINYBLOB TINYINT TINYTEXT TO TRAILING TRIGGER TRUE UNDO UNION UNIQUE UNLOCK UNSIGNED UPDATE USAGE USE USING UTC_DATE UTC_TIME UTC_TIMESTAMP VALUES VARBINARY VARCHAR VARCHARACTER VARYING VIRTUAL WHEN WHERE WHILE WINDOW; added in 8.0.2 (reserved) WITH WRITE XOR YEAR_MONTH ZEROFILL
-- --
MySQL における識別子と予約語の扱いに関して解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。