Лабораторная работа № 2
Создание и изменение объектов базы данных
Цель: Научиться использовать конструкции Transact-SQL для создания и изменения объектов БД
Задние 1. Выполните следующие упражнения. Текст SQL запросов поместите в отчет.
Используя инструкцию CREATE DATABASE, создайте новую базу данных test_db, задав явные спецификации для файлов базы данных и журнала транзакций. Файл базы данных с логическим именем test_db_dat сохраняется в физическом файле C:\tmp\test_db.mdf, его начальный размер — 5 Мбайт, автоувеличение по 8%, максимальный размер не ограничен. Файл журнала транзакций с логиче-ским именем test_db_log сохраняется в физическом файле C:\tmp\test_db_log.ldf, его начальный размер — 2 Мбайта, автоувеличение по 500 Кбайт, максималь-ный размер 10 Мбайт.
Используя инструкцию ALTER DATABASE, добавьте новый файл журнала в базу данных test_db. Файл сохраняется в физическом файле C:\tmp\emp_log.ldf, его начальный размер — 2 Мбайта, автоувеличение по 2 Мбайта, максимальный размер не ограничен.
В примере для некоторых столбцов четырех созданных таблиц запрещены значения NULL. Для каких из этих столбцов это определение является обязательным, а для каких нет?
USE sample;
CREATE TABLE employee (emp_no INTEGER NOT NULL, emp_fname CHAR(20) NOT NULL, emp_lname CHAR(20) NOT NULL, dept_no CHAR(4) NULL);
CREATE TABLE department(dept_no CHAR(4) NOT NULL, dept_name CHAR(25) NOT NULL, location CHAR(30) NULL);
CREATE TABLE project (project_no CHAR(4) NOT NULL,
project_name CHAR(15) NOT NULL,
budget FLOAT NULL);
CREATE TABLE works_on (emp_no INTEGER NOT NULL,
project_no CHAR(4) NOT NULL, job CHAR (15) NULL,
enter_date DATE NULL);
Почему в предыдущем примере тип данных для столбцов dept_no и project_no определен как CHAR, а не как один из целочисленных типов?
Создайте таблицы customers и orders, содержащие перечисленные в следующей таблице столбцы. Не объявляйте соответствующие первичный и внешние ключи.
Используя инструкцию ALTER TABLE, добавьте в таблицу orders новый столбец shipregion. Столбец должен иметь целочисленный тип данных и разрешать значения NULL.
Используя инструкцию ALTER TABLE, измените тип данных столбца shipregion с целочисленного на буквенно-цифровой длиной 8 символов. Столбец может со-держать значения NULL.
Удалите созданный ранее столбец shipregion.
Дайте точное описание происходящему при удалении таблицы с помощью инструкции DROP TABLE.
Создайте заново таблицы customers и orders, усовершенствовав их определение всеми ограничениями первичных и внешних ключей.
Используя среду SQL Server Management Studio, попробуйте вставить следующую новую строку в таблицу orders:
(10, 'ord0l', getdate(), getdate(), 100.0, 'Windstar', 'Ocean', 1).
Почему система отказывается вставлять эту строку в таблицу?
Используя инструкцию ALTER TABLE, определите значение по умолчанию столбца orderdate таблицы orders в виде текущей даты и времени системы.
Используя инструкцию ALTER TABLE, создайте ограничение для обеспечения целостности, ограничивающее допустимые значения столбца quantity таблицы orders диапазоном значений от 1 до 30.
Отобразите все ограничения для обеспечения целостности таблицы orders.
Попытайтесь удалить первичный ключ таблицы customers. Почему это не удается?
Удалите ограничение для обеспечения целостности prim_empl, определенное в примере 5.7.
В таблице customers измените имя столбца city на town.
Задание 2. Создайте базу данных Sample и заполните ее следующей информацией.
База данных sample
Таблица department(отдел)
dept_no
| dept_name
| location
| d1
| Research (исследовательский
| Dallas
| d2
| Accounting (расчетный)
| Seattle
| d3
| Marketing (продаж)
| Dallas
| Таблица employee (служащие)
emp_no
| emp_fname
| emp_lname
| dept_no
| 25384
| Mathew
| Smith
| d3
| 10102
| Ann
| Jones
| d3
| 18316
| John
| Barrimore
| d1
| 29346
| James
| James
| d2
| 9031
| Elsa
| Bertoni
| d2
| 2581
| Elke
| Hansel
| d2
| 28559
| Sybill
| Moser
| d1
| Таблица project (проекты)
project_no
| project_name
| budget
| p1
| Apollo
| 120000
| p2
| Gemini
| 95000
| p3
| Memory
| 185600
|
Таблица works_on (участие в проектах)
emp_no
| project_no
| job
| enter_date
| 101102
| p1
| Analyst
| 1.10.2006
| 101102
| p3
| Manager
| 1.01.2008
| 25384
| p2
| Clerk
| 15.02.15
| 18316
| p2
| Null
| 1.06.2007
| 29346
| p2
| Null
| 15.12.15
| 2581
| p3
| Analyst
| 15.10.2007
| 9031
| p1
| Manager
| 15.04.2015
| 28559
| p1
| Null
| 01.08.2007
| 28559
| p2
| Clerk
| 01.02.2008
| 9031
| p3
| Clerk
| 15.11.2015
| 29346
| p1
| Clerk
| 04.01.2007
| Скрипт для создания БД Sample.
USE sample; CREATE TABLE department(dept_no CHAR(4) NOT NULL, dept_name CHAR(25) NOT NULL, location CHAR(30) NULL, CONSTRAINT prim_dept PRIMARY KEY (dept_no));ы CREATE TABLE employee (emp_no INTEGER NOT NULL, emp_fname CHAR(20) NOT NULL, emp_lname CHAR(20) NOT NULL, dept_no CHAR(4) NULL, CONSTRAINT prim_emp PRIMARY KEY (emp_no), CONSTRAINT foreign_emp FOREIGN KEY(dept_no) REFERENCES department(dept_no)); CREATE TABLE project (project_no CHAR(4) NOT NULL, project_name CHAR(15) NOT NULL, budget FLOAT NULL, CONSTRAINT prim_proj PRIMARY KEY (project_no)); CREATE TABLE works_on (emp_no INTEGER NOT NULL, project_no CHAR(4) NOT NULL, job CHAR (15) NULL, enter_date DATE NULL, CONSTRAINT prim_works PRIMARY KEY(emp_no, project_no), CONSTRAINT foreign1_works FOREIGN KEY(emp_no) REFERENCES employee(emp_no), CONSTRAINT foreign2_works FOREIGN KEY(project_no) REFERENCES project(project_no)); |