[TIL] W2D4
DML
select、insert、update、deleteがあり、レコードを操作します.
どの文法もいつも混同されていて、また勉強し直してくれて嬉しいです.
insert
<フィールドの順序がテーブル内の値の順序と同じである場合>
INSERT INTO(データベース名.テーブル名)値(値1、値2、値3...)
<表フィールドに従って入力>
INSERT INTO(データベース名.テーブル名)(フィールド1、フィールド2、フィールド3、...)値(値1、値2、値3...)
pkの場合、一意性を保証する必要があるため、pkフィールドに同じ値を入れようとするとエラーが発生します!!
delete
<すべてのレコードを削除>
delete from(テーブル名)
<該当レコードの削除>
delete from(テーブル名)where
delete from vs trucate
両方のテーブルは保持され、すべてのレコードを削除できます.
trucateは高速ですが、トランザクション時にロールバックできません.
調べてみると、トランザクションはCOMMITまたはROLLBACKコマンドの下でのみ実行できます.したがって、複数のDMLはトランザクションであり、コミットおよびロールバックが可能であり、1つのddlはトランザクションであるため、autocommitはロールバックできず、操作を終了します.
update
update(テーブル名)
set weight=92
where(条件)
type
numeric type
しょうすう
double(より高い、より詳細)vs float
date,time
タイムスタンプは通常多く使用されます
String
json
spatial
JOIN
2つ以上のテーブルを1つの共通フィールドに結合します.
2つのフィールドを持つテーブルが作成されます!!
連結で紛らわしいのは、両方のテーブルができていること(?)はい.
SELECT A.*, B.*
FROM raw_data.table1 A
____(조인 이름 default->inner조인) JOIN raw_data.table2 B ON A.key1 = B.key1 and A.key2 = B.key2
WHERE A.ts >= '2019-01-01';
inner join(交差)
SELECT * FROM prod.vital v
JOIN prod.alert a ON v.vital_id = a.vital_id;
left join(左のテーブルは適用され結合されています)
SELECT * FROM prod.vital v
LEFT JOIN prod.alert a ON v.vital_id = a.vital_id;
full join
は、
SELECT * FROM prod.vital v
LEFT JOIN prod.alert a ON v.vital_id = a.vital_id
UNION
SELECT * FROM prod.vital v
RIGHT JOIN prod.alert a ON v.vital_id = a.vital_id;
Cross join
SELECT * FROM prod.vital v CROSS JOIN prod.alert a;
self join
SELECT * FROM prod.vital v1
JOIN prod.vital v2 ON v1.vital_id = v2.vital_id;
Reference
この問題について([TIL] W2D4), 我々は、より多くの情報をここで見つけました https://velog.io/@pinoa1228/TIL-W2D4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol