回答編集履歴
2
NULLの補足
answer
CHANGED
@@ -41,8 +41,13 @@
|
|
41
41
|
INSERT INTO sample_table (col1, col2, col3) VALUES (100, 500, 400)
|
42
42
|
```
|
43
43
|
|
44
|
+
尚ビューを用いる場合も例に漏れず、
|
44
|
-
|
45
|
+
KiyoshiMotokiさんの回答にあるようなNULL演算の問題が起こり得ます。
|
46
|
+
これはMySQLに限った話ではなく、
|
47
|
+
一般的DBMSは全てこのような挙動を取ります。
|
48
|
+
参考までに[NULLの話題を扱ったQA](https://teratail.com/questions/41418)もありますので、
|
49
|
+
興味があるようでしたら一読して下さい。
|
45
50
|
|
46
|
-
|
51
|
+
対策方法としては、
|
47
52
|
実テーブル側にカラムにNOT NULL制約をかけるか、
|
48
53
|
SELECTする際に**ベンダ拡張のIFNULL関数か標準SQL関数のCOALESCE関数**を利用してNULLをエスケープするかしておきましょう。
|
1
レイアウト調整など
answer
CHANGED
@@ -29,14 +29,13 @@
|
|
29
29
|
|
30
30
|
ビューのメリットとしては、
|
31
31
|
**実体を持たないという特徴**があるため、
|
32
|
-
**実テーブル側の値やデータ数が変わった場合も、
|
32
|
+
**実テーブル側の値やデータ数が変わった場合も、自動計算して出力**してくれる点です。
|
33
|
-
自動計算して出力**してくれる点です。
|
34
33
|
|
35
34
|
ただしデメリットもまた実体を持たないことで、
|
36
35
|
内部的にはビューで定義したSELECT句が起動されるだけなので、
|
37
36
|
下手な使い方をするとパフォーマンス的に不利となります。
|
38
37
|
|
39
|
-
ちなみにビューを経由したINSERTやUPDATE
|
38
|
+
ちなみにビューを経由したINSERTやUPDATEなどには色々と制約があるので、
|
40
39
|
その際は素直に実テーブルに対して行うと良いでしょう。
|
41
40
|
```SQL
|
42
41
|
INSERT INTO sample_table (col1, col2, col3) VALUES (100, 500, 400)
|
@@ -46,4 +45,4 @@
|
|
46
45
|
|
47
46
|
その対策としては、
|
48
47
|
実テーブル側にカラムにNOT NULL制約をかけるか、
|
49
|
-
SELECTする際に**ベンダ拡張のIFNULL関数か標準SQL関数のCOALESCE関数
|
48
|
+
SELECTする際に**ベンダ拡張のIFNULL関数か標準SQL関数のCOALESCE関数**を利用してNULLをエスケープするかしておきましょう。
|