0

私はSQLクエリを使用しています

SELECT * FROM TABLE_NAME

この Table_Name テーブルには、10 行と 5 列があります。上記のクエリを実行すると、正常に実行され、10 行と 5 列が返されます。

今、私は新しいクエリを実行しています

SELECT 8 FROM TABLE_NAME

これで、1 つの列のみが返されますが、10 行が返され、この 1 つの列には同じ値、つまり各行に 8 が含まれます。

10 行と 8 つの値しかない列が返される理由と、8 の代わりに * を使用している場合、10 行と 5 列が返される理由を知りたいです。

両方のクエリとその実行プロセスの違いは何ですか?

4

8 に答える 8

2

SELECTlikeの後に列を選択しますSELECT col1, col2, col3 FROM table。あなたがタイプするならば、8あなたは「ちょうど定数8を得る」。

8行だけが必要な場合は、SQLServerで.を指定しますSELECT TOP 8 col1, col2 FROM table

一般的なSQLについて詳しく知りたい場合は、ここから始めるとよいでしょう:http ://www.w3schools.com/sql/default.asp

于 2012-06-29T13:13:40.153 に答える
1

SELECT返される列を指定した後。

*これは、「そこにあるものすべてをください」の単純なプレースホルダーであるため、存在するすべての列が返されます。

列リストに単なる定数 (この場合は ) を渡すと、8すべての行に対してその定数だけが返され、1 列で 10 行になり、その内容は8です。

これら2つを次のように組み合わせることもできます

SELECT *, 8 FROM TABLE_NAME

あなたの場合、これは 6 つの列を返します - 元のテーブルからの 5 つと 1 つの定数列です。

于 2012-06-29T13:08:48.040 に答える
1

SELECT 句は、返される列を指定します。* は、テーブル内の各レコードで使用可能なすべての列を返すようにサーバーに指示します。8 は、テーブル内の各レコードに対して値 8 を返すことを意味します。

于 2012-06-29T13:09:00.867 に答える
1

SELECT 句は、JOIN と GROUP BY を条件として、FROM 句のすべての行を通過するループのようなものです。

単純なクエリでは、最初のバージョンは「テーブルの各行の行のすべての値を返す」と言っています。

2 番目のバージョンは、「テーブルの各行に対して値 8 を返す」と言っています。

これは SQL の仕組みであり、特定のエンジンの機能ではありません。

于 2012-06-29T13:09:55.047 に答える
1

句を定義しないwhere場合、すべての行がフェッチされます。

8代わりに定義すると、各行に*数値が返されます。すべての列名のワイルドカードであり、実行するようなものです8*SELECT col1, col2, ..., col10 FROM TABLE_NAME

于 2012-06-29T13:08:32.447 に答える
1

SELECT 8定数を選択しているだけです。テーブル内のすべての行に対してその値を返します。それはちょうど言うようなものです:

SELECT 8, some_other_column FROM dbo.table_name;

その場合8、すべての行を保持する列を取得しますが、別の列も取得します。他の列を指定しない場合、SQL Server はテーブルをスキャンし、すべての行の定数をフェッチしますが、他のデータはフェッチしません。

于 2012-06-29T13:08:39.810 に答える
1

すべての答えは非常に優れたアプローチであり、SQLはselect *構文用に適切にプログラムされています。そして私たちが書くとき、select 8それは開発者の必要性を見つけようとします。テーブルに基づいて、適用している条件..いくつかのランダムな条件を選択して両方に適用するのと同じように行数に関してselect 8同じように動作します*行数は同じになりますが、場合の列数は正確になりますテーブルがあり、SQL の予約済みリテラルではないため、1 つだけになる場合は、ハードコードされた列名として取り、その値はハードコードされたプログラマーまたは定式化によって定義されます。*where8 and*888

于 2012-06-29T13:26:48.890 に答える
0

このため、テーブルに対してクエリを実行していることを考慮する必要があります。クエリを実行するとTABLE_NAME、このテーブルには10行が必要です。

SELECT * FROM TABLE_NAME

テーブルからすべての行を取得し、すべての列を表示する必要があると言っていますが、これを行うと

SELECT 8 FROM TABLE_NAME

テーブルからすべての行を取得する必要があると言っていますが、テーブルの列を表示する代わりに 8 が表示され、テーブルには 10 行あるため、10 回実行されます。このクエリを実行できます

SELECT 8 

また、テーブルに対してクエリを実行していないため、値が 8 の 1 行のみが表示されます。これを使用して X テーブルに対してクエリを実行すると、N 行にテーブルがあるため、N 行として表示されますが、8 のみが表示されます。 .

于 2012-06-29T13:55:01.120 に答える