Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа7.doc
Скачиваний:
5
Добавлен:
06.11.2018
Размер:
461.82 Кб
Скачать
    1. Чтение данных из таблиц (select)

Рассмотрим операцию отбора данных из таблиц – получение из них полей и записей удовлетворяющих заданным условиям. Результат выполнения такого запроса (SELECT) называют выборкой.

SELECT [DISTINCT] {* | <список полей>}

FROM <список таблиц>

[WHERE <условия отбора>]

[ORDER BY <список полей для сортировки>]

[GROUP BY <список полей для группировки>

[HAVING <условия группирования>]]

[UNION <вложенный оператор SELECT>]

Результат выполнения этого запроса – выборка записей, отвечающих заданным в запросе условиям:

<список полей> - определяет состав полей выборки, эти поля могут принадлежать разным таблицам, которые указаны параметром FROM. <список таблиц> как и <список полей> не может быть пустым. Если в набор требуется включить все поля, то вместо их перечисления можно поставить звездочку – "*". Остальные параметры оператора являются необязательными. Пример выборки всех записей из таблицы:

SELECT * FROM NewTable.db

Параметр DISTINCT запрещает появление повторяющихся записей (т.е. имеющих одинаковые значения для всех полей). Пример создания выборки содержащей уникальные имена групп товаров:

SELECT DISTRICT Group FROM Tovar.db

Параметр WHERE задает условия отбора, которым должны удовлетворять записи выборки, т.е. обеспечивает фильтрацию. Кроме этого этот параметр используется для связывания таблиц. Эти условия могут содержать имена полей, операции сравнения, арифметические и логические (AND, OR…) операции, скобки, специальные функции LIKE, NULL, IN и другие.

Пример выборки записей со значением “Иванов” в поле Name:

SELECT * FROM Person.db WHERE UPPER(Name)='ИВАНОВ'

Функция UPPER приводит символы исходной строки к верхнему регистру. Следующий пример сроит выборку по части символьного поля (ищутся записи поле Name, в которых содержит “нов”):

SELECT * FROM Person.db WHERE UPPER(Name) LIKE '%НОВ%'

Здесь ключевое слово LIKE говорит о том, что ищем по частичному совпадению. '%' – замещает любое количество (в том числе и нулевое) произвольных символов. Замещение одного символа - '_'. Таким образом, выборка будет состоять из записей поле Name которых может содержать: Иванов, Иванова, КАРМАНОВ, Новикова… Следующий пример сложного критерия отбора:

SELECT * FROM Person.db WHERE (Date>=’1.01.1980’) AND (Date<’1.01.2000’)

Логическая операция AND пропустит только те записи которые удовлетворяют и первому и второму условию, т.е. записи значение Date которых лежит в 1980-2000гг. Операции OR и NOT также поддерживаются. Следующий пример на связывание таблиц:

SELECT * FROM Person.db AS P, Sity.db AS S WHERE P.Sity = S.Code

Здесь связываются таблицы Person.db и Sity.db по полям связи P.Sity и S.Code. Где P и S - псевдонимы для таблиц определенные при помощи ключевого слова AS.

Параметр ORDER BY содержит имена полей, определяющие порядок сортировки записей. По умолчанию сортировка выполняется по возрастанию, при необходимости сортировки поля по убыванию – после имени поля добавляется параметр DESC. Пример сортировки по полю Age по убыванию, а затем по Name – по возрастанию.

SELECT * FROM Person.db ORDER BY Age DESC, Name

Параметр GROUP BY позволяет выделить группы записей. Группой являются записи с одинаковыми значениями в полях указанных этим параметром. Следующий пример выводит имена людей и количество записей с соответствующим именем (функция COUNT) в таблице Book.db (количество выданных читателям книг):

SELECT P.Name, COUNT(P.Name) FROM Person.db AS P, Book.db AS B

WHERE P.Code = B.Person GROUP BY P.Name

Параметр HAVING используется для отбора записей внутри групп. Правило записи его условий аналогичны правилам условий отбора параметра WHERE. Пример показывающий имена товаров и даты их продаж с количеством, если их было продано более 50 в день:

SELECT Name, Date, Sum(Count) FROM Tovar.db GROUP BY Name, Date HAVING Sum(Count)>50

Операторы SELECT могут иметь сложную структуру и быть вложенными друг в друга. Параметр UNION служит для их объединения и содержит вложенный оператор SELECT, называемый подзапросом.

Оператор SELECT используется также и внутри других операторов, обеспечивая для их выполнения требуемый набор записей.