JavaRush /Блоги Java /Random-TG /Мо пойгоҳи додаҳо ва забони SQL - "Лоиҳаи Java аз A то Я"...
Roman Beekeeper
Сатҳи

Мо пойгоҳи додаҳо ва забони SQL - "Лоиҳаи Java аз A то Я" -ро таҳлил мекунем

Дар гурӯҳ нашр шудааст
Мақола аз силсила дар бораи эҷоди лоиҳаи Java. Ҳадафи он таҳлor технологияҳои калидӣ мебошад, ки натиҷааш навиштани боти телеграмма мебошад. Қисми муқаддимавӣ дар ин ҷост . Салом, муҳандисони нармафзор. Имрӯз мо дар бораи пойгоҳи додаҳо ва забони SQL сухан меронем. "Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 1Ин мақола барои кӣ пешбинӣ шудааст? Бале, ба ҳар касе, ки манфиатдор аст. Баъзеҳо метавонанд саёҳати худро бо ин мақола оғоз кунанд, дигарон метавонанд хотираи худро аз далелҳои ҷолиб тоза кунанд. Ин қисмат комилан назариявӣ хоҳад буд. Пеш аз он ки мо ба шумо гӯем, ки пойгоҳи додаҳо ва синтаксиси SQL чист, мо бояд фаҳмем ва муайян кунем, ки чаро мо онҳоро меомӯзем. Дар ин марҳила, мо ТАНҲО дар бораи пойгоҳи додаҳои SQL сӯҳбат хоҳем кард: Мо дар ин силсила мақолаҳо NoSQL-ро баррасӣ намекунем.

Пойгоҳи додаҳо: он чӣ аст

"Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 2Пойгоҳи додаҳо (минбаъд МД номида мешавад) ҷойест, ки дар он маълумоти сохторӣ нигоҳ дошта мешавад , ки онро бо истифода аз забони дархост ба даст овардан мумкин аст. Пойгоҳи додаҳо метавонад на танҳо захира, балки инчунин коркард ва тағир додани информатсияро дар ҳаҷми калон таъмин намояд. Ҳамчун ёддошт: кӯшиш кунед, ки маҷмӯи арзишҳоро дар Excel дар асоси баъзе меъёрҳо зуд тағир диҳед. Дар асл, ҳеҷ чиз мураккаб нест. На мисли ҷаҳони воқеии рақамишудаи мо. Масалан, тағир додани номи роҳҳо, кӯчаҳо, шаҳрҳо. Агар ҳама чиз виртуалӣ мебуд ва ба базаи маълумот ворид карда мешуд, он ба эътидол меомад, ин як ду чизи ночиз мебуд. Тавре ки дар он аст, бисёре аз васоити нигаҳдории аз сабаби он ки онҳо наметавонанд ба таври худкор тағйир. Дар ин замина, SQL барои пойгоҳи додаҳо забонест, ки пойгоҳи додаҳо онро мефаҳмад ва мувофиқи он посух медиҳад. Фарз мекунем, ки номи шаҳрро иваз кардан душвор набуд, номи Днепропетровск ба Днепр чунин хоҳад буд:
UPDATE city SET name = “Днипро” WHERE id = 1231;
Ҳама дархостҳои минбаъда ба система аллакай номеро ба вуҷуд меоранд, ки ба мо лозим аст.

Чаро базаи маълумотҳо лозим аст?

Тавре ки ман аллакай гуфтам, бо истифода аз пойгоҳи додаҳо шумо метавонед маълумотро нигоҳ доред. Аммо ин маълумот чист? Барои фаҳмидани истифодаи мисоли воқеӣ, мо метавонем дар бораи баъзе барномаҳо сӯҳбат кунем. Масалан, дар бораи хамон боти телеграмма. Мо мехоҳем бидонем, ки чанд нафар аз бот истифода мебаранд. Инро чӣ тавр амалӣ кардан мумкин аст? Дар барномаи муқаррарии Java, шумо метавонед бисёр унсурҳои беназир эҷод кунед - маҷмӯи, ки лақаби корбар ё ID чатро нигоҳ медорад. Оё ин кор мекунад? иродаи. Маҳз то он даме, ки барномаи Java қатъ карда шавад ва ҳамин ки он дубора оғоз мешавад, маҷмӯи унсурҳои беназир холӣ хоҳад буд. Яъне, маълумоте, ки дар замимаи иҷрошаванда нигоҳ дошта шуда буд, танҳо нопадид шуд. Шумо дар ин бора чӣ кор карда метавонед? Шумо метавонед нигоҳдории ҳолати системаро (маълумот) аз барномаи Java ба ҷои дигар интиқол диҳед. Шумо метавонед онро дар формати CSV дар файли муқаррарӣ дар компютери худ нигоҳ доред. Шумо метавонед онро дар як сатр дар файли алоҳида иҷро кунед. Шумо метавонед ин корро кунед ва пас аз он ки барномаи Java қатъ шавад, ин маълумотро аз нав нависед. Ҳарчанд кафолати бомуваффақияти сабт аз 100% дур нест, зеро шумо метавонед сими барқи serverро берун кашед ва сабт рӯй намедиҳад. Ин равиш як камбудии назаррас дорад: ягон функсия барои дарёфт, ҷамъоварӣ ва ҷустуҷӯи иттилоот дар сатҳи файл вуҷуд надорад. Бале, албатта, шумо метавонед файлро хонед ва барои он an objectҳо созед, аммо ба шумо лозим меояд, ки ҳама маълумотро ҲАР дафъа ба барнома ворид кунед. Ва онҳо метавонанд бисёр бошанд, масалан, якчанд гигаbyte. Инро тавассути нигоҳ доштани маълумот дар пойгоҳи додаҳо пешгирӣ кардан мумкин аст. Чӣ хел? Тавассути ҷадвалҳо ва муносибатҳои байни онҳо. Ин аст он чизе ки ҳама базаҳои релятсионӣ асос ёфтаанд.

