「MySQL」の版間の差分

提供: sha.ngri.la
移動先: 案内検索
(MySQL5.6以降)
(UNIQUEを追加する)
45行目: 45行目:
 
==UNIQUEを追加する==
 
==UNIQUEを追加する==
 
<pre>
 
<pre>
mysql> ALTER TABLE `table_name` ADD UNIQUE(コラム名)
+
mysql> ALTER TABLE `table_name` ADD UNIQUE(コラム名);
 +
</pre>
 +
 
 +
==INDEX==
 +
===INDEXを表示する===
 +
<pre>
 +
mysql> SHOW INDEX FROM `table_name`;
 +
</pre>
 +
 
 +
===INDEXを追加する===
 +
<pre>
 +
mysql> ALTER TABLE `table_name` ADD INDEX インデックス名(コラム名);
 +
</pre>
 +
 
 +
===複数INDEXを追加する===
 +
<pre>
 +
mysql> ALTER TABLE `table_name` ADD INDEX インデックス名(コラム名,コラム名);
 
</pre>
 
</pre>
  

2015年9月10日 (木) 04:37時点における版

文字化け対策

/etc/my.cnfに次のとおり追加

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

MySQL5.6以降

[mysqld]default-character-set=utf8と書くとエラーになるので、character-set-server=utf8と書く。

[client]
default-character-set=utf8

[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
 
[mysqldump]
default-character-set=utf8
 
[mysql]
default-character-set=utf8

mysqlの起動、終了、再起動(CentOS)

カラムのデータ型を変更する

mysql> alter table [tablename] modify [データ型];

AUTO_INCREMENTをリセットする

mysql> ALTER TABLE `table_name` AUTO_INCREMENT = 0

UNIQUEを追加する

mysql> ALTER TABLE `table_name` ADD UNIQUE(コラム名);

INDEX

INDEXを表示する

mysql> SHOW INDEX FROM `table_name`;

INDEXを追加する

mysql> ALTER TABLE `table_name` ADD INDEX インデックス名(コラム名);

複数INDEXを追加する

mysql> ALTER TABLE `table_name` ADD INDEX インデックス名(コラム名,コラム名);

text,mediumtext,longtextの容量

Data Type記憶容量の上限値
BLOB,TEXT21665,536バイト
MEDIUMBLOB,MEDIUMTEXT22416,777,216バイト
LONGBLOB,LONGTEXT2324,294,967,296バイト

SELECT文

重複した行を除外して表示する。

mysql> SELECT DISTINCT col_name, ... FROM tbl_name;

where節でselect文を使う

mysql> SELECT * FROM テーブルA where カラム1 in (SELECT カラム3 FROM テーブルB where カラム2='aaa')

IN

col_nameの値がカッコ内のvalue1,value2,value3のいずれかに一致したらTRUEを返す。

mysql> SELECT * FROM table1 WHERE col_name IN (value1,value2,value3)

逆(いずれにも一致しない場合にTRUEを返す)こともできます。

mysql> SELECT * FROM table1 WHERE col_name NOT IN (value1,value2,value3)

ORを使うのと同じ

mysql> SELECT * FROM table1 WHERE col_name=value1 OR col_name=value2 OR col_name=value3

バイナリファイルを登録する

LOAD_FILE('ファイルのフルパス')を使って登録する。

max_allowed_packetの上限を超えた容量のファイルや完全にアクセスできないファイル、例えば/users/shangrila/file/path/a.jpgに利用する場合、a.jpgのパーミッションが644でも、fileディレクトリのパーミションが600なら、アップロードできない。

mysql> update images set photo=LOAD_FILE('/volumes/full/path') where id=123;

Link