MySQL
提供: sha.ngri.la
目次
文字化け対策
/etc/my.cnfに次のとおり追加
[client] default-character-set=utf8 [mysqld] default-character-set=utf8 skip-character-set-client-handshake
MySQL5.6以降
[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(コラム名)
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;