地方在住IT系ニート

Hioke

MySQLの基本的なコマンドのメモ

Table of Contents

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日まで

user_tbl
postgre=> select * from user_tbl;
 id | name
----+-------
  1 | taro
  2 | jiro
  3 | akira
  4 | yuji
(4 rows)
transaction_tbl
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)
SQL
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)
にほんブログ村 IT技術ブログ IT技術メモへ