Добавление данных в таблицу - INSERT

Добавление записей в таблицу




Работа с данными таблиц MySQL

Добавления записей (INSERT INTO)

Примеры запросов

Множественное добавление

Добавление значений для всех полей таблицы

Использование оператора SELECT (заполнить данные таблицы из другой таблицы)

Использование оператора SET (поле='значение')




Работа с данными таблиц MySQL



Операторы для работы с данными таблиц (Data Manipulation Language - Язык Обработки Данных)


Эти операторы, позволяют выбирать, добавлять, удалять и модифицировать данные.

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

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

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


Операторы для работы с данными таблиц:


SELECT - применяется для выбора данных

INSERT - применяется для добавления строк к таблице

DELETE - применяется для удаления строк из таблицы

UPDATE - применяется для изменения данных


Каждый оператор SQL начинается с ключевого слова, которое определяет, что именно делает этот оператор (SELECT, INSERT, DELETE...).

В операторе содержатся также предложения, содержащие сведения о том, над какими данными производятся операции.

Каждое предложение начинается с ключевого слова, такого как FROM, WHERE и др.

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




Добавления записей



Для добавления записей в таблицы MySQL используется оператор INSERT INTO (ВСТАВИТЬ В), синтаксис которого имеет вид:


INSERT INTO имя_таблицы (поле1, поле2, ...) VALUES (значение_поля_1, значение_поля_2, ...);


- где:

INSERT INTO - вставить в

VALUES - значение


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

Названия полей пишутся так же, как они написаны в таблице.


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

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


После оператора VALUES в скобках указываются значения полей.

Они перечисляются в том порядке, в котором перечислены сами поля.

Порядок значений соответствует порядку полей (в поле1 запишется значенние - значение_поля_1, в поле2 запишется значенние - значение_поля_2 и т.д.)


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

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

А стобец "age" представляет тип int, то есть целое число, поэтому данному столбцу нужно передать целые числа, но никак не строки.



Примеры запросов



Будем использовать таблицу users из базы данных newDB.


bd-7-1

Наверх


Заполним эту таблицу.


1

$sql = "INSERT INTO users ( name, surname, password, message, age)
      VALUES ( 'Вася', 'Пупкин', '12345', 'привет' ,30)"
;


- здесь поле "id" и его значение не указываем



2

$sql ="INSERT INTO users ( name, surname, message, age)
      VALUES ( 'Иван', 'Иванов', 'всем привет', 40)"
;


- здесь поля "id" и "password" и их значение не указываем. Поле "password" - поддерживает значение NULL



С помощью ключевых слов DEFAULT и NULL можно указать, что в качестве значения будет использовать значение по умолчанию или NULL соответственно:


3

$sql ="INSERT INTO users ( name, surname, password, message, age)
      VALUES ( 'Сидор', 'Сидоров', DEFAULT, 'привет всем', 30)"
;


- здесь поле "password" - имеет значение по умолчанию (DEFAULT) - NULL

Поле "password" - поддерживает значение NULL



4

$sql ="INSERT INTO users ( name, surname, password, message, age)
      VALUES ( 'Вася', 'Васькин', 555, 'привет всем', NULL)"
;


- поле "age" - поддерживает значение NULL



Множественное добавление



Также мы можем добавить сразу несколько строк:


5

$sql ="INSERT INTO users ( name, surname, password, message, age)
      VALUES
     ( 'Вася', 'Пупкин', '12345', 'привет', 30),
     ( 'Иван', 'Иванов', NULL, 'всем привет', 40),
     ( 'Сидор', 'Сидоров', DEFAULT, 'привет всем', 30),
     ( 'Вася', 'Васькин', 555, 'привет всем', NULL)"
;


- здесь значение для поля "password" для второй строки принимаем - NULL, так как количество значений в строке должно соответствать количеству столбцов.



Пример заполнения таблицы.


Файл index.php


-- файл index.php --

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "newDB";

// Устанавливаем соединение с сервером MySQL:

$conn = new mysqli ($servername, $username, $password, $dbname);

// Проверка соединения:

if ($conn -> connect_error){
die ("Не удалось подключиться: " . $conn -> connect_error);
}
echo "Соединение успешно установлено";

