SQL Fundamentals

Pagkat-on mahitungod sa DDL, DML ug JOIN

Ang Nakahan-ay nga Pagpangutana nga Pinulongan mao ang usa sa mga sukaranan nga pagtukod nga mga bloke sa modernong arkitektura sa database. Ang SQL naghubit sa mga pamaagi nga gigamit sa paghimo ug pagmanipula sa mga relational nga mga database sa tanan nga dagkong mga plataporma. Sa una nga pagtan-aw, ang pinulongan ingon og makahahadlok ug komplikado, apan dili kini tanan lisud.

Kini nga pasiuna sa sukaranan sa likod sa SQL nagkinahanglan og usa ka mubo nga pagtan-aw sa pipila sa mga nag-unang mga sugo nga gigamit sa paghimo ug pag-usab sa mga database.

Mahitungod sa SQL

Ang husto nga paglitok sa SQL usa ka makalalis nga isyu sulod sa database nga komunidad. Sa iyang standard nga SQL, ang American National Standards Institute mipahayag nga ang opisyal nga paglitok mao ang "es queue el." Bisan pa, daghang mga propesyonal sa database ang nagdala sa slang pronunciation nga "sumunod." Ang imong gipili.

Ang SQL adunay daghang lami. Ang mga database sa Oracle naggamit sa proprietary nga PL / SQL niini. Ang Microsoft SQL Server naggamit sa Transact-SQL. Ang tanan nga mga kalainan gibase sa ANSI SQL standard nga industriya. Kini nga pasiuna naggamit sa ANSI-compliant SQL nga mga sugo nga magtrabaho sa bisan unsa nga modernong relational database system.

DDL ug DML

Ang mga sugo sa SQL mahimong bahinon ngadto sa duha ka nag-unang mga sub-language. Ang Data Definition Language (DDL) naglangkob sa mga commands nga gigamit sa paghimo ug paglaglag sa mga database ug mga database nga mga butang. Human ang database nga istruktura gihubit sa DDL, ang mga administrator sa database ug mga tiggamit makagamit sa Data Manipulation Language (DML) aron ipasulod, kuhaon ug usbon ang datos nga anaa sa sulod niini.

Kahulogan sa Data Ang mga Pinulongan sa Pinulongan

Ang Data Definition Language gigamit aron sa paghimo ug pagguba sa mga database ug mga database nga mga butang. Kini nga mga sugo gigamit sa mga tagdumala sa database sa panahon sa pag-setup ug pagtangtang nga mga hugna sa usa ka proyekto sa database. Ania ang usa ka pagtan-aw sa istruktura ug paggamit sa upat ka mga nag-unang mga sugo sa DDL:

PAGHIMO. Ang pag-instalar sa sistema sa pagdumala sa database sa usa ka computer nagtugot kanimo sa paghimo ug pagdumala sa daghang mga independent nga mga database. Pananglitan, mahimo nimong ibutang ang database sa mga contact sa customer alang sa departamento sa imong sales ug usa ka personnel database alang sa imong departamento sa HR. Ang CREATE command gigamit sa pagtukod sa matag usa niini nga mga database sa imong plataporma. Pananglitan, ang sugo:

PAGSULAT sa mga empleyado sa DATABASE

nagmugna og walay sulod nga database nga ginganlan og "mga empleyado" sa imong DBMS. Human sa pagmugna sa database, ang sunod nga lakang mao ang paghimo og mga lamesa nga adunay datos. Ang lain nga variant sa CREATE command mahimong magamit alang niini nga katuyoan. Ang sugo:

PAGHIMOG TALAAN personal_info (first_name char (20) dili null, last_name char (20) dili null, empleyado dili int)

nagtukod og usa ka lamesa nga giulohan og "personal_info" sa kasamtangan nga database. Sa pananglitan, ang lamesa adunay tulo ka mga hiyas: first_name, last_name ug empleyado_id uban sa dugang nga kasayuran.

PAGGAMIT. Ang USE nga sugo nagtugot kanimo sa pagtino sa database nga imong gusto nga magtrabaho sulod sa imong DBMS. Pananglitan, kon ikaw karon nagtrabaho sa sales database ug gusto nga mag-isyu og pipila ka mga sugo nga makaapekto sa database sa empleyado, pasiuna kini sa mosunod nga SQL command:

Mga empleyado sa USE

