Msingi wa SQL

Jifunze kuhusu DDL, DML na JOINs

Lugha ya Swali la Uundo ni moja ya vitalu vya msingi vya usanifu wa kisasa wa database. SQL inafafanua mbinu zilizotumiwa kuunda na kuendesha databases za kihusiano kuhusiana na majukwaa yote makubwa. Kwa mtazamo wa kwanza, lugha inaweza kuonekana kuwa ya kutisha na ngumu, lakini sio shida zote.

Utangulizi huu wa msingi wa SQL unachunguza kwa ufupi baadhi ya amri kuu zilizotumiwa kuunda na kurekebisha database.

Kuhusu SQL

Matamshi sahihi ya SQL ni suala la mashaka ndani ya jumuiya ya database. Katika kiwango chake cha SQL, Taasisi ya Taifa ya Viwango vya Marekani ilitangaza kuwa matamshi rasmi ni "foleni ya el." Hata hivyo, wataalamu wengi wa database wamechukua kwa matamshi ya slang "sequel." Uchaguzi ni wako.

SQL inakuja katika ladha nyingi. Databases za Oracle hutumia PL / SQL yake ya wamiliki. Microsoft SQL Server inatumia Transact-SQL. Tofauti zote zinategemea kiwango cha sekta ya ANSI SQL. Utangulizi huu hutumia amri za SQL zinazokubaliana na ANSI zinazofanya kazi kwenye mfumo wowote wa kisasa wa uhusiano wa database.

DDL na DML

Amri za SQL zinaweza kugawanywa katika lugha mbili ndogo ndogo. Lugha ya ufafanuzi wa data (DDL) ina amri zilizotumiwa kuunda na kuharibu databases na vitu vya database. Baada ya muundo wa database kufanywa na DDL, watendaji wa database na watumiaji wanaweza kutumia Lugha ya Kudhibiti Data (DML) ili kuingiza, kurejesha na kurekebisha data zilizo ndani yake.

Maagizo ya Lugha ya Lugha

Lugha ya ufafanuzi wa data hutumiwa kuunda na kuharibu databases na vitu vya database. Amri hizi hutumiwa hasa na watendaji wa database wakati wa kuanzisha na kuondolewa kwa mradi wa mradi. Tazama muundo na matumizi ya amri nne za msingi za DDL:

Unda. Kufunga mfumo wa usimamizi wa database kwenye kompyuta inakuwezesha kuunda na kusimamia database nyingi za kujitegemea. Kwa mfano, unaweza kutunza database ya mawasiliano ya wateja kwa idara yako ya mauzo na database ya wafanyakazi kwa idara yako HR. Amri ya CREATE hutumiwa kuanzisha kila moja ya orodha hizi kwenye jukwaa lako. Kwa mfano, amri:

Unda wafanyakazi wa DATABASE

hujenga database isiyo na kitu inayoitwa "wafanyakazi" kwenye DBMS yako. Baada ya kuunda database, hatua inayofuata ni kujenga meza zilizo na data. Tofauti nyingine ya amri ya CREATE inaweza kutumika kwa kusudi hili. Amri:

Unda TABLE person_info (kwanza_name char (20) si null, mwisho_name char (20) si null, employee_id int si null)

huanzisha meza yenye jina la "personal_info" katika databana la sasa. Katika mfano, meza ina sifa tatu: kwanza_name, last_name na employee_id pamoja na maelezo mengine ya ziada.

Tumia. Amri ya USE inakuwezesha kutaja database unayotaka kufanya kazi ndani ya DBMS yako. Kwa mfano, kama sasa unafanya kazi katika duka la mauzo na unataka kutoa amri zingine ambazo zitaathiri database ya mfanyakazi, waandulie kwa amri ya SQL ifuatayo:

Tumia wafanyakazi

Ni muhimu daima kuwa na ufahamu wa database unayofanya kazi kabla ya kutoa amri za SQL ambazo hutumia data.

