0

私は SQL に非常に慣れていないため、テーブルから選択するときの * と NULL の違いを説明するリソースを見つけることができませんでした。

例えば:

SELECT null, null, *, null FROM items

それは次のものとは異なりますか?

SELECT null, null, null, null FROM items

これは次のものとは異なりますか?

SELECT * FROM items

最初から 4 つの列しかなかったら?

4

4 に答える 4

0

最初のクエリでは、テーブルと同じ数のレコードが表示されます。ただし、値は選択クエリで null 値に置き換えられます。

SELECT null, null, null, null FROM items

これは似ています

SELECT 5, 5, 5, 5 FROM items

2 番目のクエリ、

SELECT * FROM items

値を含む行を表示します。

于 2013-04-07T07:11:10.720 に答える
0

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 を使用すると同じクエリが正常に機能します。

この例はあまり意味がありませんが、ヌルを使用するポイントを理解していただければ幸いです。

于 2013-04-07T07:13:25.710 に答える
-2

もちろんあります。

最初の1つ:

SELECT null, null, null, null FROM items

このテーブルの値と列にNULL関係なく、それぞれに値を持つ 4 つの列を選択します。ただし、返される行数はテーブル内の行数と同じです。テーブルに n 行ある場合は、すべての列に値がある n 行が返されます。itemsitemsitemsNULL

SQL フィドルのデモ


でも:

SELECT * FROM items

このテーブルのすべての値を持つすべての列を選択しますitems

それらはまったく異なります。

あなたの場合、列は4つしかないため、最初の列は常に4つのNULL列を選択し、2番目の列は含まれる値でそれらを選択します。

于 2013-04-07T06:47:47.320 に答える