Содержание

Вставка, изменение и удаление записей таблицы с помощью Access SQL

  • Статья
  • Чтение занимает 2 мин

Вставка записей в таблицу

По существу, существует два метода добавления записей в таблицу. Первый — добавление по одной записи за раз, второй — одновременное добавление нескольких записей. В обоих случаях для выполнения задачи необходимо использовать инструкцию SQL INSERT INTO. Инструкции INSERT INTO обычно называют запросами на добавление.

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

VALUES. Например, указанная ниже инструкция вставляет значения 1, Kelly и Jill в поля CustomerID, Last Name и First Name соответственно.

INSERT INTO tblCustomers (CustomerID, [Last Name], [First Name]) 
    VALUES (1, 'Kelly', 'Jill') 

Вы можете опустить список полей, но только в том случае, если вы передаете все значения, которые должна содержать запись.

INSERT INTO tblCustomers 
    VALUES (1, Kelly, 'Jill', '555-1040', '[email protected]') 

Чтобы добавить одновременно несколько записей в таблицу, используйте инструкцию INSERT INTO совместно с инструкцией SELECT. Если вы вставляете записи из другой таблицы, тип каждого вставляемого значения должен быть совместим с типом поля, принимающего данные.

Указанная ниже инструкция INSERT INTO вставляет все значения полей CustomerID, Last Name и First Name таблицы tblOldCustomers в соответствующие поля таблицы tblCustomers.

INSERT INTO tblCustomers (CustomerID, [Last Name], [First Name]) 
    SELECT CustomerID, [Last Name], [First Name] 
    FROM tblOldCustomers 

Если таблицы определены совершенно одинаково, можно не использовать списки полей.

INSERT INTO tblCustomers 
    SELECT * FROM tblOldCustomers 

Изменение записей в таблице

Чтобы изменить текущие данные в таблице, используйте инструкцию UPDATE, которую обычно называют запросом на обновление. Инструкция UPDATE может изменить одну или несколько записей и обычно имеет указанный ниже вид.

UPDATE table name   
    SET field name  = some value

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

UPDATE tblCustomers 
    SET Phone = 'None' 

В большинстве случаев вам потребуется уточнить инструкцию UPDATE с помощью выражения WHERE, чтобы ограничить количество изменяемых записей.

UPDATE tblCustomers 
    SET Email = 'None' 
    WHERE [Last Name] = 'Smith' 

Удаление записей из таблицы

Чтобы удалить текущие данные в таблице, используйте инструкцию DELETE, которую обычно называют запросом на удаление. Эту операцию также называют усечением таблицы. Инструкция DELETE может удалить одну или несколько записей из таблицы и обычно имеет следующий вид:

DELETE FROM table list

Инструкция DELETE не удаляет структуру таблицы, она удаляет только данные, хранящиеся в структуре таблицы. Чтобы удалить все записи из таблицы, используйте инструкцию

DELETE и укажите одну или несколько таблиц, из которых вы хотите удалить все записи.

DELETE FROM tblInvoices 

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

DELETE FROM tblInvoices 
    WHERE InvoiceID = 3 

Если вы хотите удалить данные только из определенных полей таблицы, используйте инструкцию UPDATE и присвойте этим полям значение NULL, но только в том случае, если эти поля допускают значение NULL.

UPDATE tblCustomers  
    SET Email = Null 

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Инструкция INSERT INTO в Transact-SQL – несколько способов добавления данных в таблицу | Info-Comp.ru

Всем привет! В данной статье речь пойдет о том, как можно добавлять данные в таблицу в Microsoft SQL Server, если Вы уже хоть немного знакомы с языком T-SQL, то наверно поняли, что сейчас мы будем разговаривать об инструкции INSERT, а также о том, как ее можно использовать для добавления данных в таблицу.

Начнем по традиции с небольшой теории.

Содержание

  1. Инструкция INSERT в T-SQL
  2. Исходные данные
  3. Пример 1 – Добавляем новую запись в таблицу с использованием конструктора табличных значений
  4. Пример 2 – Добавляем новые строки в таблицу с использованием запроса SELECT
  5. Пример 3 – Добавляем новые записи в таблицу с использованием хранимой процедуры

Инструкция INSERT в T-SQL

INSERT – это инструкция языка T-SQL, которая предназначена для добавления данных в таблицу, т. е. создания новых записей. Данную инструкцию можно использовать как для добавления одной строки в таблицу, так и для массовой вставки данных. Для выполнения инструкции INSERT требуется разрешение на вставку данных (INSERT) в целевую таблицу.

Существует несколько способов использования инструкции INSERT в части данных, которые необходимо вставить:

  • Перечисление конкретных значений для вставки;
  • Указание набора данных в виде запроса SELECT;
  • Указание набора данных в виде вызова процедуры, которая возвращает табличные данные.

Заметка! Начинающим рекомендую посмотреть мой видеокурс по T-SQL.

Упрощённый синтаксис

   
   INSERT [INTO] [таблица] (список столбцов, …)
        VALUES (список значений, …)
          Или
        SELECT запрос на выборку
          Или
        EXECUTE процедура


Где,

  • INSERT INTO – это команда добавления данных в таблицу;
  • Таблица – это имя целевой таблицы, в которую необходимо вставить новые записи;
  • Список столбцов – это перечень имен столбцов таблицы, в которую будут вставлены данные, разделенные запятыми;
  • VALUES – это конструктор табличных значений, с помощью которого мы указываем значения, которые будем вставлять в таблицу;
  • Список значений – это значения, которые будут вставлены, разделенные запятыми. Они перечисляются в том порядке, в котором указаны столбцы в списке столбцов;
  • SELECT – это запрос на выборку данных для вставки в таблицу. Результирующий набор данных, который вернет запрос, должен соответствовать списку столбцов;
  • EXECUTE – это вызов процедуры на получение данных для вставки в таблицу. Результирующий набор данных, который вернет хранимая процедура, должен соответствовать списку столбцов.

Вот примерно так и выглядит упрощённый синтаксис инструкции INSERT INTO, в большинстве случаев именно так Вы и будете добавлять новые записи в таблицы.

Список столбцов, в которые Вы будете вставлять данные, можно и не писать, в таком случае их порядок будет определен на основе фактического порядка столбцов в таблице. При этом необходимо помнить этот порядок, когда Вы будете указывать значения для вставки или писать запрос на выборку. Лично я Вам рекомендую все-таки указывать список столбцов, в которые Вы планируете добавлять данные.

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

Еще хотелось бы отметить, что тип данных значений, которые Вы будете вставлять, должен соответствовать типу данных столбца, в который будет вставлено это значение, ну или, хотя бы, поддерживал неявное преобразование. Но я Вам советую контролировать тип данных (формат) значений, как в списке значений, так и в запросе SELECT.

Хватит теории, переходим к практике.

Исходные данные

Для того чтобы добавлять данные в таблицу, нам нужна соответственно сама таблица, давайте ее создадим, и уже в нее будем пробовать добавлять записи.

Примечание! Все примеры будут выполнены в Microsoft SQL Server 2016 Express.

   
   CREATE TABLE TestTable(
        [Id] [INT] IDENTITY(1,1) NOT NULL,
        [ProductName] [VARCHAR](100) NOT NULL,
        [Price] [Money] NOT NULL
   )


Наша тестовая таблица, будет содержать перечень товаров с ценой.

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

   
   CREATE PROCEDURE TestProcedure
   AS
   BEGIN
        SELECT ProductName, Price
        FROM TestTable
   END


Для примера она у нас будет возвращать данные из только что созданной таблицы TestTable.

Примечание!

Как Вы понимаете, чтение данного материала подразумевает наличные определенных знаний по языку T-SQL, поэтому если Вам что-то непонятно, рекомендую ознакомиться со следующими материалами:

  • Справочник по Transact-SQL;
  • Основы программирования на T-SQL;
  • SQL код – самоучитель по SQL для начинающих программистов;
  • Видеокурсы по T-SQL.

Пример 1 – Добавляем новую запись в таблицу с использованием конструктора табличных значений

Сначала давайте попробуем добавить одну запись и сразу посмотрим на результат, т. е. напишем запрос на выборку.

   
   INSERT INTO TestTable(ProductName, Price)
           VALUES ('Компьютер', 100)

   GO

   SELECT * FROM TestTable


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

После инструкции INSERT я написал инструкцию SELECT и разделил их командой GO.

А теперь давайте представим, что нам нужно добавить несколько строк. Мы для этого напишем следующий запрос.

   
   INSERT INTO TestTable(ProductName, Price)
           VALUES ('Компьютер', 100),
                   ('Клавиатура', 20),
                   ('Монитор', 50)
   GO

   SELECT * FROM TestTable


В данном случае мы добавили три записи, т.е. три строки. После VALUES значения каждой новой строки указаны в скобочках, разделили мы их запятыми.

Пример 2 – Добавляем новые строки в таблицу с использованием запроса SELECT

Очень часто возникает необходимость добавлять много данных в таблицу, например, на основе запроса на выборку, т.е. SELECT. Для этого вместо VALUES нам всего лишь нужно указать запрос.

   
   INSERT INTO TestTable(ProductName, Price)
        SELECT ProductName, Price 
        FROM TestTable
        WHERE Id > 2
   GO

   SELECT * FROM TestTable


В данном примере мы написали запрос SELECT, который возвращает данные из таблицы TestTable, но не все, а только те, у которых идентификатор больше 2. А результат вставили все в ту же таблицу TestTable.

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

   
   INSERT INTO TestTable
           SELECT ProductName, Price 
           FROM TestTable
           WHERE Id > 2
   GO

   SELECT * FROM TestTable


