私は SQL に非常に慣れていないため、テーブルから選択するときの * と NULL の違いを説明するリソースを見つけることができませんでした。
例えば:
SELECT null, null, *, null FROM items
それは次のものとは異なりますか?
SELECT null, null, null, null FROM items
これは次のものとは異なりますか?
SELECT * FROM items
最初から 4 つの列しかなかったら?
私は SQL に非常に慣れていないため、テーブルから選択するときの * と NULL の違いを説明するリソースを見つけることができませんでした。
例えば:
SELECT null, null, *, null FROM items
それは次のものとは異なりますか?
SELECT null, null, null, null FROM items
これは次のものとは異なりますか?
SELECT * FROM items
最初から 4 つの列しかなかったら?
最初のクエリでは、テーブルと同じ数のレコードが表示されます。ただし、値は選択クエリで null 値に置き換えられます。
SELECT null, null, null, null FROM items
これは似ています
SELECT 5, 5, 5, 5 FROM items
2 番目のクエリ、
SELECT * FROM items
値を含む行を表示します。
Mahmoud の回答に加えて、SELECT NULL が必要になる状況を 1 つ説明できます。
3 つの列を持つ t1 と 4 つの列を持つ t2 の 2 つのテーブルがあるとします。そして、これらのテーブルを含む UNION を使用してクエリを作成することにしました。
SELECT * FROM t1
UNION
SELECT * FROM t2
上記のクエリは、テーブルごとに列の数が異なるため機能しません。そのため、SQL エンジンではユニオン操作を実行できません。これを克服するには、t1 から null 列を選択し、クエリ結果セットにアクセスするときにアプリ コードで正しく処理します。
SELECT *, null FROM t1
UNION
SELECT * FROM t2
上記の個々のクエリは両方とも 4 つの列を持つため、UNION 操作が成功します。
つまり、列の数が異なる場合、結果セットに NULLS が自動的に追加されるため、UNION ALL を使用すると同じクエリが正常に機能します。
この例はあまり意味がありませんが、ヌルを使用するポイントを理解していただければ幸いです。
もちろんあります。
最初の1つ:
SELECT null, null, null, null FROM items
このテーブルの値と列にNULL
関係なく、それぞれに値を持つ 4 つの列を選択します。ただし、返される行数はテーブル内の行数と同じです。テーブルに n 行ある場合は、すべての列に値がある n 行が返されます。items
items
items
NULL
でも:
SELECT * FROM items
このテーブルのすべての値を持つすべての列を選択しますitems
。
それらはまったく異なります。
あなたの場合、列は4つしかないため、最初の列は常に4つのNULL
列を選択し、2番目の列は含まれる値でそれらを選択します。