mysql alter table how add column table mysql
Дізнайтеся про команду MySQL ALTER Table, щоб додати / скинути стовпець, індекс, обмеження, змінити назву таблиці тощо на прикладах:
MySQL ALTER Команда використовується для модифікації існуючої таблиці шляхом додавання нового стовпця або видалення існуючого стовпця або зміни типу даних стовпця.
Простіше кажучи, команда ALTER використовується для модифікації структури існуючої таблиці шляхом додавання / видалення / оновлення стовпців, перейменування таблиць тощо.
Практично неможливо, щоб усі вимоги до даної схеми були доступні заздалегідь, отже, обов’язково повинен бути спосіб оновлення структури таблиці за необхідності.
Що ви дізнаєтесь:
MySQL ALTER TABLE
СИНТАКСИС:
ALTER TABLE table_name (alter_option1, alter_option2...)
Тут table_name - це назва таблиці, над якою ми хочемо виконати дію зміни. Разом із значком можна вказати один або кілька варіантів alter_options ЗМІНИТЬ СТОЛ команди.
Давайте розглянемо різні варіанти використання alter_options, надані MySQL.
Зразок даних та налаштування таблиці
З метою розуміння різних звичаїв ВІК команда, ми будемо використовувати 2 зразкові таблиці - Співробітник та Відділ, що мають структуру, як зазначено нижче.
Ми також додаємо кілька фіктивних даних до обох таблиць.
Ми не додали жодних обмежень FOREIGN KEY серед цих таблиць. Ми навчимося додавати їх за допомогою команди ALTER у прикладах, показаних у розділах нижче, під час обговорення.
CREATE TABLE IF NOT EXISTS Employee_Department ( id INT, name VARCHAR(100), PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS Employee ( name VARCHAR(100), id INT, address VARCHAR(100), department_id INT, PRIMARY KEY (id) ); INSERT INTO `employee_department`(`name`,`id`) VALUES ('Information Technology',1),('HR',2),('Finance',3),('Accounting',4),('Housekeeping',5 ),('Security',6),('Support',7),('Contract Staff',8),('Sales',9),('Management',10); INSERT INTO `employee` (`id`,`name`,`address`) VALUES (1,'Alyssa Villarreal','Ap #558-3012 Nulla Street'),(2,'Vanna Parks','103-986 Cursus Rd.'),(3,'Quyn Byers','770 Nulla Avenue'),(4,'Kristen Hall','Ap #622-9967 Nullam St.'),(5,'Chelsea Stone','6017 Elementum St.'),(6,'Sacha Sweeney','239-7402 Etiam St.'),(7,'Sophia Charles','799 -745 Tellus. Rd.'),(8,'Jennifer Joyner','5803 Ligula. Avenue'),(9,'Mercedes Head','Ap #375-7999 Facilisis Rd.'),(10,'Reagan Holland','P.O. Box 625, 5744 Proin Avenue');
Різні способи використання команди таблиці ALTER
MySQL ALTER Команда може використовуватися для кількох речей, таких як додавання / скидання стовпця, додавання / скидання індексу або обмеження та оновлення самої таблиці. Давайте розглянемо різні сценарії за допомогою прикладів.
ДОДАТИ СТОЛЬБУ
З наведеними вище зразками таблиць, давайте додамо новий стовпець з іменем ‘department_id’ типу INT у таблицю Employee.
ALTER TABLE employee ADD COLUMN department_id INT
КРАПКА КРАПКИ
Подібно до додавання нового стовпця, MySQL ALTER команда може бути використана для видалення існуючого стовпця з таблиці.
Спробуйте видалити доданий вище стовпець department_id із таблиці Employee.
ALTER TABLE employee DROP COLUMN department_id
Зверніть увагу, що, скидаючи Стовпець, вам просто потрібно вказати назву стовпця, а не його тип даних.
Щоб перевірити, чи вдалася команда ALTER, можна запустити команду SHOW COLUMNS.
SHOW COLUMNS FROM employee;
Вихід:
Польовий | Тип | Нуль | Ключ | За замовчуванням | Додатково |
---|---|---|---|---|---|
ім'я | варчар (100) | ТАК | НУЛЬ | ||
ідентифікатор | інт | ТАК | НУЛЬ | ||
адресу | варчар (100) | ТАК | НУЛЬ |
Зараз ви можете бачити, що в таблиці „Співробітник” немає стовпця_відділу.
Додати / скинути обмеження
Давайте тепер подивимося, як за допомогою ALTER можна додати обмеження.
Команда ALTER може використовуватися для додавання або видалення обмежень для існуючої таблиці. Давайте подивимось приклад обмеження ІНОЗЕМНИХ КЛЮЧІВ, яке потрібно додати між 2 таблицями.
Ми будемо використовувати команду ALTER для додавання ІНОЗЕМНОГО КЛЮЧОВОГО ОБМЕЖЕННЯ в таблиці Employee для таблиці worker_department.
Додайте новий стовпець з іменем department_id у таблиці Employee.
ALTER TABLE employee ADD COLUMN department_id INT
Тепер додайте обмеження FOREIGN KEY.
ALTER TABLE employee ADD FOREIGN KEY (department_id) REFERENCES employee_department(id)
Щоб перевірити це обмеження, ми можемо використовувати команду SHOW, щоб побачити визначення таблиці.
SHOW CREATE TABLE employee;
Таблиця | Створити таблицю |
---|---|
працівник | СТВОРИТИ ТАБЛИЦУ `працівник` ( `name` varchar (100) ЗАВДАННЯ НУЛЬ, `id` int ЗА замовчуванням NULL, `address` varchar (100) ЗАВДАННЯ НУЛЬ, `department_id` int DEFAULT NULL, КЛЮЧ 'Ідентифікатор_відділу' ('Ідентифікатор_відділу'), ОБМЕЖЕННЯ `worker_ibfk_1` ІНОЗЕМНИЙ КЛЮЧ (` department_id`) СПИСОК ЛІТЕРАТУРИ `worker_department` (` id`) ) ДВИГУН = ШАРСЕТИ ЗА ЗАМОВЛЕННЯМ InnoDB = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Ви виявите, що в стовпці department_id створено обмеження FOREIGN KEY.
Давайте тепер подивимося, як ми можемо використовувати команду ALTER, щоб видалити обмеження FOREIGN KEY, яке ми щойно додали.
ALTER TABLE employee DROP CONSTRAINT employee_ibfk_1
Зверніть увагу, що вам потрібно буде використовувати ім’я обмеження, яке було створено. Отже, у наведеному вище виводі команди SHOW ви можете побачити назву обмеження, яке MySQL створило для обмеження FOREIGN KEY: worker_ibfk_1 ’
Запустіть команду SHOW, щоб побачити, чи обмеження видалено, як показано нижче:
SHOW CREATE TABLE employee;
Таблиця | Створити таблицю |
---|---|
працівник | СТВОРИТИ ТАБЛИЦУ `працівник` ( `name` varchar (100) ЗАВДАННЯ НУЛЬ, `id` int ЗА замовчуванням NULL, `address` varchar (100) ЗАВДАННЯ НУЛЬ, `department_id` int DEFAULT NULL, КЛЮЧ 'Ідентифікатор_відділу' ('Ідентифікатор_відділу') ) ДВИГУН = ШАРСЕТИ ЗА ЗАМОВЛЕННЯМ InnoDB = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Індекси додавання / скидання
MySQL ALTER Команда table також дозволяє створювати або скидати INDEXES до таблиці.
За допомогою команди ALTER TABLE можна додати чотири різні типи індексів.
# 1) Додайте ПЕРВИННИЙ КЛЮЧ: Ця команда додає індекс PRIMARY KEY до заданого стовпця (або стовпців)
У наведеному нижче прикладі використовуйте таблицю Employee та додайте індекс PRIMARY KEY до стовпця «Id».
ALTER TABLE employee ADD PRIMARY KEY (id);
# 2) Додати УНІКАЛЬНЕ: Додає або створює унікальний індекс щодо заданих стовпців
Припустимо, гіпотетично ми просто хочемо унікальні імена в таблиці. Додайте УНІКАЛЬНИЙ індекс у стовпець „ім’я” таблиці Employee, як показано нижче.
ALTER TABLE employee ADD UNIQUE (name);
# 3) Додати ІНДЕКС: Додайте звичайний індекс до будь-якого стовпця.
Додайте звичайний індекс у поле ‘address’ у таблиці Employee.
ALTER TABLE employee ADD INDEX (name);
# 4) Додайте індекс FULLTEXT: Це спеціальний тип покажчика, який використовується для пошуку тексту.
Ми додамо індекс FULLTEXT до значень стовпця ‘name’ у таблиці Employee.
ALTER TABLE employee ADD FULLTEXT(address);
Для всіх вищезазначених 4 прикладів ми можемо запустити ПОКАЖІТЬ СТВОРИТИ ТАБЛИЦЮ команда, щоб отримати детальну інформацію про створені індекси.
SHOW CREATE TABLE employee;
Таблиця | Створити таблицю |
---|---|
працівник | СТВОРИТИ ТАБЛИЦУ `працівник` ( `name` varchar (100) ЗАВДАННЯ НУЛЬ, `id` int NOT NULL, `address` varchar (100) ЗАВДАННЯ НУЛЬ, `department_id` int DEFAULT NULL, ПОЧАТКОВИЙ КЛЮЧ (`id`), УНІКАЛЬНИЙ КЛЮЧ `name` (` назва`), КЛЮЧ `name_2` (` ім'я`), ФУЛЬТЕКСТОВИЙ КЛЮЧ `адреса` (` адреса`) ) ДВИГУН = ШАРСЕТИ ЗА ЗАМОВЛЕННЯМ InnoDB = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
У наведеному вище результаті ви помітите, що всі індекси були створені відповідно до значення в стовпці create_table.
Подібно до створення індексів, команду ALTER також можна використовувати для видалення існуючих індексів із таблиці.
Приклад:
ALTER TABLE employee DROP INDEX address;
Наведена команда знизить повний індекс, який ми додали для поля адреси.
Зверніть увагу на назву ‘Адреса’. Це має відповідати імені індексу у вихідному файлі ПОКАЖІТЬ СТВОРИТИ ТАБЛИЦЮ команди.
Змінити значення стовпця за замовчуванням
ЗМІНИТЬ СТОЛ Команда також може бути використана для встановлення / зміни значення DEFAULT для існуючого стовпця.
sql запитання та відповіді для досвідчених
Давайте розглянемо приклад, коли ми змінимо значення за замовчуванням стовпця department_id на «1». При цьому будь-які нові вставки до цієї таблиці змінювали б / встановлювали значення для стовпця department_id на 1
ALTER TABLE employee ALTER department_id SET DEFAULT 1
Додайте новий запис до таблиці Employee:
INSERT INTO `employee` (`id`,`name`,`address`) VALUES (11,'Saket Sharma','NB 23 Domlur')
А тепер давайте запитаємо у department_id цей запис і подивимось, яке значення встановлюється.
SELECT department_id FROM employee where id=11 //Output department_id 1
Оновити назву таблиці
MySQL ALTER Команда table може також використовуватися для оновлення імені існуючої таблиці. Іноді потрібно оновити структуру схеми, що може включати зміну / оновлення імен таблиць.
Приклад - Ми перейменовуємо таблицю `worker` в` Employee_details`.
ALTER TABLE table_name RENAME TO new_table_name;
Часті запитання
Q # 1) Як змінити структуру таблиці в MySQL?
Відповідь: MySQL надає команду ALTER для зміни структури існуючої таблиці в MySQL. Ви можете виконувати різні операції за допомогою команди ALTER, наприклад,
- Додавання / скидання стовпця
- Додавання / видалення індексу або обмеження
- Перейменування таблиці
Q # 2) Чи блокує команда ALTER таблицю?
Відповідь: Це може залежати від версій - у старих версіях MySQL блокування таблиці під час виконання оператора ALTER. Загалом, блокування відбуватиметься, тобто будь-яке читання та запис під час ALTER.
Наприклад - Додавання нового стовпця до існуючої таблиці торкнеться всіх рядків таблиці, до яких додається стовпець, і коли таблиця має кількість записів у мільйонах, на виконання операції ALTER може знадобитися деякий час. У цьому випадку блокування під час читання / запису буде дорогим, оскільки база даних буде недоступною та недоступною.
Q # 3) Чи можна додати більше одного стовпця в таблицю ALTER?
Відповідь: Так, команду ALTER можна використовувати для додавання декількох стовпців в межах одного оператора.
Давайте розглянемо приклад, коли у нас є таблиця Employee із стовпцями id, ім'ям та адресою, і припустимо, ми хочемо додати ще 2 стовпці з іменами - найвище_визначення (тип varchar) та номер телефону (тип varchar)
ALTER TABLE employee ADD highest_education VARCHAR(50), ADD phone_number VARCHAR(20);
Давайте подивимося на інформацію в таблиці
SHOW COLUMNS FROM employee;
Вихід:
Польовий | Тип | Нуль | Ключ | За замовчуванням | Додатково |
---|---|---|---|---|---|
ім'я | варчар (100) | ТАК | ОБ'ЄДНАНІ | НУЛЬ | |
ідентифікатор | інт | НЕ | PRI | НУЛЬ | |
адресу | варчар (100) | ТАК | НУЛЬ | ||
department_id | інт | ТАК | один | ||
найвища_освіта | варчар (50) | ТАК | НУЛЬ | ||
телефонний номер | варчар (20) | ТАК | НУЛЬ |
У вихідних даних ви бачите стовпці, додано найвище_освіта та номер телефону.
Висновок
У цьому підручнику ми дізналися про різні способи використання MySQL ALTER Команда таблиці. ALTER є важливою командою, оскільки вона може бути використана для різних цілей для ALTER структури існуючої таблиці в MySQL.
Він може використовуватися для таких речей, як додавання / видалення стовпця, додавання / скидання індексів або обмежень, а також може використовуватися навіть для перейменування існуючої таблиці.
Кожен, хто вивчає MySQL, повинен глибоко розуміти команду таблиці ALTER, оскільки вона в основному використовується на етапах обслуговування баз даних, де потрібно змінити існуючу схему таблиці.
Рекомендована література
- MySQL Створення таблиці Підручник з прикладами
- MySQL Insert Into Table - Вставте синтаксис заяви та приклади
- Типи даних MySQL | Що таке різні типи даних у MySQL
- Основи обмеження ІНОЗЕМНИХ КЛЮЧІВ MySQL на прикладах
- Підручник з MySQL JOIN: Внутрішній, Зовнішній, Хрестовий, Лівий, Правий та Я
- MySQL Create Database - Як створити базу даних в MySQL
- 40 найкращих запитань та відповідей на інтерв’ю MySQL (2021 запитання)
- Хеш-таблиця в C ++: Програми для впровадження хеш-таблиць і хеш-карт