2016年12月25日日曜日

MySQL/基本のメモ

PHPの基礎文法をおさらいできたところでMySQLも基本を振り返ってみます。


メモ

ログイン
$ mysql -u USER [-p]
-pを入れるとパスワードを入力することができる。

ログアウト
> exit;
OR
> \q

ヘルプ
\h OR help

標準入力のクリア
\c

DBの作成と作業ユーザへの権限付与
> set password for root@localhost=password('xxx'); -- rootユーザのパスワード設定
> create database store; -- DBの作成
> show databases; -- DBの一覧表示
> grant all on store.* to dbuser@localhost identified by 'xxx'; -- 作業ユーザの作成と権限付与
> SELECT user, host FROM mysql.user; -- ユーザ一覧表示
> use store; -- DBへの接続

テーブルの作成
> create table users (
-> id int,
-> name varchar(255),
-> email varchar(255),
-> password char(32),
-> score double,
-> sex enum('male', 'female'),
-> memo text,
-> created datetime
-> ); -- table作成
> show tables; -- table一覧表示

テーブルのコピー
> create table new_users like users; -- テーブル名だけ違う、同じ構造のテーブルを作成

NULL制約
id int not null

UNIQ制約
email varchar(255) unique

連番
id int auto_increment
連番を振るカラムにはインデックスを張る必要がある。
その際、primary key / keyのどちらでも問題ない。

default
score double default 0.0

主キー
id int primary key

主キーでないところにインデックスを貼る
key score (score)

tableのインデックスの確認
> show indexes from TABLE_NAME;

tableの構造を表示
desc[ribe] TABLE_NAME;

列の追加
> alter table users add created datetime default CURRENT_TIMESTAMP ;

indexの追加
> alter table users add index name(name);
インデックス名(カラム名)

indexの削除
> alter table users rename system_users;

tableのリネーム
> alter table users drop index name;

DBの削除
> drop database store; -- DBの削除

扱えるデータ型
  • 数値:int, double
  • 文字列:char, varchar, text
  • 日付:date, datetime
  • その他:enum

レコードを帳票形式(項目を横ではなく縦に並べる方式)で出力する
select * from users \G
\Gで文が終わるみたいです。;セミコロンを続けて末尾に入れたら、空行だと怒られた。
select * from users \G;
ズラズラ
...
ERROR:
No query specified

limit / offset。上から2行を無視し、3行取得。
「limit 3 offset 2」「limit 2 ,3」のどちらでもいい。
パラメータが逆になるので注意

外部ファイルからSQLを実行
$ mysql -u dbuser -p store < dataInit.sql

バックアップファイルの作成
$ mysqldump -u dbuser -p store > store.bu.dump

バックアップファイルからの復元
$ mysql -u dbuser -p store < store.bu.dump

0 件のコメント:

コメントを投稿