JavaRush /Java блогу /Random-KY /Биз маалымат базаларын жана SQL тилин талдайбыз. (2-бөлүк...
Roman Beekeeper
Деңгээл

Биз маалымат базаларын жана SQL тилин талдайбыз. (2-бөлүк) - "Адан Яга чейин Java долбоору"

Группада жарыяланган
Java долбоорун түзүү жөнүндө бир катар макала (башка материалдарга шилтемелер аягында). Анын максаты негизги технологияларды талдоо, натыйжасы телеграмма бот жазуу болуп саналат. "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-1-бөлүкДен соолук, урматтуу окурмандар. Бүгүн биз бир аз сүйлөшүп, көбүрөөк жазабыз, анткени колубуз көзүбүзгө караганда алда канча жакшы эстейт. Сиз кызыктырышы мүмкүн: эмне үчүн биз MySQL колдонобуз? Мисалы, ошол эле PostgreSQL жана башка чечимдер бар. Бул жерде баары жөнөкөй. Биринчиден, бул бекер. Экинчиден, анын ыңгайлуу UI интерфейси бар (бул тууралуу өзүнчө макалада сүйлөшөбүз). Үчүнчүдөн, ал мага тааныш жана жагымдуу. Жогоруда айтылгандардын баарынан тышкары, MySQL да абдан кеңири таралган.

Үй тапшырмасын текшерүү

Акыркы жолу мен тапшырма бердим - MySQLди менин машинама орнотуп, ага кириңиз. Консол аркылуу же башка жол менен. Баары аткарылдыбы? "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-2-бөлүкМолодец кылгандарга! JavaRushте кайсы деңгээлде экениңиз маанилүү эмес, окуу куралдарына ылайык иштөө үчүн керектүү куралдарды орнотуп, конфигурациялай билүү маанилүү. Жана мен сени ишендирем, алар көп болот. Аракет кылып, бирок майнап чыкпагандар да коркпойт. Бул дайыма эле биринчи жолу боло бербейт: кээде тыныгуу алып, жаңы күч менен кайра аракет кылуу керек. MySQLди ким өзү орноткон - кимдир бирөө муну жасап жатканын бorшим үчүн комментарийге "+" жазыңыз. Муну мен өзүм да жасайм. Менде Windows ноутбугу жок болгондуктан, мен аны MacBookте көрсөтөм. Орнотуу процесси көп деле башкача болот деп ойлобойм. Англисче нускаманы колдонуп, аны орноткусу келгендер үчүн бул жерди басыңыз .

MacOSдо MySQL орнотуу

Биринчиден, төмөнкү шилтемеге өтүңүз , Windows, Ubuntu же MacOS болобу, иштөө тутумун тандаңыз, төмөндө көрсөтүлгөндөй: "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-3-бөлүкЖүктөп алыңыз жана ишке киргизиңиз. Бирок, баары мен үчүн ошол замат туура болгон жок. Apple акыркы versionсын орнотууга уруксат бербейт экен: "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-4-бөлүкАлбетте, муну өчүрө аласыз, бирок MacBook иштеп жатат, мен анын жөндөөлөрү менен аралашпайм. Ошондуктан, сыноо жана ката аркылуу, мен орното турган versionсын таптым - бул 5.7.21 . Башка versionларды табуу үчүн Архив өтмөгүнө өтүп, керектүү versionны тандаңыз: "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-5-бөлүкАндан кийин жүктөлүп алынган файлды иштетиңиз. Кийинки, кийинки, кийинки дегенди басыңыз, бирок аягында сак болуңуз! Маалымат базасына кирүү үчүн колдонуучу аты жана сырсөз болот. Мен үчүн мындай көрүндү: Бул жерде тамыр аты жана Vac/zto=.24q сырсөзү "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-6-бөлүкбар колдонуучу болот деп айтылат . Бул орнотууну аяктайт.

MySQL буйрук сабына кирүү

Кирүү үчүн MySQL serverи күйгүзүлгөнүн текшеришиңиз керек. Бул үчүн, өтүңүз Системанын артыкчылыктары , ал жерден MySQL сөлөкөтүн табыңыз: "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-7-бөлүкАга барып, адегенде server күйгүзүлүшү керек экенин көрүңүз. Бул үчүн, жөн гана чыкылдатыңыз Start MySQL Server жана ошол. Ооба, сиз ошондой эле кутучаны белгилесеңиз болот, ошондуктан server машина башталган сайын фондо иштей баштайт. "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-8-бөлүкБелгилей кетчү нерсе, мен терминалдагы бардык сурамдарды түшүнүктүү болушу үчүн $ белгиси менен баштайм. Андан кийин, буйрук сабы аркылуу MySQL serverине түз туташуу керек. Бул үчүн, терминалды ачып, жазыңыз: $ mysql Жана эки вариант бар:
  1. Эгерде жооп “ERROR 1045 (28000): Колдонуучу 'roman_beskrovnyi'@'localhost' (паролду колдонуу менен: NO" үчүн кирүү четке кагылган болсо , анда бул server орнотулуп, кайра чакыртылып жатканын билдирет. Сиз жөн гана туура буйрукту тапшырышыңыз керек. ага.
  2. Эгер жооп табылбаса: mysql , баары жакшы - serverге шилтеме жок. Бул үчүн, сиз MySQL өзгөрмөсү менен лакап ат жасашыңыз керек, ошондуктан биз төмөнкү сапты жазабыз:

    $ лакап ат mysql=/usr/local/mysql/bin/mysql

    Бул терминалдык сессияга гана жардам берет. Бирок бизге мындан ары кереги жок - биз терминал аркылуу ар дайым иштебейбиз.

  3. MySQL орнотулган эмес, компьютериңизди алдабаңыз.
Андан кийин, биз орнотуу учурунда берилген атын жана паролду колдонобуз жана жазабыз: $ mysql --user=root -p"Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-9-бөлүк Ал жерде биз сырсөздү жазабыз жана биз бул формада бактылуу болобуз: "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-10-бөлүкАкыркы сапта MySQLге кирдик деп айтылат. терминалдык server. Бирок бул тамыр үчүн сырсөз бир жолку сырсөз болуп чыкты жана аны башкасына өзгөртүү керек. Албетте, коопсуздук үчүн. Эгер биз муну өзгөртпөсөк жана serverде жаңы маалымат базасын түзүүгө аракет кылсак, биз төмөнкү жоопту алабыз: ERROR 1820 (HY000): Бул билдирүүнү аткаруудан мурун ALTER USER оператору аркылуу сырсөзүңүздү баштапкы абалга келтиришиңиз керек . "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-11-бөлүкАлар мындайча айтканда аргасыз. Макул, бизге кыйынбы? Келгиле, сырсөздү жөнөкөйлөтүп көрөлү (бул жергorктүү жумуш үчүн гана; чыныгы иш үчүн, албетте, сырсөз татаал болушу керек). Колдонуучунун аты сыяктуу root∫ дейли . Сырсөздү өзгөртүү үчүн төмөнкү сапты киргизишиңиз керек: ALTER USER 'root'@'localhost' IDENTIFICED BY 'root'; Жана жооп мындай болот: Баары туура иштегенине ынануу үчүн, келгиле, төмөнкү синтаксисти"Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-12-бөлүк колдонуп жаңы маалымат базасын түзүүгө аракет кылалы : $ CREATE DATABASE test_db; Мындай маалымат базасы serverде түзүлгөндүгүн текшерүү үчүн төмөнкү буйрукту жазыңыз: $ SHOW DATABASES; Натыйжада, биз төмөндөгүлөрдү алабыз: Ушунун баары :) Бул жөнөкөй жана тез болду деп айтуу мүмкүн эмес. Ошондуктан, ким өзү жасаган болсо - өзгөчө урмат. Аны жасай электер үчүн, кабатыр болбоңуз, орнотуунун бардык түрлөрү үчүн колдонмолор бар:"Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-13-бөлүк Ал жерде баары абдан акылдуу сүрөттөлгөн. Болгону баары англис тorнде. Эми биз биринчи саптарыбызды SQLде жазабыз.

Биздин биринчи саптарды SQLде жазуу

Жогоруда байкагандай, биз эки буйрукту билебиз:
  1. ДАТА БАЗАНЫ ТҮЗҮҮ – serverде маалымат базасын түзөт;
  2. МААЛЫМАТ БАЗДАРЫН КӨРСӨТҮҮ – Сервердеги бардык түзүлгөн жана жеткorктүү маалымат базаларын көрсөтөт.
Мен SQL алардын буйруктарын кантип жазганыбызга маани бербестигин белгилеймин - бардыгы баш тамгалар менен жазылганбы же жокпу. Бирок буйруктарды баш тамга менен жазуу жакшы адеп деп эсептелет. Андан кийин, маалымат базасын жок кылуу үчүн, DROP DATABASE database_name буйругун жазышыңыз керек ; мында database_name - биз жок кылгыбыз келген маалымат базасынын аты. Биз буга чейин test_db деп аталган тест маалымат базасын түзгөнбүз , андыктан аны жок кылалы. Бул үчүн биз жазабыз: $ DROP DATABASE тести; Белгилей кетчү нерсе, Query OK, 0 сапка таасир эткен (0,02 сек) жооп абдан маанилүү, анткени бул суроо ийгorктүү болгонун тастыктайт. Кошумчалай кетсек, бул суроо tableларда канча сап жана канча убакытта өзгөргөнүн айтып берет. Жалпысынан алганда, DROP"Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-15-бөлүк деген сөз бир нерсени алып салуу үчүн жооптуу. Бул учурда биз маалымат базасын жок кылдык. Бирок бул башка максаттар үчүн да колдонулушу мүмкүн (мисалы, үстөлдү түшүрүү). Эми, мага ишенүү үчүн , натыйжаны текшериңиз, канча маалымат базасы калганын карап көрөлү: $ SHOW DATABASES; Көрүнүп тургандай, test_db деген маалымат базасы жок. CHTD :D"Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-16-бөлүк

Өзүңүздүн маалымат базасын жана tableны түзүңүз

Шаарлардын маалымат базасын түзүңүз: $ CREATE DATABASE шаарлар; Белгилүү бир маалымат базасында иштөө үчүн ага кирүү керек. Бул үчүн, USE database_name буйругун колдонуңуз , андан кийин tableлар менен иштөө үчүн бардык буйруктар ушул маалымат базасында аткарылат. $ КОЛДОНУУ шаарлар; Жооптон көрүнүп тургандай - Маалыматтар базасы өзгөрдү , бул маалымат базасына өтүү ийгorктүү болду. "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-17-бөлүкКийинки кадам стол түзүү болуп саналат. Кайсы? Келгиле, адегенде өлкөлөр менен table түзөлү. Эмнеге андай? Анткени шаарлар кайсы мамлекетте жайгашканына чет элдик ачкыч керек. Ал эми бул өлкөлөр жалпысынан маалымат базасында (мындан ары - маалымат базасынан кыскартылган) боло баштагандан кийин алынышы мүмкүн. Мурунку макаладан эстегендей , өлкөлөр сүрөттөлгөн tableда бизде эки талаа бар - ID жана аты, мында ID - уникалдуу идентификатор, ал эми ысым - өлкөнүн аталышы. Демек, мындай маалымат базасын түзүү алмурутту аткылагандай оңой. Биз жазабыз: $ CREATE TABLE өлкө (id INT, аты VARCHAR(30)); "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-18-бөлүкКөрүнүп тургандай, баары жакшы өттү. SHOW DATABASES менен окшоштук боюнча, биз tableлардын тизмесин карай алабыз: $ SHOW TABLES; "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2 - 19-бөлүкМына, биздин дасторкон. Эми tableларды кантип жок кылууну үйрөнөлү. Бул үчүн биз жазабыз: $ DROP TABLE өлкө; "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2 - 20-бөлүкТаблица же маалымат базасы жок кылынгандан кийин, аны калыбына келтирүү мүмкүн эмес экенин белгилей кетүү маанилүү!

Стол менен иштөө

Биз түзгөн tableны калыбына келтирели. Бул үчүн, сиз жөн гана буга чейин жасаган ишиңизди кайталашыңыз керек. Таблица структурасын кароо үчүн төмөнкү буйрукту колдонуу керек - DESC table_name : $ DESC country; "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2 - 21-бөлүкКөрүнүп тургандай, бул жерде table тууралуу бардык маалыматтар жазылган. Таблицага бир нерсе кошуу үчүн INSERT INTO table_name VALUES() буйругун колдонушуңуз керек . Үч өлкө үчүн үч рекордду кошолу: $ INSERT INTO country VALUES (1, 'Украина'); $ INSERT INTO IL VAVAES (2, 'Россия'); $ INSERT INTO country VALUES(3, 'Белорус'); "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2 - 22-бөлүкМаалыматтар базасында эмне сакталганын көрүү үчүн биз маалыматтарды алуу үчүн жөнөкөй суроону колдонобуз. Бул үчүн, биз өлкөнүн tableсынан бардык талаалардын маалыматтарын алууну каалайбыз. Мурунку сүйлөмдү кылдаттык менен эстеңиз, анткени sql сурамы мындай болот: $ SELECT * FROM country; Бул жерде * бардык талааларды алуу керек дегенди билдирет. "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2 - 23-бөлүкМына ушундай сулуу болуп калдык. Эгерде биз белгилүү бир талааны гана алгыбыз келсе, анда бул көйгөй эмес: жылдыздын ордуна биз үтүр менен бөлүнүшү керек болгон талаалардын аттарын жазабыз. Өзүңүз байкап көрүңүз;) Биз буга чейин table түзүп койгонбуз, бирок эмнегедир ал боюнча маалыматыбыз жетишсиз. Калктын саны, албетте, зыян келтирбейт, туурабы? Анан кантип жасоо керек?
  1. Таблица схемасына жаңы талаа кошуңуз - калк.
  2. Учурдагы жазууларды жаңыртыңыз.
Биринчиси үчүн, биз ALTER TABLE table_name ADD COLUMN буйругун колдонобуз . Жалпысынан алганда, ALTER TABLE – бул DDL операциялары үчүн буйруктардын жыйындысы (бул эмне экенин эстейсизби? Ал мурунку макалада болгон). Айтмакчы, SELECT DML операциясын билдирет. Төмөнкүлөрдү жазалы: $ ALTER TABLE country ADD COLUMN популяция INT; $ DESC өлкө; "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2 - 24-бөлүкСүрөттөн көрүнүп тургандай, биз tableга жаңы талааны ийгorктүү коштук жана экинчи буйрук менен талаа схемада экенин текшердик. Экинчи кадам - ​​tableдагы жазууларды жаңыртуу жана маанилерди дайындоо. Номерди Википедиядан алалы. Мен аларга ишенем деп эмес, бирок ошентсе да, бул эң тез жана эң оңой жол. Бул үчүн, башка DML буйругун колдонуңуз. Бирок, адегенде эмне кылгыбыз келет деп айталы: биз өлкө tableсын жаңырткыбыз келет, id = 1 болгон жазууда калктуу талааны 41806221ге барабар кылгыбыз келет. Жана бул курулуш кандай көрүнөт: UPDATE table_name SET table_row1 = value WHERE table_row2 = value2; Анын негизинде биз жазабыз: $ UPDATE өлкө SET калкы = 41806221 WHERE id = 1; "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-бөлүк - 25Бул жерде биз биринчи жолу WHERE ачкыч сөзүн колдондук . Бул чыпкалоо үчүн баалуулуктарды кошуу керек. Мисалы, бул жолу биз id бирге барабар болгон талаа (талаалар) үчүн гана жаңыртуу керектигин айттык (биз sqlге бул негизги ачкыч деп айтканга чейин – алардын бир нечеси болушу мүмкүн). Биз ошондой эле WHERE id > 2 сыяктуу шартты белгилей алабыз. Эгерде биз чыпкалоону такыр көрсөтпөсөк, бул маани бардык table жазууларына жазылмак. Россия, Беларусь жана башка өлкөлөр үчүн, өзүңүздү жаңыртыңыз;) Эми id 1ден чоң болсо, tableдан ат жана калктуу талаалар боюнча маалыматтарды алууга аракет кылалы . "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2 - 26-бөлүкОшентип, биз өзүбүз каалаган талааларды гана алдык. INSERT INTO баскычын колдонуу менен биз кайсы талааларды кошкубуз келет жана кайсынысын бош калтыргыбыз келерин аныктай алабыз. Бул үчүн, биз жазабыз: $ INSERT INTO өлкөнүн (аты, калкы) VALUES('Грузия', 1234566); Эмне болгонун текшерүү үчүн бардык талаалардын тизмесин карап көрөлү: $ SELECT * FROM country; "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-бөлүк - 27Идентификатору жок, кирүүсү начар, ал эми калк, албетте, башынан алынган, ошондуктан аны өчүрүү керек. DELETE FROM table_name командасын колдонуңуз : $ DELETE FROM country WHERE name = 'Грузия'; "Java долбоору Адан Яга": биз маалымат базаларын жана SQL тorн талдайбыз.  2-бөлүк - 28Ушундай жол менен биз tableдан талааны кантип жок кылууну үйрөндүк.

