質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

myaql はカラム、テーブルに日本語は使えますか?

vetom
vetom

総合スコア8

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

4回答

0グッド

1クリップ

33761閲覧

投稿2017/10/10 09:06

###前提・実現したいこと
myaql はカラム、テーブルに日本語は使えますか?
テーブルを作ろうとしたときにエラーが出ました。
そもそも不可能なのか、設定次第でどうにかなるのか知りたいです。

###発生している問題・エラーメッセージ

エラーメッセージ

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''日付' date,
'費目' int,
'メモ'  varchar(100),
'入金' at line 2

経過時間: 0 時間, 0 分, 0 秒, 0 ミリ秒。

###該当のソースコード

sql

1create table kakeibo( 2 '日付'  date, 3 '費目'  int, 4 'メモ'  varchar(100), 5 '入金額' int, 6 '出金額' int 7); 8 9create table kakeibo( 10 日付  date, 11 費目  int, 12 メモ  varchar(100), 13 入金額 int, 14 出金額 int 15);

###試したこと

mysql -u root -p

Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 68
Server version: 5.1.37-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like "chara%";
+--------------------------+--------------------------+
| Variable_name | Value |
+--------------------------+--------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\MySQL\share\charsets\ |
+--------------------------+--------------------------+
8 rows in set (0.00 sec)

試しにこれは成功しました

sql

1CREATE TABLE book 2( 3id INT(11), 4category_id INT(11), 5title VARCHAR(64), 6author_name VARCHAR(32), 7detail TEXT, 8price INT(11), 9image VARCHAR(64) 10);

###補足情報(言語/FW/ツール等のバージョンなど)
version MySql_5.1

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答4

1

ベストアンサー

tacsheavenさんに同じくテーブル名やカラム名に日本語を使うことはおすすめしません。
OracleのバージョンアップでsjisからUnicodeに変わったらsjisで2バイトだったマルチバイト文字がUnicodeでは3バイトになって、データベース・オブジェクトのネーミング規則 で30バイトを超えてエラーが続出して、、、号泣。

投稿2017/10/10 18:27

Orlofsky

総合スコア16248

tomy-c👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

1

バッククオートで括って見て下さい。

SQL

1create table kakeibo( 2 `日付`  date, 3 `費目`  int, 4 `メモ`  varchar(100), 5 `入金額` int, 6 `出金額` int 7);

投稿2017/10/10 09:16

sazi

総合スコア24573

Tiroze👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

1

設定さえきちんとしていれば作れますが、mysqlコンソール自体が弾く可能性もあるので
プログラムやphpMyAdminなどUIを利用したほうがいいでしょう

投稿2017/10/10 09:09

yambejp

総合スコア109059

mt_sato0610👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

MySQLのマニュアル(CREATE TABLE)にあるように、

許可されるテーブル名のルールは、セクション9.2「スキーマオブジェクト名」に示されています。デフォルトでは、テーブルは InnoDB ストレージエンジンを使用して、デフォルトデータベース内に作成されます。テーブルがすでに存在する場合、デフォルトデータベースが存在しない場合、またはデータベースが存在しない場合はエラーが発生します。

から、セクション 9.2 を読むと、

データベース、テーブル、インデックス、カラム、エイリアス、ビュー、ストアドプロシージャー、パーティション、テーブルスペース、その他のオブジェクト名など、MySQL 内のある種のオブジェクトは、識別子として知られています。

識別子は引用符で囲むことも囲まないこともあります。識別子に特殊文字が含まれている場合、または識別子が予約語である場合、その識別子を参照するときは必ず引用符で囲む必要があります。(例外: 修飾名内でピリオドのあとに続く予約語は識別子である必要があるため、引用符で囲む必要はありません。)予約語はセクション9.3「予約語」に記載されています。

識別子は内部で Unicode に変換されます。以下の文字を含めることができます。

引用符で囲まれていない識別子で許可される文字。 ASCII: [0-9,a-z,A-Z$_] (基本的なラテン文字、0-9 の数字、ドル、下線) 拡張: U+0080 ..U+FFFF 引用符で囲まれている識別子で許可される文字には、U+0000 を除き、完全な Unicode Basic Multilingual Plane (BMP) が含まれます。 ASCII: U+0001 ..U+007F 拡張: U+0080 ..U+FFFF

ASCII NUL (U+0000) と補助文字 (U+10000 以上) は、引用符で囲まれた識別子または引用符で囲まれていない識別子では許可されません。

識別子引用符文字は逆引用符 (「`」) です。

とあるように、引用符で囲まずとも使えますし、逆引用符で囲んでやれば確実に使えます。挙げられた例だと ' で囲んでいたので、構文上正しくありません。

なんですが、日本語で付けるのはあまりお勧めしません。

投稿2017/10/10 09:17

編集2017/10/10 09:40
tacsheaven

総合スコア13667

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。