Bingehên SQL

Der barê DDL, DML û JOIN

Zimanek Pirsgirêka Pirtûka yek ji navokên avahiyên damezirandî yên damezirandina bingehîn e. SQL rêbazên ku ji bo databasesên pêwendiyên rexneşopî ve têne çêkirin û karûbarên karanîna li ser hemû platformên sereke têne defines. Di pêşiya pêşîn de, ziman dikare ditirsin û tevlihev e, lê her tişt zehmet e.

Ev destnîşan ji bingehên bingehîn ên pişta SQL di hinek komên sereke de ji bo daneyên daneyên çêkirin û guhertin pêk tîne.

About SQL

Guhertoya rastîn ya SQL di nav civakê de danûstandinek pirsgirêkek ciddî ye. Di standarda SQL de, Enstîtuya Standardsên Niştimanî ya Amerîkî ragihand ku ev şerta fermî ye "es que el." Lêbelê, gelek profesyonel pispor hatine danîn slang pronunciation "sequel." Hilbijartina te ye.

SQL di gelek flavors de bête. Databasesên Oracle bikarhêner PL / SQL. Microsoft SQL Server ji bo Transact-SQL bikar tîne. Hemî guherînên li ser pîşesaziya ANSI-SQL-ê li ser bingeha bingehîn têne kirin. Vebijêrk nermalavên ANSI-peymanên SQL-ê bikar tîne ku li ser pergala databatiya têkildar a modern.

DDL û DML

Fermandarên SQL dikarin li du zimanên sereke yên parvekirî bêne parve kirin. Zimanê Danîmarka Danîmarkî (DDL) di nav deverên daneyên daneyên daneyên danûstandinan de çêbikin. Piştî ku pergala daneyên daneyên DD-ê hatiye diyarkirin, diyarker û bikarhênerên databases dikarin bikarhênerên Manipulation Ziman (DML) bikar bînin, da ku têkildarî daneyên daneyên navxweyî de.

Fermandariya Zimanê Dîroka Dane

Zimanê Danezana Danezana Ziman tê bikaranîn ku ji bo daneyên daneyên daneyên daneyên danûstandinan hilweşînin. Ev emrê bi rêveberên databases di dema damezrandina sazkirinê û derxistina projeya databayan de têne bikaranîn. Li vir xuya ye ku avahiyê û karanîna çar bingehên DDL-yê bingehîn:

XÛLIQANDIN. Sîstema pergala rêveberiyê ya damezirandinê li komputerê destnîşankirina we destnîşan dike û databasesên gelek saziyên serbixwe bikin. Ji bo nimûne, hûn dikarin databases ji bo peywendîdarên mişterî ji bo damezirandina firotanê û navendên karmend ji bo wezaretê ya HR ya xwe biparêze. Fermandariya CREATE tê bikaranîn ku her van databases li ser platformê xwe ava bikin. Wek mînak, emrê

KOMA DATABASE CREATÎ

Di nav DBMS de li ser navê "karkerên" navê navnîşa navnîşa navnîşan dike. Piştî ku daneya danûstendinê de, gava gava din ew e ku tabloyên ku dane hene. Ji bo varianteke din a KOMA-CREATE dikare ji bo vê armancê tê bikaranîn. Fermana

CREATE TABLE personal_info (first_name char (20) null, last_name çar (20) null, xeletî_id int null)

li ser databasesê ya "personal_info" tête danûstandinekê. Di nimûne de, tablo sê taybetmendiyê hene: first_name, last_name û karmend_id bi hin agahiyên din hene.

BIKARANÎN. Fermandarê DYA-ê ji bo ku hûn dixwazin bi hundurê DBMS-ê bixebite destnîşan bikin. Ji bo nimûne, heger hûn niha di navnîşanîna firotanê de dixebite û dixwazin ku hin dagirkeran bikin ku dê bandorê karmendê karmend bikujin, bi wan peymana SQL ya pêşî pêşî bikin:

Karmendên karûbar

