Язык SQL. Выборка данных (оператор SELECT)
Итак, в БД forum есть три таблицы:
· users (пользователи);
· topics (темы);
· posts (сообщения).
Необходимо посмотреть, какие данные в них содержатся. Для этого в SQL существует оператор SELECT. Синтаксис его использования следующий:
SELECT что_выбрать FROM откуда_выбрать;
Вместо «что_выбрать» необходимо указать либо имя столбца, значения которого хотим увидеть, либо имена нескольких столбцов через запятую, либо символ звездочки (*), означающий выбор всех столбцов таблицы. Вместо «откуда_выбрать» следует указать имя таблицы.
Сначала посмотрим все столбцы из таблицы users:
SELECT * FROM users;
Это все данные, которые были внесены в таблицу.
Предположим, что необходимо посмотреть только столбец id_user (так как для заполнения таблицы topics (темы) надо знать, какие id_user есть в таблице users). Для этого в запросе укажем имя этого столбца:
SELECT id_user FROM users;
Если необходимо посмотреть, например, имена и e-mail пользователей, то надо перечислить интересующие столбцы через запятую:
SELECT name, email FROM users;
Аналогично, можно посмотреть, какие данные содержат и другие таблицы.
Сначала посмотрим, какие существуют темы:
SELECT * FROM topics;
Сейчас в таблице всего 4 темы, а если их будет 100? Хотелось бы, чтобы они выводились, например, по алфавиту. Для этого в SQL существует ключевое слово ORDER BY, после которого указывается имя столбца, по которому будет происходить сортировка. Синтаксис следующий:
SELECT имя_столбца FROM имя_таблицы ORDER BY имя_столбца_сортировки;
По умолчанию сортировка идет по возрастанию, но это можно изменить, добавив ключевое слово DESC.
Теперь данные отсортированы в порядке по убыванию.
Сортировку можно производить сразу по нескольким столбцам. Например, следующий запрос отсортирует данные по столбцу topic_name, и если в этом столбце будет несколько одинаковых строк, то в столбце id_author будет осуществлена сортировка по убыванию:
Сравните результат с результатом предыдущего запроса.
Очень часто пользователю не нужна вся информация из таблицы. Например, необходимо узнать, какие темы были созданы пользователем sveta (id = 4). Для этого в SQL есть ключевое слово WHERE, синтаксис у такого запроса следующий:
SELECT имя_столбца FROM имя_таблицы WHERE условие;
Для нашего примера условием является идентификатор пользователя, т.е. нужны только те строки, в столбце id_author которых стоит 4 (идентификатор пользователя sveta):
SELECT * FROM topics WHERE id_author=4;
Теперь необходимо узнать, кто создал тему «велосипеды»:
Конечно, было бы удобнее, чтобы вместо id автора, выводилось его имя, но имена хранятся в другой таблице. Далее рассмотрим, как выбирать данные из нескольких таблиц. А пока узнаем, какие условия можно задавать, используя ключевое слово WHERE.
Оператор | Описание |
= (равно) | Отбираются значения равные указанному. Пример: SELECT * FROM topics WHERE id_author=4; Результат: |
> (больше) | Отбираются значения больше указанного. Пример: SELECT * FROM topics WHERE id_author > 2; Результат: |
< (меньше) | Отбираются значения меньше указанного. Пример: SELECT * FROM topics WHERE id_author < 3; Результат: |
>= (больше или равно) | Отбираются значения большие и равные указанному. Пример: SELECT * FROM topics WHERE id_author >= 2; Результат: |
<= (меньше или равно) | Отбираются значения меньшие и равные указанному. Пример: SELECT * FROM topics WHERE id_author <= 3; Результат: |
!= (не равно) | Отбираются значения не равные указанному. Пример: SELECT * FROM topics WHERE id_author != 1; Результат: |
IS NOT NULL | Отбираются строки, имеющие значения в указанном поле. Пример: SELECT * FROM topics WHERE id_author IS NOT NULL; Результат: |
IS NULL | Отбираются строки, не имеющие значения в указанном поле. Пример: SELECT * FROM topics WHERE id_author IS NULL; Результат: Empty set – нет таких строк. |
BETWEEN (между) | Отбираются значения, находящиеся между указанными. Пример: SELECT * FROM topics WHERE id_author BETWEEN 1 AND 3; Результат: |
IN (значение содержится) | Отбираются значения, соответствующие указанным. Пример: SELECT * FROM topics WHERE id_author IN (1, 4); Результат: |
NOT IN (значение не содержится) | Отбираются значения, кроме указанных. Пример: SELECT * FROM topics WHERE id_author NOT IN (1, 4); Результат: |
LIKE (соответствие) | Отбираются значения, соответствующие образцу. Пример: SELECT * FROM topics WHERE topic_name LIKE 'вел%'; Результат: Возможные метасимволы оператора LIKE будут рассмотрены ниже. |
NOT LIKE (не соответствие) | Отбираются значения, не соответствующие образцу. Пример: SELECT * FROM topics WHERE topic_name NOT LIKE 'вел%'; Результат: |
Дата добавления: 2018-05-10; просмотров: 1924;