Importante nga kanunay nga magmahunahunaon sa database nga imong ginabuhat sa wala pa mag-isyu og mga command sa SQL nga nagmanipula sa datos.

BAG-O. Sa higayon nga maghimo ka ug usa ka lamesa sulod sa usa ka database, mahimong imong usbon ang kahulugan niini. Ang ALTER nga sugo nagtugot kanimo sa paghimo sa mga pagbag-o sa istruktura sa usa ka lamesa nga walay pagtangtang ug pagmugna niini. Tan-awa ang mosunod nga sugo:

BAG-ONG TALAAN personal_info Dugangi ang suweldo sa sweldo

Kini nga pananglitan nagdugang sa usa ka bag-ong kinaiya ngadto sa personal_info table-suweldo sa empleyado. Ang argumento sa "salapi" nagtino nga ang sweldo sa usa ka empleyado gitipigan gamit ang usa ka dolyar ug format nga sentimo. Sa kataposan, ang "null" nga pulong nagsulti sa database nga maayo alang sa kini nga kapatagan nga walay bili alang sa bisan unsang empleyado.

DROP. Ang katapusang sugo sa Data Definition Language, DROP, nagtugot kanato sa pagkuha sa tibuok nga mga butang sa database gikan sa atong DBMS. Pananglitan, kon gusto natong permanente nga makuha ang lamesa personal_info nga atong gibuhat, atong gamiton ang mosunod nga sugo:

DROP TABLE personal_info

Sa samang paagi, ang sugo sa ubos gamiton aron makuha ang tibuok database sa empleyado:

Mga empleyado sa DROP DATABASE

Gamita kini nga mando uban ang pag-amping. Ang mando sa DROP nagwagtang sa tibuok nga mga istruktura sa datos gikan sa imong database. Kung gusto nimong kuhaon ang tagsa nga mga rekord, gamita ang DELETE nga sugo sa Data Manipulation Language.

Data Manipulation Language Commands

Ang Data Manipulation Language (DML) gigamit aron makuha, ibutang ug usbon ang impormasyon sa database. Kini nga mga sugo gigamit sa tanang mga tiggamit sa database sa panahon sa rutina nga operasyon sa database.

INSERT. Ang INSERT nga sugo sa SQL gigamit aron sa pagdugang sa mga rekord sa usa ka lamesa. Pagbalik sa personal_info nga panig-ingnan gikan sa miaging seksyon, hunahunaa nga ang among departamento sa HR kinahanglan nga magdugang og bag-ong empleyado sa database niini. Mahimo nimong gamiton ang usa ka sugo nga susama niini:

INSERT INTO personal_info values ​​('bart', 'simpson', 12345, $ 45000)

Timan-i nga adunay upat ka mga bili nga gitakda alang sa rekord. Kini nahisubay sa mga hiyas sa pagkahan-ay sa han-ay nga kini gihubit: first_name, last_name, empleyado_id ug suweldo.

PILI. Ang SELECT command mao ang labing kasagarang gigamit nga sugo sa SQL. Kini nagtugot sa mga tiggamit sa database aron makuha ang piho nga impormasyon nga ilang gitinguha gikan sa usa ka database sa operasyon. Tan-awa ang pipila ka mga panig-ingnan, pag-usab gamit ang personal_info nga lamesa gikan sa database sa empleyado.

Ang sugo nga gipakita sa ubos nagakuha sa tanan nga kasayuran sulod sa personal_info nga lamesa. Hinumdomi nga ang asterisk gigamit isip usa ka wildcard sa SQL. Kini sa literal nagkahulogang "Pagpili sa tanang butang gikan sa personal_info table."

PILI * GIKAN sa personal_info

Sa laing paagi, ang mga tiggamit mahimo nga maglimite sa mga kinaiya nga makuha gikan sa database. Pananglitan, ang departamento sa Human Resources nagkinahanglan og usa ka listahan sa mga katapusang ngalan sa tanan nga mga empleyado sa kompaniya. Ang mosunod nga SQL command nga makuha lamang ang kasayuran:

PILI ang last_name FROM personal_info

Ang WHERE clause mahimong gamiton aron limitahan ang mga rekord nga makuha sa mga nakatagbo nga gitakda nga criteria. Ang CEO tingali interesado sa pagribyu sa mga rekord sa kawani sa tanan nga mga highly paid employees. Gikuha sa mosunod nga sugo ang tanan nga mga datos nga anaa sulod sa personal_info alang sa mga rekord nga adunay suweldo nga mas dako pa kay sa $ 50,000:

PILI * GIKAN sa personal_info DIIN nga sweldo> $ 50000

UPDATE. Ang UPDATE nga sugo mahimong magamit sa pag-usab sa kasayuran nga anaa sulod sa usa ka lamesa, sa kinabag-o sa tagsa-tagsa. Hunahunaa nga ang kompaniya naghatag sa tanan nga empleyado og 3 ka porsiyento nga us aka cost-of-living nga pagtaas sa ilang suweldo kada tuig. Ang mosunod nga SQL nga sugo mahimong gamiton sa madali nga paggamit niini sa tanan nga mga empleyado nga gitipigan sa database:

UPDATE personal_info SET nga suweldo = suweldo * 1.03

Sa diha nga ang bag-o nga empleyado nga si Bart Simpson nagpakita sa pasundayag sa ibabaw ug lapas sa tawag sa katungdanan, ang management nangandoy nga makaila sa iyang mga kalampusan nga mga kalampusan sa $ 5,000 nga pagpataas. Ang WHERE clause mahimo nga gamiton sa pagdula kang Bart alang sa pagpataas:

UPDATE personal_info SET nga suweldo = suweldo + $ 5000 DIIN empleyado_id = 12345

KINAHANGLAN. Sa katapusan, atong tan-awon ang DELETE nga sugo. Makita nimo nga ang syntax niini nga sugo susama nianang sa uban nga mga sugo sa DML. Ikasubo, ang atong pinakabag-o nga corporate earnings report wala kaayo makatagamtam sa mga gilauman ug ang mga kabus nga si Bart napapas. Ang DELETE nga sugo nga adunay WHERE clause mahimong gamiton aron makuha ang iyang rekord gikan sa personal_info table:

KINAHANGLAN GIKAN personal_info WHERE empleyado_id = 12345

MGA JOIN

Karon nga imong nakat-unan ang mga sukaranan sa SQL, kini ang panahon sa pagpadayon sa usa sa labing gamhanan nga mga konsepto nga igatanyag sa pinulongan-ang JOIN nga pahayag. Ang usa ka JOIN nga pamahayag nagtugot kanimo sa pagkombinar sa mga datos sa daghang mga lamesa aron sa pag-proseso sa daghang mga datos. Kini nga mga pahayag diin ang tinuod nga gahum sa usa ka database nagpuyo.

Aron masusi ang paggamit sa usa ka batakang JOIN nga operasyon aron sa pagsagup sa mga datos gikan sa duha ka mga lamesa, ipadayon ang panig-ingnan gamit ang PERSONAL_INFO table ug idugang ang usa ka dugang nga lamesa sa mix. Hunahunaa nga adunay usa ka lamesa nga gitawag DISCIPLINARY_ACTION nga gimugna uban sa mosunod nga pahayag:

PAG-ILA SA TALAAN disciplinary_action (action_id int dili null, employee_id int dili null, comments char (500))

Kini nga talaan naglangkob sa resulta sa mga aksyong pagdisiplina sa mga empleyado sa kompaniya. Mamatikdan nimo nga wala kini'y bisan unsang kasayuran mahitungod sa empleyado gawas sa numero sa empleyado. Sayon nga mahanduraw ang daghang mga sitwasyon kung asa nimo gusto nga mahiusa ang kasayuran gikan sa DISCIPLINARY_ACTION ug PERSONAL_INFO nga mga lamesa.

Hunahunaa nga gitahasan ka sa pagmugna og usa ka taho nga naglista sa mga aksyon sa pagdisiplina nga gikuha batok sa tanan nga empleyado nga adunay suweldo nga labaw pa kay sa $ 40,000. Ang paggamit sa usa ka JOIN nga operasyon, sa kini nga kaso, direkta. Makuha nato kini nga impormasyon gamit ang mosunod nga sugo:

PILI personal_info.first_name, personal_info.last_name, disciplinary_action.comments FROM personal_info, disciplinary_action WHERE personal_info.employee_id = disciplinary_action.employee_id UG personal_info.salary> 40000

Ang code nagtino sa duha ka mga lamesa nga gusto natong apilan sa FROM clause ug dayon naglakip sa usa ka pahayag sa WHERE clause aron limitahan ang mga resulta ngadto sa mga rekord nga adunay mga matching ID sa empleyado ug nahimamat ang atong mga criteria sa suweldo nga labaw pa kay sa $ 40,000.