「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 ,TEXT | 216 | 65,536バイト |
MEDIUMBLOB ,MEDIUMTEXT | 224 | 16,777,216バイト |
LONGBLOB ,LONGTEXT | 232 | 4,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;