Transact-SQL - вставка даних. Sql-запити на вставку, модифікацію і видалення даних Sql запит додавання


Дана ж стаття присвячена наповненню таблиць БД даними, тобто будемо вивчати SQL-команди для вставки нових записів. Слід сказати, що запис в таблицю можна зробити двома способами:

Спосіб №1.
Спробуємо внести запис про нову країні в таблицю countries. Синтаксис додавання буде наступним:
INSERT INTO ім'я_таблиці (поле_1, поле_2, ...) VALUES (значення_1, значення_2, ...); Виходячи з нашої структури таблиці, SQL-запит буде таким:
INSERT INTO countries (country_name, acronym_name) VALUES ( "Russia", "RU"); Ось так ми внесли в нашу таблицю запис про країну «Росія». Тут має бути все зрозуміло і просто, головне уважно дивитися які поля вказуєте в перших дужках, і в такому ж порядку прописувати значення у друге.

Спосіб №2.
Другий спосіб, на мій погляд, трохи простіше, оскільки ви бачите що, і якому полю привласнюєте. Повірте, якщо в таблиці величезна кількість стовпців, то дуже просто переплутати або недоглядіти порядок полів в перших, і порядок значень в других дужках. Синтаксис другого методу такий:
INSERT INTO ім'я_таблиці SET поле_1 \u003d значення_1, поле_2 \u003d значення_2, ...; Давайте на цьому прикладі внесемо якусь інформацію в табличку persons, Оскільки там більше полів, і відразу буде відчуватися перевага другого способу:
INSERT INTO persons SET first_name \u003d "Ivan", last_name \u003d "Dulin", registration_date \u003d "2012-06-14", country \u003d "1"; Тепер в нашій табличці є такі дані:


Ви, напевно, помітили, що ми не вказали значення для age, а воно виявилося заповненим ... Все правильно - для даного поля ми встановлювали значення за замовчуванням як 25. Так що тепер наш Ivan Dulin значитися в базі з віком 25 років. Можливо, не найвдаліший приклад робити значення за замовчуванням для поля віку, але можна такі властивості встановлювати до таких полях, як, наприклад, рейтинг користувача сайту, або кількість переглядів сторінки. Для них спочатку ставиться значення 0.

Слід ще звернути увагу на формат дати в MySQL: YYYY-MM-DD. Якщо його не дотримуватися, то ваші записи просто не будуть внесені в таблицю.

Як бачимо, поле profession заповнене як NULL, це пусте значення. Для даного поля ми задавали властивість «не обов'язкова до заповнення (NULL)».

Як доповнення, розглянемо ще таку команду:
LOAD DATA LOCAL INFILE "D: \\ zapros.txt" INTO TABLE persons; Як ви думаєте, що ми зараз зробили ?! А зробили ми наступне: додали дані в таблицю persons з файлу zapros.txt, Який знаходиться на диску D. Інформація у файлі повинна бути такої структури:


Структура даних файлу повинна відповідати таким вимогам:
  1. Кожна нова запис повинна описуватися з нового рядка
  2. Дані повинні бути вказані для всіх полів. Як ви можете помітити, для поля id ми вказали значення NULL, адже воно у нас автоінкрементне, так що MySQL сам внесе потрібне значення.
  3. Поля розділяються один від одного символом табуляції (клавіша Tab).
  4. Введена інформація повинна відповідати типам даних конкретного поля. Тобто, наприклад, дата в форматі РРРР-ММ-ДД, ціле число для integer і т.д.
Таким чином, ви навчилися вносити нові дані в таблиці своєї БД. Для закріплення вивченого матеріалу, внесіть самостійно такі дані:

Таблиця professions:

Таблиця persons:

first_name last_name age registration_date country profession
Leonid Bilak 45 2012-06-20 2 1
Yuri Nazarov 22 2012-06-21 3 1
Alla Savenko 25 2012-06-22 2 3
Irina Nikolaeva 31 2012-06-22 1 3

Обов'язково додайте ці записи, оскільки вони нам знадобляться для вивчення оператора SELECT (вибору інформації з БД), який ми розглянемо в наступній (четвертої) статті по вивченню SQL-запитів.