ALTER. Mara baada ya kuunda meza ndani ya database, unaweza kutaka kurekebisha ufafanuzi wake. Amri ya ALTER inakuwezesha kufanya mabadiliko kwenye muundo wa meza bila kufuta na kuifuta tena. Angalia amri ifuatayo:

ALTER TABLE binafsi_info ADD pesa mshahara null

Mfano huu unaongeza sifa mpya kwa meza ya binafsi_info-mshahara wa mfanyakazi. Hoja "fedha" inabainisha kwamba mshahara wa mfanyakazi huhifadhiwa kwa kutumia dola na muundo wa senti. Hatimaye, nenosiri la "null" linaelezea database kuwa ni sawa kwa uwanja huu kuwa haujui thamani kwa mfanyakazi yeyote.

Piga. Amri ya mwisho ya Lugha ya Definition Data, DROP, inatuwezesha kuondoa vitu vyote vya database kutoka kwa DBMS yetu. Kwa mfano, ikiwa tunataka kuondoa kabisa meza ya binafsi_info ambayo tumeumba, tunatumia amri ifuatayo:

Piga TABLE binafsi_info

Vile vile, amri ya chini itatumika kuondoa orodha nzima ya mfanyakazi:

Omba wafanyakazi wa DATABASE

Tumia amri hii kwa uangalizi. Amri ya DROP inauondoa miundo yote ya data kutoka kwenye databana yako. Ikiwa unataka kuondoa rekodi za kibinafsi, tumia amri ya DELETE ya Lugha ya Kudhibiti Data.

Maagizo ya Lugha ya Udhibiti wa Data

Lugha ya Kudhibiti Data (DML) hutumiwa kurejesha, kuingiza na kurekebisha maelezo ya database. Amri hizi zinatumiwa na watumiaji wote wa database wakati wa uendeshaji wa kawaida wa databana.

TUMA. Amri ya INSERT katika SQL hutumiwa kuongeza rekodi kwenye meza iliyopo. Kurudi kwenye mfano wa binafsi_info kutoka sehemu iliyopita, fikiria kwamba idara yetu ya HR inahitaji kuongeza mfanyakazi mpya kwenye database yake. Unaweza kutumia amri inayofanana na hii:

SHAHAZA kwenye maadili ya binafsi_info ('bart', 'simpson', 12345, $ 45000)

Kumbuka kwamba kuna maadili manne yaliyotajwa kwa rekodi. Hizi zinahusiana na sifa za meza kwa utaratibu walizoelezwa: kwanza_name, mwisho_name, employee_id na mshahara.

SELECT. Amri ya SELECT ni amri ya kawaida kutumika katika SQL. Inaruhusu watumiaji wa database kupata habari maalum wanayoyotaka kutoka kwenye uendeshaji wa database. Angalia mifano michache, tena kutumia meza ya binafsi_info kutoka kwenye orodha ya wafanyakazi.

Amri iliyoonyeshwa hapa chini inapata maelezo yote yaliyomo ndani ya meza ya binafsi_info. Kumbuka kuwa asterisk hutumiwa kama wildcard katika SQL. Hii kwa kweli ina maana "Chagua kila kitu kutoka kwenye meza ya binafsi_info."

Chagua * Kutoka binafsi_info

Vinginevyo, watumiaji wanaweza kutaka kupunguza sifa ambazo zimefutwa kutoka kwa databana. Kwa mfano, Idara ya Rasilimali inaweza kuhitaji orodha ya majina ya mwisho ya wafanyakazi wote katika kampuni. Amri ya SQL ifuatayo ingeweza kupata taarifa hiyo tu:

Chagua jina la mwisho_Kutoka binafsi_info

Kifungu cha WHERE kinaweza kutumiwa kupunguza rekodi ambazo zinapatikana kwa wale wanaofikia vigezo maalum. Mkurugenzi Mtendaji anaweza kuwa na nia ya kuchunguza kumbukumbu za wafanyakazi wa wafanyakazi wote waliopotea sana. Amri ifuatayo inapata data zote zilizomo ndani ya person_info kwa kumbukumbu ambazo zina thamani ya mshahara zaidi ya $ 50,000:

Chagua * Kutoka kwa person_info PAKO Mshahara> $ 50000

UPDATE. Amri ya UPDATE inaweza kutumika kurekebisha habari zilizomo ndani ya meza, ama kwa wingi au kwa kila mmoja. Fikiria kuwa kampuni inawapa wafanyakazi wote asilimia 3 ya gharama ya maisha ya mshahara wao kila mwaka. Amri ya SQL ifuatayo inaweza kutumika kwa haraka kuomba hii kwa wafanyakazi wote kuhifadhiwa katika database:

UPDATE binafsi_info SET mshahara = mshahara * 1.03

Wakati mfanyakazi mpya Bart Simpson anaonyesha utendaji juu na zaidi ya wito wa wajibu, usimamizi unataka kutambua mafanikio yake ya stellar na kuongeza $ 5,000. Kifungu cha WHERE kinachoweza kutumika kutumikia Bart kwa hili kuinua:

UPDATE binafsi_info Mshahara wa SET = mshahara + $ 5,000 HAPA mfanyakazi_id = 12345

Ondoa. Hatimaye, hebu tuangalie amri ya DELETE. Utapata kwamba syntax ya amri hii ni sawa na ile ya amri nyingine za DML. Kwa bahati mbaya, ripoti yetu ya mapato ya hivi karibuni haikufikiria kabisa matarajio na Bart maskini amewekwa mbali. Amri ya kufuta na kifungu cha WHERE kinatumika kuondoa rekodi yake kutoka kwenye meza ya binafsi_info:

Ondoa kutoka kwa person_info WAKATI ambapo work_id = 12345

JOINs

Sasa kwa kuwa umejifunza misingi ya SQL, ni wakati wa kuendelea na mojawapo ya dhana zenye nguvu ambazo lugha inapaswa kutoa-taarifa ya JOIN. Taarifa ya JOIN inakuwezesha kuchanganya data katika meza nyingi ili ufanyie ufanisi data nyingi kwa ufanisi. Maneno haya ni wapi nguvu ya kweli ya database inakaa.

Kuchunguza matumizi ya msingi ya JOIN operesheni ili kuchanganya data kutoka meza mbili, endelea kwa mfano kutumia meza ya PERSONAL_INFO na uongeze meza ya ziada kwenye mchanganyiko. Fikiria kuwa na meza inayoitwa DISCIPLINARY_ACTION ambayo iliundwa kwa kauli ifuatayo:

Unda TABLE uamuzi wa tahadhari (action_id int si null, employee_id int si null, maoni char (500))

Jedwali hili lina matokeo ya vitendo vya uhalifu kwa wafanyakazi wa kampuni. Utaona kwamba hauna habari yoyote kuhusu mfanyakazi isipokuwa nambari ya mfanyakazi. Ni rahisi kufikiria matukio mengi ambapo ungependa kuchanganya habari kutoka kwa meza za DISCIPLINARY_ACTION na PERSONAL_INFO.

Fikiria umepewa kazi ya kuunda ripoti ambayo inalenga hatua za uhalifu zilizochukuliwa dhidi ya wafanyakazi wote wenye mshahara mkubwa kuliko dola 40,000. Matumizi ya JOIN operesheni, katika kesi hii, ni moja kwa moja. Tunaweza kupata habari hii kwa kutumia amri ifuatayo:

SEE jina la kibinafsi_info.first_name, personal_info.last_name, tahadhari_action.comments kutoka binafsi_info, tahadhari_action WHERE binafsi_info.employee_id = taaluma_action.employee_id NA binafsi_info.salary> 40000

Nambari hufafanua meza mbili ambazo tunataka kujiunga na kifungu cha FROM na kisha ni pamoja na taarifa katika kifungu cha WHERE ili kupunguza matokeo kwa rekodi ambazo zilifananishwa na ID za wafanyakazi na kufikia vigezo vya mshahara zaidi ya $ 40,000.