В данном случае мы уверены в том, что в таблице TestTable первый столбец это ProductName, а второй Price, поэтому мы можем позволить себе написать именно так. Но, снова повторюсь, на практике лучше указывать список столбцов.

Если Вы заметили, я во всех примерах не указывал столбец Id, а он у нас есть, ошибки не возникло, так как данный столбец со свойством IDENTITY, он автоматически генерирует идентификаторы, поэтому в такой столбец вставить данные просто не получится.

Пример 3 – Добавляем новые записи в таблицу с использованием хранимой процедуры

Сейчас давайте вставим в таблицу данные, которые нам вернёт хранимая процедура. Смысл здесь такой же, вместо VALUES и вместо запроса мы указываем вызов процедуры. Но как Вы понимаете, порядок и количество столбцов, возвращаемых процедурой, должен строго совпадать со списком столбцов для вставки (даже если список столбцов не указан).

   
   INSERT INTO TestTable(ProductName, Price)
           EXEC TestProcedure

   GO

   SELECT * FROM TestTable


Надеюсь, данный материал помог Вам разобраться с инструкцией INSERT INTO, а у меня все, пока!

Лучший способ заполнения таблиц базы данных [обновлено]

Таблицы являются основой любой системы баз данных и могут хранить более 30 типов данных. Таблицы обеспечивают систематический способ хранения данных для организации вашей базы данных. Команда вставки SQL является неотъемлемой частью SQL, и если пользователи не выполняют ее должным образом, невозможно сохранить данные в таблицах базы данных.

Что такое вставка SQL?

Команда «INSERT INTO» является частью языка манипулирования данными (DML), подъязыка SQL, который позволяет изменять и извлекать информацию из объектов базы данных. Эта команда позволяет sus вставлять строки в таблицы.

С помощью этой команды вы можете вставлять значения во все столбцы или выбранные столбцы таблицы. Эту вставку можно выполнить в существующей таблице или в таблице, которую вы создаете с помощью команды «CREATE TABLE».

Давайте разберемся с синтаксисом команды вставки SQL.

Синтаксис команды SQL Insert INTO

Существует два синтаксиса для команды «INSERT INTO». Первый синтаксис выглядит следующим образом:

  • Оператор «INSERT INTO» сообщает системе базы данных, что вы хотите вставить строки в таблицу, указанную в параметре table_name
  • Укажите столбцы таблицы, в которые вы хотите вставить значения, заключенные во внутренние скобки. Используйте запятые для разделения столбцов
  • Оператор «VALUES» сообщает системе базы данных, что вставляемые значения указываются
  • Затем соответствующие значения каждого столбца указываются в том же порядке, что и столбцы в квадратных скобках, с использованием запятых для разделения этих значений

Если вы хотите вставить значения во все столбцы таблицы, нет необходимости указывать столбцы в команде. Для этой цели можно использовать следующий синтаксис:

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

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

Давайте попробуем заполнить всю таблицу, используя эти понятия.

Вставка значений во все столбцы таблицы

  • Первое, что мы сделаем, это создадим собственную таблицу с помощью команды «CREATE TABLE»

Мы создадим таблицу с именем «Сотрудник», используя следующий запрос:

Как видите, «EmployeeID» — это первичный ключ, а «Имя» имеет определенное для него ОГРАНИЧЕНИЕ NULL, поэтому ни один из этих атрибутов нельзя оставлять пустым во время вставки. Кроме того, «EmployeeID» не может иметь одинаковое значение для нескольких строк.

«Имя» и «Город» будут содержать типы данных строковых символов, поэтому при вставке значения будут заключены в одинарные кавычки. В противном случае значения не будут приняты.

  • Давайте вставим значения в нашу таблицу, используя следующий запрос:

Если какое-либо из правил не соблюдается, система отобразит сообщение об ошибке, поясняющее, в чем проблема. Например, если мы попытаемся вставить другую запись со столбцом «EmployeeID» как одну, это приведет к следующему:

  • Давайте вставим больше допустимых значений в нашу таблицу «Сотрудник»

  • Чтобы увидеть нашу таблицу, мы будем использовать следующий запрос:

ВЫБЕРИТЕ * ОТ Сотрудника;

Это приведет к следующему:

Иногда у нас нет информации обо всех атрибутах, и мы хотим вставить значения только для нескольких столбцов. Давайте посмотрим, как этого можно достичь.

Вставка значений в определенные столбцы

В нашей таблице «Сотрудник» EmployeeID является первичным ключом, а «Имя» имеет ОГРАНИЧЕНИЕ NULL, поэтому нам нужно ввести явные значения для каждой строки столбца. Столбцы «Город» и «Зарплата» могут содержать значения NULL.

  • Например, если у вас есть информация только об идентификаторе и имени определенного сотрудника, вы можете использовать следующий запрос для вставки этих значений:

Когда мы не вставляем точное значение для атрибута NULL CONSTRAINT, такого как «Имя», мы видим следующую ошибку:

