Структура команды SQL. Типы данных. Выражения
Каждая команда SQL начинается с действия – ключевого слова или группы слов, описывающих выполняемую операцию. Например, INSERT (добавить), DELETE (удалить), COMMIT (завершить), CREATE TABLE (создать таблицу).
Примечание. В языках программирования ключевое слово – название, зарезервированное для определенных целей, например, названий команд, устройств и т.п.
После действия может следовать одно или несколько предложений. Предложение описывает данные, с которыми работает команда, или содержит уточняющую информацию о действии, выполняемом командой. Каждое предложение начинается с ключевого слова, такого как, например, WHERE (где), FROM (откуда), INTO (куда), HAVING (имеющий). Многие предложения содержат имена таблиц и полей БД; некоторые – константы и выражения.
Имена таблиц, полей и пользователей должны содержать от 1 до 18 символов, начинаться с буквы и не содержать пробелов или специальных символов пунктуации. В качестве имен нельзя использовать ключевые слова SQL.
В языке SQL определен ряд типов, которые представлены в таблице ниже.
Таблица 1. Базовые типы данных SQL
Тип | Описание |
CHARACTER(n) или CHAR(n) | Символьные строки длиной в n символов. Максимальная длина – 255 символов |
DATE, TIME, TIMESTAMP | Дата, время |
NUMERIC[(n,m)] | Точные числа, здесь n – общее количество цифр в числе, m – количество цифр слева от десятичной точки |
DECIMAL[(n,m)] или DEC [(n,m)] | Точные числа, здесь n – общее количество цифр в числе, m – количество цифр слева от десятичной точки |
INTEGER или INT | Целые числа от –2147483648 до 2147483647 |
SMALLINT | Целые числа от –32768 до 32767 |
FLOAT[(n)] | Числа большой точности, хранимые в форме с плавающей точкой. Здесь n – число байтов, резервируемое под хранение одного числа |
REAL | Число с плавающей точкой и одинарной точностью от -3.402823Е38 до 3.403823Е38 |
DOUBLE PRECISION | Число с плавающей точкой и двойной точностью от -1.79769313486232Е308 до 1.797....Е308 |
Описание команд языка SQL
Язык SQL, соответствующий последним стандартам SQL:2003, SQL:1999 представляет собой очень богатый и сложный язык, все возможности которого трудно сразу осознать и тем более понять. Поэтому приходится разбивать язык на уровни. В одной из классификаций, предусмотренных стандартом SQL, этот язык разбивается на «базовый» (entry), «промежуточный» (intermediate) и «полный» (full) уровни. Базовый уровень содержит около сорока команд, которые можно сгруппировать в категории по их функциональному назначению.
Рассмотрим команды SQL базового уровня по категориям.
Для примера создадим базу данных Банк, отражающую следующие сведения:
Вид вклада
Код вклада
3. Ставка %
ФИО вкладчика
Дата
Сумма вклада
В месяц уе
В таблицу Справочник включим данные 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. Вложение запросов