MySQLの基本的なコマンドのメモ
目次
MySQLにアクセス
ローカルサーバ
mysql -u [user] -p
リモートサーバ
mysql -u [user] -p -h [host] -P [port]
MySQLからログアウト
exit
データベースの操作
データベース一覧の表示
show databases;
データベースの追加
create database [database name];
データベースの選択
use [database name];
テーブルの操作
テーブル一覧の表示
show tables;
テーブルの作成
create table [table name] ([field name] [data type] [option], ..........);
テーブルの削除
drop table [table name];
テーブルの設計確認
desc [table name];
データの追加
insert into [table name] values ([value], ......);
データの削除
全レコード
delete from [table name];
対象レコード
delete from [table name] where [condition expression];
トランザクション
begin;
SQL;
SQL;
SQL;
commit; or rollback;
応用メモ
期間内に取引のないユーザの抽出方法
抽出方針は,ユーザ全体から期間内に取引したユーザを除く.
期間は,2021年1月1日から1月31日まで
postgre=> select * from user_tbl;
id | name
----+-------
1 | taro
2 | jiro
3 | akira
4 | yuji
(4 rows)
postgre=> select * from transaction_tbl;
trans_id | id | datetime
----------+----+---------------------
1 | 1 | 2021-01-01 00:00:00
2 | 1 | 2021-02-01 00:00:00
3 | 2 | 2021-01-01 00:00:00
4 | 3 | 2021-03-01 00:00:00
5 | 4 | 2021-02-01 00:00:00
6 | 3 | 2021-01-01 00:00:00
(6 rows)
select * from user_tbl as t1
where not exists (
select * from transaction_tbl as t2
where (datetime >= '2021-01-01 00:00:00' and datetime <= '2021-01-31 23:59:59')
and t1.id = t2.id
);
予想結果
id: 1, 2, 3はSQLのexistsに当てはまるため,除かれる.
そのため,出力は,以下のようになるはずである.
id | name
----+------
4 | yuji
(1 row)