Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие СУБД 2011.pdf
Скачиваний:
68
Добавлен:
10.06.2015
Размер:
2.75 Mб
Скачать

45

VII. Структурированный язык запросов SQL, операторы манипулирования данными

Вид занятия – лабораторное занятие. Время занятия – 2 часа.

Программное обеспечение – среда Microsoft Access.

На занятии мы изучим одно из подмножеств SQL – язык манипулирования данными DML (Data Manipulation Language). DML осуществляет операции вставки, редактирования и удаления данных и базируется на инструкциях INSERT, UPDATE и DELETE.

Вставка новой записи – INSERT

Назначение оператора – вставка в таблицу одной и более строк.

INSERT INTO имя_таблицы

[(имя столбца.,…)]

VALUES

выражение запроса | конструктор значений таблицы | {DEFAULT VALUES}

Имя пополняемой таблицы указывается сразу после ключевых слов INSERT INTO. С помощью данного оператора также допускается вставка новой записи и в представление, при условии, что представление состоит из одной таблицы. Сразу за именем таблицы следует перечень столбцов, в которые мы собираемся внести новую информацию. Если список столбцов окажется неполным (в нём не будет явным образом указан весь их перечень), то в оставшиеся столбцы вносится значение по умолчанию. Если, в свою очередь значение по умолчанию не было определено заранее (при создании таблицы) и на столбец наложено ограничение NOT NULL, то работа оператора будет прервана. Ещё одним поводом для приостановки операции вставки новой записи будет попытка вставить новое значение в столбец, который самостоятельно генерирует новое значение (например, в столбцы автоинкрементного типа).

INSERT INTO Writer

(Surname, FName, LName, Born)

VALUES

(‘Пушкин’, ‘Александр’, ‘Сергеевич’, ‘26/05/1799’)

В команде на добавление новой строки перечисление столбцов не является обязательным, если Вы осуществляете вставку данных во все столбцы. Но в этом случае последовательность передаваемых значений должна чётко соответствовать физическому порядку столбцов таблицы.

Редактирование данных – UPDATE

Оператор осуществляет редактирование существующей записи.

UPDATE имя_таблицы

SET {имя_столбца={выражение | значение | NULL | DEFAULT}}.,… [WHERE предикат]

Минимальный код позволяющий исправить все записи в таблице выглядит следующим образом:

UPDATE Writer SET LName=‘Кукушкин’

© Осипов Д.Л., 2011

46

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

UPDATE Sales SET PplMoney= PplMoney*2

Ещё раз отметим, что приведённые примеры заставят СУБД внести изменения во все записи таблицы, поэтому старайтесь ограничивать набор редактируемых записей с помощью оператора WHERE.

UPDATE Writer SET Born= ’26/05/1799’

WHERE Surname= ‘Пушкин’ AND FName= ‘Александр’

Обратите внимание, что в данном случае синтаксис WHERE на сто процентов соответствует синтаксису WHERE в операторе SELECT. Вместе с тем есть и второй тип применения оператора WHERE WHERE CURRENT OF. Такая инструкция используется при работе с курсором. В таком случае будет отредактирована запись, на которой позиционирован курсор.

Во многих СУБД “редактирование” данных осуществляется следующим образом: строка со старой информацией помечается как удалённая, а в таблицу вставляется новая строка, с обновлёнными данными. А для того, чтобы не нарушить целостность данных в эту запись переносится старое значение первичного ключа.

Удаление записей – DELETE

Оператор DELETE предназначен для удаления строк из таблиц данных.

DELETE FROM имя_таблицы [{WHERE предикат}]

Минимальный синтаксис включает ключевые слова DELETE FROM и имя таблицы.

DELETE FROM Book

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

DELETE FROM Book WHERE Surname= ‘Толстой’ AND FName= ‘Лев’

Задание

Применительно к созданной вами БД разработайте запросы позволяющие:

1.очищать таблицы;

2.заполнять таблицы данными;

3.редактировать определённую строку в таблице;

4.удалять определённую строку в таблице.

Ставропольский государственный университет, кафедра КБ

47

VIII. Структурированный язык запросов SQL, операторы определения данных

Вид занятия – лабораторное занятие. Время занятия – 2 часа.

Программное обеспечение – среда Microsoft Access.

Язык определения данных DDL (Data Definition Language) в нацелен на решение вопросов создания CREATE и удаления DROP различных объектов базы данных – таблиц TABLE, представлений VIEW, индексов INDEX, курсоров CURSOR, определений доменов

DOMAIN, и т.д.

Основные типы данных SQL-92

Каждое поле в реляционной таблице базы данных SQL характеризуется определённым типом данных. Основные типы данных практически всех СУБД эквивалентны друг другу. Указание типа данных в SQL понадобится в первую очередь при создании таблиц. С достаточной степенью условности можно говорить о существовании семи основных типов данных SQL (по крайней мере, такое разделение предусматривает стандарт):

1.CHARACTER STRING (текст);

2.NATIONAL CHARACTER (символы национальной кодировки);

3.BIT STRING (двоичные данные);

4.APPROXIMATE NUMERIC (число, имеющее приближённое значение);

5.EXACT NUMERIC (точное число);

6.DATETIME (дата и время);

7.INTERVAL (период времени).

Текстовые данные, Character и National Character

Первые два типа данных представляют собой обычный текст, с той лишь разницей, что NATIONAL CHARACTER способен работать с национальным набором символов.

Спецификация

CHARACTER [n]

или

CHAR [n]

CHARACTER VARYNG [n]

или

VARCHAR [n]

NATIONAL CHARACTER [n]

или

NCHAR [n]

NATIONAL CHARACTER VARYING [n]

Таблица 8.1

Описание

