2017年2月8日水曜日

MySQLの勉強

追加。例がある
https://cloud-textbook.com/131/

https://dev.mysql.com/doc/refman/8.0/en/creating-database.html

===

ドットインストールで勉強したのでメモ
一通り試して2時間半くらい

■MySQLにrootユーザでログインする パスワードあり
mysql -u root -p

■MySQLから抜ける
exit または quit

■データベース(の名前)を見る(※複数形に注意)
show databases;

■MySQLを起動してからの時間を見る
mysql> show status like 'Uptime';
+---------------+---------+
| Variable_name | Value   |
+---------------+---------+
| Uptime        | 1073461 |
+---------------+---------+



■作業ユーザ dbuserを作る パスワードは弱いとNG
grant all on blog_app.* to dbuser@localhost identified by 'PAssw0rd'


■テーブルを作る。名前users。項目a1,a2,....

create table users (
a1,
a2,
...
);

型は char, varchar, int, double, text, enum , date, datetimeなどあり
not null 必ず値があること
auto_increment primary key
unique ダブらない
default XXX デフォルト値設定
key XXX (XXX) 検索キー

■テーブルを見る(※複数形に注意)

show tables;

■テーブルを消す。名前users

drop tabel users;

■テーブルusersの中を見る

desc users;

■テーブルusersに挿入する

insert into users (a1, a2, (省略可)...) values ('b1', ,,,)

■テーブルusersから選択して表示

select * from users;

select a1 , a2,,, from users;

■テーブルのアイテムごとに表示(※; は不要)

select * from users \G

■whereを使ったusersの検索

select * from users where (検索式);
検索式は a1 > 10など。 = , !=(<>)

select * from users where a1 like '%XXX'

% : 0文字以上の文字列
_ (アンダースコア):1文字
■where, between で数字の以上以下

■where a1 in ('XXX', 'YYY') で

■条件式は and でつなげる or も可能

■ソートする

select * from users order by a1

(逆順にソート)
select * from users order by a1 desc 

■数を制限する
limit 3

■数を制限する、オフセットをつける。ゼロ始まり
(3番目から2個抽出)
limit 2, 2

order by a1 limit 3 とか組み合わせも可能

■集計する
同じ項目を無視する
select distinct a1 from users;


select *  from users order by rand() limit 1;
ランダムに1つ選ぶ


mysql> select email,length(email) from users;

文字列の連結
concat 

mysql> select concat(name, email) as label from users;

文字列の部分を選ぶ substring
mysql> select substring(name,1,1) from users;

現在時刻の表示
mysql> select now();

テーブルの更新
mysql> update users set score = 2 where id =3;

テーブルの中から条件をつけて削除
mysql> delete from users where score <= 3.0;

full_nameという項目を増やす。nameの後に増やす。
mysql> alter table users add full_name varchar(255) after name;

変更 afterで場所を変えることもできる

mysql> alter table users change full_name full_name varchar(100) after email;

消す
mysql> alter table users drop full_name;

インデックス追加(add->dropで消す)
mysql> alter table users add index email (email);


テーブルusersをblog_usersにリネーム
mysql> alter table users rename blog_users;

複数のテーブルを指定するときは . で指定する。テーブル名(.)コラム from XXX,YYY where 条件
mysql> select users.name,posts.title from users,posts where users.id=posts.user_id;

+逆向きに並べる
mysql> select users.name,posts.title,posts.created from users,posts where users.id=posts.user_id;


テーブルを作るとき、既に存在するなら上書き
drop table if exists users;

外部ファイルのコマンド
linuxで XXX.sql ファイルを同じディレクトリに作る。Vimとか使う
mysql -u dbuser -p blog_app < XXX.sql
(password type)

で実行できる。


#19 バックアップ
dump する
mysqldump -u dbuser -p blog_app > blog_app.dump.sql
復元
mysql - u dbuser -p blog_app < dumpファイル名

0 件のコメント:

コメントを投稿