
お世話になっております。
マニュアルやネットで検索を試みたのですがわからず、困っております。
できましたら、どなたかお助けいただけないでしょうか。
カラム名に付けるエイリアス(別名)は " " で囲わなくてはいけないでしょうか。
例:SELECT a AS "金額;" FROM tb;
「エイリアスに特殊記号を含む場合 " "で囲わなければいけない」という話を聞いたような気がするのですが、やってみると特殊記号の場合でも、 " " でも ' ' や` `(バッククォート)でも問題なさそうなのですが。
もし、このあたりのことで情報があったら、お教えいただけるとありがたいのですが。
申し訳ありません。どうか、よろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
#3、#4回答者です。
特に日本語の名称の場合を、知りたかったのですよね。
もう少し、コンパクトにまとめます。
(1)表名、列名、別名などの名前に、予約語と同じキーワードを使ったり、
一部の特殊記号を使う場合は、「`」や「"」で名前を囲む必要がある。
(2)日本語の名前は、(1)に該当しないので、「`」や「"」で名前を囲む必要はない。
(3)プロジェクト等で名前を「`」や「"」で囲む規定になっている場合は、以下の点に
注意。
(a)MySQLサーバの使用モードで、使う記号が異なっている。
(b)標準SQLや他の主要なRDBMSとは、使う記号が異なっている。
MySQLの非ANSIモード(MySQLの構文)=MySQLのディフォルト環境
→「`」(バッククォート)で囲む
MySQLのANSIモード(標準SQLの構文)
→「`」または「"」(ダブルクォーテーション)で囲む
標準SQLや他の主要なRDBMS
→「"」で囲む
(4)「'」(シングルクォーテーション)は、文字定数を指定する場合に使う。
MySQLを非ANSIモードで使っている場合、「"」も文字定数を指定する場合に
使うので注意が必要。
No.4
- 回答日時:
#3回答者です。
>MySQLでは「表名、列名、別名が日本語の場合は`で、アルファベットなど半角
>英数字のときは"で囲わなくてはいけない」という意味なのでしょうか。
そういう意味ではありません。
MySQLサーバを起動するとき、「非ANSI(MySQLの構文)」モードにするか、「ANSI構文(標準SQL)」モードにするかを指定できます。「ANSI構文にする」と明示指定していなければ、非ANSI(MySQL構文)のモードになります。
標準のインストールでは、非ANSIで設定されています。
また、「"」や「`」で囲む必要があるのは、表名、列名、別名に、予約語と同じ名前を指定するか、一部の特殊記号を使う場合ですから、日本語の名前は対象にはなりません。
まとめると、以下のようになります。
(1)非ANSI(MySQL構文)の場合
select oshiete-goo →oshieteとgooの引き算
select 'oshiete-goo' →文字定数
select "oshiete-goo" →文字定数
select `oshiete-goo` →「oshiete-goo」という列名や列の別名
select 'from' →文字定数
select "from" →文字定数
select `from` →fromという列名や別名
(2)ANSIの場合 →MySQLサーバ起動時に、--ansiか--sql-mode=ANSIを指定
select oshiete-goo →oshieteとgooの引き算
select 'oshiete-goo' →文字定数
select "oshiete-goo" →「oshiete-goo」という列名や列の別名
select `oshiete-goo` →「oshiete-goo」という列名や列の別名
select 'from' →文字定数
select "from" →fromという列名や別名
select `from` →fromという列名や別名
http://dev.mysql.com/doc/refman/4.1/ja/ansi-mode …
No.3
- 回答日時:
表名、列名、別名などの名前に、予約語や一部の記号(※1)を使う場合、標準SQLや主要なRDBMSでは、「"」(ダブル・クォーテーション)で名前を囲む必要があります。
MySQLでは、ANSIで使う場合は、やはり「"」を使います。
一方、MySQLを非ANSIで使う場合は、「"」でなく「`」(バッククォート)で囲みます(※2)。MySQLを非ANSIで使った場合、「"」は、「'」(アポストロフィー)と同様に、文字定数(※3)であることを示します。
日本語の名前は、使用する環境により文字化けする場合があるので、使用する場合は注意が必要です。MySQLユーザ会でも、「名前に日本語を使えるが、使用しないほうが良い」と書かれています。
※1 例えば、「-」(ハイフォン)を名前に使う場合、殆どのRDBMSでは、「"]で囲まないと、引き算と解釈される。
(「例)
"oshiete-goo"なら、「oshiete-goo」を名称と解釈される。
oshiete-gooなら、oshieteとgooの引き算と解釈される。
※2 「`」(バッククォート」を使うRDBMSは、MySQLだけかも知れません。
他の特殊な例としては、SQL ServerやMS-ACCESSでは、「"」に加え、「[ ]」を使います。
※ 文字定数は、「'」(アポストロフィー)で囲みます。
これに加え、MySQLを非ANSIで使う場合は、「"」で囲んだ場合、名前でなく、文字定数と解釈されるので注意が必要です。
ご丁寧に、ありがとうございます。感謝しております。
知識がないため、もしできましたら、教えていただけないでしょうか。
MySQLでは「表名、列名、別名が日本語の場合は`で、アルファベットなど半角英数字のときは"で囲わなくてはいけない」という意味なのでしょうか。
申し訳ありません。
どうか、よろしくお願いいたします。
No.1
- 回答日時:
原則バッククォーテーションだと記憶していますが、出展は覚えがありません。
そもそもダブルクォーテーションをSQLで使うということは、あまり
きいたことがありませんね。
値はシングルクォーテーション、テーブルやフィールドやエイリアスには
バッククォーテーションという切り分けが妥当かと。
さらに根本的な話しをすると、エイリアスに日本語をつかうのはトラブルの
原因になるので賛成できません。
さっそくご回答いただき感謝しております。
「値はシングルクォーテーション、テーブルやフィールドやエイリアスにはバッククォーテーション」が常識だということを知りませんでした。
また、テーブル名は問題あっても、カラム名なら日本語でもだいじょうぶだろうと、たかをくくっていました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 不定代名詞"no..."の否定語noの及び範囲について 4 2022/08/04 11:11
- 事件・犯罪 ルフィ「ゲーム感覚で仲間を警察に通報」 果たして警察は特殊詐欺グループの通報で動くのか? 1 2023/02/21 20:06
- 日本語 普遍・特殊・個別をハガの違いに適用しようとするのは無理筋 139 2022/11/17 19:59
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- クレジットカード 18~19歳のETCカード 6 2022/06/02 20:40
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
- 損害保険 個人賠償責任保険 6 2023/08/11 03:23
- 離婚・親族 離婚等における調査範囲 4 2023/06/21 11:11
- 消費者問題・詐欺 美容室でクソみたいな詐欺に遭いました。これは違法では無いのでしょうか?専門家の方教えてください。 ① 2 2023/01/04 00:18
- 確定申告 貸株金利を確定申告する際について 2 2023/03/09 14:57
このQ&Aを見た人はこんなQ&Aも見ています
-
MySQLカラム名は日本語と英数字のどちらが良いか
MySQL
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
-
4
GROUP BYを行った後に結合したい。
Oracle
-
5
日本語のテーブル名、カラム名の定義について
SQL Server
-
6
eclipse でclassesフォルダーが表示されない
Java
-
7
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
8
はじめまして!
Oracle
-
9
EXISTSを使ったDELETE文
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日本語のエイリアスは" "で囲...
-
コマンドプロンプトでデータを...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
外部参照してるキーを主キーに...
-
SQLで特定の項目の重複のみを排...
-
SELECT 文 GROUP での1件目を...
-
差し込み後、元データを変更し...
-
エラー 1068 (42000): 複数の主...
-
Outlook 送受信エラー
-
INSERT文でフィールドの1つだ...
-
1、Rstudioで回帰直線を求める...
-
count集計の結果が0の場合でも...
-
UPDATE文のWHERE条件に他のテー...
-
EXISTSを使ったDELETE文
-
SQL Left Join で重複を排除す...
-
SQL Date型の列から年月だけを...
-
SQLで列名を変数にできないでし...
-
SQL文で、合計が0のレコードを...
-
1日に1人がこなせるプログラム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日本語のエイリアスは" "で囲...
-
~以上~未満の指定の方法
-
コマンドプロンプトでデータを...
-
レコードの最大値
-
SQLiteでINSERT OR UPDATE
-
CONCAT以外で文字列連結できますか
-
アクセスのselect文
-
INSERTできない。
-
SQLの副問い合わせについて
-
Accessのクリエで都道府県だけ...
-
連番の取得
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
SQLで特定の項目の重複のみを排...
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
外部参照してるキーを主キーに...
-
SELECT 文 GROUP での1件目を...
-
for whichの使い方
-
INSERT文でフィールドの1つだ...
おすすめ情報