2012-06-29 8 views
0

Я использую SQL запрос, т.е.Объяснить выполнение SQL запросов в этом случае

SELECT * FROM TABLE_NAME 

В этой таблице table_name имеет 10 строк и 5 столбцов. Когда я запускаю этот выше запрос, он работает нормально и возвращает 10 строк и 5 столбцов.

Теперь я бег нового запроса т.е.

SELECT 8 FROM TABLE_NAME 

Теперь она будет возвращать только один столбец, но 10 строк и этот единственный столбец имеет то же значение, т.е. 8 в каждой строке.

Я хочу знать, почему он возвращает мне 10 строк и столбец, который имеет только 8 значений, и когда я использую * вместо 8, в этом случае он вернет 10 строк и 5 столбцов.

Какая разница между запросами и процессом выполнения?

ответ

1

, если вы определяете пункт where, тогда все строки будут извлечены.

Если вы определяете 8 вместо *, тогда число 8 будет возвращено в каждой строке. * является подстановочным знаком для всех имен столбцов и аналогичен SELECT col1, col2, ..., col10 FROM TABLE_NAME

1

SELECT 8 просто выбирает константу. Он возвращает это значение для каждой строки в таблице. Это просто, как говорят:

SELECT 8, some_other_column FROM dbo.table_name; 

В этом случае вы получите колонки проведение 8 в каждой строке, но вы получите еще один столбец тоже. Если вы не укажете каких-либо других столбцов, SQL Server сканирует таблицу и выбирает вашу константу для каждой строки, но никаких других данных.

1

После SELECT вы указываете столбцы, которые хотите вернуть.

* здесь простой заполнитель для «дайте мне все, что есть», поэтому возвращаются все столбцы.

Если вы передадите постоянную константу, в вашем случае 8, в списке столбцов она вернет именно эту константу для каждой строки, в результате чего десять строк с одним столбцом, содержимое которых равно 8.

Вы также можете комбинировать эти два, как

SELECT *, 8 FROM TABLE_NAME 

В вашем случае это будет вернуть вам 6 столбцов - 5 из исходной таблицы и одной постоянной колонки.

1

SELECT clause указывает столбцы, подлежащие возврату. * сообщает серверу о возврате всех столбцов, доступных для каждой записи в таблице. 8 означает возврат значения 8 для каждой записи в таблице.

1

Предложение SELECT похоже на цикл, который проходит через все строки в предложении FROM, при условии JOINs и GROUP BY.

В вашем простом запросе первая версия говорит «вернуть все значения в строках для каждой строки в таблице."

Вторая версия говорит„возвращает значение 8 для каждой строки в таблице“.

Это, как работает SQL, и не зависит от конкретного двигателя.

2

Вы выберите колонны после SELECT как SELECT col1, col2, col3 FROM table. Если вы наберете 8 вы «просто получить постоянную 8».

Если вы хотите только 8 строк, в SQL сервере указать его SELECT TOP 8 col1, col2 FROM table.

Если вы хотите узнать больше о SQL вообще здесь хорошее начало: http://www.w3schools.com/sql/default.asp

1

Все ответы имеет очень хороший подход, MS SQL хорошо запрограммирован для select * синтаксиса. и когда мы пишем select 8, он пытается найти потребность разработчика. только на основе таблицы, условия, которые мы применяем. select 8 будет вести себя так же, как * с точки зрения количества строк, например, просто выбрать случайные where условия и применить на обоих 8 and * количество строк будет одинаковым, но количество столбцов в случае * будет точной в таблице, и в случае 8 он будет только одним, поскольку 8 не является зарезервированным литералом для sql, он занимает 8 в качестве имени жесткого кодированного столбца и значение которого будет определено программистом либо жестко закодированным, либо некоторым рецептура.

0

Для этого следует учесть, что вы делаете запрос к таблице TABLE_NAME, эта таблица должна иметь 10 строк, теперь, когда вы делаете запрос,

SELECT * FROM TABLE_NAME 

Вы говорите, что он должен принести все строки из таблицы и показать все столбцы, но если вы сделаете это

SELECT 8 FROM TABLE_NAME 

вы говорите, что он должен принести все строки из таблицы, но вместо того чтобы показывать столбец F или в таблице будет отображаться 8, и он будет делать это 10 раз, потому что таблица имеет 10 строк; Вы можете выполнить этот запрос

SELECT 8 

И он будет показывать только одну строку с 8 значение, потому что вы не делаете запрос к таблице, если вы делаете запрос к X таблицы с этим он покажет вам, как N строк в виде N строк имеет таблицу, но только с 8.

Смежные вопросы