#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;
トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS