Makabuluhang paglikha ng mga talahanayan

Sa mga nakaraang lektura, medyo nakilala na namin ang mga query para sa paglikha ng mga talahanayan, ngayon ay oras na upang bungkalin ito nang mas malalim.

Ang paglikha ng isang talahanayan ay halos kapareho sa pagdedeklara ng isang klase sa Java at may ganitong pattern:

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

Halimbawa, sumulat tayo ng query na lumilikha ng isang talahanayan na may mga user:

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

Mukhang napaka-simple, dahil maraming mga nuances ang hindi ipinahiwatig dito.

Una, maaaring may mga karagdagang setting ang talahanayan.

At pangalawa, ang bawat column ay maaaring magkaroon ng mga karagdagang setting.

At magsisimula tayo sa mga setting para sa paglikha ng mga column.

Mga susi sa mesa

Bilang karagdagan sa pangalan at uri ng data, ang column ng talahanayan ay maaari ding magkaroon ng mga sumusunod na setting:

PANGUNAHING SUSI Ang haligi ay ang susi ng talahanayan
NATATANGING SUSI Ang lahat ng mga halaga ng column ay dapat na natatangi.
DEFAULT na halaga Default na halaga
HINDI NULL Ang pagbabawal na tanggapin ang halagang NULL
AUTO_INCREMENT Awtomatikong tataas ng SQL Server ang halaga kapag may idinagdag na bagong tala sa talahanayan
NABUO Kinalkula na field
Imbakan Saan mag-imbak ng data: sa disk o sa memorya
COMMENT Komento sa column, hal. pamagat sa lokal na wika

Sa ibaba ay titingnan natin ang ilan sa kanila.

Una, ito ay PRIMARY KEY .

Kadalasan, ito ay isang hiwalay na column na may pangalang id at ang uri na INT. Ito ang tinatawag na "master key" ng talahanayan, at lahat ng mga hilera nito ay may mga natatanging halaga para sa key na ito. Pangunahing ginagamit ito upang ang ibang mga talahanayan ay maaaring sumangguni sa mga talaan ng aming talahanayan at tumuro sa partikular na talaan nito.

Pangalawa ay UNIQUE KEY .

Sa ilang mga paraan, ito ay katulad ng PRIMARY KEY, bagama't ang semantic load nito ay ganap na naiiba. Kung ang isang column ay may NATATANGING attribute, dapat na natatangi ang lahat ng value sa column na iyon. Ang isang magandang halimbawa ng pagkakaiba ng UNIQUE KEY at PRIMARY KEY ay ang listahan ng mga tao sa passport office.

Ang numero ng buwis ay isang PANGUNAHING SUSI, ito ay ginagamit upang gawing madaling sumangguni sa tamang tao mula sa iba pang mga talahanayan.

Ang numero ng pasaporte ay isang NATATANGING SUSI. Walang dalawang tao ang maaaring magkaroon ng parehong numero ng pasaporte. Gayunpaman, maaaring baguhin ang numero ng pasaporte. Halimbawa, kapag pinapalitan ang apelyido. At ang numero ng buwis ay mananatili sa iyo magpakailanman. Ito ang pangunahing gawain ng PRIMARY KEY. Isang halimbawa ng query na tumutukoy sa PRIMARY KEY:

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

Mga setting ng uri ng data

May mga hindi gaanong mahalaga ngunit kapaki-pakinabang na mga katangian.

DEFAUL na halaga

Kapag naglalagay ng data (nagdaragdag ng bagong row) sa isang talahanayan, maaari mong iwanan ang mga halaga ng ilang column kung mayroon silang default na halaga. Sa kasong ito, itatakda lamang ng SQL server ang halaga ng mismong column.

Simula sa bersyon 8 ng MySQL, maaari mong tukuyin ang isang expression bilang isang halaga.

HINDI NULL

Kung tinukoy mo ang NOT NULL attribute para sa isang column kapag gumagawa ng table, sisiguraduhin ng SQL Server na imposibleng mag-imbak ng NULL value sa column na ito. Bilang default, ang anumang column ay maaaring magkaroon ng NULL value, kahit isang INT column. Na medyo hindi halata para sa isang Java programmer.

AUTO_INCREMENT

Karaniwan itong ginagamit para sa mga column id. Kapag nagdagdag ka ng bagong row sa isang table, gusto mo talaga ang SQL server na magtalaga ng id para sa entry na ito. Sinong mas mahusay kaysa sa server ang nakakaalam kung gaano karaming mga hilera ang mayroon siya sa talahanayan. Lalo na kung ang mga kahilingan mula sa iba't ibang kliyente ay mapupunta sa parehong SQL server.

Ito mismo ang ginagawa ng AUTO_INCREMENT attribute. Kapag nagdadagdag ng bagong row, hindi lang kami nagpapasa ng kahit ano bilang id, at tutukuyin ng SQL server ang tamang ID para sa record na ito: kukunin lang nito ang ID ng huling umiiral na record at tataas ito ng 1. Ang attribute na ito ay maaari lamang ginamit sa mga uri ng integer at totoong numero. At, siyempre, gumawa tayo ng isang halimbawa ng paglikha ng gayong talahanayan:

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