こんにちは、ふじまるです!
データベースにもいろいろありますが、仕事でテラデータのデータベースを触る機会があったのでSQLの備忘録を書いておきますね。
件数確認
--件数確認
select count(*)
from テーブル名
これは基本すぎましたね。笑
SQLサーバーでもオラクルでも同じです。
テーブルのコピー
--テーブルをコピー(コピーする新しいテーブル as コピー元のテーブル)
--with dataでテーブルの中身を全てコピー
CT テーブル名_20190911 as テーブル名 with data;
--with no dataで空のテーブルをコピー
CT テーブル名_20190911 as テーブル名 with no data;
これはよく使います。テーブルの定義情報や中身のデータまでコピーしてくれるのでバックアップするときによく使います。
テーブル名の変更
--テーブル名を変更(現在の名前 as 変更する名前)
rename table テーブル名 as テーブル名B
こちらもよく使いますね。上記のコピーテーブルでバックアップを取り、それに対して編集した後、本番テーブルと入れ替えるのでこのコマンドでテーブル名を変更します。
Select結果をインサート
--Select結果をインサート
insert into テーブル名
select * from テーブル名2
これも基本でしたね。笑
SQLサーバーでも同じです。where句を使って条件で絞ったデータをインサートすることも可能です。
テーブル定義の取得
--テーブル定義の取得
show table テーブル名
これは便利です。テーブルの定義が一発で確認できますし、Create文の形式で表示されるのでそのままCreateに使用することができます。
Request Text
CREATE SET TABLE テーブル名 ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
(
カラム1 DECIMAL(4,0),
カラム2 CHAR(10) CHARACTER SET UNICODE NOT CASESPECIFIC NOT NULL,
カラム3 CHAR(20) CHARACTER SET UNICODE NOT CASESPECIFIC NOT NULL,
カラム4 CHAR(40) CHARACTER SET UNICODE NOT CASESPECIFIC NOT NULL,
カラム5 DECIMAL(2,0) NOT NULL)
UNIQUE PRIMARY INDEX ( カラム1 );
こんな感じで結果が表示されるので、先頭のRequest Textを除いた下のCreate文を実行するとテーブルを作成することができます。
似たようなテーブルを複製するときは便利なのでよく使います
Viewの作成方法
REPLACE VIEW ビュー名 AS
LOCKING TABLE テーブル名 FOR ACCESS
SELECT * FROM テーブル名;
これでViewを作成することができます。selectにwhere句で条件を絞ったViewにもできますし、他テーブルとjoinして他の情報を持ってくることもできます。
Viewの定義確認
show view ビュー名
--↓結果
REPLACE VIEW ビュー名 AS
LOCKING TABLE テーブル名 FOR ACCESS
SELECT * FROM テーブル名;
これでViewの定義を確認することができます。whereやjoinなどしていても一発で分かりますね。もちろんshow tableの時と同じようにViewの作成文と同じなのでそのまま実行すればViewを作成することができます。
ユーザーにselect権限を追加する
--ユーザーにデータベース1のselect権限を付与する。
GRANT SELECT ON データベース1 TO ユーザー名 WITH GRANT OPTION;
ユーザーにinsert、delete権限を追加する
--ユーザーに対して「テーブル名」に「insert」、「delete」権限を与える。
grant insert , delete on テーブル名 to ユーザー名 with grant option;
以上、テラデータのSQL備忘録でした!