Главная страница

Практическая работа 1. 2 Описание проектирования базы данных 2 практическая работа 2 10


Скачать 2.52 Mb.
НазваниеПрактическая работа 1. 2 Описание проектирования базы данных 2 практическая работа 2 10
АнкорMS SQL
Дата20.04.2022
Размер2.52 Mb.
Формат файлаdocx
Имя файлаms-sql-server-pr.1-5.docx
ТипПрактическая работа
#487708
страница10 из 12

Клиент);
Выполните sql-код. Обновите базу данных и просмотрите созданную таблицу.

Сохраните sql-запрос под именем Пример11.sql в папке ФИО_студента/Лаб4.
4.7. Изменение таблиц
Для внесения изменений в уже созданные таблицы стандартом SQL предусмотрен оператор ALTER TABLE, предназначенный для выполнения следующих действий:

  • добавление в таблицу нового столбца;

  • удаление столбца из таблицы;

  • добавление в определение таблицы нового ограничения;

  • удаление из определения таблицы существующего ограничения;

  • задание для столбца значения по умолчанию;

  • отмена для столбца значения по умолчанию.

Оператор изменения таблицы имеет следующий обобщенный формат:
<изменение_таблицы> ::=
ALTER TABLE имя_таблицы
[ADD [COLUMN]имя_столбцатип_данных [ NOT NULL ][UNIQUE]
[DEFAULT <значение>][ CHECK (<условие_выбора>)]] [DROP [COLUMN] имя_столбца [RESTRICT | CASCADE ]] [ADD [CONSTRAINT [имя_ограничения]] [{PRIMARY KEY (имя_столбца [,...n])
|[UNIQUE (имя_столбца [,...n])}
|[FOREIGN KEY (имя_столбца_внешнего_ключа [,...n])

REFERENCES имя_род_таблицы
[(имя_столбца_род_таблицы [,...n])],

[ MATCH {PARTIAL | FULL}

[ON UPDATE {CASCADE| SET NULL |
SET DEFAULT | NO ACTION}]

[ON DELETE {CASCADE| SET NULL |

SET DEFAULT | NO ACTION}]

|[CHECK(<условие_выбора>)][,...n]}]
[DROP CONSTRAINT имя_ограничения
[RESTRICT | CASCADE]]

[ALTER [COLUMN] SET DEFAULT <значение>]
[ALTER [COLUMN] DROP DEFAULT]
Здесь параметры имеют то же самое назначение, что и в определении оператора CREATE TABLE.
Оператор ALTER TABLE реализован не во всех диалектах языка SQL. В некоторых диалектах он поддерживается, однако не позволяет удалять из таблицы уже существующие столбцы.


  • дополнение к уже названным параметрам определим параметр {ENABLE | DISABLE } TRIGGER ALL_, предписывающий задействовать или отключить конкретный триггер или все триггера, связанные с таблицей.


Пример 12. Удаление ограничения внешнего ключа. ALTER TABLE Сделка DROP CONSTRAINT fk_Товар
Пример 13. Добавления ограничения внешнего ключа, реализующего каскадные обновления и изменения.
ALTER TABLE Сделка ADD CONSTRAINT fk_Товар FOREIGN KEY (КодТовара) REFERENCES Товар ON UPDATE CASCADE ON DELETE CASCADE
Пример 14. Пример создания вычисляемого поля.
ALTER TABLE Товар ADD Налог AS Цена*0.05
Пример 15. Пример удаления поля

ALTER TABLE Товар DROP COLUMN Остаток
4.7. Удаление таблиц

Удаление таблицы выполняется командой:
DROP TABLE имя_таблицы
Удалить можно любую таблицу, даже системную. К этому вопросу нужно подходить очень осторожно. Однако удалению не подлежат таблицы, если существуют объекты, ссылающиеся на них. К таким объектам относятся таблицы, связанные с удаляемой таблицей посредством внешнего ключа. Поэтому, прежде чем удалять родительскую таблицу, необходимо удалить либо ограничение внешнего ключа, либо дочерние таблицы. Если с таблицей связано хотя бы одно представление, то таблицу также удалить не удастся. Кроме того, связь с таблицей может быть установлена со стороны функций и процедур. Следовательно, перед удалением таблицы необходимо удалить все объекты базы данных, которые на нее ссылаются, либо изменить их таким образом, чтобы ссылок на удаляемую таблицу не было.
Самостоятельно удалите таблицу Продавцы.
Задание для практической работы №4
Самостоятельно, используя команды языка SQL, в базе данных University создать:
1). Новую таблицу под именем STUDENT (Студент) с помощью sql-операторов с полями:
STUDENT_ID – целого типа для уникальной идентификации записей в таблице первичный ключ тип счетчик,
SUTNAME текстового типа для обозначения имени студента, SUTFNAME - текстового типа для обозначения фамилии,
STIPEND – действительного типа для обозначения стипендии. При этом на это поле наложено ограничение числом – величина размера стипендии должна быть меньше

  1. грн.


KURS - целого типа для обозначения курса. При этом на это поле наложено ограничение – курс на котором может учиться студент может принимать значение от 1 до5,
CITY - текстового типа для обозначения города,

BIRTDAY –типа даты/времени для обозначения день рождения,
GROUP - текстового типа для обозначения студенческой группы,
KOD_KAFEDRU – целого типа для обозначения названия кафедры, на которой учится студент. Поле KOD_KAFEDRU из таблицы STUDENT и поле KOD_KAFEDRU из таблицы KAFEDRA связаны тем, что описывают одни и те же данные, т.е. содержат идентификаторы кафедр, информация о которых содержит база данных. Более того, значение идентификаторов кафедр, которые допустимы в таблице STUDENT, должны выбираться только из списка значений поля KOD_KAFEDRU, т.е. принадлежащих реально описанных в базе данных кафедрам. Т.е. между этими полями имеется прямая связь. Т.о. поле KOD_KAFEDRU из таблицы STUDENT будет являться внешним ключом.
Кроме того, при определении таблицы STUDENT запрещено использовать значение NULL – значений для столбцов STUDENT_ID, SUTNAME, SUTFNAME.


  • качестве первичного ключа принято значение столбца STUDENT_ID.

Выполните sql-код. Обновите базу данных и просмотрите созданную таблицу.
Сохраните sql-запрос под именем Студент.sql в папке ФИО_студента/ПР4.
2). Новую таблицу под именем TEACHER (Преподаватели) с помощью sql-операторов. Эта таблица содержит информацию о преподавателях вуза. Каждый преподаватель может работать на одной кафедре, иметь множество лекционных занятий быть куратором более чем одной группы. Описание столбцов таблицы TEACHER

KOD_TEACHER Уникальный идентификатор преподавателя. Является первичным ключом
KOD_KAFEDRU Уникальный идентификатор кафедры, на которой работает преподаватель. Является внешним ключом

NAME_TEACHER Фамилия преподавателя
INDEF_KOD Идентификационный код. Является уникальным для преподавателя
DOLGNOST Должность, может принимать только определенные значения из списка, такие как 'профессор', 'доцент', 'старший преподаватель', 'ассистент'. Значение по умолчанию 'ассистент'.
ZVANIE Научное звание, может принимать только определенные 100 значения из списка, такие как 'к.т.н', 'к.г.у', 'к.с.н', 'к.ф.м.н.', 'д.т.н', 'д.г.у', 'д.с.н', 'д.ф.м.н', 'нет'. Значение по умолчанию 'нет'.
SALARY ставка зарплаты. Значение по умолчанию 1000 грн. Зарплата должна быть больше нуля.

RISE надбавка к зарплате. Ее значение по умолчанию =0 и не может быть отрицательным числом.
DATA_HIRE дата приема на работу. По умолчанию текущая дата.
BIRTHDAY день рождения

POL пол, может принимать только определенные значения из списка, 'ж', 'Ж', 'м', 'М'
TEL_TEACHER Телефон. Может принимать значения только в виде '[1-9][0-9]-[0-9][0-9]-[0-9][0-9]'.

В качестве первичного ключа принято значение столбца KOD_TEACHER.
Поле KOD_KAFEDRU из таблицы TEACHER и поле KOD_KAFEDRU из таблицы KAFEDRA связаны тем, что описывают одни и те же данные, т.е. содержат идентификаторы кафедр, информация о которых содержит база данных. Более того, значение идентификаторов кафедр, которые допустимы в таблице TEACHER, должны выбираться только из списка значений поля KOD_KAFEDRU, т.е. принадлежащих реально описанных в базе данных кафедрам. Т.е. между этими полями имеется прямая связь. Т.о. поле KOD_KAFEDRU из таблицы TEACHER будет являться внешним ключом.
Выполните sql-код. Обновите базу данных и просмотрите созданную таблицу. Сохраните sql-запрос под именем Преподаватель.sql в папке ФИО_студента/пр4.


САМОСТОЯТЕЛЬНО используя команды языка SQL!!!:
Создать на языкеTransact-SQL файл базы данных согласно номеру варианта (присвоить ей новое имя, несовпадающие с именем базы данных созданной в лаб.№3). База данных разрабатывается на основе спроектированной концептуальной модели данных в лаб.№1.
Создать программно на языке SQL все таблицы, с указанием первичных и внешних ключей и ограничения целостности.
Все программные инструкции команд SQL сохранять в файлах с расширением *.sql в папке ФИО_студента/Лаб4.

Заполнить таблицы данными по 5 записей в каждой.
Создать текстовый отчет, в котором отобразить sql-команды разработанных запросов и скриншоты результатов работы из СУБД SQL Server Management Studio.
Самостоятельно заполните вручную данными таблицы Студент и Преподаватель согласно рис. 1-2, приведенным ниже.

Также ранее должны были введены следующие данные:
Новые данные ввести вручную.



ПРАКТИЧЕСКАЯ РАБОТА №5

СОЗДАНИЕ ЗАПРОСОВ НА ВЫБОРКУ. ОТБОР СТРОК ПО УСЛОВИЮ
5.1.Цель практической работы
Изучить используемый в реляционных СУБД оператор извлечения данных из таблиц. Получить навыки работы с оператором SELECT в программе ‘SQL Server Managmant Studio’.
5.2.Исходные данные
Исходными данными является индивидуальное задание и результат предыдущих практических работ.
5.3. Используемые программы Программы ‘ SQL Server Managmant Studio ‘.
5.4.Теоретические сведения


  • SQL имеется единственный оператор, который предназначен для выборки данных из базы данных. Оператор относится к подмножеству DML.


Ниже приведен почти полный синтаксис оператора SELECT.
SELECT [DISTINCT | ALL]
{* | <величина> [, <величина> ...]}

[INTO :Переменная [, :Переменная ...]]
FROM [, ...]
[WHERE <условие поиска>]

[GROUP BY Колонка [, Колонка ...]]
[HAVING <условие поиска>]

[UNION [ALL] ]
[ORDER BY <список сортировки>];
<величина> = {Колонка | :Переменная | <константа> | <выражение> | <функция>
| udf ([<величина> [, <величина> ...]])

| NULL | USER} [AS Псевдоним]
<константа> = Число | 'Строка'
<выражение> = SQL выражение, возвращающее единичное значение
<функция> =

COUNT (* | [ALL] <величина> | DISTINCT <величина>)
| SUM ([ALL] <величина> | DISTINCT <величина>)

| AVG ([ALL] <величина> | DISTINCT <величина>)
| MAX ([ALL] <величина> | DISTINCT <величина>)
| MIN ([ALL] <величина> | DISTINCT <величина>)

| CAST(<величина> AS <тип данных>)
| UPPER (<величина>)

| GEN_ID (Имя_Генератора, <величина>)
= { | table | view
| procedure[(<величина> [, <величина> ...])]}
[Псевдоним]
= JOIN ON <условие поиска> | ()
= [INNER] | {LEFT | RIGHT | FULL } [OUTER]
<условие поиска> =

<величина> <оператор сравнения>
{<величина> | ()}
| <величина> [NOT] BETWEEN <величина> AND <величина> | <величина> [NOT] LIKE <величина> | <величина> [NOT] IN
(<величина> [, <величина> ...] | )
| <величина> IS [NOT] NULL

| <величина> {>= | <=} <величина>
| <величина> [NOT] {= | < | >} <величина>

| {ALL | SOME | ANY} ()
| EXISTS ()

| SINGULAR ()
| <величина> [NOT] CONTAINING <величина>
| <величина> [NOT] STARTING [WITH] <величина> | (<условие поиска>)
| NOT <условие поиска>

| <условие поиска>OR <условие поиска>
| <условие поиска>AND <условие поиска>
<оператор сравнения> =

{=|<|>|<=|>=|!<|!>|<>|!=}
= оператор SELECT, выбирающий одну колонку и возвращающий ровно одно значение

= оператор SELECT, выбирающий одну колонку, возвращающий ноль или много значений

= оператор SELECT, выбирающий несколько величин и возвращающий ноль или много значений

<список сортировки> =

{Колонка | Номер}
[ASC | DESC]
[, <список сортировки> ...]

Некоторые параметры, входящие в этот оператор, описаны в табл. 5.1.

1   ...   4   5   6   7   8   9   10   11   12

КодКлиента INT

NOT NULL,

Количество INT

NOT NULL DEFAULT 0,

Дата

DATETIME NOT NULL DEFAULT GETDATE(),

Остаток

INT,




CONSTRAINT fk_Товар FOREIGN KEY(КодТовара) REFERENCES Товар,

CONSTRAINT

fk_КлиентFOREIGN KEY(КодКлиента) REFERENCES







Таблица 5.1




Описание параметров оператора SELECT

Параметр




Описание










DISTINCT | ALL




DISTINCT – предотвращает дублирование данных, которые







будут извлечены.







ALL (по умолчанию) – приведет к извлечению всех

{* | <величина> [,




Звездочка (*) означает, что надо извлекать все колонки из

<величина> ...]}




указанных таблиц.







<величина> [, <величина> ...] – извлекает список указанных










INTO:Переменная [,




Используется только в триггерах и хранимых процедурах для

:Переменная ...]




операторов SELECT, возвращающих не более одной строки.







Указывается список переменных, в которые извлекаются







величины

FROM [,




Указывает список таблиц, просмотров и хранимых

...]




процедур, из которых извлекаются данные. Список может







включать соединения и соединения могут быть

table




Имя существующей в базе данных таблицы










view




Имя существующего базе данных просмотра










procedure




Имя существующей хранимой процедуры, предназначенной







для использования в операторе SELECT










Псевдоним




Короткое альтернативное имя для таблицы, просмотра или







колонки. После описания в , псевдоним может







использоваться для ссылок на таблицу или просмотр

join_type




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







внешним










WHERE <условие




Указывает условие, которое ограничивает количество

поиска>




извлекаемых строк










GROUP BY Колонка [,




Разбивает результат запроса на группы, содержащие все

Колонка ...]




строки с идентичными значениями, указанными в списке










HAVING




Использует совместно с GROUP BY. Задает условие, которое

<условие поиска>




ограничивает количество возвращаемых групп










UNION [ALL]




Объединяет результаты нескольких запросов. Все запросы







должны извлекать одинаковое количество столбцов, тип







данных каждого столба первого запроса должен совпадать с







типом данных других запросов, имена столбцов в разных







запросах могут отличаться. Необязательный параметр ALL










ORDER BY




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

<список сортировки>




сортировка извлекаемых строк. Можно указывать либо имена







коло нок, либо их порядковые номера в списке извлекаемых







колонок. Если указать ASC, то строки будут выдаваться в







порядке возрастания значений сортируемых полей, если DESC
1   ...   4   5   6   7   8   9   10   11   12


написать администратору сайта