Үй тапшырма

Үй тапшырмасы төмөнкүдөй болот:
  1. Өлкө tableсынын схемасына ID талаасынан негизги ачкычты (PRIMARY KEY) кошушуңуз керек.
  2. Өлкө tableсына дагы бир өлкөнү кошуңуз – Молдова.
  3. Мурунку макаланын схемасына ылайык, бардык сүрөттөлгөн талааларды камтыган table шаарын түзүңүз. Талаа аттары төмөнкүдөй болот: id, аты, өлкөнүн_id, калк.
  4. Шаардын үстөлүнө негизги ачкычты кошуңуз.
  5. Шаардын үстөлүнө чет элдик ачкычты кошуңуз.
Тапшырма кызыктуу, билгендер үчүн ал тез жана оңой болот. Эч ким жок болсо, бул макаладагы материалды мыкты бекемдөө болуп саналат.

Жыйынтыктап көрөлү

Бул макалада биз көп нерселерди жасадык. Биринчиден, биз MySQL маалымат базасы serverин орнотуп, баштадык. Экинчиден, биз ачкыч сөздөрдүн жана суроо-талаптардын толук тизмесин үйрөндүк, алардын жардамы менен азыр маалымат базаларын жана tableларды түзө/жок кыла алабыз. Биз tableларга маалыматтарды кошууну, аларды жаңыртуу жана жок кылууну үйрөндүк. Бул жерде биз колдонгон бардык буйруктар, алардын сүрөттөмөлөрү:
  • ДАТА БАЗАНЫ ТҮЗҮҮ маалымат базасынын_аты; - жаңы маалымат базасын түзүү
  • МААЛЫМАТ БАЗДАРЫН КӨРСӨТҮҮ; — маалымат базаларынын тизмесин көрүү
  • DROP DATABASE базасы_аты; - маалымат базасын жок кылуу
  • USE database_name; - маалымат базасында иштөө
  • CREATE TABLE table_name (id INT, ....); - table түзүү
  • ТАБЛИЦАЛАРДЫ КӨРСӨТҮҮ; — tableлардын тизмесин көрүү
  • DESC TABLE table_аты; — table диаграммасын кара
  • DROP TABLE table_аты; - tableны жок кылуу
  • INSERT INTO table_name VALUES (); - tableга талаа кошуу
  • SELECT * FROM table_name WHERE table_row = маани; — tableдагы талааларды WHERE кийинки шартта алуу
  • SELECT * FROM table_name; - tableдагы бардык талааларды алуу
  • ALTER TABLE tableнын_аты КОШУ ТАМАНЫЧАНЫ_аты COLUMN_TYPE; — table схемасына жаңы талаа талаасын кошуу
  • UPDATE talbe_name SET talbe_row1 = value1 WHERE table_row2 = value2; — tableдагы жазууларды жаңыртуу: башка талаанын шартына жараша бир талаанын маанилерин коюңуз
  • DELETE FROM table_name WHERE table_row1 = value1; — белгилүү бир шартта tableдан талааны (же талааларды) алып салуу.
Сиз менен биз эң сонун иш кылдык деп ойлойм. Мен жумушумду жактыргандардын баарын менин GitHub аккаунтума жазылууга чакырам , анда мен карьерамда болуп жаткан кызыктуу долбоорлорду жана окуяларды жарыялайм. Ачык булакта иштөөгө кызыккандардын баарын менин долбоорлорума (репозиторийлериме) катышууга чакырам. Көңүл бурганыңыздар үчүн рахмат. Берorштер базасы жөнүндө кийинки макаланы күтө туруңуз.

Сериядагы бардык материалдардын тизмеси ушул макаланын башында.

Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION