一般的に使うSQLのコマンドの一覧になります。
仕事の都合上、HiRDB / Oracle のSQLコマンドを載せています。
他のRDBでも利用できるコマンドが多くあるため、ご活用ください。
項目/説明 | SQL |
---|---|
参照 | #構文 SELECT * FROM テーブル名 WHERE 条件式 ; #実行例 SELECT * FROM USER_LIST WHERE name = 'miya' ; |
更新 | #構文 UPDATE テーブル名 SET NAME = '変えたい値' WHERE 更新対象の条件式 ; #実行例 UPDATE USER_LIST SET NAME = 'MIYAMON' WHERE NAME = 'MIYA'; |
削除 | #構文 DELETE FROM テーブル名 WHERE 条件式; #実行例 DELETE FROM USER_LIST WHERE NAME = 'MIYA'; |
追加 (値を指定) | #構文 INSERT INTO テーブル名 VALUES ('','','') ; #実行例 INSERT INTO USER_LIST VALUES('001','MIYA','2019-06-19 00:00:00') ; |
INSERT文のVALUESの値にSELECTの結果を使う。 | INSERT INTO テーブル名 (SELECT文) |
スキーマの作成 | GRANT DBA TO スキーマ名 IDENTIFIED BY パスワード; CREATE SCHEMA AUTHORIZATION スキーマ名; |
スキーマ権限付与 (作成したスキーマAから、別のスキーマBのテーブルを参照したい場合) | スキーマBで実施 GRANT SELECT ON スキーマB.テーブル名 TO スキーマA; スキーマAで接続確認 SELECT COUNT(*) FROM スキーマA.テーブル ; →参照できれば成功 |
カラム名一覧を見たいとき | ※HiRDBの場合 COLUMNS テーブル名; ※Oracleの場合 SELECT OWNER ,TABLE_NAME ,COLUMN_NAME ,COLUMN_ID FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'テーブル名' ORDER BY COLUMN_ID; |
テーブル一覧を見たいとき | ※HiRDBの場合 TABLES; ※Oracleの場合 SELECT TABLE_NAME FROM USER_TABLES ; |
テーブルの主キーやTable IDを知りたいとき | tableinf テーブル名; |
プロシージャのソースが見たいとき | ※HiRDBの場合 select * from master.sql_routines where ROUTINE_NAME = 'プロシージャ名' ; ※Oracleの場合 select text from user_source where name = 'プロシージャ名' order by line; |
トリガーが適用されているか見たい時 | SELECT * FROM master.SQL_TRIGGER_DEF_SOURCE WHERE TRIGGER_NAME='トリガ名' ; |
トリガーの適用日等を調べる時 | SELECT * FROM master.SQL_TRIGGERS WHERE TRIGGER_NAME='トリガ名' ; |
トリガー、プロシージャ、テーブル作成等の後に行うおまじない。 | ALTER ROUTINE; |
プロシージャ一覧(ルーチン情報)を見たい時 | routines; |
とあるテーブルのとあるカラムが設定の定義をスキーマ毎に表示して確認 | select * from master.sql_columns where TABLE_NAME='★テーブル名' and column_name='★カラム名' ; |
ルーチン定義情報 (プロシージャ等の定義を参照する。SQLエグゼキュータより実行可能) | select ROUTINE_NAME,SPECIFIC_NAME,ROUTINE_VALID from master.sql_routines where ROUTINE_NAME = 'プロシージャ名' ; |
インデックス確認 | ※HiRDBの場合 select * from master.SQL_INDEX_COLINF where TABLE_NAME = 'インデックス名' order by INDEX_ID,INDEX_ORDER ; ※Oracleの場合 SELECT * FROM USER_INDEXES WHERE INDEX_NAME = 'インデックス名'; |
エラーが発生したテーブルを知りたい時 | select * from master.sql_indexes where index_id = 'インデックスナンバー' ; |
テーブルにカラム追加 | 構文:ALTER TABLE テーブル名 ADD 追加したいカラム名 型 ; 例文:ALTER TABLE URIAGE ADD NEW_AAA CHAR(1) ; |
テーブルのカラム削除 | 構文:ALTER TABLE テーブル名 DROP カラム名 WITH PROGRAM ; 例文:ALTER TABLE URIAGE DROP NEW_AAA WITH PROGRAM ; |
timestamp型をカットしてDATE形式で表示 日付毎にカウントしたい場合に便利。 | SELECT SUBSTR(char(カラム名(TIMESTAMP型)),1,10) FROM テーブル名 ; # 2019-01-01 12:01:01 ⇒ 2019-01-01 で表示される。 |
timestamp型をカットしてDATE形式で表示 して、日付毎にカウント | select VARCHAR_FORMAT(TIMESTAMP(CHAR(カラム名[TIMESTAMP型])),'YYYY-MM-DD'),count(*) from テーブル名 group by VARCHAR_FORMAT(TIMESTAMP(CHAR(カラム名[TIMESTAMP型])),'YYYY-MM-DD') ; |
DATE型+指定した日数 | ※HiRDBの場合 SELECT (DATE(CURRENT_DATE) - 7 DAY) FROM ~ ※Oracleの場合 SELECT TO_CHAR(SYSDATE, 'YYYYMMDD')-9 FROM ~ |
現在日時-9時間したい場合(GMTをJSTに変換する時に使用) | ※HiRDBの場合 TIMESTAMP(ADD_INTERVAL(VARCHAR_FORMAT(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH:MI:SS'), -00000000090000)) ※Oracleの場合 SYSDATE - 9/24 |
置換(指定のカラムを置換して表示する) REPLACE | SELECT REPLACE('イヌヌーピー', 'イヌ', 'ス') →結果がスヌーピーになる!! |
文字列式(16進数)の確認 | SELECT HEX(カラム名) FROM テーブル名 ; |
オートコミットのオンオフ | コミットオフ set auto commit off; ロールバック rollback; コミットオン set auto commit on; ※DBをロックする方法 末尾に「 with exclusive lock;」と加える select * from テーブル名 where カラム名=値' with exclusive lock; |
空文字だった場合、NULLと表示するSQL文 : INSERT用データ作成のときなどにやくにたつ | select CASE WHEN MOD_USERID IS NULL THEN 'NULL' ELSE MOD_USERID END from テーブル名 where カラム名=値 ; |
カラムの値によって、表示する値を置き換える。 | SELECT SUM(popularity), CASE pre_name WHEN '徳島県' THEN '四国' WHEN '香川県' THEN '四国' WHEN '愛媛県' THEN '四国' WHEN '高知県' THEN '四国' WHEN '福岡県' THEN '九州' WHEN '佐賀県' THEN '九州' WHEN '長崎県' THEN '九州' WHEN '熊本県' THEN '九州' WHEN '大分県' THEN '九州' ELSE 'その他' END FROM Table_A |
CASEで条件指定する場合 | CASE WHEN PM.PASSWORD_EXPIRE_TSTAMP > CURRENT_TIMESTAMP THEN '1' ELSE '0' END PASSWORD_EXPIRE_FLG |
パージ文:テーブルのレコードを全て削除、領域も解放してくれるため全削除はDELETEではなくこっちを使うべき。 | PURGE TABLE テーブル名; |
バイト数で検索 | select * from テーブル名 where length(カラム名) > 8 ; |
TABLE1にあって、TABLE2にないものを出す。 SELECT ITEM1 FROM TABLE1 EXCEPT SELECT ITEM1 FROM TABLE2 | TESTTABLE1のITEM1にはデータとして1,2,3とした行を持っており、 TESTTABLE2のITEM1にはデータとして2,4,6とした行を持っている場合 SELECT ITEM1 FROM TESTTABLE1 EXCEPT SELECT ITEM1 FROM TESTTABLE2 結果 1,3を取得 |
メールアドレスのローカルパートを種別に集計したい。 ※対象カラムの型がMVARCHARの時はCASTで変換する必要がある。 | SUBSTR(MAIL,POSSTR(CAST(MAIL as VARC |
SELECTの表示件数を指定する | 10件表示させる場合 HiRDB: limit 10 Oracle: where rownum <= 10 ※limit はwhere句は不要ですが、 rownum はwhere句が必要です。 |
テーブルの表領域を削除(DELETE文よりも高速に削除したい場合に利用) | TRUNCATE table テーブル名 |
仕事で使えるLinuxコマンドも纏めています。よろしければご一緒にご活用ください。
-
仕事で使うLinux/UNIXコマンド一覧
仕事で使えるLinux/UNIXコマンドを整理しました。 フィルター機能で必要なコマンドをすぐ引き出せるようにしてます。 仕事の効率化にご活用ください。 仕事で使えるLinux/Unix ...
続きを見る