6.1 Промяна на структурата на базата данни
И накрая, най-вкусната част от работата с бази данни е промяната на базата данни. Ако смятате, че това е нещо много просто, то ето един анекдот за вас по темата:
The service station master, wiping his hands, hands over the car to the client and chats along the way:
- But who do you work for?
- I am a cardiac surgeon, I perform heart operations.
- And they pay a lot?
- $20,000 per operation.
- Nothing for myself ... But we, in fact, are doing the same thing, sorting out the engines, and they pay me only $ 300 ...
- Do you want to earn as much as I do?
- Want...
The surgeon starts the engine in the car and turns to the master:
- Move over!
Ситуацията е абсолютно същата и с базите данни. Искате ли да извадите част от данните в отделна table? Добре, имате нужда от:
- създайте нова table
- копирайте данните в тази нова table
- премахване на колони от стара table
- променете всички SQL заявки, които препращат към старата table
- добавете SQL заявки, които ще имат достъп до новата table
- променете codeа на Java, който работеше с таблици по стария начин
- променете скриптовете за архивиране и възстановяване, тъй като сега структурите на таблиците не съвпадат
- ако имате тестови данни за разработчици, трябва да промените и тях
Въпреки че в действителност е още по-лошо:
Нова структура на база данни:
- първо променяте структурата на tableта на машината на разработчика
- тогава се убеждавате, че такава структура наистина е по-добра
- одобри новата структура на базата данни
Скриптове за миграция:
- пишете скриптове, които ще променят данните от таблици и т.н. в реална база данни
- стартирайте тези скриптове на машина със старата структура на базата данни и вижте How се променя
- проверете всички критични места на новата база
Актуализация в продажба
- спрете производствената база данни
- направете пълно архивиране
- изпълняване на скриптове
- тъй като обикновено има много на пазара, тези скриптове могат да работят с часове
Стартирате продукта и се надявате, че няма да се наложи да връщате всичко обратно.
6.2 Оператор ALTER TABLE
От друга страна, самият скрипт, който променя структурата на tableта, е много прост. В някои отношения той е подобен на скрипт за създаване на table. Общ изглед на заявка за промяна на table:
ALTER TABLE table
team 1,
team 2,
Team N
Командите са много различни, но могат да се разграничат три основни групи:
ADD
- добавя нещо към масатаMODIFY
- променя нещо в tableтаDROP
- изтрива нещо в tableта
И когато казвам нещо, то не е за данните, а за структурата на tableта.
Например, решите да добавите нова колона към tableта, тогава трябва да изпълните следната заявка:
ALTER TABLE table
ADD COLUMN Name type
Нека напишем заявка, която ще добави имейл колона към нашата table за служители :
ALTER TABLE employee
ADD COLUMN email VARCHAR(10)
Сега нека променим дължината на имейл низа от 10 на 100: за това имаме нужда от нов скрипт:
ALTER TABLE employee
MODIFY COLUMN email VARCHAR(100)
Ако искате да промените някои атрибути на колона, но не и нейния тип, тогава ви е необходима командата ALTER COLUM
. Нека зададем стойността на имейла по подразбиране :
ALTER TABLE employee
ALTER COLUMN email VARCHAR(100) DEFAULT 'test@test.com'
И накрая, колоната може да бъде премахната, ако не ви е необходима:
ALTER TABLE employee
DROP COLUMN email
6.3 Добавяне и премахване на първичен ключ
И още няколко полезни примера.
Да кажем, че сме забравor да декларираме колоната id като първичен ключ. Винаги можете да го направите отделно чрез ALTER TABLE
:
ALTER TABLE employee
ADD PRIMARY KEY (email);
Премахването му е още по-лесно:
ALTER TABLE employee
DELETE PRIMARY KEY;
GO TO FULL VERSION