Як додати новий стовпець до існуючої таблиці?
Для цього використовується команда ALTER TABLE із оператором ADD для додавання нового стовпця до таблиці.
Синтаксис
MySQLALTER TABLE table_name ADD column_name data_type [constraints];приклад
Припустимо, ми маємо таблицю employees , і ми хочемо додати стовпець email типу VARCHAR(255) .
MySQLALTER TABLE employees ADD email VARCHAR(255);Додавання стовпця з обмеженням NOT NULL та значенням за замовчуванням:
MySQLALTER TABLE employees ADD date_of_birth DATE NOT NULL DEFAULT '1900-01-01';Особливість
При додаванні стовпця з обмеженням NOT NULL , якщо таблиці вже є дані, необхідно вказати значення за промовчанням, інакше буде помилка.Додавання стовпців до таблиці (ядро СУБД)
У цій статті описано, як додати нові стовпці в таблицю SQL Server за допомогою SQL Server Management Studio або Transact-SQL.
Зауваження
ALTER TABLE За допомогою інструкції для додавання стовпців до таблиці ці стовпці автоматично додаються до кінця таблиці.
Якщо ви хочете, щоб стовпці в певному порядку в таблиці, необхідно використовувати SQL Server Management Studio. Переупорядкування таблиць не рекомендується, але додаткові відомості доступні у статті Зміна порядку стовпців у таблиці.
Щоб запросити існуючі стовпці, використовуйте представлення каталогу об'єктів sys.columns.
Дозволи
Потрібна роздільна здатність ALTER на таблицю.
Використання SQL Server Management Studio
SQL Server Management Studio (SSMS) не підтримує всі параметри мови визначення даних (DDL) в Azure Synapse. Натомість використовуйте скрипти T-SQL.
Вставка стовпців у таблицю за допомогою конструктора таблиць
- У оглядачі об'єктівклацніть правою кнопкою миші таблицю, до якої необхідно додати стовпці, і виберіть пункт Конструктор.
- Клацніть перший порожній осередок у стовпці Ім'я стовпця.
- Введіть ім'я стовпця в комірку. Ім'я стовпця – значення, яке необхідно вказати.
- Натисніть клавішу TAB, щоб перейти до осередку типу даних і вибрати тип даних з списку, що розкривається. Тип даних є обов'язковим значенням і надається значення за замовчуванням, якщо ви не вибрали його.
Примітка. Значення за промовчанням можна встановити або змінити у діалоговому вікні Параметри у розділі Інструменти для баз даних.
Примітка. При створенні нового стовпця для властивостей стовпця встановлюються значення за промовчанням, але їх можна змінити на вкладці Властивості стовпця .
Використання Transact-SQL
Додавання стовпців до таблиці
У наступному прикладі додаються два стовпці таблиці dbo.doc_exa .
ALTER TABLE dbo.doc_exa ADD column_b VARCHAR(20) NULL, column_c INT NULL ;Пов'язаний контент
Як до sql додати стовпець до таблиці: ALTER TABLE SQL Server — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Alter Table в SQL — Як додати стовпець або перейменувати стовпець на SQL
Ви створили свою базу даних і свої таблиці, і після цієї роботи ви помітили, що вам потрібно додати або перейменувати стовпець. Що ж, ви можете використовувати оператор ALTER TABLE.
Просто майте на увазі, що при цьому потрібно бути дуже обережним. Якщо у таблиці багато рядків, це може викликати проблеми з продуктивністю вашої бази даних.
Примітка. Якщо наведений тут синтаксис не працює, зверніться до документації щодо СУБД. Більшість речей працює однаково, але є деякі відмінності для різних СУБД.
Як додати нову колонку за допомогою
Щоб додати новий стовпець, вам потрібно спочатку вибрати таблицю за допомогою ALTER TABLE имя_таблицы, а потім написати ім'я нового стовпця і його тип дані разом з оператором ADD. У сукупності код виглядає так:
ALTER TABLE table_name ADD column_name datatype;Наприклад, у нас є база даних користувачів, як показано нижче:
Настав момент, коли нам потрібно зберегти номери документів, що засвідчують особу наших користувачів, тому нам потрібно додати новий стовпець.
Щоб додати новий стовпець до нашої таблиці користувачів, нам потрібно вибрати таблицю з ALTER TABLE users, а потім вказати ім'я нового стовпця та його тип даних за допомогою оператора ADD id_number TEXT. Все разом виглядає так:
ALTER TABLE users ADD id_number TEXT;Таблиця з новим стовпцем буде виглядати так:
Вам потрібно буде використовувати оператор UPDATE, щоб додати необхідну інформацію для вже існуючих користувачів, як тільки вона буде надана.
Як створити новий стовпець зі значенням за замовчуванням замість NULL
Ви також можете створити стовпець зі значенням за замовчуванням, використовуючи ключове слово default, за яким слідує значення. Тоді користувачі побачать це значення за промовчанням замість того, щоб пропущені значення були заповнені NULL.
Припустимо, що скоро у нас з'являться міжнародні користувачі, і ми хочемо додати стовпець country. Всі наші існуючі користувачі США, тому ми можемо використовувати це значення за замовчуванням.
ALTER TABLE users ADD country TEXT default "United States";Наша таблиця буде виглядати так:
Будьте обережні при додаванні нових стовпців до таблиць.
Якщо у вашій таблиці вже багато рядків — наприклад, якщо у вас вже багато користувачів або багато даних, що зберігаються, — додавання нового стовпця може вимагати значних ресурсів. Тому звертайтеся із цією операцією обережно.
Як перейменувати стовпець за допомогою ALTER TABLE
Ви можете перейменувати стовпець за допомогою наведеного нижче коду. Ви вибираєте таблицю за допомогою ALTER TABLE имя_таблицы, а потім вказуєте, який стовпець перейменувати та у що перейменувати, за допомогою RENAME COLUMN old_name TO new_name.
ALTER TABLE table_name RENAME COLUMN old_name TO new_name;Давайте подивимося на ту саму таблицю, яку ми використовували у попередньому прикладі:
Щоб уникнути плутанини між стовпцями id і id_number, перейменуємо перший в user_id.
Спочатку ми вкажемо таблицю за допомогою ALTER TABLE users, а потім оголосимо ім'я стовпця, щоб воно змінилося те, що ми хочемо змінити, за допомогою RENAME COLUMN id TO user_id.
ALTER TABLE users RENAME COLUMN id TO user_id;Після виконання запиту таблиця виглядатиме так:
Будьте обережні під час перейменування стовпця у таблиці.
Коли ви перейменуєте стовпці за допомогою ALTER TABLE, ви ризикуєте порушити залежність бази даних.
Якщо ви використовуєте інструмент рефакторингу бази даних для зміни імені стовпця замість використання ALTER TABLE, він керуватиме всіма залежностями та оновлюватиме їх з новим ім'ям стовпця.
Якщо у вас невелика база даних, можливо, вам нема про що турбуватися, але про це важливо пам'ятати.
SQL ALTER TABLE - Зміна таблиці бази даних
- ALTER TABLE для додавання та видалення стовпця, значення за замовчуванням
- ALTER TABLE для додавання ключів
- ALTER TABLE для додавання та видалення обмежень
Команда мови SQL ALTER TABLE призначена для зміни структури стовпця таблиці бази даних, якщо
Таблиця вже існує.Запит із командою ALTER TABLE на додавання нового стовпця до таблиці має наступний синтаксис:
ALTER TABLE ІМ'Я_ТАБЛИЦІ
ADD ІМ'Я_НОВОГО_СТОЛБЦЯ ТИП_ДАНИХприклад 1. Є база даних фірми – Company. У ній є таблиця
Employee (Співробітник). Потрібно додати до цієї таблиці новий стовпець - SEX (Пол). Відповідний запит
виглядає так:ALTER TABLE EMPLOYEE
ADD SEX CHAR(1)Таким чином у таблиці з'явився новий стовпець, значення якого можуть набувати
символьний тип і складатися з одного символу.Нехай тепер потрібно встановити значення записів у таблиці за промовчанням. Запит із командою ALTER TABLE
для цієї мети містить ще одну команду ALTER COLUMN і має наступний синтаксис:ALTER TABLE ІМ'Я_ТАБЛИЦІ
ALTER COLUMN ІМ'Я_СТОЛБЦЯ
SET DEFAULT 'ЗНАЧЕННЯ_ЗА_УМОВЧЕННЯ'приклад 2. Нехай у фірмі, база даних якої має назву Company,
працюють переважно жінки. Адміністратор бази даних вирішив скоротити процес заповнення даними стовпця
SEX (Підлога) і встановити його значення за замовчуванням - 'F' (що означає жіноча стать). Відповідний запит
виглядає так:ALTER TABLE EMPLOYEE
ALTER COLUMN SEX
SET DEFAULT ‘F’Тепер тільки якщо новий співробітник - чоловік, потрібно вписувати в стовпець SEX
значення 'M', а в більшості випадків значення встановиться за умовчанням - 'F'.За допомогою запиту з командою ALTER TABLE можна видалити стовпець з таблиці. Синтаксис команди буде
наступним:ALTER TABLE ІМ'Я_ТАБЛИЦІ
DROP COLUMN ІМ'Я_СТОЛБЦЯприклад 3. Нехай у тій же базі даних Company з
таблиці Employee потрібно видалити стовпець SEX (Пол). Відповідний запит
виглядає так:ALTER TABLE EMPLOYEE
DROP COLUMN SEXТаким чином у таблиці з'явився новий стовпець, значення якого можуть набувати
символьний тип і складатися з одного символу.Про ключі в таблицях бази даних – на уроці Реляційна модель даних.
Якщо під час створення таблиці бази даних був визначений первинний ключ (PRIMARY KEY), це може бути
зроблено з допомогою команди ALTER TABLE. Синтаксис команди у разі простого первинного ключа наступний:ALTER TABLE ІМ'Я_ТАБЛИЦІ
ADD PRIMARY KEY (ІМ'Я_ІДЕНТИФІКАТОРА)Синтаксис команди у разі складеного первинного ключа:
ALTER TABLE ІМ'Я_ТАБЛИЦІ
ADD PRIMARY KEY (ІМ'Я_ІДЕНТИФІКАТОРА_1, ІМ'Я_ІДЕНТИФІКАТОРА_2)приклад 4. Працюємо все з тією ж базою даних Company,
зі стовпцем EMPLOYEE. Ми можемо додати простий первинний ключ цього стовпця у вигляді ідентифікатора
співробітника і зробити це так:ALTER TABLE EMPLOYEE
ADD PRIMARY KEY (EMP_ID)Якщо вирішено використовувати складовий ключ, що складається з ідентифікатора співробітника та
ідентифікатора відділу, в якому співробітник працює, використовуємо наступний запит:ALTER TABLE EMPLOYEE
ADD PRIMARY KEY (EMP_ID, DEPT_ID)Про те, що таке обмеження цілісності, йшлося на уроці Реляційна модель даних.
Якщо коротко - при видаленні будь-якого рядка з однієї таблиці (1), в іншій таблиці (2), рядок в якій
посилається на рядок таблиці (1), не повинно бути посилань, які не містяться у таблиці (1), тобто
посилань, які ведуть нікуди.Команда ALTER TABLE може знадобитися для встановлення значення NULL для такого посилання. Її
синтаксис наступний:ALTER TABLE ІМ'Я_ПОСИЛОГО_ТАБЛИЦІ
ADD CONSTRAINT ІМ'Я_ІДЕНТИФІКАТОРА
FOREIGN KEY (ІМ'Я_ІДЕНТИФІКАТОРА)
REFERENCES ІМ'Я_ТАБЛИЦІ_НА_КОТОРУ_ПОСИЛАЮТЬСЯ
ON DELETE SET NULLПриклад 5. Нехай у тій же базі даних Company
потрібно встановити посилальне обмеження: при видаленні будь-якого відділу з таблиці Dept
у таблиці Employee, містяться посилання ці відділи, значення посилання (зовнішнього ключа) має бути
вставлено в NULL (цілком невизначене). Відповідний запит
виглядає так:ALTER TABLE EMPLOYEE
ADD CONSTRAINT DEPT_ID
FOREIGN KEY (DEPT_ID)
REFERENCES DEPT
ON DELETE SET NULLТаким чином, якщо в таблиці Employee є співробітник, який працює у відділі
раптом був ліквідований і запис про нього видалено з таблиці Dept, то в записі про цього співробітника значення
стовпця DEPT_ID набере значення NULL.Запитом з командою ALTER TABLE можна також встановити заборону видалення посилань записів з таблиці (1), якщо
існує хоча б один запис у таблиці (2), на яку посилається запис у таблиці (1). Синтаксис такого
запиту наступний:ALTER TABLE ІМ'Я_ПОСИЛОГО_ТАБЛИЦІ
ADD CONSTRAINT ІМ'Я_ІДЕНТИФІКАТОРА
FOREIGN KEY (ІМ'Я_ІДЕНТИФІКАТОРА)
REFERENCES ІМ'Я_ТАБЛИЦІ_НА_КОТОРУ_ПОСИЛАЮТЬСЯ
ON DELETE RESTRICTПриклад 6. Далі працюємо з базою даних мережі аптек, яку ми створили на уроці Створення бази
даних SQL та таблиць бази даних.Наступна команда з виразом alter table встановлює заборону видалення групи препаратів з таблиці Group, якщо існує хоча б один препарат цієї групи, що визначається записом у таблиці Preparation:
alter table Preparation add constraint GR_ID foreign key(GR_ID) references Group on delete restrict
Встановлюємо заборону видалення аптеки з таблиці Pharmacy, якщо існує хоча б один співробітник цієї аптеки, що визначається записом у таблиці Employee:
alter table Employee add constraint PH_ID foreign key(PH_ID) references
Pharmacy on delete restrictЗапитом з командою ALTER TABLE можна також визначити, якщо видалити запис у таблиці (2), на яку
посилається запис у таблиці (1), то повинні бути видалені усі відповідні записи у таблиці (1) (каскадне
видалення).
Синтаксис такого запиту наступний:ALTER TABLE ІМ'Я_ПОСИЛОГО_ТАБЛИЦІ
ADD CONSTRAINT ІМ'Я_ІДЕНТИФІКАТОРА
FOREIGN KEY (ІМ'Я_ІДЕНТИФІКАТОРА)
REFERENCES ІМ'Я_ТАБЛИЦІ_НА_КОТОРУ_ПОСИЛАЮТЬСЯ
ON DELETE CASCADEПриклад 7. Продовжуємо працювати з базою даних мережі аптек.
Знову змінюємо таблицю AVAILABILITY та визначаємо, що якщо видалити препарат з таблиці PREPARATION, то маємо видалитись всі записи цього препарату в таблиці AVAILABILITY.
alter table AVAILABILITY add constraint PR_ID foreign key(PR_ID)
references PREPARATION on delete cascadeТепер визначимо, що якщо видалити аптеку з таблиці PHARMACY, то повинні видалитись всі записи цієї аптеки в таблиці AVAILABILITY:
alter table AVAILABILITY add constraint PH_ID foreign key(PH_ID)
references PHARMACY on delete cascadeНаступна команда модифікує таблицю DEFICIT і визначає, що якщо видалити препарат із таблиці PREPARATION, то повинні видалитись всі записи цього препарату в таблиці DEFICIT:
alter table DEFICIT add constraint PR_ID foreign key(PR_ID) references
PREPARATION on delete cascadeЗнову модифікуємо таблицю DEFICIT та визначаємо, що якщо видалити аптеку з таблиці PHARMACY, то маємо видалитись всі записи цієї аптеки в таблиці DEFICIT:
alter table DEFICIT add constraint PH_ID foreign key(PH_ID) references
PHARMACY on delete cascadeЗапитом із командою ALTER TABLE можна встановити перевірочне обмеження.
Синтаксис такого запиту наступний:ALTER TABLE ІМ'Я_ТАБЛИЦІ
ADD CONSTRAINT CHECK_DATA
CHECK(Перевірена_УМОВА)Приклад 8. Продовжуємо працювати з базою даних мережі аптек.
Потрібно модифікувати таблицю AVAILABILITY і визначити, що в одному й тому ж записі значення атрибуту DateStart таблиці не повинно бути менше значення DateEnd.
ALTER TABLE AVAILABILITY ADD CONSTRAINT CHECK_DATA CHECK(DateStart
Змінюємо таблицю DEFICIT і визначаємо, що в одному і тому ж записі значення атрибуту DateStart таблиці не повинно бути менше значення DateEnd:
ALTER TABLE DEFICIT ADD CONSTRAINT CHECK_DATA CHECK(DateStart
Поділитися з друзями
SQL Server ALTER TABLE ADD Огляд стовпця
У цій статті ми розглянемо оператори SQL Server ALTER TABLE ADD Column для додавання стовпців до існуючої таблиці. Ми також зрозуміємо вплив додавання стовпця зі значенням за промовчанням та додавання та оновлення стовпця зі значенням пізніше у великих таблицях.
Як розробник бази даних вам занадто часто доводиться додавати стовпці в існуючі таблиці. Ви можете подумати, що додавання стовпця до таблиці бази даних SQL Server не буде проблемою. Іноді можна додати стовпець із самої SQL Server Management Studio. Ну, це було б добре для невеликої таблиці або таблиці, де немає великої кількості транзакцій. Давайте продовжимо і подивимося, як ми можемо додати стовпці до існуючої таблиці, а також розберемося в причинах та передових методах додавання стовпця до таблиці великого розміру.
Зразок таблиці
Давайте створимо приклад таблиці з достатнім набором даних наступного скрипта.
ЯКЩО ІСНУЄ (ВИБЕРІТЬ 1 З Sys. tables, де Name = ‘SampleTable’)
DROP TABLE SampleTable
CREATE TABLE dbo.SampleTable (
ID BIGINT IDENTITY (1,1) NOT NULL PRIMARY KEY CLUSTERED,
DateTime4 DATETIME DEFAULT GETDATE(),
Column1 CHAR(1000) DEFAULT 'MMMMMMMMMMMMMMMMMM',
Column2 CHAR(2000) DEFAULT ‘YYYYYYYYYYYYYYYYYY’
Наведений вище скрипт створить приклад таблиці з ім'ям SampleTable . Поля даних додаються до створення таблиці великого розміру. Потім було додано багато записів шляхом багаторазового виконання наступного запиту.
INSERT INTO SampleTable
(DateTime4, Column1, Column2)
0 GO
Після виконання вищезазначеного запиту 500 000 записів оновлюються до SampleTable . Після виконання вищезазначеного запиту слідує розмір таблиці та інші параметри таблиці.
Це можна отримати за допомогою sp_spaceused 'SampleTable'
Нижче наведено розмір бази даних для даних та файлу журналу.
Давайте швидко розглянемо синтаксис додавання одного стовпця до існуючої таблиці за допомогою інструкції ALTER TABLE ADD, як показано нижче.
ALTER TABLE tbl_name
ADD Col_name data_type col_constraint;
Ви можете використовувати наведений нижче оператор, щоб додати стовпець NewColumn1 до нашої таблиці SampleTable.
ALTER TABLE SampleTable
ADD NewColumn1 varchar(200)
Крім того, можна додати кілька стовпців до таблиці за допомогою одного оператора SQL Server ALTER TABLE, як показано нижче.
ALTER TABLE Зразок таблиці
ДОДАТИ NewColumn2 varchar(20),
При додаванні стовпця до великої таблиці зазвичай потрібно додати стовпець і заповнити доданий стовпець значенням за промовчанням. Наприклад, якщо потрібно додати стовпець стану, далі потрібно заповнити стовпець значенням за замовчуванням.
Додавання стовпця з обмеженнями за замовчуванням
Для досягнення вищезгаданої мети найпростіше додати стовпець з обмеженням за умовчанням. Якщо додати стовпчик за промовчанням, значення за промовчанням буде додано до таблиці.У наступному сценарії використовується оператор SQL Server ALTER TABLE ADD Column (Status у нашому випадку) для додавання стовпця з ім'ям Status з обмеженням за промовчанням.
ALTER TABLE SampleTable
DEFAULT ‘INC’ WITH VALUES
Коли стовпець додається, як зазначено вище, стовпець «Статус» буде додано зі значенням INC для всіх записів.
З профілювача наступна статика захоплюється через SQL Profiler під час додавання стовпця зі стандартними значеннями.
Тривалість Міллі Секунди
Ви можете бачити, що стовпець додається до таблиці навіть менш ніж за секунду, а операція вимагає мінімальних витрат.
Нижче наведено статистичні дані блокування під час додавання стовпця з обмеженням.
Зверніть увагу, що наступний запит має бути виконаний у відкритій транзакції, щоб отримати наведену вище статистику блокувань.
Count (*) від SYS.DM_TRAN_LOCKS
, де request_session_id = @@SPID
Group By Resource_type,
Це показує, що таблиця (об'єкт) має ексклюзивне блокування, що означає, що таблиця не блокується виключно під час додавання стовпця. Крім того, додавання стовпця зі значенням за умовчанням не зайняло і однієї хвилини, хоча в ньому 500 000 записів.
Погляньмо на розмір таблиці.
Ви побачите, що нічого не змінилося.
Давайте подивимося розміри файлів бази даних.
У файлі даних, а також у файлі журналу нічого особливого не змінилося. Всі ці результати показують, що додавання стовпця з обмеженням за промовчанням призведе лише до зміни метаданих.
Оновлення зі значенням
Давайте оновимо той же стовпець іншим значенням та отримаємо ту саму статистику.
У наведеній вище таблиці показано, що таблицю заблоковано виключно, що означає, що таблиця недоступна під час оновлення.
Подивимося розмір столу.
Таблиця збільшилася на деяке значення, як показано на малюнку вище.
Нижче наведено відомості про витрати на запити, отримані за допомогою SQL Profiler.
Тривалість Міллі Секунди
Вочевидь, що з оновленні шпальти великий таблиці споживання ресурсів велике.
Нижче наведено розміри файлів бази даних під час додавання стовпця та оновлення значень.
Ці статистичні дані показують, що існує помітна різниця між додаванням стовпця зі значенням за замовчуванням та додаванням стовпця з наступним оновленням стовпця зі значенням. Під час оновлення стовпця журнал транзакцій буде збільшуватись, і до таблиці буде застосовано монопольне блокування, яке забороняє будь-яке читання або запис до таблиці.
У чому різниця цих сценаріїв? До SQL Server 2012 при додаванні стовпця зі значенням за умовчанням відбувалася така сама поведінка. У SQL Server 2012 та пізніших версіях це вже не так, стовпець додається до таблиці в режимі онлайн, і оновлення не відбувається, і це лише зміна метаданих.
Як це досягається
Це досягається дещо дуже простим, але новим підходом. sys.system_internals_partition_columns DMV має два додаткові стовпці з іменами has_default і default_value , як показано нижче.
Тому, коли стовпець додається зі значенням за промовчанням, він не оновлюватиме сторінку даних, а оновлюватиме цю системну таблицю. Коли рядок оновлюється, значення за промовчанням буде поміщено в таблицю, навіть якщо стовпець значення за промовчанням не оновлено.
Тепер наступне питання: що робити, якщо обмеження за замовчуванням відкидається одразу після його створення. У цьому сценарії, однак, вищезазначене налаштування матиме переважну силу, тому буде збережено раніше встановлене значення за промовчанням.
Висновок
У цій статті ми розглянули базовий синтаксис SQL Server ALTER TABLE та реалізували його для додавання стовпців до існуючої таблиці.
До SQL Server 2012 не було різниці між додаванням стовпця зі значенням за промовчанням та додаванням стовпця та його оновленням. Тому в попередній епосі SQL Server 2012 замість додавання стовпця з обмеженням за умовчанням краще додавати стовпець і оновлювати його пакетами, щоб таблиця не була монопольно заблокована.
Однак, починаючи з SQL Server 2012, підхід змінився, і додавання стовпця з обмеженнями за умовчанням стало набагато зручнішим.
Динеш Асанка є MVP у категорії SQL Server за останні 8 років. Працює з SQL Server більше 15 років, пише статті та книги у співавторстві. Він є провідним у різних групах користувачів та університетах. Він завжди готовий вчитися та ділитися своїми знаннями.
Переглянути всі повідомлення Динеша Асанки
Останні повідомлення Динеша Асанки (дивитись усі)
Як додати нові стовпці до існуючої таблиці в базі даних SQL Server
Привіт, хлопці, додавання нового стовпця до існуючої таблиці з даними завжди складно, і якщо ви не виявите належної обачності, ви ризикуєте пошкодити чи видалити наявні дані. Вам потрібно знати, які дані є, скільки даних є, щоб оцінити, скільки часу займе виконання вашого запиту в робочому середовищі. Крім того, ви не можете додати стовпці NOT NULL до існуючої таблиці, якщо вони не порожні і у вас не вказано значення за промовчанням. Якщо ви знаєте SQL, то, ймовірно, знаєте, що ви можете додавати стовпці в існуючу таблицю SQL Server за допомогою команди ALTER. Він дозволяє не лише додавати стовпці, а й видаляти стовпці.
Також можна додавати або видаляти обмеження за допомогою команди ALTER. До речі, вам потрібно бути обережним, роблячи щось із існуючими таблицями через дані всередині, що створює деякі проблеми при додаванні нових стовпців або видаленні існуючих.
Ви також повинні бути обережними щодо того, скільки часу займе виконання вашого запиту в робочому середовищі. Наприклад, коли ви додаєте нові стовпці в існуючі таблиці, наприклад, припустимо, що ваша таблиця містить 10 мільйонів рядків, додавання нового стовпця буде трохи повільним, тому що значення за замовчуванням має бути заповнене для цих 10 мільйонів рядків, це також вплине на індекси, базу даних статистика і т.д.
До речі, якщо ви новачок у світі SQL, краще почати з комплексного курсу SQL, такого як The Complete SQL Bootcamp Курс Хосе Портільї на Udemy. Це допоможе вам краще і швидше вивчити SQL, і подібні статті також будуть мати більше сенсу, якщо у вас є деякі знання SQL за плечима.
У будь-якому випадку, у цій статті ви дізнаєтеся про SQL-запит або команду для додавання нових стовпців до існуючої таблиці SQL Server 2008, 2012 та інших версіях.
SQL-запит для додавання стовпців до існуючої таблиці
Як я вже сказав, ви можете використати пропозицію ALTER SQL для зміни існуючої таблиці. Ви можете використовувати наступний запит SQL для додавання стовпців до існуючої таблиці SQL Server 2008:
ALTER TABLE dbo.StudentRcords ДОДАТИ хобі VARCHAR(50) NULL;Коли ви додаєте новий стовпець у існуючу таблицю з даними, важливо вказати значення за замовчуванням або зробити його ОБНУЛЮВАНИМ, так як вам потрібно, щоб деякі значення використовувалися з існуючими рядками.
Якщо зробити стовпець хобі НЕ NULL, то наведений вище запит не працюватиме, як показано нижче:
ALTER TABLE dbo.StudentRcords ADD hobbies VARCHAR(50) NOT NULL;ALTER TABLE дозволяє додавати тільки стовпці, які можуть містити порожні значення або мати зазначене визначення DEFAULT, або стовпець, що додається, є стовпцем ідентифікатора або тимчасової мітки, або, альтернативно, якщо жодна з попередніх умов не виконується, таблиця повинна бути порожньою, щоб дозволити додавання цього стовпця. Колонка «Хобі» не може бути додана до непустої таблиці «StudentRecords», оскільки вона не задовольняє цим умовам.
Якщо ви хочете переконатися, що він не нульовий, ви повинні вказати значення за промовчанням, як показано нижче:
ALTER TABLE dbo.StudentRcords ДОДАТИ хобі VARCHAR(50) NOT NULL ЗА УМОВЧЕННЯМ "Крикет";До речі, ви також можете додати більше одного стовпця до існуючої таблиці одним запитом ALTER. Вам просто потрібно розділити їх комою, як показано нижче:
ALTER TABLE dbo.StudentRcords ДОДАТИ хобі VARCHAR(50) NULL, acitivity_score INT NULL;Цей запит додає два стовпці: перший hobbies, другий Activity_score – таблицю StudentRecords.
До речі, якщо ви вивчаєте SQL або працюєте з Microsoft SQL Server як розробник і вчитеся в хаотичному порядку на основі необхідності знати, я пропоную хороший курс, такий як Microsoft SQL Server для початківців на Udemy Розширення цих знань буде мати велике значення, тому що ви вже знаєте, як вирішити проблему.
SQL Server ALTER TABLE ADD COLUMN Приклад
Тепер давайте подивимося на живий приклад, де спробуємо додати стовпець в існуючу таблицю за допомогою редактора запитів SQL Server Management Studio:
У нас є існуюча таблиця з ім'ям Test.dbo.Customer, яка має два стовпці customer_id та customer_name, і ми додамо до таблиці новий стовпець з ім'ям customer_address.
До речі, не дотримуйтесь цієї угоди про імена, замість customer_id ви повинні просто назвати ідентифікатор стовпця, ім'я та адресу. Інформація про клієнта надмірна, тому що ви знаєте, що це інформація про клієнта, оскільки вона знаходиться в таблиці Customer.
Все пройшло нормально, тому що ми вибрали обмеження як NULL, якщо ми зробили customer_address NOT NULL, ви отримали б наступну помилку, тому що існуюча таблиця не порожня.
Щоб додати обмеження NOT NULL для нового стовпця в існуючу таблицю, вам потрібно зробити таблицю порожньою, або вказати значення за замовчуванням, наприклад. порожні адреси, як показано нижче:
Ви можете бачити, що цього разу оператор ALTER виконаний успішно, і ви можете бачити стовпець customer_address, доданий з порожніми значеннями. Щоб дізнатися більше про ALTER, прочитайте Основи SQL Server 2012 T-SQL.
Це все про як додати новий стовпець до існуючої таблиці в SQL Server . Завжди складно, якщо ваша таблиця не порожня. Фактично додавання нового стовпця в робочу базу даних займає досить багато часу в залежності від того, скільки у вас даних. Ви також маєте обмеження на додавання обмежень NOT NULL, оскільки ви повинні вказати значення за промовчанням, яке буде використовуватися для існуючих рядків.
Подальше навчання
Введення в SQL
Повний навчальний посібник з SQL
SQL для новачків: аналіз даних для початківцівІнше на тему SQL-запити, питання для інтерв'ю та статті:
- Як з'єднати кілька таблиць за допомогою LEFT Join у SQL (приклад)
- У чому реальна різниця між пропозиціями WHERE та HAVING у SQL? (Відповідь)
- 5 безкоштовних курсів з вивчення баз даних та SQL (безкоштовні курси)
- Як перенести SQL-запити з Oracle на SQL Server 2008? (Відповідь)
- 4 безкоштовні книги для вивчення бази даних Microsoft SQL Server (книги)
- Топ-5 веб-сайтів для БЕЗКОШТОВНОГО вивчення SQL онлайн? (Веб-сайти)
- 5 безкоштовних курсів для вивчення Oracle та SQL Server? (курси)
- Як об'єднати три таблиці в один запит SQL (рішення)
- Різниця між кластеризованим та некластеризованим індексом у SQL? (Відповідь)
- 5 Удосконалені книги SQL для підвищення рівня ваших навичок роботи з SQL (книги)
- 5 Курси для вивчення баз даних Oracle та Microsoft SQL Server (курси)
- Різниця між Self та Equi Join у SQL? (Відповідь)
- 10 Часті питання на співбесіді з SQL Query (рішення)
- Написати SQL Query для пошуку листів, що повторюються, — проблема LeetCode (рішення)
- Напишіть SQL-запит, щоб знайти всі імена таблиць у базі даних MySQL (рішення)
- 5 Курси для вивчення бази даних та SQL Better (курси)
- 5 найкращих веб-сайтів для вивчення SQL онлайн БЕЗКОШТОВНО? (Ресурс)
- У чому різниця між UNION та UNION ALL у SQL? (Відповідь)
- Напишіть SQL-запит для копіювання або резервного копіювання таблиці MySQL (рішення)
- Як знайти рядки, що повторюються, в таблиці бази даних? (Розчин)
- 5 найкращих курсів для вивчення баз даних MySQL для початківців (курси)
- У чому різниця між поданням та матеріалізованим поданням у базі даних? (Відповідь)
- Різниця між первинним ключем та ключем-кандидатом у таблиці? (Відповідь)
- 5 безкоштовних курсів з вивчення T-SQL та SQL Server для початківців (курси)
- Різниця між унікальним та первинним ключем у таблиці? (Відповідь)
- 5 найкращих курсів для поглибленого вивчення PostgreSQL (курси)
- 5 безкоштовних курсів з вивчення T-SQL та SQL Server для початківців (курси)
- Різниця між первинним та зовнішнім ключем у таблиці? (Відповідь)
- 5 найкращих курсів для поглибленого вивчення Microsoft SQL Server (курси)
Дякуємо за читання цієї статті, якщо вам сподобався цей підручник SQL, поділіться їм з друзями та колегами.