// 1. Запрос на добавление данных в таблицу "users" (поле "id" и его значение не указываем):
// $sql = "INSERT INTO users ( name, surname, password, message, age)
// VALUES ( 'Вася', 'Пупкин', '12345', 'привет' ,30)";

// 2. Запрос на добавление данных в таблицу "users" (поля "id" и "password"
// и их значение не указываем):
// $sql = "INSERT INTO users ( name, surname, message, age)
// VALUES ( 'Иван', 'Иванов', 'всем привет', 40)";

// 3. здесь поле "password" - имеет значение по умолчанию (DEFAULT)- NULL:
// $sql = "INSERT INTO users ( name, surname, password, message, age)
// VALUES ( 'Сидор', 'Сидоров', DEFAULT, 'привет всем' ,35)";

// 4. здесь поле "age" - поддерживает значение NULL:
// $sql = "INSERT INTO users ( name, surname, password, message)
// VALUES ( 'Вася', 'Васькин', 555, 'привет всем', NULL )";

// 5. Множественное добавление:
// $sql = "INSERT INTO users ( name, surname, password, message, age)
// VALUES
// ( 'Вася', 'Пупкин', '12345', 'привет', 30),
// ( 'Иван', 'Иванов', NULL, 'всем привет', 40),
// ( 'Сидор', 'Сидоров', DEFAULT, 'привет всем', 30),
// ( 'Вася', 'Васькин', 555, 'привет всем', NULL)";

// Проверка выполнения запросов
if($conn -> query($sql) === TRUE) {
echo "Выполнено <br><br>";
}else{
echo "Ошибка: " . $conn -> error;
}

// закрываем соединение
$conn->close();
?>


Наверх


После выполнения всех запросов получим:


bd-7-2

Наверх



Добавление значений для всех полей таблицы



Если добавляется значение для всех полей таблицы можно не указывать имя поля (столбца) в SQL-запросе:


INSERT INTO имя_таблицы VALUES (значение_поля_1, значение_поля_2, ...);


6

$sql ="INSERT INTO users VALUES ( 10, 'Петр', 'петров', 777, '!!!привет', 50)";


- здесь не указываем имена полей. Значение поля "id" - нужно указать.



Использование оператора SELECT



Можно заполнить данные таблицы через инструкцию SELECT (ВЫБИРАТЬ) для другой таблицы,

если в другой таблице есть тот же набор полей, которые должны быть заполнены в первой:


INSERT INTO имя_первой_таблицы (поле1, поле2,... ) SELECT поле1, поле2,...
FROM имя_второй_таблицы WHERE условие;



Использование оператора SET



Для установки значения нужному полю, присутствующему в таблице, можно использовать оператор SET:


INSERT INTO имя_таблицы SET поле1 = значение_поля_1, поле2 = значение_поля_2 ... ;


- в этом случае в команде каждому полю, присутствующему в таблице, присваивается значение в виде имя поле='значение'.


7

$sql ="INSERT INTO users SET id=20, name='Антон', surname='Антонов',
password='пароль', message='привет', age=55 ";



файл index.php


-- файл index.php --

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "newDB";

// Устанавливаем соединение с сервером MySQL:

$conn = new mysqli ($servername, $username, $password, $dbname);

// Проверка соединения:

if ($conn -> connect_error){
die ("Не удалось подключиться: " . $conn -> connect_error);
}
echo "Соединение успешно установлено";

// 6. Не указываем имена полей. Значение поля "id=10" - нужно указать
// $sql = "INSERT INTO users VALUES ( 10, 'Петр', 'петров', 777, '!!!привет', 50)";

// 7. Использование оператора SET
// $sql = "INSERT INTO users SET id=20,
// name='Антон', surname='Антонов', password='пароль', message='привет', age=55";

// Проверка выполнения запросов
if($conn -> query($sql) === TRUE) {
echo "Выполнено <br><br>";
}else{
echo "Ошибка: " . $conn -> error;
}

// закрываем соединение
$conn->close();
?>


Наверх


После выполнения всех запросов получим:


bd-7-3

Наверх






Наверх Наверх