Ji bo ku hûn daneyên SQL-ê yên daneyên dagîrkirî girîng e ku her dem ji databasesê hişyar e girîng e.

GÛHERRANDIN. Gava ku hûn di hundurê databayan de damezirandin, hûn dikarin bi xwe re binivîse binivîse guherîn. Fermana ALTER destûrê dide ku tu guhertinên di avahiyê deynî bêyî ku jêbirin û veşartinê çêbikin. Li ser fermana jêrîn binêrin:

ALTER TABLE personal_info Dravê deynê ADD null

Ev nimûne ji bo pergala kesane-personfo nû-an heqê karmendê zêde dike. Pêwîstiya "pere" re diyar dike ku heqê karkerên karmend bi karanîna dolaran û cûreyan tê bikaranîn. Di dawiyê de, lêgerîna "null" tête databases dide ku ew ji bo vê qada kêl e ku karmendek kesek tune tune.

DILOPKIRIN. Fermandariya dawîn Zimanê Zimanê Diyaset, DROP, ji me re destnîşan dike ku ji bo DBMS-ê ji hemû daneyên hilbijêre. Ji bo nimûne, eger em bixwazin tabloya personal_info jêbirin ku em afirandin, em ê emrê jêrîn bikar bînin:

DROP TABLE personal_info

Bi vî awayî, emrê jêrîn dê bikar bînin ku daneyên tevahiya karmendê derxistin:

DOKA DATABASE

Vê biryara bi lênêrînê bikar bînin. Daxuyaniya DROP ji databasesên xwe yên struktûrên tevahî danûstandin. Heke hûn bixwazin tomarên kesan jêbirin, ji bo Fermana DELETE ya Zimanê Manipulation Language bikar bînin.

Daxistina Danûbarên Zimanê Danûstandin

Zebûrkirina Zimanê Dayikê (DML) ji bo agahdariya daneya danûstendinê, veguhestin û guhertin. Di van operasyonê de danûstandinên danûstendinê de van rêveberan bikarhênerên hemî databases têne bikaranîn.

LÊZÊDEKIRIN. Fermana INSERT di SQL ve tête danûstandinên li ser maseya heyî ya nû ve zêde bike. Vegerîna xwe bi nimûneya kesane ya kesane ya kesane ya kesane-yê, ji bifikirin ku daîreyek HR-ê hewce dike ku karmendek nû ya navnîşana wê bike. Hûn dikarin biryarekî bi vî rengî bikar bînin:

BİXWÎNE BİXWÎNE-kesane personal_info ('bart', 'simpson', 12345, $ 45000)

Têbînî ku çar nirxên ku ji bo qeydkirina diyar kirin hene. Ev yekem li ser maseya wan di bin nirxandina wan de taybetmendî ye: first_name, last_name, karmend_id û heqê.

NEQANDIN. Fermana SELECT ya herî mezin bi fermî tê bikaranîn e. Ew bikarhênerên bikarhêneran ji bo agahdariyên taybetî yên ku ji databatasyona xebatkaran bixwazin destnîşan dike. Li ser çend nimûneyên xwe binêrin, dîsa dabeşkirina şexsî ya bikarhênerê ji databareya karmendê bikar bînin.

Fermana jêrîn nîşan dide ku hemî agahiyên ku di hundirê navnîşa kesane de derbas dibe. Têbînî ku asterisk wekî wildcard in SQL tê bikaranîn. Ev tê wateya wateyê "Her tişt ji nav sîteya kesane hilbijêrin hilbijêrin."

SELECT * Ji hêla personal_info

Alternatîf, bikarhêner dikarin dixwazin ji taybetmendiyên ku ji databases têne veqetin sînor bikin. Ji bo nimûne, daîreya Çavkaniya Çavkaniya Mirov dikare navnîşên dawî yên hemû karmendên di şîrketê de heye. Fermana SQL-ê tenê tenê agahdariyê bistîne:

SELECT last_name FROM personal_info

