お世話になっております。
マニュアルやネットで検索を試みたのですがわからず、困っております。
できましたら、どなたかお助けいただけないでしょうか。
カラム名に付けるエイリアス(別名)は " " で囲わなくてはいけないでしょうか。
例: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も見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
日本語のテーブル名、カラム名の定義について
SQL Server
-
日本語の表名、列名の利用について
Oracle
-
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
-
4
Oracle 2つのDate型の値の差を「分」で取得したい
その他(データベース)
-
5
Accessの日本語フィールド名
その他(データベース)
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
8
MS SQLServer のSQLで文字列の前にN:
その他(データベース)
-
9
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
10
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
11
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
12
SQL文(テーブル項目名が特殊文字)
その他(プログラミング・Web制作)
-
13
PL/SQLをWindowsのBATファイルで実行するには
Oracle
-
14
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
15
Viewにインデックスは張れますか?
Oracle
-
16
「マスタ」と「テーブル」の違いとはなんでしょうか?
Oracle
-
17
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
18
AccessのSQL文で1件のみヒットしたら終了させる構文。
その他(データベース)
-
19
3つ以上のテーブルをUNIONするのは現時的でないでしょうか?
MySQL
-
20
文字間の空白の削除を教えてください。
PostgreSQL
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日本語のエイリアスは" "で囲...
-
CONCAT以外で文字列連結できますか
-
~以上~未満の指定の方法
-
コマンドプロンプトでデータを...
-
差し込み後、元データを変更し...
-
SELECT 文 GROUP での1件目を...
-
フィルターかけた後、重複を除...
-
外部参照してるキーを主キーに...
-
エクセルで最後の文字だけ置き...
-
カーソル0件の時にエラーを発生...
-
SQLで列名を変数にできないでし...
-
for whichの使い方
-
副問合せの書き方について
-
INSERT文でフィールドの1つだ...
-
処理件数を非表示にしたい
-
重複していないレコードの抽出...
-
速度が低下し無効になったアド...
-
EXISTSを使ったDELETE文
-
特定条件でWHERE句の条件を変更...
-
商品番号を入力すると、商品名...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日本語のエイリアスは" "で囲...
-
~以上~未満の指定の方法
-
コマンドプロンプトでデータを...
-
SQLiteでINSERT OR UPDATE
-
CONCAT以外で文字列連結できますか
-
SQLServerでの副問合せについて
-
Accessのクリエで都道府県だけ...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
SELECT 文 GROUP での1件目を...
-
SQLで特定の項目の重複のみを排...
-
for whichの使い方
-
外部参照してるキーを主キーに...
-
SQLServerで文字列の末尾からあ...
-
重複していないレコードの抽出...
-
INSERT文でフィールドの1つだ...
-
SQL Date型の列から年月だけを...
-
SQL Left Join で重複を排除す...
-
EXISTSを使ったDELETE文
おすすめ情報