はじめに
初心者エンジニアということで優しい目で見てください。
(間違っていたら直したいので教えてください)
今回も参画先現場で得た新しい知識や理解できたことです。
目次
- ●SQL
- ・MINUS
- ・CREATE TABLEでのテーブルコピー
- ・rename
- ・ALTER TABLE ADD/DROP
- ・grant/synonym
- ●現場でよくでたLinuxコマンド
- ・cd
- ・ls
- ・date
- ・@ファイル名
SQL
MINUS
二つのテーブルのデータを比較し、データの差分がでたレコードを取得する。
-- 構文
SELECT * FROM A MINUS SELECT * FROM B;
-- 例
-- データ
SAMPLE1 SAMPLE2
|number|color| |number|color|
|1 |red | |1 |red |
|2 |green| |3 |blue |
|4 |white|
SELECT number,color FROM SAMPLE1 MINUS SELECT number,color SAMPLE2;
-- SAMPLE1テーブルにあって、SAMPLE2テーブルにないデータのレコードを取得する
-- 結果
|number|color|
|2 |green|
|4 |white|
注意点
SAMPLE2にあり、SAMPLE1にないデータのレコードを取得したい場合は、テーブルを入れ替えて再度SELECT分を打つ必要がある。(SELECT * FROM SAMPLE2 MINUS SELECT * FROM SAMPLE1;)
CREATE TABLEでのテーブルコピー
テストデータを一旦移すための避難先作成で使った。
-- 構文
CREATE TABLE SAMPLE2 AS SELECT * FROM SAMPLE1;
-- SAMPLE1テーブルと同一のテーブル構成・データでSAMPLE2テーブルを作成する
rename
その名の通りテーブル名を変えられる
-- 例
RENAME SAMPLE to DAMMY;
-- SAMPLEテーブルの名前をDAMMYテーブルに変更する
ALTER TABLE ADD/DROP
既存テーブルのカラムを削除したり追加したりできる。
ほかにもいろいろできるらしい。
-- テーブル定義
SAMPLE
|number|color|
|------|-----|
ALTER TABLE SAMPLE ADD (text VARCHAR2(50));
-- 結果
SAMPLE
|number|color|text|
|------|-----|----|
-- テーブル定義
SAMPLE
|number|color|text|
|------|-----|----|
ALTER TABLE SAMPLE DROP (text);
-- 結果
SAMPLE
|number|color|
|------|-----|
grant/synonym
テーブルを別のスキーマから参照できるようにGRANT文で権限付与し、SELECT文などを打てるようになるが、いちいち参照先のスキーマ名をつけないといけないところ、別名として保存し呼び出す際の記述を簡略化できる。
-- Schema1にあるSAMPLEテーブルをSchema2から見えるようにする
-- Schema1上で、Schema2に権限付与
GRANT select ON Schema1.SAMPLE TO Schema2
-- Schema2からSAMPLEテーブルを見てみる
SELECT * FROM Schema1.SAMPLE;
-- 結果
SAMPLE
|number|color|
|------|-----|
見ることはできるが参照するたびに、テーブル名を各箇所に[Schema1.SAMPLE]と書かなきゃいけない
これはめんどいのでsynonymを作成する
-- Schema2上で、synonym作成
CREATE SYNONYM SAMPLE FOR Schema1.SAMPLE;
-- Schema2からSAMPLEテーブルを見てみる
SELECT * FROM SAMPLE;
-- 結果
SAMPLE
|number|color|
|------|-----|
CREATE SYNONYM A ~~とかで作成すれば、SELECT * FROM A;など簡単にできるが、なんのこっちゃになるので、参照先のテーブル名で現場は作っていた。(多分大体そう。知らないけど。)
現場でよくでたLinuxコマンド
参画前の研修でも学んだが、すべて覚えきれず中途半端になっていたので、特に現場で使用しているのをおまけ程度ですが、まとめておきます。
それぞれのコマンドにオプションありますが、いったんは忘れました。
cd
フォルダ移動
cd ディレクトリ
cd /user/test
ls
現在自分がいるディレクトリ、その中にあるファイルの表示
cdでの移動前に確認することでエラーを未然に防ぐ
そのまま打つだけ
ls
date
現在時刻の表示
テストのエビデンスを作成する際に使用
そのまま打つだけ
date
@ファイル名.拡張子
いろんなファイル実行できるだろうが、現場でsqlのファイルしか使用しませんでした。
cdコマンドで実行したいファイルがある階層まで移動し、上記コマンド実行。
sqlの場合、ファイルの中身の頭に、sqlplus ユーザー名/パスワードをつけていないとエラーになります。
そのまま打つだけ
@ファイル名.拡張子