SQLaj Fundamentoj

Lernu pri DDL, DML kaj JOINs

La Strukturita Konsila Lingvo estas unu el la fundamentaj konstruaj blokoj de moderna datumbaza arkitekturo. SQL difinas la metodojn uzitaj por krei kaj manipuli rilatajn datumbazojn sur ĉiuj ĉefaj platformoj. Al unua vido, la lingvo ŝajnas timiga kaj kompleksa, sed ĝi ne estas ĉio malfacila.

Ĉi tiu enkonduko al la fundamentoj malantaŭ SQL pripensas kelkajn el la ĉefaj komandoj uzataj por krei kaj modifi datumbazojn.

Pri SQL

La ĝentila prononco de SQL estas diskutata afero ene de la datumbaza komunumo. En ĝia SQL-normo, la Amerika Nacia Norma Instituto deklaris, ke la oficiala prononco estas "es queue el." Tamen multaj profesiaj datumbazoj portis al la prononco de la ĵargono "sekvo". La elekto estas via.

SQL venas en multaj gustoj. Oraklaj datumbazoj uzas ĝian propran PL / SQL. Microsoft SQL-servilo uzas Transact-SQL. Ĉiuj variaĵoj estas bazitaj sur la industrio norma ANSI SQL. Ĉi tiu enkonduko uzas ANSI-plenumajn SQL-komandojn, kiuj funkcias en iu moderna rilata datumbaza sistemo.

DDL kaj DML

SQL-komandoj povas esti dividitaj en du ĉefajn sub-lingvojn. La Datuma Difino Lingvo (DDL) enhavas la komandojn uzitajn por krei kaj detrui datumbazoj kaj datumbazoj. Post kiam la datumbaza strukturo estas difinita per DDL, datumbazaj administrantoj kaj uzantoj povas uzi la Datum-manipuladon Lingvo (DML) por enmeti, rekuperi kaj modifi la datumojn enhavitajn en ĝi.

Datumaj Difinoj Lingvo Komandoj

La Datuma Difino Lingvo estas uzata por krei kaj detrui datumbazoj kaj datumbazoj. Ĉi tiuj komandoj estas plejparte uzataj de datumbazaj administrantoj dum la agordo kaj forigo de fazoj de datumbaza projekto. Jen rigardu la strukturon kaj uzadon de kvar bazaj DDL-komandoj:

KREU. Instalado de datumbaza administra sistemo en komputilo permesas krei kaj administri multajn sendependajn datumbazojn. Ekzemple, vi eble volas konservi datumbazon de klientaj kontaktoj por via venda fako kaj datumbara datumbazo por via HR-fako. La KREA komando estas uzata por establi ĉiun el ĉi tiuj datumbazoj sur via platformo. Ekzemple, la komando:

KREU DATABASE dungitoj

kreas malplenan datumbazon nomatan "dungitojn" sur via DBMS. Post kreado de la datumbazo, la sekva paŝo estas krei tabulojn, kiuj enhavas datumojn. Alia varianto de la CREATE-komando povas esti uzata por ĉi tiu celo. La komando:

KREU TABLE personal_info (first_name char (20) ne nula, last_name char (20) ne nula, employee_id int ne nula)

establas tablon titolita "persona_info" en la nuna datumbazo. En la ekzemplo, la tablo enhavas tri atributojn: first_name, last_name and employee_id kune kun iuj pliaj informoj.

USO. La komando de USE permesas al vi specifi la datumbazon, kiun vi volas labori ene de via DBMS. Ekzemple, se vi nuntempe laboras en la venda datumbazo kaj volas sendi iujn komandojn, kiuj influos la dungitan datumbazon, antaŭparolu ilin per la sekva SQL-komando:

Uzu dungitoj

Gravas ĉiam konscii pri la datumbazo, kiun vi laboras antaŭ elsendi SQL-komandojn, kiuj manipulas datumojn.

ALTERO Unufoje vi kreis tablon ene de datumbazo, eble vi volas modifi ĝian difinon. La ALTER-komando ebligas al vi ŝanĝi la strukturon de tablo sen forviŝi kaj amuzi ĝin. Rigardu la sekvan komandon:

ALTERO TABLE personal_info ADD salajro mono nula

Ĉi tiu ekzemplo aldonas novan atributon al la salajro de la persona tablo-oficisto. La "mono" argumento specifas, ke la salajro de oficisto estas konservita per dolaroj kaj centonoj. Fine, la "nula" ŝlosilvorto informas al la datumbazo, ke ĝi estas bone por ĉi tiu kampo, ke ĝi enhavas neniun valoron por iu donita dungito.

DROP. La fina komando de la Data-Difino Lingvo, DROP, permesas al ni forigi kompletajn datumbazojn de nia DBMS. Ekzemple, se ni volas permanente forigi la personan tabulon, kiun ni kreis, ni uzus la jenan komandon:

DROP TABLE persono_info

Simile, la komando sube uzus por forigi la tutan dungitan datumbazon:

DROP DATABASE dungitoj

Uzu ĉi tiun komandon kun zorgo. La komando DROP forigas tutan datumstrukturojn de via datumbazo. Se vi volas forigi individuajn rekordojn, uzu la komandon DELETE de la Lingvo-datumila manipulado.

Datumaj Manipuladaj Lingvo-Komandoj

La Datuma Manipula Lingvo (DML) estas uzata por rekuperi, enmeti kaj modifi datumbazan informon. Ĉi tiuj komandoj estas uzataj de ĉiuj datumbazoj dum la rutina operacio de la datumbazo.

