Loading...

Мамыча жана таблица атрибуттары

Сиз колонналардын жүрүм-турумун ылайыкташтыруу үчүн атрибуттарды колдоно аласыз. Келгиле, кандай атрибуттарды колдоно аларыбызды карап көрөлү. 

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