MariaDB uuid()カラム作成

MariaDB default uuid()

MariaDBにはUUIDを生成するためのUUID関数が利用できます。UUID関数を使うことでユニークなIDを取得できPRIMARY KEY(主キー)として利用することも可能です。下のSQLはSELECTを用いたUUID生成例です。(MySQLでもUUIDは使えます)

SELECT UUID();
select uuid() 例
select uuid() 例

テーブル作成時にカラムのdefaultにuuid()を入れることもできます。下記はt1という名称のテーブル作成時s1カラムのデフォルトとしてuuid()を設定しています。

create table t1 ( s1 varchar(40) not null default uuid(), primary key(s1) );

テーブルt1にレコード追加を試してみます。

insert into t1 values();
レコード挿入
レコード挿入

テーブルt1をSELECT文で確認すると、上のようにカラムs1にUUIDがセットされていることが確認できます。。つづいて、このテーブルt1にもう1つs2というカラムを追加し、そのカラムにUUIDがデフォルトで入るようにします。

alter table t1
add column s2 varchar(40) not null default uuid() after s1,
add unique index i2 (s2);
default uuid()カラム追加
default uuid()カラム追加

uuid()がデフォルトに入っているので カラムs2を追加するとレコード内s2にuuidが入ります。

MariaDB テーブル名変更とテーブルの移動

rename table

MariaDBは、MySQLと同じくRENAMEコマンドがありテーブル名を簡単に変更できます。このコマンドは、別のデータベースへ移動とテーブル名変更と同時に行うことが可能で「Linuxコマンド」のmvに似たような使い方が可能です。データ量が肥大化し別データベースへ回避させたい場合に便利です。同じDatabase内のテーブル名変更の場合下のようなコマンドです。

rename table `テーブルa` to `テーブルb`

show tablesで見ると`テーブルa`が消え`テーブルb`にはデータも入っています。

rename tableは、複数のテーブルを変更することも可能です。

rename table `テーブルa` to `テーブルb`, `テーブルc` to `テーブルd`
複数テーブル名変更
複数テーブル名変更

別データベースへ引っ越しすることもできます。

rename table `データベースa`.`テーブルb` to `データベースb`.`テーブルb`, `データベースa`.`テーブルd` to `データベースb`.`テーブルd`;

MariaDB AUTO_INCREMENT定義

AUTO_INCREMENT FIRST

MariaDBは、テーブルのカラム内に自動連番(インクリメント)をもたせることができます。自動連番を使うことでLOGなどのデータをユニークなレコードとして扱うこともできるようになります。下のようなシンプルな構成TABLE1テーブルがあります。

CREATE TABLE TABLE1 (
	renban INTEGER
)

このTABLE1を自動連番対応にするには、下記のような記述をすれば可能です。

CREATE TABLE TABLE1 (
	renban INTEGER NOT NULL AUTO_INCREMENT,
	UNIQUE KEY renban (renban)
) 

TABLE1テーブルのrenbanカラムにAUTO_INCREMENTを設定できます。renbanカラムには「UNIQUE KEY」を設定しています。「PRIMARY KEY」主キーの場合は下記のような記述になります。

CREATE TABLE TABLE1 (
	renban INTEGER NOT NULL AUTO_INCREMENT,
	PRIMARY KEY (renban)
)

このTABLE1テーブルのrenbanカラムがユニークになっていない場合下記のようなメッセージが表示されます。

Incorrect table definition; there can be only one auto column and it must be defined as a key

自動連番(AUTO_INCREMENT)はテーブル設定した後に設定することもできます

CREATE TABLE TABLE1 (
 	renban INTEGER 
);

ALTER TABLE TABLE1
	CHANGE COLUMN renban renban INTEGER NULL AUTO_INCREMENT FIRST,
	ADD UNIQUE INDEX renban (renban);

SHOW CREATE TABLE TABLE1」コマンドでテーブル内の変更した内容を確認すると下記のようにALTER TABLEが反映されていました。

AUTO_INCREMENT FIRST
AUTO_INCREMENT FIRST

このTABLE1テーブルはrenbanというカラムが一つだけあるのでレコードの追加(インサート)する場合下記のように省略されたインサート文が書けます。

INSERT INTO TABLE1 VALUES()