#author("2024-03-27T02:10:53+09:00","","") #author("2024-03-31T02:10:11+09:00","","") [[Program]] *SQLチートシート [#v9bd35d8] ** PostgreSQL [#e7e60502] - DB # 生成 CREATE DATABASE <DB名>; # 削除 DROP DATABASE <DB名>; # 表示 \l # 接続 \c <DB名> - TABLE # 生成 CREATE [TEMPORARY] TABLE [ IF NOT EXISTS ] <テーブル名> ... # 削除 DROP TABLE [IF EXISTS] <テーブル名> # 表示 \dt # 定義確認 \d <テーブル名> - TABLESPACE # 生成 CREATE TABLESPACE <テーブルスペース名> [OWNER <ユーザー名>] LOCATION '<ディレクトリ>'; # 削除 DROP TABLEESPACE [IF EXISTS] <テーブルスペース名> # 表示 \db - TRIGGER # 生成 CREATE TRIGGER <トリガー名> {BEFORE|AFTER|INSTED OF} {INSERT|UPDATE [OF <カラム名>]|DELETE|TRUNCATE} [OR ...] ON <テーブル名> [ FOR [EACH] {ROW|STATEMENT}] EXECUTE PROCEDURE <関数名>(<引数>); # 削除 DROP TRIGGER [IF EXISTS] <トリガー名> ON <テーブル名> # 確認 SELECT * FROM pg_trigger; - インデックス作成 CREATE INDEX [IF NOT EXISTS] <インデックス名> ON <テーブル名>(<カラム名> [,<カラム名>]); ** MariaDB (MySQL) [#g95bfc96] - DB # 生成 CREATE DATABASE <DB名>; # 削除 DROP DATABASE <DB名>; # 確認 SHOW DATABASES; # 選択 USE <DB名> - TABLE # 生成 CREATE [TEMPORARY] TABLE [ IF NOT EXISTS ] <テーブル名> ... # 削除 DROP TABLE [IF EXISTS] <テーブル名>; # 確認 SHOW TABLES; # 定義確認 SHOW [FULL] COLUMNS FROM <テーブル名>; - TABLESPACE # 生成 CREATE TABLESPACE <テーブルスペース名> [ADD DATAFILE '<ファイル名>'] [FILE_BLOCK_SIZE=<サイズ>]; # 削除 DROP TABLESPACE <テーブルスペース名>; # 確認 SELECT * FROM INFORMATION_SCHEMA.TABLESPACES; - TRIGGER # 生成 CREATE TRIGGER <トリガー名> {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON <テーブル名> [FOR EACH ROW] BEGIN ~ END; # 削除 DROP TRIGGER [IF EXISTS] <トリガー名> # 確認 SHOW TRIGGERS [FROM <DB名>] - インデックス作成 CREATE [OR REPLACE] INDEX [IF NOT EXISTS] <インデックス名> ON <テーブル名>(<カラム名> [,<カラム名>]); ** SQLite [#n66642c6] - TABLE # 生成 CREATE [TEMPORARY] TABLE [ IF NOT EXISTS ] <テーブル名> ... # 削除 DROP TABLE [IF EXISTS] <テーブル名>; # 確認 .tables # テーブル定義確認 .schema <テーブル名> - TRIGGER # 生成 CREATE TRIGGER [IF NOT EXISTS] <トリガー名> {BEFORE|AFTER|INSTED OF} {INSERT|UPDATE [OF <カラム名> [,<カラム名>}]|DELETE} ON <テーブル名> [FOR EACH ROW] BEGIN ~ END; # 削除 DROP TRIGGER [IF EXISTS] <トリガー名> # 確認 SELECT * FROM sqlite_master WHERE type='trigger'; - インデックス作成 CREATE INDEX [IF NOT EXISTS] <インデックス名> ON <テーブル名>(<カラム名> [,<カラム名>]); * 自動時刻更新 [#yd039645] ** PostgreSQL [#kde7a15a] # # TABLE 作成 # CREATE TABLE IF NOT EXISTS <テーブル名> ( created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); # # FUNCTION 作成 # CREATE OR REPLACE FUNCTION <関数名>() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = NOW(); RETRN NEW; END; $$ language plpgsql; # # TRIGGER 作成 # CREATE OR REPLACE TRIGGER <トリガー名> BEFORE UPDATE ON <テーブル名> FOR EACH ROW EXECUTE PROCEDURE <関数名>() ** MariaDB (MySQL) [#h44cdcce] # # TABLE 作成 # CREATE TABLE IF NOT EXISTS <テーブル名> ( created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ** SQLite [#xa3d5fc4] # # TABLE 作成 # CREATE TABLE IF NOT EXISTS <テーブル名> ( created_at TEXT NOT DEFAULT (DATETIME('now', 'localtime')), updated_at TEXT NOT DEFAULT (DATETIME('now', 'localtime')) ); # # TRIGGER 作成 # CREATE TRIGGER IF NOT EXISTS <トリガー名> AFTER UPDATE ON <テーブル名> BEGIN UPDATE <テーブル名> SET updated_at = DATETIME('now', 'localtime') WHERE rowid = NEW.rawid; END;