Изменение структуры существующей таблицы с помощью PHP

Изменение структуры существующей таблицы



Добавление новых полей в таблицу (ADD COLUMN)

Удаление полей таблицы (DROP COLUMN)

Переименование поля и изменение типа хранимых данных(CHANGE, MODIFY)

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



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

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




Добавление новых полей в таблицу



Добавить новое поле таблицы


ALTER TABLE имя_таблицы ADD COLUMN название_поля VARCHAR(20);


Добавить новое поле после заданного поля таблицы (AFTER - ПОСЛЕ)


ALTER TABLE имя_таблицы ADD COLUMN название_поля VARCHAR(20) AFTER название_предыдущего_поля;


Добавить новое поле на первое месте в таблице (FIRST - ПЕРВЫЙ)


ALTER TABLE имя_таблицы ADD COLUMN название_поля VARCHAR(20) FIRST ;


Одновременное добавление новых полей


ALTER TABLE имя_таблицы ADD COLUMN название_поля_1 INT(30) AFTER название_предыдущего_поля, ADD COLUMN название_поля_2 VARCHAR(30) FIRST;





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



Удалить определённое поле таблицы


ALTER TABLE имя_таблицы DROP COLUMN название_поля;


Одновременное удаление полей таблицы


ALTER TABLE имя_таблицы DROP COLUMN название_поля_1, DROP COLUMN название_поля_2;





Переименование поля и изменение типа хранимых данных



Переименовать поле и попутно изменить тип хранимых в нём данных


ALTER TABLE имя_таблицы CHANGE старое_название_поля новое_название_поля VARCHAR(50);


Изменить исключительно тип данных


ALTER TABLE имя_таблицы MODIFY название_поля VARCHAR(3);





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



Создадим в phpMyAdmin базу данных newDB.

В этой базе данных создадим таблицу users:


Файл 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 "Соединение успешно установлено";

// Запрос для создания таблицы users

$sql = "CREATE TABLE users(
     id INT(11) NOT NULL PRIMARY KEY,
     name VARCHAR(30),
     surname VARCHAR(30) NOT NULL,
     password VARCHAR(30) NOT NULL,
     message TEXT NOT NULL
     )ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci"
;

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

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


Наверх



Таблица "users" создана:


bd-6-1

Наверх



1. Добавляем в таблицу "users" новое поле - price, с типом данных - DOUBLE


$sql = "ALTER TABLE users ADD COLUMN price DOUBLE";


2. Добавим в таблицу "users" поле number, с типом данных - INT(30), стоящее после поля id (AFTER - после)


$sql = "ALTER TABLE users ADD COLUMN number INT(30) AFTER id";


3. Добавим новое поле status с типом данных - VARCHAR(30), стоящее на первом месте (FIRST - первый).


$sql = "ALTER TABLE users ADD COLUMN status VARCHAR(30) FIRST";


4. Запрос на одновременное добавления новых полей number и status


$sql = "ALTER TABLE users ADD COLUMN number INT(30) AFTER id,
ADD COLUMN status VARCHAR(30) FIRST";



Файл 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. Запрос на добавление нового поля "price"
$sql = "ALTER TABLE users ADD COLUMN price DOUBLE"

// 2. Запрос на добавление нового поля "number", стоящее после поля id (AFTER - после)
// $sql = "ALTER TABLE users ADD COLUMN number INT(30) AFTER id";

// 3. Запрос на добавление нового поля "status", стоящее на первом месте (FIRST - первый)
// $sql = "ALTER TABLE users ADD COLUMN status VARCHAR(30) FIRST";

// 4. Запрос на одновременное добавление новых полей "number" и "status"
// $sql = "ALTER TABLE users ADD COLUMN number INT(30) AFTER id,
// ADD COLUMN status VARCHAR(30) FIRST";


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

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


Наверх


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


bd-6-2

Наверх



Выполнение следующих запросов удалит соответсвующие поля:


$sql = "ALTER TABLE users DROP COLUMN number";

$sql = "ALTER TABLE users DROP COLUMN status";

или:

$sql = "ALTER TABLE users DROP COLUMN number, DROP COLUMN status";



Переименуем поле price и изменим тип хранимых в нём данных (было - price double , станет - age int(11) )


$sql = "ALTER TABLE users CHANGE price age int(11)";



Изменим тип данных для поля password (было - VARCHAR(30) , станет - VARCHAR(50);

изменится и значение по умолчанию - станет NULL)


$sql = "ALTER TABLE users MODIFY password VARCHAR(50)";




В результате выполнения этих запросов, получим изменения в таблице users:


bd-6-3

Наверх






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