Оператор SELECT. Выбор данных из таблицы. Псевдонимы столбцов. Удаление повторяющихся строк

Страницы работы

Содержание работы

Тема 6. SQL

Одним из языков, появившихся в результате разработки реляционной модели данных, является язык Structured Query Language (SQL), который превратился в стандартный язык реляционных БД. SQL является примером языка с трансформирующей ориентацией, языка предназначенного для работы с таблицами с целью их преобразования. Состоит из двух компонентов: языка DDL для определения структур данных (команды CREATE, ALTER, DROP) и языка DML для выборки и обновления данных (команды SELECT, INSERT, UPDATE, DELETE). Язык содержит только конструкции определения и манипулирования данными.

При записи конструкций на языке SQL рекомендуется для улучшения восприятия:

- каждую фразу оператора начинать с новой строки;

- фразы одного оператора выровнены по левому краю;

- если фраза имеет сложную структуру части фразы начинать с новой строки с некоторым сдвигом относительно начала самой фразы.

6.1 Оператор SELECT

Оператор позволяет выбрать строки, столбцы, значения из одной или нескольких таблиц

SELECT столбцы

FROM таблицы

[JOIN объединение]

[WHERE условие поиска]

[GROUP BY группируемые столбцы]

[HAVING условие поиска]

[ORDER BY сортируемые столбцы]

Выбор данных из таблицы

1. Выбор одного столбца

SELECT сity

FROM authors

2. Выбор нескольких столбцов таблицы

SELECT au_fname, au_lname, сity

FROM authors

3. Выбор всех столбцов таблицы

SELECT *

FROM authors

Псевдонимы столбцов

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

SELECT au_fname AS “ФАМИЛИЯ”,

au_lname AS “ИМЯ, сity AS “ГОРОД

FROM authors

Примечание. Конструкция AS применяется для именования столбцов, содержащих вычисляемое выражение.

Удаление повторяющихся строк

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

SELECT DISTINCT state

FROM authors

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

Обработка текстовых данных

Сортировка строк

Для реляционной модели порядок строк не имеет значения, поэтому при выполнении запроса строки выдаются в произвольном порядке, если не задана инструкция сортировки ORDER BY. Значения поля можно сортировать по возрастанию ASC, либо по убыванию DESC. По умолчанию принимается восходящий порядок.

SELECT au_fname,  au_lname, сity

FROM authors

ORDER BY au_lname ASC

Можно перечислить через запятую имена сортируемых столбцов. Тогда сортировка производится сначала по первому столбцу, строки, у которых равные значения по этому столбцу, сортируются по второму столбцу, указанному в списке и т.д. В конструкции ORDER BY можно указать не имя столбца, а его порядковый номер в списке выбираемых стобцов.

SELECT au_fname,  au_lname, сity

FROM authors

ORDER BY 3, 2

Сортировка будут выполняется по городам, потом по фамилиям.

Примечание. Одни СУБД трактуют значение null как наивысшее (Oracle, MySQL), другие – как низшее.

Примечание. Некоторые СУБД накладывают ограничение на тип столбцов, которые можно использовать в инструкции ORDER BY. Например, в Microsoft SQL Server нельзя сортировать по столбцам ntext, text, image.

В инструкции ORDER BY можно указать псевдонимы столбцов.

SELECT au_fname AS “First_name”,

au_lname AS “Last_name”, сity

FROM authors

ORDER BY “Last_name” ASC

Можно выполнить сортировку по столбцу, не входящему в состав выбранных

SELECT сity, state

FROM authors

ORDER BY zip

Фильтрация строк

Оператор SELECT содержит предложение WHERE условие отбора. Фильтрация осуществляется так, что отбираются строки для которых условие принимает значение истины. Применяются 5 типов условий:

- сравнения:                                        > , < , >= , <= , <> , = ,

- сопоставление с образцом              LIKE ,

- фильтрация диапазона                    BETWEEN ,

- фильтрация списка                          IN ,

- проверка на null                               IS NULL .

SELECT title_name,

price * sales AS “Доход”

FROM titles

WHERE price * sales > 1000000

Выбрать названия книг, доход от которых превысил 1 млн.

В условии нельзя использовать агрегатные функции, например SUM, COUNT.

Оператор LIKE всегда производит сравнение с шаблоном значений, котором допускаются метасимволы % (любая цепочка) и _ (один символ).

SELECT au_fname, au_lname

FROM authors

WHERE  au_lname LIKE “Kel%”

SELECT au_fname, au_lname

FROM authors

WHERE  au_lname LIKE “__ll%”

Оператор IN равносилен объединению нескольких условий операторами OR, соответственно NOT IN – операторами AND.

SELECT title_id, advance

FROM royalties

WHERE advance IN (0.00, 1000.00, 5000.00)

Перечислить названия книг, за которые выплачен аванс в размере 0, 1000 или 5000.

SELECT title_id, pubdate

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Конспекты лекций
Размер файла:
521 Kb
Скачали:
0