Как видно из этого сообщения об ошибке, мы должны вводить явные значения для каждой записи в этих столбцах с ограничениями.

  • Добавим в нашу таблицу дополнительные строки, используя следующий запрос:

  • Чтобы просмотреть таблицу, воспользуемся командой SELECT.

Если вы не введете явное значение ни для одной из записей в столбце без ограничений, они будут представлены как значения NULL, поскольку значение по умолчанию для любого столбца без ограничений — «NULL».

Иногда нам требуется скопировать значения одной таблицы в другую таблицу. Давайте посмотрим, как это можно сделать.

Заполнение таблицы с помощью другой таблицы

Вы можете заполнить таблицу, используя другую таблицу с помощью команды «INSERT INTO SELECT». Синтаксис этой команды следующий:

ВСТАВИТЬ В целевую_таблицу (столбец_1, столбец_2,… столбец_n)

ВЫБРАТЬ столбец_1, столбец_2,… столбец_n

ИЗ исходной_таблицы

ГДЕ [условие];

  • Параметр destination_table указывает таблицу, в которую мы хотим вставить значения, а параметр source_table указывает таблицу, из которой вставляются значения
  • Здесь нам нужно убедиться, что мы копируем только типы данных из столбцов, которые поступают из одной и той же исходной и целевой таблиц
  • Столбцы с первичным ключом или ограничениями NOT NULL в исходной таблице также должны присутствовать в целевой таблице и быть скопированы
  • Эта команда содержит необязательное условие WHERE 

Из исходной таблицы можно указать условие, по которому следует выбирать строки в параметре «условие» этого предложения. Если его нет в запросе, все строки столбцов вставляются в целевую таблицу.

Например, если мы хотим вставить значения из нашей таблицы «Сотрудник» в таблицу «Зарплата», которая имеет только три столбца (ID сотрудника, имя и зарплата), мы будем использовать следующий запрос:

Чтобы просмотреть нашу таблицу «Зарплата», мы будем использовать команду SELECT следующим образом:

Это показывает, что все значения из указанных столбцов таблицы Employee были вставлены в таблицу Salary.

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

ВСТАВИТЬ В таблицу_назначения

ВЫБРАТЬ * ИЗ исходной_таблицы

ГДЕ [условие];

Например, если мы дублируем нашу таблицу Employee и называем ее «EmployeeCopy», и эта копия включает те же столбцы из оригинала, мы можем использовать следующий запрос, чтобы вставить значения всех столбцов из исходной таблицы в таблицу. новая таблица:.

ВСТАВИТЬ В EmployeeCopy

ВЫБЕРИТЕ * ОТ Сотрудника;

Чтобы просмотреть нашу новую таблицу, мы будем использовать команду SELECT.

Теперь, когда мы знаем разные способы вставки строк в таблицу, давайте посмотрим, как эти строки удалять.

Удаление строк из таблицы

Иногда нам нужно удалить некоторые (или все) строки из таблицы. Это можно сделать с помощью команды «УДАЛИТЬ», которая является частью языка манипулирования данными. Синтаксис этой команды следующий:

УДАЛИТЬ ИЗ table_name

ГДЕ [условие];

Эта команда использует предложение WHERE. Вы можете указать условие, согласно которому строки должны быть удалены в параметре «условие» этого предложения. Если этого нет в запросе, все строки таблицы будут удалены.

Например, если мы хотим удалить все записи о сотрудниках с зарплатой меньше или равной 25000 из нашей таблицы «Сотрудники», мы будем использовать следующий запрос:

В результате получится следующая таблица:

Как видно, две строки были удалены.

Если мы хотим удалить все строки из таблицы, мы будем использовать следующий запрос:

УДАЛИТЬ ОТ Сотрудника;

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

Следующие шаги

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

Теперь, когда вы знаете, как заполнять таблицы, следующим шагом в вашем путешествии по SQL будет запрос данных для извлечения полезной информации. Если вам понравилась эта статья и вы хотите пройти сертификацию, ознакомьтесь с магистерской программой бизнес-аналитика Simplilearn, в которой очень подробно рассматривается SQL.

У вас есть к нам вопросы? Оставьте комментарий, и наши специалисты ответят на него за вас.

SQL Insert Tutorial — Вставка записей в базу данных

Научитесь вставлять данные в базы данных SQL как профессионал!

Одна из ключевых ролей специалиста по обработке и анализу данных — извлекать закономерности и идеи из необработанных данных. Поскольку большая часть государственных и корпоративных данных в мире организована в реляционных базах данных, имеет смысл, что специалисты по данным должны знать, как работать с этими структурами баз данных. Написание SQL-запросов для вставки, извлечения и фильтрации данных в базах данных является ключевым навыком для всех, кто интересуется анализом данных или наукой о данных.

SQL (язык структурированных запросов) основан на реляционной модели Э. Ф. Кодда и алгебре для управления реляционными базами данных. Это язык запросов к базе данных, используемый для создания, вставки, запроса и управления реляционной базой данных и используемый большим количеством приложений.