Запити на зміну використовуються для додавання (INSERT INTO), видалення (DELETE) і відновлення (UPDATE) записів в таблицях.

Команда INSERT INTO

Команда INSERT INTO може бути використана для додавання однієї або декількох записів в кінець таблиці.

Синтаксис команди INSERT INTO має наступний вигляд:
INSERT INTO названіе_табліци [(Названіе_Полей)] VALUES (Значенія_данних);

Наприклад, помістимо в таблицю "Групи" запис, що містить дані (1, БФ-16а, 1, 1) в відповідні стовпці (КодГруппи, Назва, Курс, Семестр).

Для цього запит в форматі:
INSERT INTO Групи (КодГруппи, Назва, Курс, Семестр) VALUES (1, БФ-16а, 1, 1);
введемо на бланку запиту, виконавши команду "Конструктор запитів" на вкладці "Створення", в режимі "Режим SQL" з меню Вид.

Зберігаємо запит з ім'ям "Добав_1_запісі". В результаті в «Області переходів» з'явиться непов'язаний об'єкт - «Добав_1_запісі» (Рис.1.).


Мал. 1.

Після збереження запиту необхідно виконати цей запит, клацаючи на піктограмі «Виконати». В результаті виконання команди «Добав_1_запісі» в порожній таблиці з'явиться перший запис (Рис. 2.)



Мал. 2.

команда UPDATE

Команда UPDATE призначена для зміни вже існуючих записів в шпальтах таблиці, що дозволяє оновлювати значення в заданих стовпцях таблиці.

Синтаксис команди UPDATE має наступний вигляд:
UPDATE названіе_табліци SET Названіе_Столбца \u003d Новое_Значеніе WHERE Условіе_Отбора;

У реченні SET вказуються імена стовпців, дані в яких треба змінити. Оператор WHERE не є обов'язковим, але при його допомоги можна вказати тільки на ті рядки стовпців (таблиць), які необхідно оновити.

Створимо запит на зміну запису в таблиці "Групи" бази даних sql_training_st.mdb.

Наприклад, змінимо вже існуючого такого запису для першого ключового поля id в стовпці "Назва" таблиці "Групи".

Запит в форматі:
UPDATE Групи SET Назва \u003d "БФ-16б" WHERE ID \u003d 1;

Зберігаємо запит з ім'ям "Ізмененіе_запісі_1". В результаті в «Області переходів» з'явиться об'єкт - «Ізмененіе_запісі_1» (Рис. 3.).



Мал. 3.

Після збереження запиту необхідно виконати цей запит, клацаючи на піктограмі «Виконати». В результаті виконання команди «Ізмененіе_запісі_1» з'явиться вікно діалогу, в якому необхідно ввести значення параметра ID \u003d 1 і натиснути кнопку ОК. Після цих дій в таблиці "Групи" зміниться запис в поле "Назва" з БФ-16а на БФ-16б (Рис. 4.).



Мал. 4.

команда DELETE

Команда DELETE призначена для видалення записів з таблиці.

Формат запиту на видалення записів:
DELETE FROM названіе_табліци WHERE Условіе_Отбора;

Створимо запит на зміну запису в таблиці "Групи" бази даних sql_training_st.mdb.

Наприклад, видалимо існуючий запис для першого ключового поля id в усіх шпальтах (полях) таблиці "Групи".

Для цього запит в форматі:
DELETE FROM Групи WHERE ID \u003d 1;
створюємо на бланку запиту, виконавши команду "Конструктор запитів" на вкладці "Створення", в режимі "Режим SQL" з меню Вид.

Зберігаємо запит з ім'ям "Удаленіе_запісі_1". В результаті в «Області переходів» з'явиться об'єкт - «Удаленіе_запісі_1» (Рис. 5.).



Мал. 5.

Після збереження запиту необхідно виконати цей запит, клацаючи на піктограмі «Виконати». В результаті виконання команди «Удаленіе_запісі_1» з'явиться вікно діалогу, в якому необхідно ввести значення параметра ID \u003d 1 і натиснути кнопку ОК. Після цих дій відкриється вікно діалогу "Підтвердіть видалення записів". Після підтвердження в таблиці "Групи" буде видалено дані у всіх полях, тобто відсутній запис (Рис. 6.).



