Смислено създаване на таблици

В предишните лекции вече се запознахме малко със заявките за създаване на таблици, сега е време да се задълбочим в това.

Създаването на table е много подобно на декларирането на клас в Java и има следния модел:

CREATE TABLE table_name (
	column1 datatype,
	column2 datatype,
	column3 datatype,
   ....
);

Например, нека напишем заявка, която създава table с потребители:

CREATE TABLE user (
	id INT,
	name VARCHAR(100),
	level INT,
	created_date DATE,
);

Изглежда много просто, защото тук не са посочени много нюанси.

Първо, tableта може да има допълнителни настройки.

И второ, всяка колона може да има допълнителни настройки.

И ще започнем с настройките за създаване на колони.

Ключове в tableта

В допълнение към името и типа на данните колоната на tableта може да има и следните настройки:

ПЪРВИЧЕН КЛЮЧ Колоната е ключът към tableта
УНИКАЛЕН КЛЮЧ Всички стойности на колоните трябва да са уникални.
Стойност по подразбиране Стойност по подразбиране
НЕ НУЛЕВ Забраната за приемане на стойност NULL
АВТОМАТИЧНО УВЕЛИЧАВАНЕ SQL Server автоматично ще увеличи стойността, когато към tableта се добави нов запис
ГЕНЕРИРАН Изчисляемо поле
СЪХРАНЕНИЕ Къде да съхранявате данните: на диск or в паметта
КОМЕНТИРАЙТЕ Коментар на колона, например заглавие на местен език

По-долу ще разгледаме някои от тях.

Първо, това е PRIMARY KEY .

Най-често това е отделна колона с име id и тип INT. Това е така нареченият "главен ключ" на tableта и всички нейни редове имат уникални стойности за този ключ. Използва се основно, за да могат други таблици да се отнасят към записите на нашата table и да сочат към нейния специфичен запис.

Второто е УНИКАЛЕН КЛЮЧ .

В някои отношения той е подобен на PRIMARY KEY, въпреки че семантичното му натоварване е напълно различно. Ако колона има атрибута UNIQUE, тогава всички стойности в тази колона трябва да са уникални. Добър пример за разликата между UNIQUE KEY и PRIMARY KEY е списъкът с хора в паспортната служба.

Данъчният номер е ПЪРВИЧЕН КЛЮЧ, той се използва за лесно препращане към правилния човек от други таблици.

Номерът на паспорта е УНИКАЛЕН КЛЮЧ. Двама души не могат да имат един и същи номер на паспорт. Номерът на паспорта обаче може да бъде променен. Например при смяна на фамorята. И данъчният номер ще остане с вас завинаги. Това е основната задача на PRIMARY KEY. Пример за заявка, указваща PRIMARY KEY:

CREATE TABLE user (
	id INT PRIMARY KEY,
	name VARCHAR(100),
	level INT,
	created_date DATE,
);

Настройки за тип данни

Има по-малко важни, но полезни атрибути.

DEFAUL стойност

Когато вмъквате данни (добавяте нов ред) в table, можете да оставите стойностите на някои колони, ако имат стойност по подразбиране. В този случай SQL сървърът просто ще зададе стойността на самата колона.

Започвайки с version 8 на MySQL, можете да посочите израз като стойност.

НЕ НУЛЕВ

Ако зададете атрибута NOT NULL за колона, когато създавате table, тогава SQL Server ще гарантира, че е невъзможно да се съхрани NULL стойност в тази колона. По подразбиране всяка колона може да има стойност NULL, дори колона INT. Което е малко неочевидно за Java програмист.

АВТОМАТИЧНО УВЕЛИЧАВАНЕ

Обикновено се използва за идентификатори на колони. Когато добавите нов ред към table, наистина искате SQL сървърът да присвои идентификатор за този запис. Кой по-добре от сървъра знае колко реда има в tableта. Особено ако заявки от различни клиенти отиват към един и същ SQL сървър.

Точно това прави атрибутът AUTO_INCREMENT. Когато добавяме нов ред, ние просто не подаваме нищо като идентификатор и SQL сървърът ще посочи правилния идентификатор за този запис: той просто ще вземе идентификатора на последния съществуващ запис и ще го увеличи с 1. Този атрибут може да бъде само използвани с типове цели и реални числа. И, разбира се, нека да направим пример за създаване на такава table:

CREATE TABLE user (
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(100) NOT NULL,
	level INT DEFAULT 1,
	created_date DATE NOT NULL,
);