INSERT La INSERT-komando en SQL estas uzata por aldoni rekordojn al ekzistanta tablo. Revenante al la persona_info ekzemplo de la antaŭa sekcio, imagu, ke nia HR-fako bezonas aldoni novan oficiston al sia datumbazo. Vi povus uzi similan komandon al ĉi tiu:

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

Notu, ke ekzistas kvar valoroj specifitaj por la rekordo. Ĉi tiuj respondas al la tabulaj atributoj en la ordo ili estis difinitaj: unua nomo, lasta nomo, employee_id kaj salajro.

Elektu. La komando SELECT estas la komune plej uzata en SQL. Ĝi permesas al la uzantoj de datumbazoj rekuperi la specifan informon, kiun ili deziras de operaciuma datumbazo. Rigardu kelkajn ekzemplojn, denove uzante la personan tabulon de la dungitata datumbazo.

La komando montrita sube retrovas la tutan informon en la tabulo de persona_info. Rimarku, ke la asterisko estas uzata kiel sartkarto en SQL. Ĉi tio laŭvorte signifas "Elektu ĉion de la persona tablo".

Elektu * el persona_info

Alternative, uzantoj eble volas limigi la atributojn ricevitajn de la datumbazo. Ekzemple, la fako de Homaj Rimedoj povas postuli liston de la familinomoj de ĉiuj dungitoj en la kompanio. La sekva SQL-komando rekuperus nur tiun informon:

SELECTu lastan nomon FROM persona_info

La DOKA klaŭzo povas esti uzata por limigi la rekordojn, kiuj estas ricevitaj al tiuj, kiuj plenumas specifajn kriteriojn. La CEO povus interesi revizii la dungitajn rekordojn de ĉiuj tre pagitaj dungitoj. La sekva komando rekuperas ĉiujn datumojn en persono_info por rekordoj kun salajro valoro pli ol $ 50,000:

Elektu * FROM personal_info Kie salajro> $ 50000

UPDATE. La UPDATE-komando povas esti uzata por modifi la informon enmetitan en tablo, ĉu en grandeco aŭ individue. Supozu, ke la kompanio donas al ĉiuj dungitoj 3 procentojn de kosto vivanta pliigo en sia salajro ĉiujare. La sekva SQL-komando povus esti uzata por rapide apliki ĉi tion al ĉiuj dungitoj stokitaj en la datumbazo:

UPDATE personal_info SET salajro = salajro * 1.03

Kiam la nova oficisto Bart Simpson pruvas agadon super kaj preter la alvoko de devo, la administrado deziras rekoni siajn stelajn plenumojn kun supreniro de $ 5,000. La KAJ klaŭzo povus esti uzata por solvi Bart por tiu leviĝo:

UPDATE personal_info SET salajro = salajro + $ 5000 DIE employee_id = 12345

DELETE. Finfine, rigardu la komandon DELETE. Vi trovos, ke la sintakso de ĉi tiu komando estas simila al tiu de la aliaj DML-ordonoj. Bedaŭrinde, nia plej nova entreprena enspezo raportas tute ne atendante atendojn kaj malriĉulon Bart estis forigita. La komando DELETE per klaŭzo de WHERE povas esti uzata por forigi sian rekordon de la persona_info-tablo:

DELETE FROM personal_info KIE employee_id = 12345

JOINs

Nun, ke vi lernis la fundamentojn de SQL, estas tempo movi sin al unu el la plej potencaj konceptoj, kiujn la lingvo devas proponi - la JOIN-deklaron. JOIN-deklaro permesas al vi kombini datumojn en multnombraj tabloj por efike procesi grandajn kvantojn da datumoj. Ĉi tiuj deklaroj estas kie loĝas la vera potenco de datumbazo.

Por esplori la uzon de baza JOIN-operacio por kombini datumojn el du tabloj, daŭrigu per la ekzemplo per la tablo PERSONAL_INFO kaj aldonu aldonan tablon al la miksaĵo. Supozu, ke vi havas tablon nomitan DISCIPLINARY_ACTION kiu estis kreita per la sekva deklaro:

KREU TABLE disciplinary_action (action_id int ne nula, employee_id int ne nula, komentoj char (500))

Ĉi tiu tabelo enhavas rezultojn de disciplinaj agoj pri firmaaj dungitoj. Vi rimarkos, ke ĝi ne enhavas informojn pri la dungito, krom la dungita nombro. Estas facile imagi multajn scenojn, kie vi eble volas kombini informojn de la DISCIPLINARY_ACTION kaj PERSONAL_INFO-tabloj.

Supozu, ke vi estas kreita raporto, kiu listigas la disciplinajn agojn prenitajn kontraŭ ĉiuj dungitoj kun salajro pli granda ol $ 40,000. La uzo de JOIN-operacio, en ĉi tiu kazo, estas simpla. Ni povas rekuperi ĉi tiun informon per la sekva komando:

SELECTu personan_info.first_name, personal_info.last_name, disciplinary_action.comments FROM personal_info, disciplinary_action WHERE personal_info.employee_id = disciplinary_action.employee_id AND personal_info.salary> 40000

La kodo specifas la du tabulojn, kiujn ni volas kunigi en la klaŭzo DE kaj tiam inkluzivas deklaron en la suba bazo por limigi la rezultojn al registroj, kiuj havis kongruajn dungitojn kaj plenumis niajn kriteriojn de salajro pli ol $ 40,000.