WHERE Benda dikare bikar bînin ku belgeyên ku ji bo wan têne veşartin sînor bikin, bistînin. CEO dikare dibe ku di navnîşên karmendên karmendê yên karmendên mûçeyên herî zêde yên balkêş bikin. Fermana jêrîn hemû daneyên ku di navnîşên kesan de ji bo reklamên ku ji mîlyon $ 50,000 ve zêde ye,

SELECT * Ji malpera personal_info Mûçek WHERE $ $ 50000

UPDATE Derhênerê UPDATE dikare ji bo agahdariya li ser maseyeke mezin, an jî di binê an kesan de biguherînî. Dibe ku pargîdaniyê hemî karmendên ku di salê wan de salê zêdebûna bihayê 3-yê-jiyan-ê de. Daxuyaniya SQL-ê bikar anîn ku bi lez zûtirîn bikar bînin ku hemû xebatkarên di navnîşan de tomar kirin:

UPDATE personal_info SET salary = salary * 1.03

Dema ku karmendê nû yê Bart Simpson karûbarê jorîn û ji derva karûbarê xwenîşandan dike, birêvebirin dixwaze serkeftinên xwe yên stratejiyê bi $ 5,000 bilind bike. WHERE BÊKA BART ji bo bilindkirina vê yekê bi tenê yek tê bikaranîn:

UPDATE personal_info SET salary = salary + $ 5000 WHERE karmend_id = 12345

DELETE. Di dawiyê de, bila biryareke DELETE binêrin. Hûn dê bibînin ku syntaxa vê yekê em ji bo ku ji emirên DML yên din e. Mixabin, raporta kirîna karsaziya me ya dawî ya hêvî nekir û belaş Bart ve hatiye avêtin. Fermana DELETE bi çiqa WHERE dikare tê bikaranîn ku ji qeydkirina şexsiya kesane ya kesane veşêre:

Ji kerema xwe personal_info WHERE karker_id = 12345

JI

Niha nuha ku hûn basics of SQL hîn bûn, wextê ku hûn behsa têgehên herî hêza bihêztir ên ku zimanî pêşniyar dikin -hêlin JOIN. Danezana JI DIKE ku hûn di daneyên pir deveran de bi karanîna pêvajoyên pirzimanî yên bi pêvajoyê ve girêdayî dikin. Ev gotinên ku hene ku derheqê rastîn ya databases bimîne.

Ji bo ku karanîna xebata JOIN ya bingehîn de ji du tehlên hevgirtî digire, lêgerîna mînakê PERSONAL_INFO bikar bînin û li ser maseya nû heye. Baweriya we li sifrê ye, navê DISCIPLINARY_ACTION, ku bi gotara jêrîn hatiye afirandin:

CREATE TABLE-DÎŞTÎŞA-çalak (çalak_id int null, karmend_id int null, nirxên çar (500))

Di vê sifrê de encamên çalakiyên li ser karmendên karsaziyê hene. Hûn dizanin ku ew agahdarî li ser karmendê bêtir ji hejmara karmendê ne. Ji bo ku hûn dikarin ji agahiyên DISCIPLINARY_ACTION û PERSONAL_INFO bi hev re digerin gelek rewşenbîr e ku hêsantir bikin.

Hûn bawer bikin ku hûn bi raporê çêkirine ku raporkirina çalakiyên dîskursî li hember hemû karmendên bi rêjeya zêdeyî $ 40,000 derxistin. Bikaranîna hevpeymanek JOIN, di vê rewşê de, yekser e. Em dikarin vê agahdariyê bi karanîna jêrîn bistînin:

SELECT personal_info.first_name, personal_info.last_name, dîplîkinary_action.comments ji personal_info, disciplinary_action WHERE personal_info.employee_id = dîskencî_action.employee_id û personal_info.salary> 40000

Koda kodê du tablesên ku em dixwazin di beşa FROM de tevlihev bikin û paşê daxuyaniya di WHERE de beşdaran de tevlihev bikin ku encamên ku bi nasnameyên karmendên mûzîrî didin û rêjeya mûçeya $ 40,000 zêdetir bû.