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

45.Використання строкових функцій

46.Використання числових функцій

47.Додавання даних до таблиці за допомогою оператора insert

Створивши таблицю, ви можете додати до неї дані за допомогою оператора INSERT. Для додавання до таблиці нових рядків використовується кілька форм оператора INSERT. Кожен оператор INSERT дозволяє додати до таблиці тільки один рядок. Синтаксис повної форми оператора INSERT виглядає наступним чином:

INSERT [INTO] target (column_name_1 [, соlumn_nаmе_n]) [VALUES ('string_1'[, 'string_n']) | DEFAULT | statement]

Параметр target може позначати одне з двох: таблицю або вид. • Таблиця. У цьому випадку замість параметра target вказується ім'я таблиці, в яку потрібно вставити значення. Можливо, в цьому місці вам доведеться включити опис типу database.owner.tablename. Ймовірно, цю опцію ви будете використовувати найчастіше. • Вид. Дозволяє вставити інформацію в основні таблиці бази даних.

У більшості випадків ви будете вказувати ім'я таблиці, в яку збираєтеся вставляти дані. Але, як би там не було, ви повинні вибрати одну з двох описаних можливостей, інакше SQL Server не будете знати, де зберігати вставляється інформацію.

Після директиви INSERT перераховуються імена стовпців через кому, укладені в круглі дужки. У наступному рядку, після ключового слова VALUES, в круглих дужках вказуються значення, які потрібно додати в стовпці, в тому ж порядку, в якому слідують імена стовпців в попередньому рядку.

Зовсім не обов'язково перераховувати стовпці і їх значення точно в такому ж порядку, в якому вони розташовані в таблиці. Головне, щоб порядок перерахування стовпців в одному рядку відповідав порядку проходження їх значень в наступному рядку. В іншому випадку значення можуть потрапити не в ті стовпці.

У наступному прикладі стовпці перераховані в тому ж порядку, в якому вони знаходяться в таблиці (хоча це і не обов'язково). Порядок проходження значень в директиві VALUES відповідає порядку розташування стовпців у попередньому рядку.

INSERT INTO Employee (Name, Department, Badge) VALUES ('Bob Smith', 'SALES', 1834)

Якщо ви пропустите одне або кілька імен стовпців, то в них буде поміщено стандартне значення або NULL.

У наступному прикладі в операторі INSERT перераховані стовпці Name і Badge (без стовпця Department). У директиві VALUES значення для стовпця Department також пропущено.

У табл. 1 показано, що буде введено в таблицю, якщо в директиві VALUES оператора INSERT значення стовпця явно не вказано.

INSERT INTO Employee (Name, Badge) VALUES ('Bob Marian', 1999)

Неявне присвоювання значень стовбчику

Характеристики столбца

Что определил пользователь

Результат

Определен атрибут NULL

Стандартное значение не определено

NULL

Определен атрибут

NOT NULL

Стандартное значение не определено

Ошибка, строка не введена

Определен атрибут NULL

Стандартное значение определено

Стандартное значение

Определен атрибут

NOT NULL

Стандартное значение определено

Стандартное значение

Щоб вставити значення NULL в стовпець, для якого визначений атрибут NULL, в директиві VALUES використовуйте запис NULL.

Якщо ви хочете вставити рядок, що містить тільки стандартні значення, певні у вигляді обмеження DEFAULT для таблиці, скористайтеся директивою DEFAULT VALUES оператора INSERT. Тоді в стовпці будуть вставлені стандартні значення або елементи NULL, залежно від того, що було визначено для даної таблиці.

Останній варіант вставки інформації в таблиці - це використання оператора SELECT для вибірки значень, які потрібно вставити. На перший погляд це може показатися дещо дивним, але насправді така практика дуже поширена. Це необхідно, наприклад, при переміщенні інформації з однієї таблиці в іншу з метою створення резервних копій, у разі структурних змін або просто для роботи з даними в тестовій, а не в діючій моделі бази даних.

Наведемо приклад оператора INSERT такого типу:

INSERT INTO Addresses (Name, Phone, Address) VALUES (SELECT Name, Phone, Address FROM Prod_Addresses)

У цьому прикладі в таблиці Prod_Addresses міститься вихідна інформація.

Зрозуміло, в ній можуть бути не тільки ті стовпці, значення з який переносяться в таблицю Addresses.

Але в даному випадку для створення таблиці Addresses необхідні тільки три стовпці з таблиці Prod Addresses: Name, Phone і Address.

В результаті виконання наведеного вище оператора кожному рядку таблиці Prod Addresses буде відповідати новий рядок таблиці Addresses. Зверніть увагу, що, як і в попередньому прикладі, стовпці не обов'язково повинні бути перераховані в порядку їх фізичного розташування в таблиці Addresses.

Все сказане вірно і для таблиці Prod_Addresses. Її стовпці вказані в тому ж порядку, в якому повинні заповнюватися стовпці таблиці Addresses. Хоча порядок перерахування стовпців сам по собі не має значення, він повинен бути одним і тим же при передачі інформації з однієї таблиці в іншу.

В іншому випадку станеться одне з двох. По-перше, дані з вихідної таблиці можуть потрапити не за призначенням (тобто не в ті стовпці, в які потрібно). І буде дуже важко простежити, які дані куди потрапили, особливо якщо ви працюєте з великими обсягами інформації. Крім того, ви можете взагалі не знати про виниклу проблему, так як в результаті такої неправильної вставки SQL Server не генерує ніяких повідомлень про помилку. По-друге, вставка інформації може не виконатися через невідповідність типів даних у стовпцях. Наприклад, SQL Server не зможе вставити дані типу CHAR з однієї таблиці в стовпець типу INT іншої таблиці.

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