SQL: забоне, ки пойгоҳи додаҳо мефаҳмад

Системаҳои идоракунии пойгоҳи додаҳо (минбаъд ҳамчун DBMS номида мешаванд) мавҷуданд ва забони онҳо SQL мебошад. SQL як забони барномасозӣ барои коркард ва идоракунии пойгоҳи додаҳо мебошад. Барои фаҳмидани он, ки ин чӣ гуна кор мекунад, биёед ба расм назар андозем: "Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 3Истифодабаранда дархостҳои SQL-ро ба DBMS мефиристад, DBMS мефаҳмад, ки чӣ кор кардан лозим аст, онро иҷро мекунад ва агар дархост барои гирифтани маълумот бошад, пас онро бармегардонад. Аз ин рӯ, ҳамчун таҳиягарон, мо бояд забони дархости SQL-ро азхуд кунем. Шумо шояд фикр кунед: «Оҳ, забони дигар. Бо кӯмаки Худо, ман Java-ро дар ин ҷо базӯр мефаҳмам ва шумо дарҳол ба ман забони дигарро пешниҳод мекунед." Ин дуруст нест: SQL ҳамчун забони мушаххасот барои DBMS ихтироъ шудааст, то муҳосибоне, ки аз пойгоҳи додаҳо ва барномасозӣ хеле дуранд, метавонанд бо ин забон бинависанд. Ин маънои онро дорад, ки омӯзиши он он қадар душвор нахоҳад буд. Чизи асосиаш ТАЧРИБА-АМАЛИЯ-АМАЛИЯ. Имрӯз назария хоҳад буд, аммо мақолаи навбатӣ дар бораи амалия хоҳад буд. Азбаски пойгоҳи додаҳои релятсионӣ маҷмӯи ҷадвалҳои дученака ва муносибатҳои байни онҳост, кор дар атрофи онҳо кор хоҳад кард. Агар мо дар бораи мисол сухан ронем, мо метавонем ду ҷадвалро нишон диҳем - "Кишварҳо" ва "Шаҳрҳо" ва чӣ гуна пайваст кардани онҳо. "Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 4Дар ин марҳила, барои мо муҳим аст, ки фаҳмем, ки сабтҳо дар ҷадвал маълумот дар бораи ягон an object аз ҷаҳони Java мебошанд. Масалан, ин ду ҷадвалро дар Java чунин тавсиф кардан мумкин аст:
public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
Хуб, ин зебо нест, ҳа? Пойгоҳи дода метавонад ҳар миқдор ҷадвалҳоро нигоҳ дорад. Дар мавриди мо дутои онҳо вуҷуд доранд.

Сохтори ҷадвал

Ман фикр мекунам, ки ҳама ба ин ё он роҳ бо ҷадвалҳои Excel дучор омадаанд ва шумо истилоҳҳои сатр ва сутунро мефаҳмед . Дар контексти базаҳои маълумот, мо бештар дар бораи сабтҳо ва майдонҳо гап мезанем: "Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 5Ҳамин тариқ, маълум мешавад, ки ҳар як an objectи синфи City сабт дар ҷадвали пойгоҳи додаҳо мебошад.

Калиди ибтидоӣ

"Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 6Аксар вақт рӯй медиҳад, ки майдонҳои пойгоҳи додаҳо арзишҳои якхела доранд. Масалан, шабакаҳои иҷтимоӣ, ки дар он зиёда аз як нафар бо ном, насаб ва ҳатто номи падар пайдо мешаванд. Ва пойгоҳи додаҳои релятсионӣ майдони беназиреро талаб мекунанд, ки барои дастрасӣ ба сабт истифода мешавад. Ин калиди аввал ё Калиди ибтидоӣ номида мешавад. Одатан, майдони ID(id) ҳамчун калид истифода мешавад - ин барои идентификатор кӯтоҳ аст. Ин аст, ки чаро шумо бояд ба ҳар як ҷадвал майдони ID илова кунед ."Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 7

Калиди беруна

