
- •История развития субд.
- •Информационные системы. Основные функции и области применения.
- •Банк данных и его компоненты.
- •Классификация моделей представления данных
- •Сетевая модель данных. Достоинства и недостатки
- •Иерархическая модель данных. Достоинства и недостатки
- •Классификация программ субд
- •Общие понятия реляционного подхода к организации баз данных. Основные концепции и термины
- •Первичный и внешний ключи. Индексы
- •Реляционная алгебра. Основные операции
- •Реляционное исчисление
- •Проектирование реляционных баз данных с использованием нормализации
- •Целостность баз данных. Каскадное удаление и изменение данных.
- •Структуры внешней памяти. Хранение отношений. Индексы. Методы организации индексов. Служебная информация
- •Журнализация изменений бд
- •Сериализация транзакций. Синхронизационные захваты. Метод временных меток
- •Синхронизационные захваты
- •Транзакция. Уровни изолированности пользователей
- •Функции и основные возможности языка sql.
- •Отличие sql от процедурных языков программирования.
- •Интерактивный и встроенный sql
- •Типы данных sql
- •4.1. Тип данных «строка символов»
- •Varchar[(длина)]
- •4.2 Числовые типы данных
- •4.3 Дата и время
- •4.4 Неопределенные или пропущенные данные (null)
- •Простейшие select-запросы. Синтаксис
- •Операторы in, between, like, is null
- •Агрегирование и групповые функции. Упорядочение выходных полей
- •Команды манипулирования данными. Использование подзапросов в insert
- •Использование подзапросов, основанных на таблицах внешних запросов
- •Использование подзапросов с delete
- •Использование подзапросов с update
- •Основные особенности архитектуры клиент-сервер
- •Организация данных в InterBase.
- •InterBase и область его применения
- •Описание данных на основе sql Организация данных в InterBase. Типы данных.
- •Домены. Создание доменов. Изменение доменов. Удаление доменов.
- •Индексы. Создание индексов. Изменение индекса. Восстановление индекса. Удаление индекса.
- •4.1 Создание индексов
- •4.3. Восстановление индекса
- •4.4 Удаление индекса
- •Исключения. Создание исключения. Изменение исключения. Удаление исключения
- •Триггеры и их назначение. Команды создания, удаления и модификации триггеров и хранимых процедур.
- •Работа с blob и функции, определенные пользователем
- •Объявление внешней функции
Простейшие select-запросы. Синтаксис
Все запросы на получение практически любого количества данных из одного или нескольких отношений выполняются с помощью единственного предложения SELECT. В общем случае результатом реализации предложения SELECT является другое отношение. К этому новому (рабочему) отношению может быть снова применена операция SELECT и т.д., т.е. такие операции могут быть вложены друг в друга. Представляет исторический интерес тот факт, что именно возможность включения одного предложения SELECT внутрь другого явилось мотивацией использования прилагательного "структуризированный" в названии языка SQL.
Предложение SELECT может использоваться как:
самостоятельная команда на получение и вывод кортежей отношения, сформированного из столбцов и кортежей одного или нескольких отношений (представлений);
в качестве вложенного подзапроса;
фраза выбора в командах определения схемы данных и модификации отношений;
средство присвоения глобальным переменным значений кортежей сформированного отношения (INTO-фраза).
1. Простейшие SELECT-запросы
Упрощенный синтаксис оператора SELECT выглядит следующим образом:
SELECT [DISTINCT] <список атрибутов>
FROM<список таблиц>
[WHERE<условие выборки>]
[ORDERBY< список атрибутов >]
[GROUPBY< список атрибутов >]
[HAVING<условие>]
[UNION<выражение с оператором SELECT>];
В квадратных скобках указаны элементы, которые могут отсутствовать в запросе.
Ключевое слово SELECT сообщает базе данных, что данное предложение является запросом на извлечение информации. После слова SELECT через запятую перечисляются наименования полей (список атрибутов), содержимое которых запрашивается.
Обязательным ключевым словом в предложении-запросе SELECT является слово FROM (из). За ним указывается список разделенных запятыми имен таблиц, из которых извлекается информация.
Например:
SELECT NAME, SURNAME
FROM STUDENT;
Любой SQL-запрос должен заканчиваться символом «;».
Приведенный запрос осуществляет выборку всех значений полей NAME и SURNAME из таблицы STUDENT. Результатом является таблица, состоящая из двух столбцов.
Порядок следования столбцов в этой таблице соответствует порядку полей, указанному в запросе, а не их порядку во входной таблице STUDENT.
Если необходимо вывести значения всех столбцов таблицы, то можно вместо перечисления их имен использовать символ «*».
Пример:
SELECT *
FROM STUDENT;
В данном случает результатом выполнения данного запроса будет являться таблица STUDENT полностью.
Получаемые в результате выполнения SQL-запроса таблицы не в полной мере отвечают определению реляционного отношения: в них могут оказаться кортежи с одинаковым значением атрибутов.
Например: получить список названий городов, где проживают студенты, сведения о которых находятся в таблице STUDENT:
SELECT CITY
FROMSTUDENT;
Результатом этого запроса будет являться таблица, в которой несколько раз повторяется значение поля CITY: Воронеж.
Для исключения из результата SELECT-запроса повторяющихся записей используется ключевое слово DISTINCT. Если запрос SELECT извлекает множество полей, то DISTINCT исключает дубликаты строк, в которых значения всех выбранных строк идентичны.
Пример: преобразовать запрос, исключив дубликаты строк:
SELECT DISTINCT CITY
FROM STUDENT;
Ключевое слово ALL, в отличие от DISTINCT, оказывает противоположное действие, то есть при его использовании повторяющиеся строки включаются в состав выходных данных. Режим, задаваемый ключевым словом ALL, действует по умолчанию, поэтому в реальных запросах для этих целей оно практически не используется.
Использование в операторе SELECT предложения, определяемого ключевым словом WHERE (где), позволяет задавать выражение условия (предикат), принимающее значение истина или ложь для значений полей строк таблиц, к которым обращается оператор SELECT. Предложение WHERE определяет, какие строки должны быть выбраны. В таблицу, являющуюся результатом запроса, включаются только те строки, в которых предикат, указанный в предложении WHERE, принимает значение истина.
Пример:
Написать запрос, выполняющий выборку имен всех студентов с фамилией Петров, сведения о которых находятся в таблице STUDENT.
SELECT SURNAME, NAME
FROM STUDENT
WHERE SURNAME=’Петров’;
В задаваемых в предложении WHERE условиях могут использоваться операции сравнения, а также логические операторы AND, OR, NOT.
Например, запрос для получения имен и фамилий студентов, обучающихся на третьем курсе и получающих стипендию:
SELECT NAME, SURNAME
FROM STUDENT
WHERE KURS=3 AND STIPEND>0;