Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #28, МАРТ 2003 г.

Do you speak SQL?

GLAZъ (glazy@mail.ru)

Спецвыпуск Xakep, номер #028, стр. 028-044-3


Теперь давай что-нибудь добавим в таблицу. Добавление идет по команде

INSERT INTO имя_таблицы VALUES(выражение1,...);

Печатай в командной строке:

INSERT INTO news

->VALUES(NULL, 'Spez', 'Reading X-Spez',

->'04-02-2003', 'GLAZ', 'glazy@mail.ru');

Этим запросом мы заполнили все поля, кроме первого. Как ты помнишь, первое поле у нас - это счетчик новостей. Он у нас автоматически инкрементируется, поэтому его нам заполнять не нужно. Для этого в запрос вставляем NULL. Также можно не заполнять другие поля, значение в которых изменяется независимо от нас или могут принимать значение NULL. Например, если у автора нет мыла, в запрос мы можем вставить NULL. Если вдруг тебе надо заполнить только два поля из огромной таблицы, совсем необязательно вставлять во все остальные NULL. Для этого просто ты пишешь так:

INSERT INTO имя_таблицы (столбец1, столбец2) VALUES (значение1, значение2);

Запрос SELECT

Теперь надо как-то увидеть данные, которые мы ввели. Делается это запросом SELECT. Вообще, этот запрос является основной и самой важной частью языка SQL. Собственно, на нем и основывается весь язык. Синтаксис запроса SELECT может быть очень сложным. Но на практике обычно применяется облегченный вариант команды:

SELECT [DISTINCT | ALL] выражение [INTO имя_новой_таблицы]

FROM таблица/таблицы

[WHERE выражение_поиска]

[GROUP BY столбец1,...]

[ORDER BY условие_сортировки [ASC | DESC]];

Вот такой огромный запрос может быть. И это не предел! Давай рассмотрим каждую его часть.

- ALL. Если указан этот параметр, выводятся все данные, возвращенные запросом. Он стоит по умолчанию, поэтому его можно не указывать.

- DISTINCT. Результат запроса может содержать повторяющиеся данные. Вот если указан этот параметр, то повторяющиеся данные будут снесены. Удобно, например, когда тебе надо сосчитать число уникальных покупателей в твоем веб-магазине.

- <выражение> указывает, какие поля должны быть выбраны. Если указан символ *, то будут выбраны ВСЕ поля, имеющиеся в таблице (или таблицах).

- INTO. Полезная штука, если ты хочешь, чтоб данные, возвращенные запросом, хранились в новой таблице. Запрос сам создаст новую таблицу и ввернет туда полученные данные. Если таблица с таким именем уже существует, выполнение запроса будет прервано.

- FROM. Здесь ты указываешь, из каких таблиц ты хочешь, чтоб были выбраны данные. Если ты не используешь столбец из какой-нибудь таблицы в выборке данных, но используешь его в другом месте (GROUP BY или ORDER BY), он все равно должен быть написан в этом разделе.

- WHERE. Раздел предназначен для ограничения количества строк, включаемых в результат выборки. Будут включены строки, удовлетворяющие логическому условию, записанному в "выражении_поиска". Выражение может сравниваться с константой, содержать различные операторы и функции. Например:

SELECT * FROM table WHERE number='1'; или SELECT * FROM table WHERE number > '1';

Расскажу про основные.

Начнем с операторов сравнения:

= - Равно;

> - Больше;

< - Меньше;

Назад на стр. 028-044-2  Содержание  Вперед на стр. 028-044-4