Автор работы: Пользователь скрыл имя, 19 Мая 2013 в 07:10, шпаргалка
Базы данных и файловые системы
СУБД определение, функции
СУБД определение, классификация
БД основные определения, классификация
Объекты базы данных
Физическая структура БД в SQL Server
Структурная часть реляционной модели
Фундаментальные свойства отношений
Реляционная алгебра Кодда
Целостность реляционных данных, стратегии поддержания ссылочной целостности
Этапы разработки баз данных
Нормальные формы отношений
Модель сущность-связь.
В коррелированных подзапросах внутренний запрос выполняется на основе информации, переданной из внешнего запроса, и наоборот.
Коррелированные запросы в параметре WHERE:
Определить Номер заказа и дату заказа для первого заказа каждого из клиентов
SELECT o1.CustomerID, o1.OrderID,o1.OrderDate
FROM Orders o1
WHERE o1.OrderDate=(SELECT MIN(o2.OrderDate) FROM Orders o2 WHERE o2.CustomerID=o1.CustomerID)
ORDER BY CustomerID
Коррелированные запросы в списке полей оператора SELECT:
Получить название компании и дату заказа, сделанного этой компанией в первый раз
SELECT cu.CompanyName,
(SELECT MIN(OrderDate) FROM Orders o WHERE o.CustomerID=cu.CustomerID)
FROM Customers cu
19) Операторы DML
DML (Data Manipulation Language) - язык манипулирования данными, который используется для манипулирования информацией внутри объектов реляционной базы данных посредством трех основных команд: INSERT, UPDATE, DELETE.
Оператор вставки
Оператор INSERT вставляет новые строки в таблицу. При этом значения столбцов могут представлять собой константы либо являться результатом выполнения подзапроса.
INSERT INTO <имя_таблицы> [(имя_столбца [,...n])]
{VALUES (значение[,...n])
| <SELECT_оператор>}
При вставке строки в таблицу проверяются все ограничения, наложенные на данную таблицу. Это могут быть ограничения первичного ключа или уникального индекса, проверочные ограничения типа CHECK, ограничения ссылочной целостности. В случае нарушения какого-либо ограничения вставка строки будет отвергнута.
Первая форма оператора INSERT с параметром VALUES предназначена для вставки единственной строки в указанную таблицу.
Список столбцов указывает столбцы, которым будут присвоены значения в добавляемых записях.
Список может быть опущен, тогда подразумеваются все столбцы таблицы (кроме автоинкрементных), причем в определенном порядке, установленном при создании таблицы.
Если в операторе INSERT указывается конкретный список имен полей, то любые пропущенные в нем столбцы должны быть объявлены при создании таблицы как допускающие значение NULL, за исключением тех случаев, когда при описании столбца использовался параметр DEFAULT.
Список значений
должен следующим образом
Преодолеть ограничение на вставку одной строки в операторе INSERT при использовании VALUES позволяет искусственный прием использования подзапроса, формирующего строку с предложением UNION ALL. Так если нам требуется вставить несколько строк при помощи одного оператора INSERT, можно написать:
INSERT INTO Products
SELECT ‘Стул’, 1200
UNION ALL
SELECT ‘Стол', 3000
UNION ALL
SELECT ‘Шкаф', 5000
Вторая форма оператора INSERT с параметром SELECT позволяет скопировать множество строк из одной таблицы в другую.
Предложение SELECT может представлять собой любой допустимый оператор SELECT. Вставляемые в указанную таблицу строки в точности должны соответствовать строкам результирующей таблицы, созданной при выполнении вложенного запроса.
Все ограничения, указанные выше для первой формы оператора SELECT, применимы и в этом случае.
Поскольку оператор SELECT в общем случае возвращает множество записей, то оператор INSERT в такой форме приводит к добавлению в таблицу аналогичного числа новых записей.
Оператор удаления
Оператор DELETE предназначен для удаления группы записей из таблицы.
DELETE FROM <имя_таблицы>[WHERE <условие_отбора>]
Здесь параметр имя_таблицы представляет собой либо имя таблицы базы данных.
Если предложение WHERE присутствует, удаляются записи из таблицы, удовлетворяющие условию отбора. Если опустить предложение WHERE, из таблицы будут удалены все записи, однако сама таблица сохранится.
Для удаления всех записей из таблицы также может использоваться оператор TRUNCATE TABLE <имя_таблицы>
Оператор обновления
Оператор UPDATE применяется для изменения значений в группе записей или в одной записи указанной таблицы.
UPDATE имя_таблицы
SET имя_столбца=<выражение>[,...n]
[WHERE <условие_отбора>]
Параметр имя_таблицы – это либо имя таблицы базы данных.
В предложении SET указываются имена одного и более столбцов, данные в которых необходимо изменить.
Предложение WHERE является необязательным. Если оно опущено, значения указанных столбцов будут изменены во всех строках таблицы. Если предложение WHERE присутствует, то обновлены будут только те строки, которые удовлетворяют условию отбора.
Выражение представляет собой новое значение соответствующего столбца и должно быть совместимо с ним по типу данных.
20) Операторы DDL
DDL (Data Definition Language, DDL) - язык определения данных, который позволяет создавать и изменять структуру объектов базы данных.
Создание базы данных
Процесс создания базы данных в системе SQL-сервера состоит из двух этапов:
Информация размещается в соответствующих файлах, имеющих расширения *.mdf (для базы данных) и *.ldf. (для журнала транзакций). В файле базы данных записываются сведения об основных объектах (таблицах, индексах, просмотрах и т.д.), а в файле журнала транзакций – о процессе работы с транзакциями (контроль целостности данных, состояния базы данных до и после выполнения транзакций).
Создание базы данных в системе SQL-сервер осуществляется командой CREATE DATABASE
CREATE DATABASE имя_базы_данных
[ON [PRIMARY] [ <определение_файла> [,...n] ]
[,<определение_группы> [,...n] ] ]
[ LOG ON {<определение_файла>[,...n] } ]
[ FOR LOAD | FOR ATTACH ]
При выборе имени базы данных следует руководствоваться общими правилами именования объектов. Если имя базы данных содержит пробелы или любые другие недопустимые символы, оно заключается в ограничители (двойные кавычки или квадратные скобки). Имя базы данных должно быть уникальным в пределах сервера и не может превышать 128 символов.
Параметр ON определяет список файлов на диске для размещения информации, хранящейся в базе данных.
Параметр PRIMARY определяет первичный файл. Если он опущен, то первичным является первый файл в списке.
Параметр LOG ON определяет список файлов на диске для размещения журнала транзакций. Имя файла для журнала транзакций генерируется на основе имени базы данных, и в конце к нему добавляются символы _log.
При создании базы данных можно определить набор файлов, из которых она будет состоять. Файл определяется с помощью следующей конструкции:
<определение_файла>::= (
[ NAME=логическое_имя_файла,]
FILENAME='физическое_имя_файла
[,SIZE=размер_файла ]
[,MAXSIZE={max_размер_файла |UNLIMITED } ]
[, FILEGROWTH=величина_прироста ] )[,...n]
Здесь логическое имя файла – это имя файла, под которым он будет опознаваться при выполнении различных SQL-команд.
Физическое имя файла предназначено для указания полного пути и названия соответствующего физического файла, который будет создан на жестком диске. Это имя останется за файлом на уровне операционной системы.
Параметр SIZE определяет первоначальный размер файла; минимальный размер параметра – 512 Кб, если он не указан, по умолчанию принимается 1 Мб.
Параметр MAXSIZE определяет максимальный размер файла базы данных. При значении параметра UNLIMITED максимальный размер базы данных ограничивается свободным местом на диске.
При создании базы данных можно разрешить или запретить автоматический рост ее размера (это определяется параметром FILEGROWTH) и указать приращение с помощью абсолютной величины в Мб или процентным соотношением.
Дополнительные файлы могут быть включены в группу:
<определение_группы>::=
Изменение базы данных
Большинство действий
по изменению конфигурации базы данных
выполняется с помощью
ALTER DATABASE имя_базы_данных
{ ADD FILE <определение_файла>[,...n] [TO FILEGROUP имя_группы_файлов ]
| ADD LOG FILE <определение_файла>[,...n]
| REMOVE FILE логическое_имя_файла
| ADD FILEGROUP имя_группы_файлов
| REMOVE FILEGROUP имя_группы_файлов
| MODIFY FILE <определение_файла>
| MODIFY FILEGROUP имя_группы_файлов <свойства_группы_файлов>}
Как видно из синтаксиса, за один вызов команды может быть изменено не более одного параметра конфигурации базы данных. Если необходимо выполнить несколько изменений, придется разбить процесс на ряд отдельных шагов.
В базу данных можно добавить (ADD) новые файлы данных (в указанную группу файлов или в группу, принятую по умолчанию) или файлы журнала транзакций.
Параметры файлов и групп файлов можно изменять (MODIFY).
Для удаления из базы данных файлов или групп файлов используется параметр REMOVE. Однако удаление файла возможно лишь при условии его освобождения от данных. В противном случае сервер не разрешит удаление.
В качестве свойств группы файлов используются следующие:
READONLY – группа файлов используется только для чтения; READWRITE – в группе файлов разрешаются изменения; DEFAULT – указанная группа файлов принимается по умолчанию.
Удаление базы данных
Удаление базы данных осуществляется командой:
DROP DATABASE имя_базы_данных [,...n]
Удаляются все содержащиеся в базе данных объекты, а также файлы, в которых она размещается.
21) Операторы DDL (определение структуры таблицы)
DDL (Data Definition Language, DDL) - язык определения данных, который позволяет создавать и изменять структуру объектов базы данных.
Создание таблицы
Таблица – основной объект для хранения информации в реляционной базе данных. Она состоит из содержащих данные строк и столбцов, занимает в базе данных физическое пространство и может быть постоянной или временной.
Поле, также называемое в реляционной базе данных столбцом, является частью таблицы, за которой закреплен определенный тип данных. Каждая таблица базы данных должна содержать хотя бы один столбец.
Строка данных – это запись в таблице базы данных, она включает поля, содержащие данные из одной записи таблицы.
CREATE TABLE
[ имя_базы_данных.[ владелец ] . | владелец. ] имя_таблицы
( { < определение_столбца >
| название_столбца AS выражение_для вычисляемого_столбца
| < табличное_ограничение > ::= [ CONSTRAINT имя_ограничения ] }
| [ { PRIMARY KEY | UNIQUE } [ ,...n ]
)
[ ON { файловая_группа | DEFAULT } ]
< определение_столбца > ::= { название_столбца тип_данных }
[ [ DEFAULT выражение_для_значения_по_
| [ IDENTITY [ ( первоначальное_значение , инкремент )] ]
[ < ограничение_для_столбца > ] [ ...n ]
< ограничение_для_столбца > ::= [ CONSTRAINT имя_ограничения]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ]
[ON {filegroup | DEFAULT} ] ]
| [ [ FOREIGN KEY ]
REFERENCES имя_родительской_таьлицы [ ( назв_столбца ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ] ]
| CHECK ( логическое_выражение )
}
< табличное_ограничение > ::= [ CONSTRAINT имя_ограничения ]
{ [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED ]
{ ( имя_столбца [ ASC | DESC ] [ ,...n ] ) }
[ ON {файловая_группа | DEFAULT } ] ]
| FOREIGN KEY
[ (имя_столбца [ ,...n ] ) ]
REFERENCES имя_родительской_таьлицы [ ( назв_столбца [ ,...n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK ( условие_проверки )
}
Изменение таблицы