MySQL
Изменение структуры существующей таблицы
Добавление новых полей в таблицу (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 ($servername, $username, $password, $dbname);
// Проверка соединения:
if ($conn -> ){
die ("Не удалось подключиться: " . $conn -> );
}
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 -> ($sql) === TRUE) {
echo "Таблица users создана успешно <br><br>";
}else{
echo "Ошибка при создании таблицы: " . $conn -> error;
}
// закрываем соединение
$conn-> ();
?>
Таблица "users" создана:
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 ($servername, $username, $password, $dbname);
// Проверка соединения:
if ($conn -> ){
die ("Не удалось подключиться: " . $conn -> );
}
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 -> ($sql) === TRUE) {
echo "Выполнено <br><br>";
}else{
echo "Ошибка: " . $conn -> error;
}
// закрываем соединение
$conn-> ();
?>
Поочередно выполняем запросы и получим:
Выполнение следующих запросов удалит соответсвующие поля:
$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:
Наверх Наверх