Автор: Вардомацкая Елена Юрьевна, ст. преподаватель кафедры математики и информационных технологий УО "Витебский государственный технологический университет".
Язык SQL, соответствующий последним стандартам SQL:2003, SQL:1999 представляет собой очень богатый и сложный язык, все возможности которого трудно сразу осознать и тем более понять. Поэтому приходится разбивать язык на уровни. В одной из классификаций, предусмотренных стандартом SQL, этот язык разбивается на «базовый» (entry), «промежуточный» (intermediate) и «полный» (full) уровни. Базовый уровень содержит около сорока команд, которые можно сгруппировать в категории по их функциональному назначению.
Рассмотрим команды SQL базового уровня по категориям.
Для примера создадим базу данных Банк, отражающую следующие сведения:
Вид вклада
Код вклада
3. Ставка %
ФИО вкладчика
Дата
Сумма вклада
7. % в месяц уе
В таблицу Справочник включим данные 1,2 и 3 а в таблицу Сведения – 2 и 4-7. Предусмотрим не менее четырех видов вкладов групп, на каждом из которых хранят деньги не менее трех вкладчиков.
Т.о. таблицы базы данных могут иметь вид:
Справочник
Вид вклада | Код | Ставка % |
Валютный депозит | ВД | |
Валютный депозит накопительный | ВДН | |
Валютный депозит срочный | ВДС | |
Валютный текущий | ТВ |
Сведения
№ | ФИО | Код вклада | Дата | Сумма вклада | % в месяц уе |
Сергеев И. | ВД | 02.02.2009 | |||
Костин В. | ВД | 05.01.2009 | |||
Суворов А. | ВД | 10.01.2009 | |||
Петрова И. | ВДС | 02.02.2009 | |||
Соколова Н. | ВДС | 01.03.2009 | |||
Михайлова А. | ВДС | 02.02.2009 | |||
Орлова И. | ВДН | 02.02.2009 | |||
Богданова О. | ВДН | 05.01.2009 | |||
Купцова С. | ВДН | 05.01.2009 | |||
Архипов Н. | ТВ | 04.03.2009 | |||
Разин А. | ТВ | 02.02.2009 | |||
Пугачева А. | ТВ | 02.02.2009 |
|
Для того, чтобы с таблицами можно было работать как с единым целым, они должны быть связаны. Связь в данном случае устанавливается по полям [Код] таблицы Справочник и таблицы [Код вклада] таблицы Сведения.
К категории Описание данных относятся команды, позволяющие создавать, изменять и уничтожать БД и объекты БД (таблицы и представления).
§ Команда CREATE TABLE – Создает структуру таблицы
Формат: CREATE TABLE <имя таблицы>
({<имя поля> <тип данных>[<размер>] [<ограничения на поле>][<значение поля по умолчанию>] },...)
Например, по команде
*CREATE TABLE Справочник ([Вид вклада] CHAR(30), Код CHAR(5), [Ставка %] INT))
в БД создается структура таблицы, Справочник включающая поля: Вид вклада Вид вклада, Код, Ставка %. Поля Вид вклада и Код имеют символьный тип с размерами 30 и 5 символа соответственно, поле Ставка % имеет целый тип.
§ Команда DROP TABLE удаляет таблицу
Формат: DROP TABLE <имя таблицы>
Например, по команде DROP TABLE Справочник
таблица Справочник удаляется из БД.
§ Команда ALTER TABLE – изменяет описание таблицы
Формат: ALTER TABLE <имя таблицы>
({<имя поля> <тип данных>[<размер>] [<ограничения на поле>][<значение поля по умолчанию>] },...)
Например, по команде ALTER TABLE Сведения (Адрес CHAR(30))
в структуру таблицы Сведения добавляется новое поле Адрес, символьного типа размером 30 символов.
§ Команда CREATE VIEW – создает представление - это таблицы, содержимое которых извлекается из других таблиц БД, т.е. представление – это сохраненный запрос выбора.
|
Формат: CREATE VIEW <имя представления> AS <запрос>
[ WITH CHECK OPTION ]
К категории Внесение изменений в БД относятся команды, позволяющие добавлять, удалять и модифицировать данные в таблицах.
§ *Команда INSERT - добавляет новые записи в таблицу
Формат: INSERT INTO <имя таблицы> [{<имя поля1>},...]
VALUES ({<значение>},...)
Например, по команде
INSERT INTO Справочник VALUES (“Текущий рублевый ”, "ТР", 3)
в конец таблицыСправочник добавляется новая запись, в первое поле которой заносится значение “Текущий рублевый ”, во второе поле – значение "ТР", в третье поле –3.
§ Команда DELETE –удаляет записи из таблицы
Формат: DELETE FROM <имя таблицы> [ WHERE <условие>]
Например, по команде
DELETE FROM Сведения WHERE [код вклада] =”ТВ”
из таблицы Сведения удаляются все записи, у которых в поле [код вклада] хранится значение ТВ.
§ *Команда UPDATE Обновляет данные таблицы
Формат UPDATE < имя таблицы> SET
{<имя поля>=<выражение>},... [ WHERE <условие>]
В предложении UPDATE указывается имя обновляемой таблицы, в предложении SET указываются имена столбцов и выражение, изменяющее данные указанного поля. Часть WHERE является необязательной. Она позволяет отобрать строки, к которым будет применена модификация. Если условие отбора не задается, то операция модификации будет применена ко всем строкам таблицы.
Например, по команде
UPDATE Справочник SET [Ставка %] = 0.9*[Ставка %];
Значения процентных ставок по всем видам вкладов будет понижено на 10% (значения поля [Ставка %] будут уменьшены на 10%).
|
А по команде
UPDATE Справочник SET [Ставка %] = 1.1*[Ставка %]
WHERE Код = “ВДС”;
Значение процентной ставки по вкладам вида ВДС будет повышено на 10%.
Пример4 (потом после WHERE)
Для того, чтобы рассчитать значения поля [% в месяц уе] таблицы Сведения в зависимости от значения %-ой ставки, размещенной в таблице Справочник, необходимо запрос на обновление составлять на основании двух таблиц, установив между ними связь.
UPDATE Справочник, Сведения SET [% в месяц уе] = [Ставка %]/100*[Сумма вклада]/12
WHERE Справочник.Код=Сведения.[Код вклада];
Сведения | |||||
№ | ФИО | Код вклада | Дата | Сумма вклада | % в месяц уе |
Сергеев И. | ВД | 02.02.2009 | |||
Костин В. | ВД | 05.01.2009 | |||
Суворов А. | ВД | 10.01.2009 | |||
Петрова И. | ВДС | 02.02.2009 | |||
Соколова Н. | ВДС | 01.03.2009 | |||
Михайлова А. | ВДС | 02.02.2009 | |||
Орлова И. | ВДН | 02.02.2009 | |||
Богданова О. | ВДН | 05.01.2009 | |||
Купцова С. | ВДН | 05.01.2009 | 83,33334 | ||
Архипов Н. | ТВ | 04.03.2009 | |||
Разин А. | ТВ | 02.02.2009 | 2,5 | ||
Пугачева А. | ТВ | 02.02.2009 |
Лекция 5
ВЫБОР ДАННЫХ ИЗ БАЗЫ
План лекции
1. Оператор выбора данных SELECT
2. Устранение избыточности данных
3. Предложение WHERE
4. Функции агрегирования. Параметры GROUP BY и HAVING
5. Упорядочивание выходных полей
6. Вложение запросов