Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_SQL.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
432.13 Кб
Скачать

3. Задание на лабораторную работу

Для выполнения заданий необходимо запустить утилиту QueryAnalyzer. Выполнить все приведенные в лабораторной работе примеры. Реализовать правила в своих программах. Написать не менее трех запросов по определенным критериям, в зависимости от предметной области (прил.).

Создать необходимые для работы сводные таблицы, реализующие отношения "многие-ко-многим" для таблиц, созданных в лабораторной работе №1.

Оформить отчет, содержащий цель, ход выполнения работы и выводы.

Контрольные вопросы

  1. При помощи какого символа можно выбрать все столбцы в запросе?

  2. Какие типы связывания таблиц существуют и чем они отличаются?

  3. Какие условия связывания двух таблиц допустимы?

  4. Какие существуют виды сортировки в запросе?

Лабораторная работа № 3. Вставка, изменение и удаление данных

1. Цель работы

  • Закрепление теоретических знаний по вставке, изменению и удалению данных.

  • Приобретение практических навыков по вставке, изменению и удалению данных.

  • Написание запросов по работе с данными предметной области.

2. Теоретическая часть

2.1. Добавление данных

Перед тем как начать изменение данных в таблицах или выборку данных из таб­лиц, необходимо их вставить. Данные в таблицу SQL Server могут быть внесены различными способами.

С помощью команды INSERT. Используя единственную команду INSERT, можно добавить как одну строку, так и множество строк. Причем разрешается указа­ние вставляемых значений как с помощью переменных (или констант), так и с помощью запроса.

С помощью команды SELECT INTO. В этом случае на основе результата выборки, возвращаемого запросом, сервер автоматически создает новую таблицу.

Использование команды INSERT

Начнем рассмотрение вставки данных в таблицу с команды INSERT. Как уже было сказано, эта команда может быть использована для вставки как одной, так и множества строк. Более того, эта же команда используется и при вставке строк через представление. Приведем синтаксис команды INSERT:

INSERT [INTO] таблица_или_представление [(список_столбцов)]

VALUES (список_значений)

Рассмотрим назначение каждого из аргументов команды.

[INTO]. Дополнительное ключевое слово, которое может быть использовано в команде между словом INSERT и именем таблицы (представления) для обозначения, что следующий параметр является именем таблицы, в которую будут вставлены данные.

Если список столбцов опущен, то сервер будет вставлять данные последовательно во все столбцы, начиная с первого. Значения для столбцов указываются после ключевого слова VALUES. Для каждого столбца должен быть указан аргумент, имеющий соответствующий тип данных. Если список столбцов не указан, то количество значений VALUES должно соответствовать количеству столбцов таблицы. Если же пользователь явно задал список столбцов, то это определяет порядок зна­чений VALUES (и, соответственно, их типы). Можно не указывать явно значения для столбцов, если для них определено значение по умолчанию или разрешено хранение значений NULL. Кроме того, запрещается указание явных значений для столбцов-счетчиков (с установленным свойством IDENTITY) и столбцов с типом данных timestamp.

  • VALUES ( DEFAULT | NULL | expression ). Ключевое слово VALUES определяет набор данных, которые будут вставлены в таблицу. Количество аргу­ментов VALUES определяется количеством столбцов в таблице или количеством столбцов в списке (если таковой имеется). Для каждого столбца таблицы можно указать один из трех возможных вариантов.

  • DEFAULT. Будет вставлено значение по умолчанию, определенное для столбца. Если для столбца разрешено хранение значений NULL, а значение по умолчанию не определено, то в столбец будет вставлено значение NULL. Параметр DEFAULT нельзя использовать при вставке значений в столбцы-счетчики.

  • NULL. При указании этого параметра в столбец будет вставлено значение NULL. Естественно, вставка таких значений будет успешной, если для столбца была разрешена возможность хранения значений NULL. Отметим, что для столбцов, входящих в первичный ключ, возможность хранения значений NULL не предусмотрена.

  • expression. В явном виде задает значение, которое будет вставлено в столбец таблицы. Этот параметр должен иметь тот же тип данных, что и столбец, а также удовлетворять ограничениям целостности, определенным для соответствующего столбца. В качестве этого параметра может быть использована константа, переменная, выражение, подзапрос или их произвольная комбинация.

При использовании оператора INSERT для модификации представления следует учитывать следующие ограничения:

  • представление не должно содержать функций агрегирования, таких как COUNT или AVG;

  • представление не должно содержать операторов TOP, GROUP BY, UNION, DISTINCT.

  • представление не должно содержать вычисляемых столбцов;

  • представление должно ссылаться на таблицу во фразе FROM;

  • оператор INSERT модифицирует столбцы только из одной таблицы.

Рассмотрим пример добавления студента Алексея Петрова в таблицу Students:

Пример 1

Insert Students (id, family, Name, _ID_Group) Values (13, ‘Петров’, ‘Алексей’, 10)

Использование команды SELECT...INTO

Если необходимо быстро создать таблицу со структурой, позволяющей сохранить результат выполнения запроса, то лучшим выходом будет использование коман­ды SELECT...INTO. При выполнении запроса SELECT...INTO сервер автоматически создаст новую таблицу с нужной структурой и вставит в нее полученный набор строк. Заметим, что в базе данных не должно существовать таблицы или представления, имя которых совпадает с именем таблицы, указанной в команде SELECT...INTO.

Синтаксис команды SELECT...INTO следующий:

SELECT <столбец> AS <псевдоним> INTO <новая_таблица> FROM <список_источников>

Рассмотрим назначение приведенных аргументов:

  • аргумент <столбец> определяет имя столбца таблицы, которая будет включена в результат. Указанный столбец должен принадлежать одной из таблиц, перечисленных в списке источников. Если столбцы, принадлежащие разным таблицам, имеют одинаковые имена, то для столбцов необходимо использовать псевдонимы. В противном случае сервер попытается создать таблицу со столбцами, имеющими одинаковые имена. В результате произойдет ошибка и выполнение запроса будет прервано. Указание псевдонимов обязательно для столбцов, значения в которых формируются на основе вычисления выражений. По умолчанию такие столбцы не имеют никакого имени, что недопустимо для таблицы. Назначение псевдонимов также полезно, когда пользователь хочет задать столбцам в создаваемой таблице новые имена (отличные от исходных).

  • аргумент <новая_таблица> содержит имя создаваемой таблицы. Это имя должно быть уникальным в пределах базы данных. Можно задать имя временной таблицы, если перед именем указать символ # или ##.

  • в простейшем случае конструкция FROM содержит список исходных таблиц. В более сложных запросах с помощью этой конструкции определяются условия связывания двух и более таблиц.

Рассмотрим пример

Пример 2.

Select *

Into #t1

From Students.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]