Fundamentali SQL

Tgħallem dwar DDL, DML u JOIN

Il -Lingwa ta 'Mistoqsija Strutturata hija waħda mill-pedamenti ewlenin ta' arkitettura ta 'database moderna. SQL jiddefinixxi l-metodi użati biex jinħolqu u jiġu mmanipulati databases relazzjonali fuq il-pjattaformi l-kbar kollha. Għall-ewwel daqqa t'għajn, il-lingwa tista 'tidher intimidanti u kumplessa, iżda mhux dak kollu li diffiċli.

Din l-introduzzjoni għall-elementi fundamentali wara SQL tagħti ħarsa qasira lejn uħud mill-kmandi ewlenin użati biex jinħolqu u jimmodifikaw id-databases.

Dwar SQL

Il-pronunzja korretta ta 'SQL hija kwistjoni kontroversjali fi ħdan il-komunità tad-database. Fl-istandard SQL tiegħu, l-Istitut Nazzjonali ta 'l-Istandards Amerikani ddikjara li l-pronunzja uffiċjali hija "es queue el." Madankollu, ħafna professjonisti ta 'database ħadu l-pronunzja ta' slang "segwiment". L-għażla hija tiegħek.

SQL jiġi f'ħafna togħmiet. Id-databases tal-Oracle jużaw il-proprjetarja PL / SQL. Microsoft SQL Server tagħmel użu minn Transact-SQL. Il-varjazzjonijiet kollha huma bbażati fuq l-istandard tal-industrija ANSI SQL. Din l-introduzzjoni tuża kompożizzjonijiet SQL konformi mal-ANSI li jaħdmu fuq kwalunkwe sistema ta 'database relazzjonali moderna.

DDL u DML

Il-kmandijiet SQL jistgħu jinqasmu f'żewġ sub-lingwi ewlenin. Il-Lingwa tad-Definizzjoni tad-Data (DDL) fiha l-kmandi użati biex jinħolqu u jinqerdu databases u oġġetti ta 'database. Wara li l-istruttura tad-database hija definita b'DDL, l-amministraturi u l-utenti tal-bażijiet tad-dejta jistgħu jużaw il-Lingwa ta 'Manipulazzjoni tad-Data (DML) biex iddaħħal, tirkupra u timmodifika d-dejta li tinsab fiha.

Kmand tal-Lingwa tad-Definizzjoni tad-Data

Il-Lingwa tad-Definizzjoni tad-Dejta tintuża biex toħloq u teqred databases u oġġetti ta 'database. Dawn il-kmandi jintużaw primarjament minn amministraturi ta 'database matul il-fażijiet ta' setup u tneħħija ta 'proġett ta' database. Hawn ħarsa lejn l-istruttura u l-użu ta 'erba' kmandi bażiċi DDL:

CREATE. L-installazzjoni ta ' sistema ta' ġestjoni ta 'database fuq kompjuter tippermetti li toħloq u timmaniġġja ħafna databases indipendenti. Per eżempju, inti tista 'tixtieq iżżomm database ta' kuntatti mal-klijenti għad-dipartiment tal-bejgħ tiegħek u database tal-persunal għad-dipartiment tal-HR tiegħek. Il-kmand CREATE jintuża biex jistabbilixxi kull waħda minn dawn id-databases fuq il-pjattaforma tiegħek. Pereżempju, il-kmand:

ĦOLQIEN MINN DATABASE impjegati

toħloq database vojta msejħa "impjegati" fuq id-DBMS tiegħek. Wara li toħloq id-database, il-pass li jmiss huwa li toħloq tabelli li jkun fihom data. Varjant ieħor tal-kmand CREATE jista 'jintuża għal dan il-għan. Il-kmand:

ĦOLQIEN TABELLA personal_info (first_name char (20) mhux null, last_name char (20) mhux null, employee_id int mhux null)

jistabbilixxi tabella intitolata "personal_info" fid-database kurrenti. Fl-eżempju, it-tabella fiha tliet attributi: first_name, last_name u employee_id flimkien ma 'xi informazzjoni addizzjonali.

UŻU. Il-kmand tal-USE jippermettilek li tispeċifika d-database li trid taħdem ma 'DBMS tiegħek. Per eżempju, jekk int bħalissa qed taħdem fid-database tal-bejgħ u trid toħroġ xi kmandi li se jaffettwaw id-database ta 'l-impjegat, ipprefacehom bil-kmand SQL li ġej:

Impjegati ta 'l-USE

Huwa importanti li dejjem tkun konxju tad-database li qed taħdem qabel ma toħroġ kmandi SQL li jimmanipulaw id-data.

ALTER. Ladarba toħloq tabella f'database, tista 'tkun trid timmodifika d-definizzjoni tagħha. Il-kmand ALTER jippermettilek tagħmel bidliet fl-istruttura ta 'tabella mingħajr ma tħassarha u toħloqha mill-ġdid. Agħti ħarsa lejn il-kmand li ġej:

ALTER TABLE personal_info Żid il-prezz tas-salarju null

Dan l-eżempju jżid attribut ġdid għat-tabella personal_info: salarju ta 'impjegat. L-argument tal-"flus" jispeċifika li s-salarju ta 'impjegat huwa maħżun bl-użu ta' format ta 'dollari u ċenteżmi. Fl-aħħarnett, il-keyword "null" jgħidlek lid-database li huwa tajjeb għal dan il-qasam li ma jkun fih l-ebda valur għal xi impjegat partikolari.

DROP. Il-kmand finali tal-Lingwa tad-Definizzjoni tad-Data, DROP, jippermetti li tneħħi l-oġġetti tad-database kollha mid-DBMS tagħna. Per eżempju, jekk irridu nneħħu b'mod permanenti t-tabella personal_info li ħloqna, we'd tuża l-kmand li ġej:

DROP TABLE personal_info

Bl-istess mod, il-kmand hawn taħt se jintuża biex titneħħa d-database tal-impjegat kollu:

DROP DATABASE impjegati

Uża dan il-kmand b'attenzjoni. Il-kmand DROP tneħħi l-istrutturi kollha tad-data mid-database tiegħek. Jekk trid tneħħi rekords individwali, uża l-kmand TINFISSA tal-Lingwa ta 'Manipulazzjoni tad-Dejta.

Kompiti tal-Lingwa ta 'Manipulazzjoni tad-Data

Il-Lingwa ta 'Manipulazzjoni tad-Dejta (DML) tintuża biex tinkiseb, tiddaħħal u timmodifika l-informazzjoni tal-bażi tad-dejta. Dawn il-kmandi jintużaw mill-utenti kollha tad-database waqt l-operat ta 'rutina tad-database.

INSERT. Il-kmand INSERT fl-SQL jintuża biex iżid rekords f'tabella eżistenti. Ir-ritorn għall-eżempju personali_info mis-sezzjoni ta 'qabel, jimmaġina li d-dipartiment tal-HR tagħna jeħtieġ li jżid impjegat ġdid mad-database tiegħu. Int tista 'tuża kmand simili għal dan wieħed:

INFETTAW FUQ valuri personal_info ("bart", "simpson", 12345, $ 45,000)

Innota li hemm erba 'valuri speċifikati għar-reġistrazzjoni. Dawn jikkorrispondu għall-attributi tal-mejda fl-ordni li ġew definiti: first_name, last_name, employee_id u salarju.

TAGĦŻEL. Il-kmand SELECT huwa l-kmand l-aktar komunement użat fl-SQL. Jippermetti lill-utenti tal-bażi tad-dejta biex jirkupraw l-informazzjoni speċifika li jixtiequ minn database operattiva. Agħti ħarsa lejn ftit eżempji, għal darb'oħra tuża t-tabella personal_info mid-database tal-impjegat.

Il-kmand li jidher hawn taħt jirkupra l-informazzjoni kollha li tinsab fit-tabella personal_info. Innota li l-asterisk jintuża bħala wildcard fl-SQL. Dan litteralment ifisser "Agħżel kollox mit-tabella personal_info."

TAGĦŻEL * MINN personal_info

Alternattivament, l-utenti jistgħu jixtiequ jillimitaw l-attributi li huma rkuprati mid-database. Pereżempju, id-dipartiment tar-Riżorsi Umani jista 'jeħtieġ lista tal-ismijiet tal-impjegati kollha tal-kumpanija. Il-kmand SQL li ġej jista 'jsib biss dik l-informazzjoni:

TAGĦŻEL l-aħħar isem minn personal_info

Il-klawżola WHERE tista 'tintuża biex tillimita r-rekords li huma rkuprati għal dawk li jissodisfaw il-kriterji speċifikati. Il-Kap Eżekuttiv jista 'jkun interessat fir-reviżjoni tar-rekords tal-persunal tal-impjegati kollha mħallsa ħafna. Il-kmand li ġej jikseb id-dejta kollha li tinsab fi ħdan personal_info għal rekords li għandhom valur tas-salarju akbar minn $ 50,000:

TAGĦŻEL * MINN personal_info FEJN salarju> $ 50000

AĠĠORNAMENT. Il-kmand AĠĠORNAMENT jista 'jintuża biex jimmodifika l-informazzjoni li tinsab f'tabella, jew bl-ingrossa jew individwalment. Assumi li l-kumpanija tagħti lill-impjegati kollha żieda fil-għoli tal-ħajja ta '3% fis-salarju tagħhom kull sena. Il-kmand SQL li ġej jista 'jintuża biex japplika dan malajr lill-impjegati kollha maħżuna fid-database:

AĠĠORNAMENT personali_info SET salarju = salarju * 1.03

Meta l-impjegat il-ġdid Bart Simpson juri prestazzjoni 'l fuq mis-sejħa ta' dmir, il-maniġment jixtieq jirrikonoxxi l-kisbiet stellari tiegħu b'żieda ta '$ 5,000. Il-klawżola WHERE tista 'tintuża biex tindika lil Bart għal dan iqajjem:

AĠĠORNAMENT personali_info SET salarju = salarju + $ 5000 FEJN impjegat_id = 12345

DELETE. Fl-aħħarnett, ejja nħarsu lejn il-kmand DELETE. Int issib li s-sintassi ta 'dan il-kmand hija simili għal dik tal-kmandi DML l-oħra. Sfortunatament, ir-rapport tal-qligħ korporattiv tagħna l-aktar reċenti ma laħaqx l-aspettattivi u l-bqija Bart ġiet issensjata. Il-kmand DELETE bi klawżola WHERE tista 'tintuża biex tneħħi r-rekord tiegħu mit-tabella personal_info:

TINBELA MINN personal_info FEJN impjegat_id = 12345

JOINs

Issa li tgħallimt il-baŜi ta 'SQL, wasal iŜ-Ŝmien li wieħed jimxi fuq wieħed mill-aktar kunëetti qawwija li l-lingwa għandha toffri - id-dikjarazzjoni JOIN. Stqarrija JOIN jippermettilek li tgħaqqad id-dejta f'diversi tabelli biex tipproċessa b'mod effiċjenti kwantitajiet kbar ta 'data. Dawn id-dikjarazzjonijiet huma fejn tokkupa l-qawwa vera ta 'database.

Biex tesplora l-użu ta 'operazzjoni bażika JOIN biex tikkombina data minn żewġ tabelli, kompli bl-eżempju billi tuża t-tabella PERSONAL_INFO u żid tabella addizzjonali mat-taħlita. Assumi li għandek tabella msejħa DISCIPLINARY_ACTION li nħolqot bl-istqarrija li ġejja:

CREATE TABLE disciplinary_action (action_id int mhux null, employee_id int mhux null, kummenti char (500))

Din it-tabella fiha r-riżultati ta 'azzjonijiet dixxiplinarji fuq impjegati tal-kumpanija. Int tinduna li ma fiha l-ebda informazzjoni dwar l-impjegat minbarra n-numru tal-impjegat. Huwa faċli li timmaġina bosta xenarji fejn inti tista 'tixtieq tgħaqqad l-informazzjoni mit-tabelli DISCIPLINARY_ACTION u PERSONAL_INFO.

Assumi li ġejt inkarigat bil-ħolqien ta 'rapport li jelenka l-azzjonijiet dixxiplinarji meħuda kontra l-impjegati kollha b'salarju akbar minn $ 40,000. L-użu ta 'operazzjoni JOIN, f'dan il-każ, huwa sempliċi. Nistgħu nirkupraw din l-informazzjoni bl-użu tal-kmand li ġej:

TAGĦŻEL personal_info.first_name, personal_info.last_name, disciplinary_action.comments MINN personal_info, disciplinary_action DAWN personal_info.employee_id = disciplinary_action.employee_id AND personal_info.salary> 40000

Il-kodiċi jispeċifika ż-żewġ tabelli li rridu ngħaqqdu fil-klawżola FROM u mbagħad inkludi dikjarazzjoni fil-klawsola WHERE biex tillimita r-riżultati għal rekords li kienu jaqblu ma 'ID tal-impjegati u ssodisfaw il-kriterji tagħna ta' salarju akbar minn $ 40,000.