Структура команды 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. Вложение запросов