2016-05-05 3 views
0

yzxの列であるとしますが、タイプINTのデータをアポストロフィ内に挿入する必要がありますか?INT型のデータを含むINSERTにはアポストロフィが必要ですか?

INSERT INTO x (y, ..., z) 
VALUES (4, ..., 9); 

または

VALUES ('4', ..., '9'); 

は、第二の例は、文字としての値を挿入していますか?

は、私は彼らがアポストロフィとタイプINTの挿入を行うことを見つけるためにリテラルを使用phpMyAdminののGUIを通じて挿入をテストしてみたが、私はそれがGUIを使用した場合、コンソールに表示される構文だかはわかりません。私もPHPスクリプトで、のアポストロフィを付けずにテストしたところ、正常に挿入されたのでわからない。

+1

カラムy/zのタイプがintの場合 - アポストロフィを使用しない場合、varchar - アポストロフィを使用する必要があります入力データ型ではありません –

+0

@Lashaneありがとうございます。私の質問に私の下見を説明する改善提案がありますか? – 8protons

+0

私はSQLの構文を学ぶだけで、おそらくansi SQLの標準(heres 92のバージョンhttp://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt)を見てください。 –

答えて

3

カラムタイプは、引用符/アポストロフィではなく変数タイプを決定します。アポストロフィは整数で使用できますが、何も破壊しませんが、列がintの場合は必要ありません。

+0

注:アポストロフィいくつかのRDBMS(mysqlのうちの1つ)でのみ整数に使用できます。数値は文字列として表示されます(実際にはターゲットの列型に自動変換されます)。 –

1

列がint列の場合、文字列ではなく数値のみが格納されます。 MySQLは、数値の列に挿入するときに「1」が1であることを知っています。そうではありません。数字の列に挿入するときには、数字を引用符で囲む必要はありません。

実際の文字列の文字値をint列に挿入しようとすると、エラーが発生します。例:

mysql> insert into test values('a'); 
ERROR 1366 (HY000): Incorrect integer value: 'a' for column 'id' at row 1 

このトピックでは、文字列と整数が実際にバイナリ形式で格納される方法についてもっと多くのことが言えます。値がどのように格納され、変換されるかは文字セットと呼ばれ、おそらく "utf-8"やASCIIのようなものを聞いたことがあります。 MySQLはこれらの間で変換する能力を持っていますが(http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html)、それはおそらくこの質問の範囲を超えています:)

関連する問題