SQL fondamantal

Aprann sou DDL, DML ak JOINs

Lekti lang estriktire a se youn nan blòk bilding fondamantal yo nan achitekti baz done modèn. SQL defini metòd yo itilize pou kreye ak manipile baz done relasyon sou tout tribin pi gwo. Nan premye gade, lang lan ka sanble entimidasyon ak konplèks, men se pa tout sa ki difisil.

Entwodiksyon sa a fondamantal yo dèyè SQL pran yon gade kout nan kèk nan kòmandman yo prensipal itilize yo kreye ak modifye baz done.

Konsènan SQL

Pwononsyasyon ki kòrèk la nan SQL se yon pwoblèm kontwovèsyal nan kominote a baz done. Nan estanda SQL li yo, Ameriken Nasyonal Standards Enstiti a te deklare ke pwononsyasyon ofisyèl la se "es que el." Sepandan, pwofesyonèl baz done anpil yo te pran nan pwononsyasyon an jagon "fen." Chwa a se pou ou.

SQL vini nan gou anpil. Oracle baz done itilize PL / SQL propriétaires li yo. Microsoft SQL sèvè fè pou sèvi ak Transact-SQL. Tout varyasyon yo baze sou endistri estanda ANSI SQL la. Entwodiksyon sa a sèvi ak ANSI-konfòme SQL kòmandman ki travay sou nenpòt modèn sistèm relasyon baz done.

DDL ak DML

Kòmandman SQL kapab divize an de prensipal sub-lang yo. Langaj la Done Definisyon (DDL) gen kòmandman yo itilize yo kreye epi detwi baz done ak objè baz done. Apre estrikti a baz done defini ak DDL, administratè baz done ak itilizatè yo ka itilize Lang Manipilasyon Done a (DML) insert, rekipere ak modifye done ki genyen nan li.

Done definisyon Lang Kòmand

Done definisyon lang yo itilize pou kreye ak detwi baz done ak objè baz done. Kòmandman sa yo yo prensipalman itilize pa administratè baz done pandan faz nan konfigirasyon ak retire nan yon pwojè baz done. Isit la nan yon gade nan estrikti a ak l 'nan kat kòmandman debaz DDL:

Kreye. Enstale yon sistèm jesyon baz done sou yon òdinatè pèmèt ou kreye ak jere anpil baz done endepandan. Pou egzanp, ou ka vle kenbe yon baz done nan kliyan kontak pou depatman lavant ou ak yon baz done pèsonèl pou depatman HR ou. Se kòmandman an CREATE itilize etabli chak nan sa yo baz done sou platfòm ou. Pa egzanp, kòmandman an:

Kreye anplwaye DATABASE

kreye yon baz done vid ki rele "anplwaye" sou DBMS ou. Apre kreye baz done a, pwochen etap la se kreye tab ki genyen done. Yon lòt Variant nan lòd CREYE a ka itilize pou objektif sa a. Kòmandman an:

CREATE TABLE personal_info (firstname char (20) pa nil, last_name char (20) pa nil, anplwaye_id Int pa nil)

etabli yon tab ki gen tit "personal_info" nan baz done aktyèl la. Nan egzanp lan, tab la gen twa atribi: first_name, last_name ak anplwaye_id ansanm ak kèk lòt enfòmasyon.

USE. Itilize USE a pèmèt ou presize baz done ou vle travay avèk nan DBMS ou. Pou egzanp, si w ap travay kounye a nan baz done a lavant epi ou vle pwoblèm kèk kòmandman ki pral afekte baz done a anplwaye, prefere yo ak lòd sa a SQL:

USE anplwaye

Li enpòtan toujou dwe konsyan de baz la ou ap travay nan anvan founi dokiman yo SQL kòmandman ki manipile done.

ALÈ. Yon fwa ou te kreye yon tab nan yon baz done, ou ka vle modifye definisyon li yo. Kòmandman an ALTER pèmèt ou fè chanjman nan estrikti a nan yon tab san yo pa efase ak rkree li. Pran yon gade nan lòd sa a:

ALTER TAB personal_info ADD salè lajan nil

Egzanp sa a ajoute yon atribi nouvo nan tab la personal_info-salè yon anplwaye a. Agiman "lajan" la presize ke salè yon anplwaye a estoke lè l sèvi avèk yon dola ak fòma santim. Finalman, mo kle a "nil" di baz done a ke li OK pou jaden sa a pa gen okenn valè pou nenpòt ki anplwaye yo bay yo.

DROP. Kòmandman final la nan Lang la Definisyon Lang, DROP, pèmèt nou retire tout objè baz done nan DBMS nou an. Pou egzanp, si nou vle pou tout tan retire tab la personal_info ke nou te kreye, nou ta itilize lòd sa a:

DROP TAB personal_info

Menm jan an tou, lòd ki anba a ta dwe itilize yo retire tout anplwaye a baz done:

DATASYON DATABASE anplwaye

Sèvi ak lòd sa a avèk swen. Kòmandman an DROP retire estrikti done tout soti nan baz done ou. Si ou vle retire dosye endividyèl, sèvi ak kòmandman an DELETE nan Lang la Manipilasyon Done.

Done Manipilasyon Kòmand Lang

Itilize Done Manipilasyon (DML) itilize pou rekipere, insert ak modifye enfòmasyon baz done. Kòmandman sa yo yo itilize pa tout itilizatè baz done pandan operasyon woutin nan baz done a.

INSERT. Se kòmandman an INSERT nan SQL itilize ajoute dosye nan yon tab ki egziste deja. Retounen nan egzanp lan pèsonèl_info nan seksyon anvan an, imajine ke depatman HR nou an bezwen ajoute yon nouvo anplwaye nan baz done li yo. Ou ka itilize yon lòd ki sanble ak yon sèl sa a:

INSERT nan valè personal_info ('bart', 'simpson', 12345, $ 45000)

Remake ke gen kat valè espesifye pou dosye-a. Sa yo koresponn ak tab la atribi nan lòd yo te defini: first_name, last_name, employee_id ak salè.

SELECT. SELECT lòd la se kòmandman ki pi souvan itilize nan SQL. Li pèmèt divinò baz done rekipere enfòmasyon espesifik yo vle soti nan yon baz done operasyonèl. Pran yon gade nan kèk egzanp, ankò lè l sèvi avèk tab la personal_info soti nan baz done a anplwaye.

Kòmandman ki anba a rekipere tout enfòmasyon ki nan tablo personal_info la. Remake byen ke se asterisk la itilize kòm yon wildcard nan SQL. Sa literalman vle di "Chwazi tout bagay soti nan tab la personal_info."

CHWAZI * KONNEN pèsonèl_info

Altènativman, itilizatè yo ka vle limite atribi yo ke yo soti nan baz done a. Pou egzanp, Depatman Resous Imèn ka mande pou yon lis non dènye tout anplwaye nan konpayi an. SQL lòd sa a ta rekipere sèlman enfòmasyon sa a:

SELECT last_name Soti nan personal_info

Ka kloz la KI KOTE pou yo itilize pou limite dosye yo ke yo retrèt bay moun ki satisfè kritè espesifye. CEO a ta ka enterese nan revize dosye pèsonèl yo nan tout anplwaye trè peye. Kòmandman ki anba la a rekipere tout nan done ki genyen nan personal_info pou dosye ki gen yon valè salè ki pi konsekan pase $ 50,000:

SELECT * KONFYÈL pèsonèl_info KI KOTE salè> $ 50000

MIZAJOU. Ka kòmandman an UPDATE dwe itilize modifye enfòmasyon ki genyen nan yon tab, swa nan esansyèl oswa endividyèlman. Sipoze konpayi an bay tout anplwaye yon 3 pousan pri-of-k ap viv ogmantasyon nan salè yo chak ane. Ka SQL lòd sa a dwe itilize byen vit aplike sa a nan tout anplwaye yo ki estoke nan baz done a:

MIZAJ pèsonèl_info SET salè = salè * 1.03

Lè nouvo anplwaye Bart Simpson demontre pèfòmans pi wo a ak pi lwen pase apèl la, jesyon vle rekonèt reyalizasyon gwan distribisyon li yo avèk yon ogmantasyon $ 5,000. Ka kloz la KI KOTE pou yo itilize yon sèl soti Bart pou sa a ogmante:

MIZAJ pèsonèl_info SET salè = salè + $ 5000 KI KOTE anplwaye_id = 12345

DELETE. Finalman, kite a pran yon gade nan lòd la DELETE. Ou ap jwenn ke sentaks la nan lòd sa a se menm jan ak sa yo ki an lòt kòmandman yo DML. Malerezman, dènye pwofi rapò antrepriz nou an pa t 'byen satisfè atant ak pòv Bart te mete la. Ka kòmandman an DELETE ak yon kloz KI KOTE ka itilize yo retire dosye li nan tablo a personal_info:

DELETE nan pèsonèl_info KI KOTE anplwaye_id = 12345

JOINs

Koulye a, ke ou te aprann Basics yo nan SQL, li lè pou avanse pou pi sou youn nan konsèp yo ki pi pwisan lang lan te ofri-deklarasyon an JOIN. Yon deklarasyon JOIN pèmèt ou konbine done nan tab miltip efikasite pwosesis gwo kantite done. Deklarasyon sa yo se kote pouvwa a vre nan yon baz done abite.

Pou eksplore pou sèvi ak yon operasyon debaz JOIN konbine done ki sòti nan de tab, kontinye ak egzanp lan lè l sèvi avèk tab la PERSONAL_INFO epi ajoute yon lòt tab nan melanj la. Sipoze ou gen yon tab yo rele DISCIPLINARY_ACTION ki te kreye avèk deklarasyon sa a:

CREATE TABLE disiplinary_action (action_id Int pa nil, anplwaye_id Int pa nil, kòmantè char (500))

Tablo sa a gen rezilta aksyon disiplinè sou anplwaye konpayi yo. Ou pral remake ke li pa gen okenn enfòmasyon sou anplwaye a lòt pase nimewo a anplwaye. Li fasil imajine senaryo anpil kote ou ta ka vle konbine enfòmasyon ki soti nan DISCIPLINARY_ACTION la ak tab PERSONAL_INFO.

Sipoze ou te charger ak kreye yon rapò ki bay lis aksyon disiplinè yo pran kont tout anplwaye ki gen yon salè ki pi konsekan pase $ 40,000. Itilize nan yon operasyon JOIN, nan ka sa a, se dwat. Nou ka rekipere enfòmasyon sa a lè l sèvi avèk lòd sa a:

SELECT personal_info.first_name, personal_info.last_name, disiplinary_action.comments FROM personal_info, disiplinary_action KI KOTE pèsonèl_info.employee_id = disiplinè_action.employee_id AK pèsonèl_info.salary> 40000

Kòd la espesifye de tab yo ke nou vle rantre nan kloz la FROM epi li gen ladan yon deklarasyon nan kloz la KI KOTE pou limite rezilta yo nan dosye ki te matche idantite anplwaye yo ak te rankontre kritè nou yo nan yon salè ki pi konsekan pase $ 40,000.