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;