Тип данных предназначен для создания текстовой строки фиксированной длины. Количество символов в строке определяется в квадратных скобках после указания типа данных – n. Если в поле типа CHAR помещается текстовое значение меньшего размера чем размерность поля, то оставшиеся позиции символов забиваются пробелами.

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

Строка специального (национального) символьного набора фиксированной длины.

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

© Осипов Д.Л., 2011

48

или

ся два байта.

NCHAR VARYING [n]

Двоичная последовательность Bit String

Тип данных “двоичная последовательность” предназначен для хранения последовательностей двоичной информации. Такой тип данных часто называют Binary Large Objects (BLOB). Тип данных достаточно универсален и позволяет хранить как простейшие логические данные, так и огромные изображения, звуковые файлы и т.д.

 

Таблица 8.2

Спецификация

Описание

BIT [n]

Битовая последовательность фиксированной длины. Аргумент n

 

устанавливает длину последовательности в битах. Если аргумент

 

отсутствует (установлен в 1), то тип данных используется для со-

 

здания полей логического типа (Да/Нет).

BIT VARYNG [n]

Битовая последовательность переменной длины. Максимальное зна-

 

чение битовой последовательности указывается в аргументе n.

На базе битовых последовательностей в различных СУБД реализованы свои собственные типы данных. Как уже упоминались ранее, эти типы данных умеют хранить большие объемы форматированного и неформатированного текста, изображения, OLE объекты, файлы мультимедиа и др.

Округлённые числа – Approximate Numeric

Тип данных для определения чисел с плавающей точкой, осуществляющий хранение числа в научном формате (мантисса плюс порядок) и имеет аргумент точность(n), но в отличие от типа numeric не имеет масштаба. По этой причине APPROXIMATE NUMERIC склонен к ошибке округления и предназначен для хранения значений не требующих высокой точности.

 

Таблица 8.3

Спецификация

Описание

REAL

Точность и предел значений определяется автоматически СУБД. Как

 

правило, занимает в памяти 6 байт и может хранить число в интерва-

 

ле от -3,4Е-38 до +3,4Е+38 с точностью до 7 цифр после запятой.

FLOAT [(n)]

Параметром n определяется (но не обязательно) минимальное значе-

 

ние точности. Как правило, занимает в памяти 8 байт (если значение

 

n не указано). Тип данных способен хранить число в интервале от

 

1,7Е-308 по +1,7Е-308 с точностью до 15 знаков.

DOUBLE

Точность определяется автоматически СУБД, но должна превышать

PRECISION

точность REAL.

Точные числа – Exact Numeric

Тип данных предназначен для хранения чисел, точно соответствующих их цифровой записи. При задании такого типа данных необходимо указать два аргумента: «точность» (n) и «масштаб» (m). Точность задаёт общее число значащих цифр, используемых при отображении числа. Масштаб определяет число значащих цифр справа от десятичной точки. Безусловно должно соблюдаться условие: точность больше масштаба (n>m). Аргумент «масштаб» не является обязательным и если его не указывать, то считается равным 0.

Ставропольский государственный университет, кафедра КБ

49

Спецификация

NUMERIC [(n[,m])]

DECIMAL [(n[,m])]

или

DEC [(n[,m])]

INTEGER

или

INT

SMALLINT

Таблица 8.4

Описание

Точное число, описываемое аргументами n и m.

В отличие от NUMERIC реально хранит число с большей точностью, чем определено в аргументе m. Другими словами говорят, что NUMERIC задаёт реальное значение точности, а DECIMAL – минимальное значение точности.

Тип данных, предназначен для хранения целых чисел. Это частный случай типа данных NUMERIC, у которого масштаб установлен в 0, а точность определена возможностями СУБД. Как правило, занимает в памяти 4 байта.

Тип данных предназначен для хранения малых целых чисел. Также как и INTEGER это частный случай типа данных NUMERIC. Как правило, занимает в памяти 2 байта.

Количество байт, необходимых для хранения NUMERIC и DECIMAL в памяти компьютера, состоит в прямой зависимости от размерности параметра n. Например, если Вы хотите хранить число из 15-16 значащих цифр потребуется 8 байт, 34-36 цифр – 16 байт.

Практически во всех СУБД для работы с денежными величинами на базе NUMERIC реализован свой собственный специализированный тип данных. Такие типы данных хранят действительные числа с точностью до 4-го знака после запятой.

Дата и время – DateTime

По сути, тип данных DateTime представляет собой запись с отдельными полями для хранения даты и времени.

Таблица 8.5

Спецификация

Описание

DATE

Тип данных включает три поля:

 

YEAR (год) – от 0001 до 9999

 

MONTH (месяц) – от 01 до 12

 

DAY (день) – от 01 до 31

 

Формат записи: “yyyy–mm–dd”.

 

Полное число позиций (вместе с разделителями) 10.

TIME [(n)]

Тип данных включает три поля:

 

HOUR (год), MINUTE (минута), SECOND (секунда). Если не указан ар-

 

гумент точности (n), то полное число позиций (вместе с разделителями)

 

равно 8, а формат записи: “hh:mm:ss”. Если Вы укажите аргумент точ-

 

ности, то получите возможность работать с долями секунд.

TIMESTAMP

Комбинация типов данных DATE и TIME.

[(n)]

 

Типы данных TIME и TIMESTAMP обладают ещё одним аргументом – WITH TIME ZONE. Аргумент предназначен для определения зонального времени.

Интервал – Interval

Тип данных предназначен для задания интервала времени между двумя значениями времени. Основное назначение Interval – осуществление приращения (уменьшения) переменной типа DateTime. Структура типа данных Interval состоит из таких же полей, что и

Ставропольский государственный университет, кафедра КБ