SQL биздин баарыбыз
Сен муну эми билсең керек, SQL-серверге бардык командаларды SQL-суроо аркылуу берсе болот. Абсолюттук баарысын.
Бул командалар расмий түрдө 4 топко бөлүнөт:
Маалыматтарды аныктоо операторлору (Data Definition Language, DDL):
- CREATE маалымат базасынын объектин түзөт (өзүн, таблицаны, көрүнүштү, колдонуучуну ж.б.)
- ALTER объектти өзгөртөт
- DROP объектти өчүрөт
Маалыматтар менен манипуляциялоо операторлору (Data Manipulation Language, DML):
- SELECT берилген шарттарга туура келген маалыматтарды тандайт
- INSERT жаңы маалыматтарды киргизет
- UPDATE бар маалыматтарды өзгөртөт
- DELETE маалыматтарды өчүрөт
Маалыматтарга жетүү операторлору (Data Control Language, DCL):
- GRANT колдонуучуга (топко) объект менен белгилүү операцияларды жасоого уруксат берет
- REVOKE мурда берилген уруксаттарды кайтарып алат
- DENY уруксатка караганда артыкчылыкка ээ болгон тыюуну коёт
Транзакцияларды башкаруу операторлору (Transaction Control Language, TCL):
- COMMIT транзакцияны бекитет
- ROLLBACK учурдагы транзакциянын контекстинде жасалган бардык өзгөртүүлөрдү артка кайтарат
- SAVEPOINT транзакцияны андан ары бөлүктөргө бөлөт
Биз биринчи эки деңгээлде SELECT операторунун гана түрлөрүн үйрөндүк. Келечекте бизди канча кызыктуу нерселер күтүп жатканын элестетчи.
Бирок биз бул жерде негизинен Java программалоочуларын даярдап жатабыз, ошондуктан сен жумушта такыр эле туш келчү сценарийлерди үйрөнөбүз.
Кыязы, бардык маалымат базаларын түзүү менен долбоордогу системалык администратор алектенет, ал эми маалыматтарды тандоо менен өз алдыңча көп жолу иштөөгө туура келет.
Мындан тышкары, кээде сенин кодуң маалымат базасына бардык маалыматтарды жазбайт же туура эмес жазат, ошондуктан сен ага көп жолу кол менен кирип, эмнени чындыкта сактап турганын карооң керек болот.
Мурунку лекцияларда талкуулаган нерселерди дагы бир жолу карап чыгалы.
Маалымат базасында схема түзүү
СУБДде жаңы схема түзүү үчүн төмөнкү команданы аткаруу керек:
CREATE SCHEMA аты;
Бул эң жөнөкөй вариант. Жаңы схеманы түзгөндө маалыматтарды кодтоо форматын жана башка параметрлерди көрсөтүүгө болот.
Эгер схема бар экенине ишенбей туруп өчүргүң келсе, төмөнкү команданы аткаруу керек:
DROP SCHEMA IF EXIST аты;
Бул командаларды ар түрдүү базалардын бэкап файлдарында көп жолу кездештире тургандыктан, аларды бул жерде келтирип да жатам.
Учурдагы схеманы тандоо
Эгер СУБДде көп схемалар болсо, ар кандай схемаларда бирдей таблицалар болгондо оңой эле чаташуу пайда болушу мүмкүн. Чаташууну болтурбоо үчүн эки нерсени жасаса болот:
- Ар дайым таблицанын атынан мурун схеманын атын көрсөтүү
- Схеманы демейки стандарт катары көрсөтүү
test таблицасындагы user маалыматтарын тандай турган суроо жаза коюп көрөлү. Ал болжол менен мындай көрүнөт:
SELECT * FROM test.user;
Булсыз эле болбойт, эгер бир суроодо ар кандай схемалардан бир нече таблицаларды кошуу (JOIN) керек болсо.
Айтмакчы, Java тилинде биз көп учурда ушундай нерсени жасайбыз: эгер коддо бизге ар кандай пакеттерден бирдей аталыштагы класстарды колдонуу керек болсо, класстардын атынан мурун пакеттин атын кошобуз.
Экинчи ыкма – бул демейки схеманы көрсөтүү. Эгер суроодо таблицанын аты бар болсо, бирок схема көрсөтүлбөсө, демейки схема колдонулат. Бул үчүн USE оператору колдонулат:
USE схеманын-аты;
Мурдагы суроону USE операторун колдонуп кайра жазышат:
USE test; SELECT * FROM user;
View түзүү
Реалдуу маалымат таблицаларынан тышкары SQL виртуалдык таблицаларды сактоого мүмкүнчүлүк берет, реалдуу таблицалардан маалыматтарды тартат. Мындай виртуалдык таблицалар VIEW деп аталат.
Мындай таблица реалдуу маалыматтарды сактай албайт, жана ар бир суранып жатканда реалдуу таблицалардан маалыматтарды тартып алат. Мындай VIEWнун мазмуну SQL-суроосу аркылуу белгиленет.
Сен SELECT суроосу аркылуу каалаган VIEW түзө аласың:
CREATE VIEW аты AS
SELECT-суроо;
CREATE VIEW public_employee AS
SELECT id, name FROM employee
Бул мисалда биздин public_employee таблицабыз (VIEW) кызматкерлердин ID жана аттарын гана камтыйт, алардын айлык маалыматтары сакталбайт. Реалдуу таблицалар менен бирдей кийин VIEW колдоно аласың.
View эмне үчүн керек? Алардын бир нече артыкчылыктары бар:
Маалыматка жетүүнүн ийкемдүү башкаруусу. Сен белгилүү колдонуучуларга VIEW гана жетүүгө уруксат бере аласың, бирок таблицаларга эмес. Ал эми Viewга таблицалардан жалпы маалыматтарды гана көчүрө аласың. Кийинчээк таблицаларга маанилүү маалыматтарды камтыган жаңы колонналар кошулса, ал кокусунан Viewге түшпөйт.
Маалыматтарды денормализациялоо. Маалыматтарды сактоо үчүн аларды негизинен жүз жана миңдеген таблицаларга бөлүшөт, бирок мындай маалыматтар менен кадимки адамга иштөө кыйын – өтө татаал суроолорду жазууга туура келет. View аркылуу бир нече ар кандай таблицалардан маалыматтарды бир таблица катары көрсөткөн виртуалдык таблицаларды түзө аласың.
Полиморфизм жана инкапсуляция. Сен маалыматтар базасынын структураларын өзгөртө аласың. Программа колдонуучулары, сенин View менен иштегендер, эч нерсе өзгөргөнүн түшүнүшпөйт. Viewге жетүүчү программалардын кодун кайра жазуу керек эмес. SQL-скрипттин Viewга байланышкан бөлүгүн гана оңдош керек.
Окуу гана. Viewну SELECT суроо формасы менен гана белгилөөгө болот, ошондуктан View менен иштөө реалдуу таблицалардагы маалыматтарды өзгөртө албайт. Бул дагы суроолорду кештеп коюунун дагы бир артыкчылыгы. Бирок бул жөнүндө кийинчерээк.
GO TO FULL VERSION