Databases. Part X

Databases. Part X

Одно из самого важного в базах данных - это получение доступа к этим самым данным. Автор продолжает рассказывать об особенностях языка SQL и выборке данных из таблиц.

«Вот такие запросы…»

Следующая запись, посвященная инструкции выбора Select. Будем осваивать предложения from и where, то есть последовательно расширять синтаксис. Итак, на сегодня конструкция будет такой:

Предложение FROM

Когда осуществляется какой-то выбор, то первое что делает человек - это говорит, что он выбирает, то есть формирует <select_list>. Пример: «Я выбираю крепкий сон и здоровое питание» - типичный <select_list>, о котором мечтает каждый. Дальше необходимо указать, откуда все это взять, а взять можно из <table_sourse>. Источником, в котором находятся нужные данные, может быть таблица или две таблицы, или…. три таблицы… :)

С одной таблицей все просто:

SELECT поле1, поле2, …, поле N

FROM таблица1

Выбираем все наименования товаров из магазина:

SELECT Название FROM Товары

Выбираем телефонные номера всех сотрудников:

SELECT Фамилия, Номер_телефона FROM Сотрудники

Но, если таблиц становится больше одной, их необходимо соединять. Это можно сделать разными способами. Первый сейчас будет представлен в виде страшной конструкции, а вот второй (а может еще и третий есть…) я как-нибудь попозже расскажу :whistle: Смотрим соединение:

SELECT поле1, поле2, …, поле N

FROM таблица1 INNER JOIN таблица2

ON таблица1.поле = таблица2.поле

Вообще INNER JOIN – это соединение по эквивалентности… Но поскольку и так понятно, что на математику все забили, приведу пример:

Эпизод 1. В библиотеке

Предположим, что есть человек, который любит читать. Теперь нужно решить, куда его отправить… Предлагаю сначала отправить его в библиотеку. На вопрос библиотекаря, что хочет молодой человек, он быстро формулирует ответ, что с удовольствием почитал бы что-нибудь из отечественной фантастики SELECT название FROM книги INNER JOIN авторы ON книги. код_автора = авторы. код_автора WHERE авторы. национальность = “Русский” AND книги. жанр = “фантастика”. Тогда библиотекарь говорит, что ей нужно посмотреть, какие книги она может предложить SELECT название FROM книги z1 INNER JOIN авторы ON z1.код_автора = авторы. код_автора WHERE авторы. национальность = “Русский” AND книги. жанр = “фантастика” AND NOT EXISTS (SELECT * FROM книги z2 INNER JOIN абонемент ON z2.код_книги=абонемент. код_книги WHERE отметка_о_возврате IS NULL AND z1.код_книги=z2.код_книги) и предлагает на выбор несколько книг. «Отлично, - отвечает читатель, - я возьму «Метро 2033» Глуховского» SELECT * FROM книги INNER JOIN авторы ON книги. код_автора = авторы. код_автора WHERE авторы. фамилия=”Глуховский” AND книги. название=”Метро 2033”. «Конечно, - говорит библиотекарь, - остается только заполнить формуляр» INSERT INTO абонемент SELECT код_читателя, код_книги, NOW(), 30, false FROM читатели, книги WHERE читатели. фамилия=”Березин” AND читатели. имя=”Владимир” AND книги. название=”Метро 2033”.

Продолжение в следующей серии = )) По-моему, неплохой диалог получился :whistle: Для лучшего понимания, предлагаю почитать по ролям :D :D :D

Обратите внимание на предложение WHERE. Оно позволяет задать условие на выбор записей. Если нужно в итоге получить не все подряд, то смело ставим в нем свои условия. Условия могут быть разные:

- Равно, не равно и т. д. =, <>, >=, <=

- Логика OR, AND, NOT

- Существует EXISTS

- Есть IS

- Входит IN

- Соответствует LIKE

- В диапазоне BETWEEN

Вывести фамилии всех сотрудников, у которых зарплата в этом месяце была меньше 20000 рублей:

SELECT Фамилия FROM Сотрудники INNER JOIN Зарплата ON

Сотрудники. Код_сотрудника=Зарплата. Код_сотрудника WHERE

Зарплата. Сумма<20000 AND DATEPART(“m”, Зарплата. Дата_начисления) =

DATEPART(“m”,NOW())

Вывести наименования просроченного товара на 1 складе:

SELECT Наименование FROM Товар INNER JOIN Отгрузки ON

Товар. Код_товара=Отгрузки. Код_товара WHERE

Номер_склада=1 AND DATEADD(“d”, Срок_хранения, Дата_отгрузки)<NOW()


Карта сайта


Информационный сайт Webavtocat.ru