Сиз колонналардын жүрүм-турумун ылайыкташтыруу үчүн атрибуттарды колдоно аласыз. Келгиле, кандай атрибуттарды колдоно аларыбызды карап көрөлү.
PRIMAARY KEY
Негизги PRIMARY KEY таблицанын негизги ачкычын аныктайт.
@A@USE productsdb;
CREATE TABLE Customers
(
Id INT PRIMARY KEY,
Age INT,
FirstName VARCHAR(20),
LastName VARCHAR(20)
); @A@
Негизги ачкыч өзгөчө бир столдо бир катар аныктайт. Негизги ачкыч типтеги INT колонналары болушу керек эмес, алар башка түрүн чагылдыра алышат.
Негизги ачкычты таблица деңгээлинде орнотуу үчүн:
@A@USE productsdb;
CREATE TABLE Customers
(
Id INT,
Age INT,
FirstName VARCHAR(20),
LastName VARCHAR(20),
PRIMARY KEY(Id)
); @A@
Негизги ачкыч курама ачкыч болушу мүмкүн. Мындай ачкыч бир столдогу катарды өзгөчө аныктоо үчүн бир эле учурда бир нече колоннаны колдонот. Мисалы:
@A@CREATE TABLE OrderLines
(
OrderId INT,
ProductId INT,
Quantity INT,
Price MONEY,
PRIMARY KEY(OrderId, ProductId)
) @A@
Бул жерде OrderId жана ProductId талаалары курама баштапкы ачкыч катары биргелешип иш-аракет кылышат. Башкача айтканда, «OrderLines» столунда эки катар болушу мүмкүн эмес, анда бул талаалардын экөө тең бир эле учурда бирдей баалуулуктарга ээ.
AUTO_INCREMENT
AUTO_INCREMENT атрибуты жаңы катар кошулганда колоннанын наркы автоматтык түрдө жогорулай турганын көрсөтүүгө мүмкүндүк берет. Бул атрибут интегер түрүн же сүзгүч-пункт номерлерин чагылдырган колонналар үчүн иштейт.
@A@CREATE TABLE Customers
(
Id INT PRIMARY KEY AUTO_INCREMENT,
Age INT,
FirstName VARCHAR(20),
LastName VARCHAR(20)
); @A@
Бул учурда кошулган ар бир жаңы катардын id колоннасынын наркы бир менен өсөт.
UNIQUE
UNIQUE атрибут колонна уникалдуу баалуулуктарды гана сактай аларын көрсөтөт.
@A@CREATE TABLE Customers
(
Id INT PRIMARY KEY AUTO_INCREMENT,
Age INT,
FirstName VARCHAR(20),
LastName VARCHAR(20),
Phone VARCHAR(13) UNIQUE
); @A@
Бул учурда кардардын Phhone чагылдырылган Телефон колоннасы уникалдуу баалуулуктарды гана сактай алат. Жана биз бул колонна үчүн бирдей баалуулуктарга ээ столго эки катар кошо албайбыз.
Ошондой эле таблица деңгээлинде бул атрибут аныктай алабыз:
@A@CREATE TABLE Customers
(
Id INT PRIMARY KEY AUTO_INCREMENT,
Age INT,
FirstName VARCHAR(20),
LastName VARCHAR(20),
Email VARCHAR(30),
Phone VARCHAR(20),
UNIQUE(Email, Phone)
); @A@
NULL и NOT NULL
Колоннанын жок болушу мүмкүн экенин көрсөтүү үчүн колоннаны NULLга орнотууга болот же колоннаны аныктаганда NOT NULL. Эгерде бул атрибут ачык колдонулбаса, колонна дефолт боюнча жокко чыгат. Колонна негизги ачкыч катары иш-аракет кылганда, бул учурда колонна NOT NUL, дефолт болуп саналат.
@A@CREATE TABLE Customers
(
Id INT PRIMARY KEY AUTO_INCREMENT,
Age INT,
FirstName VARCHAR(20) NOT NULL,
LastName VARCHAR(20) NOT NULL,
Email VARCHAR(30) NULL,
Phone VARCHAR(20) NULL
); @A@
Бул учурда Age колоннасы дефолт боюнча жок атрибутка ээ болот.
DEFAULT
DEFOULT атрибуты колонна үчүн дефолт наркын аныктайт. Маалыматтарды кошууда колонна үчүн нарк бербесеңер, анда ал үчүн дефолт наркы колдонулат.
@A@CREATE TABLE Customers
(
Id INT PRIMARY KEY AUTO_INCREMENT,
Age INT DEFAULT 18,
FirstName VARCHAR(20) NOT NULL,
LastName VARCHAR(20) NOT NULL,
Email VARCHAR(30) NOT NULL UNIQUE,
Phone VARCHAR(20) NOT NULL UNIQUE
); @A@
Бул жерде Age колоннасы дефолт катары 18 номерине ээ.
CHECK
ТЕКШЕРҮҮ атрибуты колоннада сакталышы мүмкүн болгон баалуулуктардын диапазонунун лимитин аныктайт. Бул үчүн, ТЕКШЕРҮҮДӨН кийин, бир колонна же бир нече колонналар жолугушу керек шартын ата-энелердин парентездеринде көрсөтүлгөн. Мисалы, кардарлардын жаш курагы 0 же андан ашык болушу мүмкүн эмес 100:
@A@CREATE TABLE Customers
(
Id INT AUTO_INCREMENT,
Age INT DEFAULT 18 CHECK(Age >0 AND Age < 100),
FirstName VARCHAR(20) NOT NULL,
LastName VARCHAR(20) NOT NULL,
Email VARCHAR(30) CHECK(Email !=''),
Phone VARCHAR(20) CHECK(Phone !='')
); @A@
Жаш курактык текшерүүдөн тышкары, EMAIL жана PHONE колонналарынын наркы катары бош сапка ээ боло албасын текшерип турат (бош сап NULL наркына барабар эмес).
Ал эми ачкыч сөздөр шарттарды туташтыруу үчүн колдонулат. Шарттар салыштыруу операциялары (>), азыраак (<) жана (==) барабар эмес, салыштыруу операциялары катары көрсөтүлүшү мүмкүн.
Ошондой эле таблица деңгээлинде ЧЕК колдоно аласыз:
@A@CREATE TABLE Customers
(
Id INT AUTO_INCREMENT,
Age INT DEFAULT 18,
FirstName VARCHAR(20) NOT NULL,
LastName VARCHAR(20) NOT NULL,
Email VARCHAR(30),
Phone VARCHAR(20),
CHECK((Age >0 AND Age<100) AND (Email !='') AND (Phone !=''))
); @A@
Оператор CONSTRAINT. Установка имени ограничений
Чектөөлөрдүн атын көрсөтүү үчүн CONSTRAINT ачкыч сөздөрүн колдонсоңор болот. Алар таблицалык деңгээлдеги атрибуттардын алдында CONSTRAINT ачкычы сөздөн кийин көрсөтүлгөн:
@A@CREATE TABLE Customers
(
Id INT AUTO_INCREMENT,
Age INT,
FirstName
VARCHAR
(20)
NOT
NULL
,
LastName
VARCHAR
(20)
NOT
NULL
,
Email
VARCHAR
(30),
Phone
VARCHAR
(20)
NOT
NULL
,
CONSTRAINT
customers_pk
PRIMARY
KEY
(Id),
CONSTRAINT
customer_phone_uq
UNIQUE
(Phone),
CONSTRAINT
customer_age_chk
CHECK
(Age >0
AND
Age<100)
);@A@
Бул учурда, PRIMARY KEY үчүн чектөө customers_pk деп аталат,UNIQUE - customer_phone_uq чектөө customer_age_chk деп аталат. Чектөөлөрдү атай алабыз, кийинчерээк бул аттарды алып салуу же өзгөртүү менен чектөөлөрдү башкаруу үчүн колдоно алабыз.
Төмөндө талкуулана турган PRIMARY KEY, CHECK, UNIQUE