Мал. 6.

Слід зазначити, що для видалення даних в конкретних полях таблиці доцільно скористатися командою UPDATE і замінити значення в необхідних полях на Null. Якщо необхідно видалити таблицю в цілому, то слід використовувати оператор DROP TABLE (синтаксис оператора: DROP TABLE названіе_табліци;).

Відновимо перший запис в таблиці "Групи", виконавши команду «Добав_1_запісі», в результаті відновимо перший запис (Рис. 7.).



Мал. 7.

Останнє оновлення: 13.07.2017

Для додавання даних застосовується команда INSERT, яка має наступний формальний синтаксис:

INSERT ім'я_таблиці [(спісок_столбцов)] VALUES (значення1, значення2, ... значеніеN)

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

Наприклад, нехай раніше була створена наступна база даних:

CREATE DATABASE productsdb; GO USE productsdb; CREATE TABLE Products (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR (30) NOT NULL, Manufacturer NVARCHAR (20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

Додамо в неї один рядок за допомогою команди INSERT:

INSERT Products VALUES ( "iPhone 7", "Apple", 5, 52000)

Після вдалого виконання в SQL Server Management Studio в поле повідомлень повинно з'явитися повідомлення "1 row (s) affected":

Варто враховувати, що значення для стовпців в дужках після ключового слова VALUES передаються по порядку їх оголошення. Наприклад, в вираженні CREATE TABLE вище можна побачити, що першим стовпцем йде Id. Але так як для нього заданий атрибут IDENTITY, то значення цього стовпця автоматично генерується, і його можна не вказувати. Другий стовпець представляє ProductName, тому перше значення - рядок "iPhone 7" буде передано саме цього стовпцю. Друге значення - рядок "Apple" буде передана третій стовпці Manufacturer і так далі. Тобто значення передаються стовпцями наступним чином:

    ProductName: "iPhone 7"

    Manufacturer: "Apple"

Також при введенні значень можна вказати безпосередні стовпці, в які будуть додаватися значення:

INSERT INTO Products (ProductName, Price, Manufacturer) VALUES ( "iPhone 6S", 41000, "Apple")

Тут значення вказується тільки для трьох стовпців. Причому тепер значення передаються в порядку проходження стовпців:

    ProductName: "iPhone 6S"

    Manufacturer: "Apple"

Для невказаних стовпців (в даному випадку ProductCount) буде додаватися значення за замовчуванням, якщо заданий атрибут DEFAULT, або значення NULL. При цьому не вказані стовпці повинні допускати значення NULL або мати атрибут DEFAULT.

Також ми можемо додати відразу кілька рядків:

INSERT INTO Products VALUES ( "iPhone 6", "Apple", 3, 36000), ( "Galaxy S8", "Samsung", 2, 46000), ( "Galaxy S8 Plus", "Samsung", 1, 56000)

В даному випадку в таблицю будуть додані три рядки.

Також при додаванні ми можемо вказати, щоб для стовпця використовувалося значення за замовчуванням за допомогою ключового слова DEFAULT або значення NULL:

INSERT INTO Products (ProductName, Manufacturer, ProductCount, Price) VALUES ( "Mi6", "Xiaomi", DEFAULT, 28000)

В даному випадку для стовпця ProductCount буде використано значення за замовчуванням (якщо воно встановлено, якщо його немає - то NULL).

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

INSERT INTO Products DEFAULT VALUES

Але якщо брати таблицю Products, то подібна команда завершиться з помилкою, так як кілька полів не мають атрибута DEFAULT і при цьому не допускають значення NULL.

Дана ж стаття присвячена наповненню таблиць БД даними, тобто будемо вивчати SQL-команди для вставки нових записів. Слід сказати, що запис в таблицю можна зробити двома способами:

Спосіб №1.
Спробуємо внести запис про нову країні в таблицю countries. Синтаксис додавання буде наступним:
INSERT INTO ім'я_таблиці (поле_1, поле_2, ...) VALUES (значення_1, значення_2, ...); Виходячи з нашої структури таблиці, SQL-запит буде таким:
INSERT INTO countries (country_name, acronym_name) VALUES ( "Russia", "RU"); Ось так ми внесли в нашу таблицю запис про країну «Росія». Тут має бути все зрозуміло і просто, головне уважно дивитися які поля вказуєте в перших дужках, і в такому ж порядку прописувати значення у друге.

Спосіб №2.
Другий спосіб, на мій погляд, трохи простіше, оскільки ви бачите що, і якому полю привласнюєте. Повірте, якщо в таблиці величезна кількість стовпців, то дуже просто переплутати або недоглядіти порядок полів в перших, і порядок значень в других дужках. Синтаксис другого методу такий:
INSERT INTO ім'я_таблиці SET поле_1 \u003d значення_1, поле_2 \u003d значення_2, ...; Давайте на цьому прикладі внесемо якусь інформацію в табличку persons, Оскільки там більше полів, і відразу буде відчуватися перевага другого способу:
INSERT INTO persons SET first_name \u003d "Ivan", last_name \u003d "Dulin", registration_date \u003d "2012-06-14", country \u003d "1"; Тепер в нашій табличці є такі дані:


Ви, напевно, помітили, що ми не вказали значення для age, а воно виявилося заповненим ... Все правильно - для даного поля ми встановлювали значення за замовчуванням як 25. Так що тепер наш Ivan Dulin значитися в базі з віком 25 років. Можливо, не найвдаліший приклад робити значення за замовчуванням для поля віку, але можна такі властивості встановлювати до таких полях, як, наприклад, рейтинг користувача сайту, або кількість переглядів сторінки. Для них спочатку ставиться значення 0.

Слід ще звернути увагу на формат дати в MySQL: YYYY-MM-DD. Якщо його не дотримуватися, то ваші записи просто не будуть внесені в таблицю.

Як бачимо, поле profession заповнене як NULL, це пусте значення. Для даного поля.

Як доповнення, розглянемо ще таку команду:
LOAD DATA LOCAL INFILE "D: \\ zapros.txt" INTO TABLE persons; Як ви думаєте, що ми зараз зробили ?! А зробили ми наступне: додали дані в таблицю persons з файлу zapros.txt, Який знаходиться на диску D. Інформація у файлі повинна бути такої структури:


Структура даних файлу повинна відповідати таким вимогам:
  1. Кожна нова запис повинна описуватися з нового рядка
  2. Дані повинні бути вказані для всіх полів. Як ви можете помітити, для поля id ми вказали значення NULL, адже воно у нас автоінкрементне, так що MySQL сам внесе потрібне значення.
  3. Поля розділяються один від одного символом табуляції (клавіша Tab).
  4. Введена інформація повинна відповідати типам даних конкретного поля. Тобто, наприклад, дата в форматі РРРР-ММ-ДД, ціле число для integer і т.д.
Таким чином, ви навчилися вносити нові дані в таблиці своєї БД. Для закріплення вивченого матеріалу, внесіть самостійно такі дані:

Таблиця professions:

Таблиця persons:

first_name last_name age registration_date country profession
Leonid Bilak 45 2012-06-20 2 1
Yuri Nazarov 22 2012-06-21 3 1
Alla Savenko 25 2012-06-22 2 3
Irina Nikolaeva 31 2012-06-22 1 3

Обов'язково додайте ці записи, оскільки вони нам знадобляться для вивчення оператора SELECT (вибору інформації з БД), який ми розглянемо в наступній (четвертої) статті по вивченню SQL-запитів.

У попередніх розділах ми розглядали роботу з отримання даних з заздалегідь створених таблиць. Тепер пора розібрати, яким же чином ми можемо створювати / видаляти таблиці, додавати нові записи і видаляти старі. Для цих цілей в SQL існують такі оператори, як: CREATE - створює таблицю, ALTER - змінює структуру таблиці, DROP - видаляє таблицю або поле, INSERT - додає дані в таблицю. Почнемо знайомство з цією групою операторів з оператора INSERT.

1. Додавання цілих рядків

Як видно з назви, оператор INSERT використовується для вставки (додавання) рядків в таблицю бази даних. Додавання можна здійснити кількома способами:

  • - додати одну повну рядок
  • - додати частину рядка
  • - додати результати запиту.

Отже, щоб додати новий рядок в таблицю, нам необхідно вказати назву таблиці, перерахувати назви колонок і вказати значення для кожної колонки за допомогою конструкції INSERT INTO названіе_табліци (поле1, поле2 ...) VALUES (Значення1, значення2 ...). Розглянемо на прикладі.

INSERT INTO Sellers (ID, Address, City, Seller_name, Country) VALUES ( "6", "1st Street", "Los Angeles", "Harry Monroe", "USA")

Також можна змінювати порядок зазначення назв колонок, проте одночасно потрібно міняти і порядок значень в параметрі VALUES.

2. Додавання частини рядків

У попередньому прикладі при використанні оператора INSERT ми явно відзначали імена стовпців таблиці. Використовуючи даний синтаксис, ми можемо пропустити деякі стовпці. Це означає, що ви вводите значення для одних стовпців але не пропонуєте їх для інших. наприклад:

INSERT INTO Sellers (ID, City, Seller_name) VALUES ( "6", "Los Angeles", "Harry Monroe")

В даному прикладі ми не вказали значення для двох стовпців Address і Country. Ви можете виключати деякі стовпці з оператора INSERT INTO, Якщо це дозволяє виробляти визначення таблиці. В цьому випадку необхідно дотримуватися одна з умов: цей стовпець визначений як допускає значення NULL (Відсутність будь-якого значення) або в визначення таблиці вказане значення за замовчуванням. Це означає, що, якщо не вказано ніякого значення, буде використано значення за замовчуванням. Якщо ви пропускаєте стовпець таблиці, яка не допускає появи в своїх рядках значень NULL і не має значення, визначеного для використання за замовчуванням, СУБД видасть повідомлення про помилку, і це рядок не буде додана.

3. Додавання відібраних даних

У попередній прикладах ми вставляли дані в таблиці, прописуючи їх вручну в запиті. Однак оператор INSERT INTO дозволяє автоматизувати цей процес, якщо ми хочемо вставляти дані з іншої таблиці. Для цього в SQL існує така Кострукцій як INSERT INTO ... SELECT .... Дана конструкція дозволяє одночасно вибирати дані з однієї таблиці, і вставити їх в іншу. Припустимо ми маємо ще одну таблицю Sellers_EU з переліком продавців нашого товару в Європі і нам потрібно їх додати в загальну таблицю Sellers. Структура цих таблиць однакова (то ж кількість колонок і ті ж їх назви), однак інші дані. Для цього ми можемо прописати наступний запит:

INSERT INTO Sellers (ID, Address, City, Seller_name, Country) SELECTID, Address, City, Seller_name, Country FROM Sellers_EU

Потрібно звернути увагу, щоб значення внутрішніх ключів не повторювалися (поле ID), В іншому випадку відбудеться помилка. оператор SELECT також може включати пропозиції WHERE для фільтрації даних. Також слід зазначити, що СУБД не звертає уваги на назви колонок, які містяться в операторі SELECT, Для неї важливо лише порядок їхнього розташування. Тому дані в першому зазначеному стовпці, що були обрані з-за SELECT, Будуть в будь-якому випадку заповнені в перший стовпець таблиці Sellers, Зазначеної після оператора INSERT INTO, Незалежно від назви поля.

4. Копіювання даних з однієї таблиці в іншу

Часто при роботі з базами даних виникає необхідність в створенні копій будь-яких таблиць, з метою резервування або модифікації. Щоб зробити повну копію таблиці в SQL передбачений окремий оператор SELECT INTO. Наприклад, нам потрібно створити копію таблиці Sellers, Потрібно буде прописати запит наступним чином:

SELECT * INTO Sellers_new FROM Sellers

На відміну від попередньої конструкції INSERT INTO ... SELECT ..., Коли дані додаються в існуючу таблицю, конструкція копіює дані в нову таблицю. Також можна сказати, що перша конструкція імпортує дані, а друга - експортує. При використанні конструкції SELECT ... INTO ... FROM ... слід враховувати наступне:

  • - можна використовувати будь-які пропозиції в операторі SELECT, такі як GROUP BY і HAVING
  • - для додавання даних з декількох таблиць можна використовувати об'єднання
  • - дані можливо додати тільки одну таблицю, незалежно від того, зі скількох таблиць вони були взяті.






2021 gtavrl.ru.