Ответы на билеты по дисциплине Базы данных. Базы данных. Вопросы к экзамену по дисциплине Базы данных
Скачать 0.68 Mb.
|
DISK INITNAME = <’Логическое имя’>, PSYSNAME = <’Физическое имя’>, VDEVNO = <Номер устройства>, SIZE = <Размер> [, VSTART = <Адрес>] Логическое имя – это имя, используемое в SQL-выражениях. Логическое имя должно соответствовать правилам SQL Server на идентификаторы и быть заключено в одинарные кавычки. Вот эти правила: Имя объекта должно иметь длину в пределах от 1 до 30 символов. Первым символом должна быть буква. Имя может содержать буквы, цифры и символы #, $, _. Пробелы запрещаются. Зарезервированные слова Transact-SQL запрещены. Физическое имя– это буква дисковода, полный путь и имя файла (устройства). Естественно, что путь должен удовлетворять правилам операционной системы. Номер виртуального устройства – это идентификатор устройства. Он может принимать значения от 0 до 255. Идентификатор 0 зарезервирован для устройства master. С помощью параметра SIZE устанавливается размер устройства. Размер измеряется в страницах. Параметр VSTART необходим только в определенных случаях. Он представляет собой стартовое смещение в страницах. Допустим, что мы получили заказ на разработку приложения для учета факультетов, кафедр, преподавателей, студентов и т.д. в нашем университете. Создадим два устройства – для БД и для журнала транзакций. DISK INIT NAME = ‘facultet’, PHYSNAME = ‘c:\mssql\data\facultet.dat’, VDEVNO = 11, SIZE = 5120 DISK INIT NAME = ‘f_log’, PHYSNAME = ‘c:\mssql\data\f_log.dat’, VDEVNO = 12, SIZE = 5120 Приведите пример команды создания базы данных. Какие системные и числовые типы данных MSSQLServer вам знакомы. Шаблоном базы является БД model, поэтому любая вновь созданная БД уже имеет некоторое количество системных таблиц. Команду создания баз данных CREATE DATABASE может выдать только системный администратор. Команда CREATE DATABASE имеет следующий синтаксис: CREATE DATABASE <Имя БД> [ON {DEFAULT | <Имя устройства>} [=<Рразмер>] [, <Имя устройства> [=< Размер>]]…]] [LOG ON <Имя устройства> [=<Размер>] [, <Имя устройства> [=<Размер>]]…] [FOR LOAD] Чтобы создать базу данных, пользователь должен находиться в БД master(эта БД должна быть открыта и являться текущей ). Этого можно добиться с помощью следующей команды: Use master При создании БД можно указать устройство, на котором она будет храниться, а также устройство, на котором будет размещаться журнал транзакций. CREATE DATABASE faculty ON facultet = 10 LOG ON f_log = 10 Все предложения команды CREATE DATABASE – опционные, то есть необязательные. Если при создании БД в команде не указано никакое устройство, SQL Server ищет устройство по умолчанию. Устройства по умолчанию назначаются либо с помощью системной процедуры sp_diskdefault, либо с помощью SQL Enterprise Manager. В качестве параметров указанная процедура принимает имя устройства БД и одно из значений defaulton или defaultoff. Таблица №1 - Системные типы данных SQL Server
Таблица №3 - Числовые типы данных
Приведите пример команды создания таблицы базы данных. Программно таблицы создаются с помощью команды CREATE TABLE, которая имеет следующий синтаксис: CREATE TABLE [<Имя БД>. [<Имя владельца>].] <Имя таблицы> ({<Имя поля> <Свойства поля> [<Ограничения> [<Ограничения> […<Ограничения>]]]| [[,]<Ограничения>]} [[,] {next_<Имя колонки> | <Ограничения>}…]) { ON <Имя сегмента>] где: <Имя БД> - имя базы данных, в которой будет находиться таблица. Можно не указывать данный аргумент, если находитесь в БД, в которой создается таблица. <Имя владельца> - владелец создаваемой таблицы. <Имя таблицы> - название таблицы, которое должно удовлетворять правилам наименованных объектов SQL Server и быть уникальным в БД. У вас должны быть права на эту операцию. Если у вас есть права на создание таблицы в какой-либо БД, то можно, находясь в ней, создавать таблицы в другой БД, полностью указывая к ней путь в аргумеyте <Имя БД>. В том случае, если не указывается имя пользователя, необходимо ставить вторую точку после имени базы данных: CREATE faculty..faculty (f_name char(40)) <Имя поля> - имя столбца, которое должно удовлетворять правилам SQL Server и быть уникальным в таблице. Удаление таблицы базы данных. Изменение определения таблицы. DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...] [RESTRICT | CASCADE] Этот оператор удаляет таблицу или таблицы из текущей базы данных. tbl_name - Имя удаляемой таблицы. IF EXISTS - Если указан этот параметр, то при попытке удаления несущестующей таблицы ошибки не возникнет. В противном случае возникнет ошибка выполнения команды. RESTRICT и CASCADE - Не несут никакой функциональности. Оставлены для упрощения переноса программы. В следующем примере производится удаление таблицы users: DROP TABLE `users Иногда приходиться выполнять распоряжения по изменению структуры таблицы или всей базы данных. Для этих целей используется оператор ALTER. Синтаксис оператора: ALTER <тип_объекта>, <имя_объекта> Оператор может использоваться с следующими типами объектов: DATABASE (для модификации параметров базы данных), TABLE (для модификации раннее созданных таблиц). Параметры передаваемые в ALTER TABLE: ADD добавление столбца в таблицу DROP удаление столбца из таблицы Например: ALTER TABLE [dbo].[University] ADD [CreationDate] [Date] NOT NULL Перечислите основные этапы создания базы данных в графическом режиме. Что понимается под ER – диаграммой в MSSQLServer. Для создания базы данных в окне Object Explorer выбираем объект «Databases» и пункт «New database…». Появиться диалоговое окно создания новой базы данных, где вводим название и нажимаем ОК. Для создания таблицы в окне «Object Explorer» выбираем созданную базу данных, и в раскрывшемся списке правой кнопкой мыши нажимаем на пункте «Tables», в котором находим и выделяем пункт «New table…». В рабочей области СУБД MS SQL Server откроется форма для создания таблицы. В столбце Column Name указывается название поля таблицы, в столбце Data Type – указывается тип столбца. В столбце Allow Nulls устанавливается флажок, предоставляющий возможность оставлять ячейку не заполненной (пустой). При создании таблицы для последующей связи с другими таблицами необходимо задавать ключевые и индексные поля. Нажимаем на кнопку «Сохранить» и вводим название таблицы. Для представления информации о базе можно использовать диаграммы сущность-связь(ER-Diagrams). Обычно каждая таблица в такой диаграмме представлена в виде прямоугольника, содержащего названия столбцов. Для создания диаграммы, в окне “Object Explorer” выбираем нашу базу данных, нажимаем правой клавишей мыши на вкладке Database Diagram, и выбираем пункт «New Database Diagram», в котором добавляем все таблицы нашей базы данных. Теперь необходимо создать связи (отношения) между таблицами. Проще всего это сделать на ER-Диаграмме. Перечислите основные команды MSSQL для модификации данных. Модификация данных может выполняться с помощью команд: DELETE (удалить), INSERT (вставить), UPDATE (обновить). Приведите пример использования команды INSET для вставки записей в единственную таблицу. Однострочный запрос: INSERT INTO { базовая_таблица | представление} [(столбец1 [, столбец2] ...)] {VALUES ({константа1 | переменная1} [,{константа2 | переменная1}]…) |<табличный_подзапрос>} [RETURNING <список_столбцов> [INTO <список_переменных>]];. Пример: INSERT INTO Abonent (AccountCD, StreetCD, HouseNO, FlatNO, Fio, Phone) VALUES (‘50000’, 8, 1, 1, ‘ПЛИТОВ Е.Д.’, NULL);. Если в списке предложения VALUES указаны значения для всех столбцов модифицируемой таблицы и порядок их перечисления соответствует порядку столбцов в описании таблицы (как в предыдущем примере), то список столбцов в предложении INTO можно опустить. NULL если неизвестное значение. Многострочный запрос, пример: INSERT INTO { базовая_таблица | представление} [(столбец1 [, столбец2] ...)] <табличный_подзапрос> [RETURNING <список_столбцов> [INTO <список_переменных>]];. Пример: INSERT INTO Fio (Abonent_name, Executor_name) SELECT A.Fio, E.Fio FROM Abonent A, Executor E, Request R WHERE R.AccountCD = A.AccountCD AND R.ExecutorCD = E.ExecutorCD;. Если ранее было создано представление Abonent_Executor со столбцами abonent_name и executor_name, то предыдущий запрос можно переписать следующим образом: INSERT INTO Fio SELECT Abonent_name, Executor_name FROM Abonent_Executor;. Каким образом осуществляется вставка пустого значения в ячейку таблицы? Если требуется ввести NULL-значение, например, в поле Phone (номер телефона абонента неизвестен), то оно вводится точно так же, как и обычное значение, например: INSERT INTO Abonent VALUES (‘50000’, 8, 1, 1, ‘ПЛИТОВ Е.Д.’, NULL); Приведите пример удаления единственной записи таблицы. Простой запрос DELETE позволяет удалить содержимое всех строк указанной таблицы или тех ее строк, которые выделяются условием поиска предложения WHERE , и имеет следующий формат: DELETE FROM {базовая_таблица | представление} [WHERE <условие_поиска> | WHERE CURRENT OF имя_курсора] [RETURNING <список_столбцов> [INTO <список_переменных>]];. Например, чтобы удалить из таблицы Abonent абонента с номером лицевого счета, равным '005488', требуется выполнить следующий запрос: DELETE FROM Abonent WHERE AccountCD = '005488';. Приведите пример удаления множества записей. DELETE FROM Abonent Каким образом осуществляется удаление с вложенным подзапросом? В предложении WHERE запроса DELETE можно использовать вложенные запросы, которые могут быть как простыми, так и коррелированными. Использование подзапросов в DELETE аналогично использованию таковых в SELECT. Примеры: Пусть необходимо удалить сведения о ремонтных заявках абонента Мищенко Е.В. Запрос на удаление соответствующих заявок можно записать в следующем виде: DELETE FROM Request WHERE AccountCD IN (SELECT AccountCD FROM Abonent WHERE Fio = ‘МИЩЕНКО Е.В.’);. Рассмотрим использование коррелированного подзапроса в предложении WHERE запроса DELETE, т.е. подзапроса, который содержит внешнюю ссылку на текущую строку таблицы, из которой удаляются данные. Например, для удаления всех сведений об оплате услуг газоснабжения абонентами, проживающими на улице Татарской, можно использовать следующий запрос: |