Несмотря на то, что это существует уже несколько десятилетий, изучение SQL по-прежнему является важным навыком для современных специалистов по данным и вообще для всех, кто работает с данными, поскольку SQL используется во всех видах программного обеспечения реляционных баз данных, включая MySQL, SQL Server, Oracle и PostgreSQL.

В этом руководстве мы подробно узнаем об операциях вставки SQL. Вот список тем, которые мы изучим в этом руководстве:

  • Вставка SQL
  • Вставка записей в базу данных
  • Вставка Pandas DataFrames в базу данных с помощью команды вставки
  • Вставка фреймов данных Pandas в базу данных с помощью команды to_sql()
  • Чтение записей из базы данных
  • Обновление записей в базе данных

Хотите достичь более высокого уровня владения SQL? Зарегистрируйтесь бесплатно и ознакомьтесь с курсами Dataquest по SQL, чтобы получить исчерпывающие интерактивные уроки по всем навыкам SQL, которые вам понадобятся для работы с данными.

Вставка SQL

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

Вставка — это также то, как большинство данных попадают в базы данных в первую очередь, поэтому это также важно каждый раз, когда вы собираете данные. Например, когда ваша компания получает новые данные о клиенте, велика вероятность, что вставка SQL будет тем, как эти данные попадут в вашу существующую базу данных клиентов.

На самом деле, знаете ли вы об этом или нет, данные постоянно поступают в базы данных с помощью SQL-вставок! Когда вы заполняете маркетинговый опрос, совершаете транзакцию, заполняете онлайн-форму для правительства или выполняете тысячи других действий, ваши данные, скорее всего, вставляются в базу данных где-то с помощью SQL.

Давайте углубимся в то, как мы можем использовать SQL для вставки данных в базу данных. Мы можем вставлять данные строку за строкой или добавлять несколько строк одновременно.

Вставка записей в базу данных

В SQL мы используем команду INSERT для добавления записей/строк в данные таблицы. Эта команда не изменит фактическую структуру таблицы, в которую мы вставляем, она просто добавит данные.

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

Теперь давайте представим, что у нас есть новые сотрудники, которых нужно ввести в систему.

Эта таблица сотрудников может быть создана с использованием CREATE TABLE , поэтому мы могли бы использовать эту команду для создания совершенно новой таблицы. Но было бы очень неэффективно создавать совершенно новую таблицу каждый раз, когда мы хотим добавить данные! Вместо этого давайте воспользуемся командой INSERT , чтобы добавить новые данные в нашу существующую таблицу.

Вот основной синтаксис для использования INSERT в SQL:

Мы начинаем с команды INSERT INTO , за которой следует имя таблицы, в которую мы хотим вставить данные. После имени таблицы мы перечисляем столбцы новых данных, которые мы вставляем, столбец за столбцом, в круглых скобках. Затем в следующей строке мы использовали команду ЗНАЧЕНИЯ вместе со значениями, которые мы хотим вставить (по порядку в круглых скобках.

Итак, для нашей таблицы сотрудника , если бы мы добавляли нового сотрудника по имени Кабир, наша команда INSERT могла бы выглядеть так:

Вставка Записи в базу данных из Python

Поскольку мы часто работаем с нашими данными в Python, когда занимаемся наукой о данных, давайте вставим данные из Python в базу данных MySQL.Это обычная задача, которая имеет множество приложений в науке о данных.

Мы можем отправлять и получать данные в базу данных MySQL, установив соединение между Python и MySQL. Существуют различные способы установить эту связь; здесь мы будем использовать pymysql для подключения к базе данных.

Вот общие шаги, которые нам нужно выполнить, чтобы подключить pymysql , вставить наши данные, а затем извлечь данные из MySQL:

Давайте пройдем этот процесс шаг за шагом.

Шаг 1: Импортируйте модуль pymysql.
 # Импорт модуля pymysql
import pymysql 
Шаг 2: Создайте соединение с базой данных MySQL

Создайте соединение с помощью функции pymysql connect() с параметрами хост, пользователь, имя базы данных и пароль.

(Приведенные ниже параметры предназначены только для демонстрационных целей; вам необходимо указать конкретные данные доступа, необходимые для доступа к базе данных MySQL, к которой вы обращаетесь.)

 # Подключиться к базе данных
соединение = pymysql.connect (хост = 'localhost',
                             пользователь = 'корень',
                             пароль='12345',
                             БД='сотрудник') 
Шаг 3: Создайте курсор с помощью функции cursor().

Это позволит нам выполнить SQL-запрос после его написания.

 cursor = connection.cursor() 
Шаг 4: Выполнение требуемого SQL-запроса

Зафиксируйте изменения с помощью функции commit() и проверьте вставленные записи. Обратите внимание, что мы можем создать переменную с именем sql , присвоить ей синтаксис нашего запроса, а затем передать sql и конкретные данные, которые мы хотим вставить в качестве аргументов, в курсор. выполнить() .

Затем мы зафиксируем эти изменения с помощью commit() .

 # Создать новую запись
sql = "ВСТАВИТЬ В  сотрудника  ( EmployeeID ,  Ename ,  DeptID ,  Зарплата ,  Имя ,  Dlocation , %s, %s, VALUES (%s, %s, %s) %s)"
# Выполнить запрос
курсор.execute(sql, (1008, 'Кабир', 2,5000, 'IT', 'Нью-Дели'))
# по умолчанию соединение не фиксируется автоматически. Поэтому мы должны зафиксировать сохранение наших изменений.
соединение.коммит() 

Давайте быстро проверим, действительно ли запись, которую мы хотели вставить, была вставлена.

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

 # Создайте новый запрос, который выбирает все содержимое  сотрудника 
sql = "ВЫБЕРИТЕ * ИЗ  сотрудника "
курсор.execute(sql)
# Получить все записи и использовать цикл for для вывода их по одной строке за раз
результат = курсор. fetchall()
для я в результате:
    распечатать (я) 
 (1001, «Джон», 2, 4000, «ИТ», «Нью-Дели»)
(1002, «Анна», 1, 3500, «HR», «Мумбаи»)
(1003, «Джеймс», 1, 2500, «HR», «Мумбаи»)
(1004, «Дэвид», 2, 5000, «ИТ», «Нью-Дели»)
(1005, «Марк», 2, 3000, «ИТ», «Нью-Дели»)
(1006, «Стив», 3, 4500, «Финансы», «Мумбаи»)
(1007, «Алиса», 3, 3500, «Финансы», «Мумбаи»)
(1008, Кабир, 2, 5000, IT, Нью-Дели) 

Сработало! Выше мы видим, что новая запись была вставлена ​​и теперь является последней строкой в ​​нашей базе данных MySQL.

Шаг 5: Закройте соединение с базой данных

Теперь, когда мы закончили, мы должны закрыть соединение с базой данных, используя метод close() .

 # Закрыть соединение
connection.close() 

Конечно, было бы лучше написать этот код так, чтобы он лучше обрабатывал исключения и ошибки. Мы можем сделать это, используя try , чтобы содержать тело нашего кода и за исключением вывода ошибок, если таковые возникнут. Затем мы можем использовать finally , чтобы закрыть соединение, как только мы закончим, независимо от того, попытка удалась или не удалась.

Вот как все это выглядит вместе:

 import pymysql
пытаться:
    # Подключиться к базе данных
    соединение = pymysql.connect (хост = 'localhost',
                             пользователь = 'корень',
                             пароль='12345',
                             БД='сотрудник')
    курсор=соединение.курсор()
    # Создать новую запись
    sql = "ВСТАВИТЬ В  сотрудника  ( EmployeeID ,  Ename ,  DeptID ,  Зарплата ,  Имя ,  Местонахождение ) ЗНАЧЕНИЯ (%s, %s, %s, %s, %s, %s)"
    cursor.execute (sql, (1009, 'Морган', 1,4000, 'HR', 'Мумбаи'))
    # соединение не является автоматическим по умолчанию. Поэтому мы должны зафиксировать сохранение наших изменений.
    соединение.коммит()
    # Выполнить запрос
    sql = "ВЫБЕРИТЕ * ИЗ  сотрудника "
    курсор. execute(sql)
    # Получить все записи
    результат = курсор.fetchall()
    для я в результате:
        печать (я)
кроме ошибки как e:
    печать (е)
окончательно:
    # закрыть соединение с базой данных с помощью метода close().
    соединение.закрыть() 
 ((1001, "Джон", 2, 4000, "IT", "Нью-Дели"), (1002, "Анна", 1, 3500, "HR", "Мумбаи"), (1003, "Джеймс" , 1, 2500, 'HR', 'Мумбаи'), (1004, 'Дэвид', 2, 5000, 'IT', 'Нью-Дели'), (1005, 'Марк', 2, 3000, 'IT', «Нью-Дели»), (1006, «Стив», 3, 4500, «Финансы», «Мумбаи»), (1007, «Алиса», 3, 3500, «Финансы», «Мумбаи»), (1008, ' Кабир», 2, 5000, «ИТ», «Нью-Дели»), (1009, «Морган», 1, 4000, «HR», «Мумбаи»), (1009, «Морган», 1, 4000, «HR ', 'Мумбаи')) 

Вставка кадров данных Pandas в базы данных с помощью INSERT

При работе с данными в Python мы часто используем pandas , и наши данные часто хранятся в виде pandas DataFrame. К счастью, нам не нужно делать никаких преобразований, если мы хотим использовать SQL с нашими кадрами данных; мы можем напрямую вставить кадр данных pandas в базу данных MySQL, используя INSERT .

И снова пошагово.

Шаг 1: Создание DataFrame с использованием словаря

Мы также можем импортировать данные из CSV или создать DataFrame любым другим способом, но для целей этого примера мы просто создадим небольшой DataFrame, который сохраняет названия и цены некоторых учебников по науке о данных.

 # Импорт панд
импортировать панд как pd
# Создать фрейм данных
данные = pd.DataFrame({
    'книга_id': [12345, 12346, 12347],
    'title':['Программирование на Python', 'Изучаем MySQL', 'Поваренная книга по науке о данных'],
    'цена': [29, 23, 27]
})
данные 

book_id название цена
0 12345 Программирование на Python 29
1 12346 Изучите MySQL 23
2 12347 Поваренная книга по науке о данных 27
Шаг 2: Создайте таблицу в нашей базе данных MySQL

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

Мы будем использовать оператор CREATE TABLE, чтобы создать нашу таблицу, за которым следует имя нашей таблицы (в данном случае book_details ), а затем перечислите каждый столбец и соответствующий ему тип данных.

Шаг 3: Создание подключения к базе данных

Создав эту таблицу, мы можем еще раз создать подключение к базе данных из Python, используя pymysql .

 импорт pymysql
# Подключиться к базе данных
соединение = pymysql.connect (хост = 'localhost',
                         пользователь = 'корень',
                         пароль='12345',
                         БД='книга')
# создать курсор
курсор=соединение.курсор() 
Шаг 4: Создайте список столбцов и вставьте строки

Затем мы создадим список столбцов и вставим строки нашего фрейма данных одну за другой в базу данных, перебирая каждую строку и используя INSERT INTO , чтобы вставить это значения строки в базу данных.

(Также можно вставить весь DataFrame сразу, и мы рассмотрим способ сделать это в следующем разделе, но сначала давайте посмотрим, как это сделать построчно).

 # создание списка столбцов для вставки
столбцы = " ,  ".join([str(i) для i в data.columns.tolist()])
# Вставляем записи DataFrame одну за другой.
для i, строка в data.iterrows():
    sql = "ВСТАВИТЬ В  book_details  (  " +cols + "  ) VALUES (" + "%s,"*(len(row)-1) + "%s)"
    курсор.execute (sql, кортеж (строка))
    # соединение не фиксируется автоматически по умолчанию, поэтому мы должны зафиксировать, чтобы сохранить наши изменения
    connection.commit() 
Шаг 5: Запросите базу данных, чтобы проверить нашу работу

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

 # Выполнить запрос
sql = "ВЫБЕРИТЕ * ИЗ  book_details "
курсор.execute(sql)
# Получить все записи
результат = курсор. fetchall()
для я в результате:
    print(i) 
 (12345, «Программирование на Python», 29)
(12346, «Изучение MySQL», 23)
(12347, «Поваренная книга по науке о данных», 27) 

Когда мы убедимся, что все выглядит правильно, мы можем закрыть соединение.

 connection.close() 

Вставка фреймов данных Pandas в базу данных с помощью функции to_sql()

Теперь давайте попробуем сделать то же самое — вставить кадр данных pandas в базу данных MySQL — используя другую технику. На этот раз мы будем использовать модуль sqlalchemy для создания нашего соединения и функцию to_sql() для вставки наших данных.

Этот подход обеспечивает тот же конечный результат более прямым способом и позволяет нам сразу добавить весь фрейм данных в базу данных MySQL.

 # Модули импорта
импортировать панд как pd
# Создать фрейм данных
данные = pd. DataFrame ({
    'книга_id': [12345,12346,12347],
    'title':['Программирование на Python','Изучаем MySQL','Поваренная книга по науке о данных'],
    'цена': [29,23,27]
})
данные 

book_id название цена
0 12345 Программирование на Python 29
1 12346 Изучение MySQL 23
2 12347 Поваренная книга по науке о данных 27

Импортируйте модуль sqlalchemy и создайте движок с параметрами пользователя, пароля и имени базы данных. Вот как мы подключаемся и входим в базу данных MySQL.

 # импортировать модуль
из импорта sqlalchemy create_engine
# создаем движок sqlalchemy
engine = create_engine("mysql+pymysql://{пользователь}:{pw}@localhost/{db}"
                       .format (пользователь = «корень»,
                               пв = "12345",
                               db="employee")) 

После подключения мы можем экспортировать весь DataFrame в MySQL, используя функцию to_sql() с именем таблицы параметров, именем движка, if_exists и chunksize.

Мы подробнее рассмотрим, к чему относится каждый из этих параметров, но сначала посмотрим, насколько проще вставить кадр данных pandas в базу данных MySQL, используя этот метод. Мы можем сделать это всего одной строкой кода:

 # Вставить весь DataFrame в MySQL
data.to_sql('book_details', con = engine, if_exists = 'append', chunksize = 1000) 

Теперь давайте подробнее рассмотрим, что каждый из этих параметров делает в нашем коде.

  • book_details — это имя таблицы, в которую мы хотим вставить наш DataFrame.
  • con = engine предоставляет информацию о соединении (напомним, что мы создали engine, используя наши данные аутентификации на предыдущем шаге).
  • if_exists = 'append' проверяет, существует ли уже указанная нами таблица, а затем добавляет новые данные (если они существуют) или создает новую таблицу (если нет).
  • размер фрагмента записывает записи партиями заданного размера за раз. По умолчанию все строки будут записаны одновременно.

Чтение записей из базы данных

После того, как мы использовали вставки SQL для внесения наших данных в базу данных, нам нужно иметь возможность прочитать их обратно! До сих пор в этом руководстве мы проверяли наши вставки SQL, просто печатая всю базу данных, но очевидно, что это не лучший вариант для больших баз данных, где вы должны печатать тысячи строк (или больше). Итак, давайте более подробно рассмотрим, как мы можем считывать записи, которые мы создали или вставили в нашу базу данных SQL.

Мы можем читать записи из базы данных SQL с помощью команды SELECT . Мы можем выбрать определенные столбцы или использовать * , чтобы выбрать все из данной таблицы. Мы также можем выбрать возврат только тех записей, которые соответствуют определенному условию, используя команду WHERE .

Вот как выглядит синтаксис этих команд:

Мы начинаем с предложения SELECT , за которым следует список столбцов, или * , если мы хотим выбрать все столбцы. Затем мы будем использовать FROM , чтобы назвать таблицу, которую мы хотели бы просмотреть. WHERE можно использовать для фильтрации записей, за которым следует условие фильтрации, и мы также можем использовать ORDER BY для сортировки записей. (Предложения WHERE и ORDER BY являются необязательными).

Для больших баз данных WHERE полезно для возврата только тех данных, которые мы хотим видеть. Так что, если, например, мы только что вставили новые данные об определенном отделе, мы могли бы использовать ГДЕ указать отдел ID в нашем запросе, и он вернет только записи с идентификатором отдела, который соответствует указанному нами.

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

Если мы хотим сделать это из Python, мы можем использовать тот же сценарий, который мы использовали ранее в этом руководстве, для запроса этих записей. Единственное отличие состоит в том, что мы скажем pymysql выполнить команду SELECT , а не команду INSERT , которую мы использовали ранее.

 # Модуль импорта
импортировать pymysql
# создать соединение
соединение = pymysql.connect (хост = 'localhost',
                             пользователь = 'корень',
                             пароль='12345',
                             БД='сотрудник')
# Создать курсор
мой_курсор = соединение.курсор()
# Выполнить запрос
my_cursor.execute("ВЫБРАТЬ * от сотрудника")
# Получить записи
результат = my_cursor.fetchall()
для я в результате:
    печать (я)
# Закрыть соединение
соединение.закрыть() 
 (1001, «Джон», 2, 4000, «ИТ», «Нью-Дели»)
(1002, «Анна», 1, 3500, «HR», «Мумбаи»)
(1003, «Джеймс», 1, 2500, «HR», «Мумбаи»)
(1004, «Дэвид», 2, 5000, «ИТ», «Нью-Дели»)
(1005, «Марк», 2, 3000, «ИТ», «Нью-Дели»)
(1006, «Стив», 3, 4500, «Финансы», «Мумбаи»)
(1007, «Алиса», 3, 3500, «Финансы», «Мумбаи»)
(1008, «Кабир», 2, 5000, «ИТ», «Нью-Дели»)
(1009, «Морган», 1, 4000, «HR», «Мумбаи»)
(1009, «Морган», 1, 4000, «HR», «Мумбаи») 

Выше мы выбрали и распечатали всю базу данных, но если мы хотим использовать ГДЕ сделать более тщательный, ограниченный выбор, подход тот же:

 my_cursor. execute("SELECT * FROM employee WHERE DeptID=2") 

Обновление записей в базе данных

Часто нам нужно изменять записи в таблице после их создания.

Например, представьте, что сотрудник в нашей таблице сотрудников получил повышение. Мы хотели бы обновить данные об их зарплате. Команда INSERT INTO нам здесь не поможет, потому что мы не хотим добавлять совершенно новую строку.

Чтобы изменить существующие записи в таблице, нам нужно использовать команду UPDATE . ОБНОВЛЕНИЕ используется для изменения содержимого существующих записей. Мы можем указать определенные столбцы и значения для изменения с помощью SET , а также мы можем внести условные изменения с помощью WHERE , чтобы применить эти изменения только к строкам, которые соответствуют этому условию.

Теперь давайте обновим записи из нашей таблицы сотрудников и отобразим результаты. В этом случае, допустим, Дэвид получил повышение — мы напишем запрос, используя ОБНОВЛЕНИЕ , которое устанавливает Зарплата на 6000 только в столбцах, где идентификатор сотрудника равен 1004 (идентификатор Дэвида).