MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでNVARCHAR列を作成する方法|VARCHARへの自動変換を解説

MySQLでは、NVARCHAR()を指定してもVARCHAR()に自動的に変換されます。NVARCHARは「National Varchar(各国語対応の可変長文字列)」を意味する型名ですが、MySQLはこれを単なるVARCHARとして扱います。本記事では、NVARCHAR型の列を持つテーブルを実際に作成し、その挙動を確認していきましょう。

NVARCHAR型の列を含むテーブルを作成する

まず、「StudentName」という列をNVARCHAR型として持つテーブルを作成します。

mysql> create table DemoTable
(
    StudentName NVARCHAR(40),
    StudentCountryName VARCHAR(50)
);
Query OK, 0 rows affected, 1 warning (0.49 sec)

作成時に1件の警告(warning)が出ている点に注目してください。これは、NVARCHARがVARCHARへ変換されたことを示すヒントです。

DESCコマンドでテーブル構造を確認

続いて、DESCコマンドでテーブルの構造を確認します。

mysql> desc DemoTable;

実行結果は以下の通りです。ご覧のように、NVARCHAR型で定義したStudentName列が、自動的にvarchar(40)へ変換されていることがわかります。

+--------------------+-------------+------+-----+---------+-------+
| Field              | Type        | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+-------+
| StudentName        | varchar(40) | YES  |     | NULL    |       |
| StudentCountryName | varchar(50) | YES  |     | NULL    |       |
+--------------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

なぜNVARCHARがVARCHARに変換されるのか?

MySQLでは、VARCHAR型自体がUTF-8をはじめとするさまざまなマルチバイト文字セットに対応しているため、日本語や中国語などの国際的な文字列もVARCHARで問題なく扱えます。そのため、SQL Serverなどで使用されるNVARCHARを指定しても、MySQLは特別な区別をせずVARCHARとして処理するのです。

INSERT文でレコードを挿入する

次に、INSERT文を使ってテーブルにデータを追加します。

mysql> insert into DemoTable values('Chris','US');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Tom','UK');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('David','AUS');
Query OK, 1 row affected (0.11 sec)

SELECT文で全レコードを表示する

最後に、SELECT文でテーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+-------------+--------------------+
| StudentName | StudentCountryName |
+-------------+--------------------+
| Chris       | US                 |
| Tom         | UK                 |
| David       | AUS                |
+-------------+--------------------+
3 rows in set (0.00 sec)

まとめ

MySQLにおいてNVARCHAR()はNational Varcharを意味しますが、実際にはVARCHAR()へ自動変換されます。マルチバイト文字にも対応しているため、日本語データを扱う場合でもVARCHAR型を利用すれば十分であり、NVARCHARを意識して使い分ける必要はありません。テーブル作成時に警告が出る場合は、この変換が行われたサインとして捉えると理解しやすいでしょう。

  1. MySQLでビュー(VIEW)を作成する方法|CREATE VIEWの基本構文と実行例を解説

    MySQLのビュー(VIEW)とは?ビュー(VIEW)とは、SQLクエリの結果セットをもとに定義される「仮想テーブル」のことです。実際のデータを物理的に保存するわけではなく、元のテーブルへの参照情報のみを保持します。そのため、複雑なクエリをシンプルな名前で呼び出せるようにしたり、ユーザーに見せたい列や行だけを限定して提供したりする際に非常に便利です。MySQLでビューを作成するには、CREATE VIEW文を使用します。ビュー作成の基本構文ビューを作成するための基本構文は以下の通りです。create view yourViewName as select * from yourTableNam

  2. MySQLでシーケンスを作成する方法|AUTO_INCREMENTの使い方とルールを解説

    MySQLにおけるシーケンスとは?MySQLにおける「シーケンス」とは、1(指定した場合は0)から始まり、昇順で自動生成される整数の連番のことです。多くのアプリケーションでは、レコードを一意に識別するための番号を発行する目的でシーケンスが利用されています。具体例代表的な例としては、CRMシステムの顧客ID、人事管理システムの社員番号、設備管理システムの機器番号などが挙げられます。MySQLでシーケンスを自動的に作成するには、対象のカラムにAUTO_INCREMENT属性を設定します。通常は、主キー(PRIMARY KEY)カラムに対して適用するのが一般的です。AUTO_INCREMENTを使用