Дар мисоли мо, чунин майдон дар ҷадвали шаҳр ҷойгир аст, ки калиди кишварро истифода мебарад. Ва он чунин кор мекунад: ҳар як шаҳр як идентификатори ягонаи иттилоотиро барои кишвари худ медонад ва агар мо онро гирифта, дар базаи маълумот дархост эҷод кунем, мо дар бораи кишвар маълумоти ҳамаҷониба мегирем. Тавре ки шумо дар расм мебинед, байни ду ҷадвал робита вуҷуд дорад: "Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 8Принсипи калиди хориҷӣ дар ин ҷо нишон дода шудааст.

Дар SQL кадом бахшҳо мавҷуданд?

Дар омади гап, ҳангоми мусоҳиба аз онҳо аксар вақт мепурсанд, ки кадом амалиётҳо дар SQL:
  • DDL (Data Definition Language) як гурӯҳи операторҳоест, ки ҷадвалҳо, сохтори онҳо ва ғайраро иваз мекунанд/месозанд. Яъне, сохтани ҷадвал, нест кардани он, эҷод/нест кардани майдонҳо дар ҷадвалҳо; сохтани калиди нави ибтидоӣ ва ғайра;
  • DML (Data Manipulation Language) як гурӯҳи операторҳоест, ки тағир додани маълумотро идора мекунанд. Ин ҳама амалиётҳое мебошанд, ки маълумотро дар базаи маълумот иваз мекунанд: илова кардан, гирифтан, тағир додан ва нест кардан;
  • DCL (Забони идоракунии маълумот) воситаи тасдиқи ҳуқуқи корбар барои иҷрои амалҳост. Амалиёт барои таъмини дастрасӣ ва ҳуқуқҳо ба корбари мушаххас, то ки ӯ амалиёти DDL/DML-ро иҷро кунад.

Дар SQL кадом намуди додаҳо мавҷуданд

Ҷадвалҳо метавонанд намудҳои муайяни маълумотро ҳифз ва коркард кунанд. Ҳама чиз дар ин ҷо ба он чизе, ки мо дар Java истифода мебарем, монанд хоҳад буд. Биёед дар бораи чизҳои асосӣ сӯҳбат кунем. Танҳо сетои онҳо вуҷуд доранд, мо дигаронро мувофиқи лозим ва/ё дилхоҳ илова мекунем: "Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 9Тавре ки аз расм дида мешавад, инҳоянд:
  • INT - арзишҳои бутун. Барои идентификатори беназир ва барои адади оддӣ истифода мешавад;
  • VARCHAR сатри мост ;
  • DATE LocalDate мост.
То ҳол ҳама чиз оддӣ аст, дуруст? Намудҳои майдонҳо ҳангоми сохтани ҷадвал муайян карда мешаванд. Маълум аст, ки ба майдон навиштани арзиши навъи дигар имконнопазир аст.

Операторҳои SQL чистанд

Оператор фармони алоҳидаест, ки ягон амалро иҷро мекунад. Операторҳо аз ҷумлаҳо иборатанд, ки дар навбати худ аз калимаҳои калидӣ иборатанд, ки дар дархостҳо истифода мешаванд. Биёед як мисолро бубинем: "Лоиҳаи Java аз A то Я": таҳлor пойгоҳи додаҳо ва забони SQL - 10Ин ҷо ҷолибтар аст, дар ин ҷо дархост аллакай сохта шудааст. Онҳо дар он ҷо чӣ кор мекунанд? Ин оддӣ аст, дар он гуфта мешавад: "Аз ҷадвали Мизоҷон се майдонро (Ном, Синну сол ва Таърихи Created) гиред, танҳо он сабтҳоро интихоб кунед, ки номашон ба румӣ баробар аст."

Хулоса

Дар ин мақола мо ба омӯзиши пойгоҳи додаҳо шурӯъ кардем. Мо фаҳмидем, ки ин чист ва чаро ба мо лозим аст. Минбаъд, мо дар бораи аломатҳои аввалини SQL гузаштем, ки дар бораи онҳо дар мақолаи навбатӣ муфассалтар сӯҳбат хоҳем кард. Мисли маъмул, ман пешниҳод мекунам, ки дар GitHub сабти ном шавам ва ба ҳисоби худ пайравӣ кунам , то ин силсила ва дигар лоиҳаҳои худро, ки дар он ҷо кор мекунам, пайгирӣ кунам.

Вазифаи хонагӣ

Барои илова кардани таваҷҷӯҳ ба ин силсилаи мақолаҳо дар JRTB, вақт аз вақт супоришҳои хонагӣ хоҳанд буд. Масалан, бидуни супориши имрӯза, фаҳмидани мақолаи навбатӣ хеле душвортар хоҳад буд, зеро дар он ҷо амалия зиёд хоҳад буд. Аз ин рӯ, вазифа аз он иборат аст, ки дар компютери худ DBMS MySQL насб кунед ва тавассути консол ё тавассути ҳалли дигар ба пойгоҳи додаҳо ворид шавед. Ташаккур ба ҳама барои хондан, ба зудӣ вохӯред!

Рӯйхати ҳамаи маводҳои силсила дар аввали ин мақола аст.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION