Оператор INSERT
Оператор INSERT вставляет новые записи в таблицу. При этом значения столбцов могут представлять собой литеральные константы, либо являться результатом выполнения подзапроса. В первом случае для вставки каждой строки используется отдельный оператор INSERT ; во втором случае будет вставлено столько строк, сколько возвращается подзапросом.
Синтаксис оператора следующий:
Как видно из представленного синтаксиса, список столбцов не является обязательным (об этом говорят квадратные скобки в описании синтаксиса). В том случае, если он отсутствует, список вставляемых значений должен быть полный, то есть обеспечивать значения для всех столбцов таблицы. При этом порядок значений должен соответствовать порядку, заданному оператором CREATE TABLE для таблицы, в которую вставляются строки. Кроме того, эти значения должны относиться к тому же типу данных, что и столбцы, в которые они вносятся. В качестве примера рассмотрим вставку строки в таблицу Product, созданную следующим оператором CREATE TABLE :
Пусть требуется добавить в эту таблицу модель ПК 1157 производителя B. Это можно сделать следующим оператором:
Если задать список столбцов, то можно изменить «естественный» порядок их следования:
Казалось бы, это совершенно излишняя возможность, которая делает конструкцию только более громоздкой. Однако она становится выигрышной, если столбцы имеют значения по умолчанию. Рассмотрим следующую структуру таблицы:
Отметим, что здесь значения всех столбцов имеют значения по умолчанию (первые два — NULL, а последний столбец — type — PC). Теперь мы могли бы написать:
В этом случае отсутствующее значение при вставке строки будет заменено значением по умолчанию — PC. Заметим, что если для столбца в операторе CREATE TABLE не указано значение по умолчанию и не указано ограничение NOT NULL , запрещающее использование NULL в данном столбце таблицы, то подразумевается значение по умолчанию NULL .
Возникает вопрос: а можно ли не указывать список столбцов и, тем не менее, воспользоваться значениями по умолчанию? Ответ положительный. Для этого нужно вместо явного указания значения использовать зарезервированное слово DEFAULT :
Поскольку все столбцы имеют значения по умолчанию, для вставки строки со значениями по умолчанию можно было бы написать:
Однако для этого случая предназначена специальная конструкция DEFAULT VALUES (см. синтаксис оператора), с помощью которой вышеприведенный оператор можно переписать в виде
Заметим, что при вставке строки в таблицу проверяются все ограничения, наложенные на данную таблицу. Это могут быть ограничения первичного ключа или уникального индекса, проверочные ограничения типа CHECK , ограничения ссылочной целостности. В случае нарушения какого-либо ограничения вставка строки будет отклонена. Рассмотрим теперь случай использования подзапроса. Пусть нам требуется вставить в таблицу Product_D все строки из таблицы Product, относящиеся к моделям персональных компьютеров (type = ‘PC’). Поскольку необходимые нам значения уже имеются в некоторой таблице, то формирование вставляемых строк вручную, во-первых, является неэффективным, а, во-вторых, может допускать ошибки ввода. Использование подзапроса решает эти проблемы:
Использование в подзапросе символа «*» является в данном случае оправданным, так как порядок следования столбцов является одинаковым для обеих таблиц. Если бы это было не так, следовало бы применить список столбцов либо в операторе INSERT , либо в подзапросе, либо в обоих местах, который приводил бы в соответствие порядок следования столбцов:
SQL запрос INSERT INTO — наполнить базу данных информацией
sql запрос INSERT INTO имеет смысл при созданной таблицы базы данных. То есть, таблица существует, имеет название, созданные строки и столбцы. создается таблица оператором: CREATE TABLE, модифицируется таблица оператором ALTER TABLE.
sql запрос INSERT INTO — синтаксис запроса
sql запрос INSERT INTO имеет следующий синтаксис:
INSERT INTO название_таблицы (в скобки, если нужно, вставляем список колонок куда нужно вставить данные) VALUES вставляемые данные1, вставляемые данные2, вставляемые данные3.
Между INSERT и INTRO можно вставить опцию IGNORE. Она не обязательная. Нужна для защиты первичных ключей при редактировании таблицы. Иначе, если при редактировании происходит дублирование первичных ключей, то при вставке опции IGNORE первая строка с первичным ключом останется в изменяемой таблице, Другие первичные ключи удаляются. По умолчанию эту опцию опускаем.
Статьи по теме: Что такое база данных — понятие база данных в информатике
Есть необязательные опции LOW_PRIORITY и DELAYED. Они определяют приоритеты добавления информации в БД. Первая задает ожидание освобождения БД, вторая означает буферизацию информации.
Строка в запросе: INSERT с фразой VALUES позволит добавить одиночную строку в таблицу БД. Фраза VALUES содержит значения этих данных.
Вместо фразы VALUES могут указываться подзапросы. INSERT с подзапросом добавляет к таблице строки, возвращенные подзапросом. Сервер базы данных обрабатывает подзапрос и вставляет все возвращенные строки в таблицу. Сервер не вставляет строки, если подзапрос их не выбирает.
- subquery_1 — подзапрос, который сервер обрабатывает тем же способом что и представление
- subquery_2 — подзапрос, который возвращает строки, вставляемые в таблицу. Список этого подзапроса должен иметь количество столбцов, совпадающее со списком столбцов INSERT.
Подзапросы практически не используются в базе данных MySQL.
Статьи по теме: Классификация баз данных
Примеры sql запроса INSERT INTO в базе данных MySQL
Вставляем новые строки в БД MySQL командой INSERT INTRO.
Первый пример.
Вставляем новые строки в таблицу table_name.
INSERT INTO table_name VALUES (‘2′,’145′,’1′,’name’);
Это значит, что мы хотим в таблицу table_name вставить в столбцы значения 2,145,1,name. Так как, столбцы не указаны значения заполяются во все столбцы таблицы.
Пример второй.
Вставка информации в нужные (указанные) столбцы таблицы table_name.
INSERT INTO table_name (client_customer, client_subclient, client_mail) VALUES (‘name1′,’subname1′,’name1@mail.ru′), (‘name2′,’subname2′,’name2@mail.ru′), (‘name3′,’subname3′,(’name3@mail.ru′);
Игорь Серов специально для сайта «Интернет технологии».
Другие статьи раздела: СУБД
- PhpMyAdmin на локальном сервере
- Что такое база данных — понятие база данных в информатике
- Функции СУБД обеспечивающие управление базой данных
- Устройство реляционной базы данных
- Первичный ключ и внешний ключ таблиц реляционных баз данных
- Концептуальная модель базы данных — диаграмма связи между объектами
- Понятие и назначение SQL запроса
- SQL запрос для создания таблицы базы данных — оператор CREATE TABLE
- SQL ALTER TABLE — sql запрос на модификацию таблицы базы данных
Как сделать инсерт sql
Для добавления новых записей в таблицу предназначен оператор INSERT . Рассмотрим его общую структуру.
MySQLINSERT INTO имя_таблицы [(поле_таблицы, ...)] VALUES (значение_поля_таблицы, ...) | SELECT поле_таблицы, ... FROM имя_таблицы ...Значения можно вставлять перечислением с помощью слова VALUES , перечислив их в круглых скобках через запятую или c помощью оператора SELECT .
Таким образом, добавить новые записи можно следующими способами:
MySQLINSERT INTO Goods (good_id, good_name, type) VALUES (20, 'Table', 2);MySQLINSERT INTO Goods (good_id, good_name, type) VALUES (20, 'Table', 2); -- и сразу же проверим результат SELECT * FROM Goods;
good_id good_name type 1 apartment fee 1 2 phone fee 1 3 bread 2 4 milk 2 5 red caviar 3 6 cinema 4 7 black caviar 3 8 cough tablets 5 9 potato 2 10 pineapples 3 11 television 8 12 vacuum cleaner 8 13 jacket 7 14 fur coat 7 15 music school fee 6 16 english school fee 6 20 Table 2 Следует помнить, что первичный ключ таблицы является уникальным значением и добавление уже существующего значения приведёт к ошибке.
При добавлении новой записи с уникальными индексами выбор такого уникального значения может оказаться непростой задачей. Решением может быть дополнительный запрос, направленный на выявление максимального значения первичного ключа для генерации нового уникального значения.
MySQLINSERT INTO Goods SELECT COUNT(*) + 1, 'Table', 2 FROM Goods;В MySQL введён механизм его автоматической генерации. Для этого достаточно снабдить первичный ключ good_id атрибутом AUTO_INCREMENT . Тогда при создании новой записи в качестве значения good_id достаточно передать NULL или 0 — поле автоматически получит значение, равное максимальному значению столбца good_id , плюс единица.
MySQLCREATE TABLE Goods ( good_id INT NOT NULL AUTO_INCREMENT ... );MySQLINSERT INTO Goods VALUES (NULL, 'Table', 2);В PostgreSQL есть схожий механизм для автоматической генерации уникального идентификатора. Для этого он имеет типы SMALLSERIAL , SERIAL , BIGSERIAL , которые не являются настоящими типами, а скорее просто удобством записи столбцов с уникальным идентификатором. Столбец с одним из вышеперечисленных типов будет являться целочисленным и автоматически увеличиваться при добавление новой записи.
MySQLCREATE TABLE Goods ( good_id SERIAL ... );MySQLINSERT INTO Goods (good_name, type) VALUES ('Table', 2);SQL INSERT INTO
Инструкция INSERT INTO используется для вставки новых записей в таблицу.
Синтаксис INSERT INTO
Написать инструкцию INSERT INTO можно двумя способами.
Первый способ определяет как имена столбцов, так и значения, которые будут вставлены:
INSERT INTO table_name (column1, column2, column3, . )
VALUES (value1, value2, value3, . );Если вы добавляете значения для всех столбцов таблицы, вам не нужно указывать имена столбцов в SQL запросе. Однако убедитесь, что порядок значений находится в том же порядке, что и столбцы в таблице. Синтаксис INSERT INTO будет выглядеть следующим образом:
INSERT INTO table_name
VALUES (value1, value2, value3, . );Демо база данных
Ниже представлена подборка из группы "Customers" в таблице в образец базы данных Northwind:
CustomerID CustomerName ContactName Address City PostalCode Country 89 White Clover Markets Karl Jablonski 305 - 14th Ave. S. Suite 3B Seattle 98128 USA 90 Пример INSERT INTO
Следующая инструкция SQL вставляет новую запись в таблице "Customers":
Пример
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');Выбор из таблицы "Customers" теперь будет выглядеть следующим образом:
CustomerID CustomerName ContactName Address City PostalCode Country 89 White Clover Markets Karl Jablonski 305 - 14th Ave. S. Suite 3B Seattle 98128 USA 90 Вы заметили, что мы не вставили ни одного числа в поле CustomerID?
Столбец CustomerID является полем auto-increment создается автоматически при вставке в таблицу новой записи.Вставка данных только в указанные столбцы
Кроме того, можно вставлять данные только в определенные столбцы.
Следующая инструкция SQL вставит новую запись, но только вставит данные в столбцы "CustomerName", "City" и "Country" (CustomerID будет обновляться автоматически):
Пример
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');Выбор из таблицы "Customers" теперь будет выглядеть следующим образом:
CustomerID CustomerName ContactName Address City PostalCode Country 89 White Clover Markets Karl Jablonski 305 - 14th Ave. S. Suite 3B Seattle 98128 USA 90 Мы только что запустили
SchoolsW3 видеокурс сегодня!
Сообщить об ошибке
Если вы хотите сообщить об ошибке или внести предложение, не стесняйтесь отправлять на электронное письмо:
Ваше предложение:
Спасибо Вам за то, что помогаете!
Ваше сообщение было отправлено в SchoolsW3.
Schoolsw3 оптимизирован для бесплатного обучения, проверки и подготовки знаний. Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.
Предыдущая запись
