JavaRush /Java Blog /Random-TL /Panayam ng developer: pagsusuri ng mga tanong sa database...

Panayam ng developer: pagsusuri ng mga tanong sa database

Nai-publish sa grupo
Kamusta kayong lahat! Lahat tayo dito ay nagsusumikap para sa isang layunin - ang maging Java Developers . Marahil ang pinakamahalagang yugto sa landas sa pagiging isang propesyonal ay ang teknikal na panayam. Bilang isang patakaran, ang tagapanayam ay dumaan sa mga pangunahing paksa, na nagtatanong ng ilang mga katanungan. Sa artikulong ito, pag-uusapan natin ang tungkol sa isang mahalagang paksa - mga database . Tingnan natin ang mga madalas itanong at subukang sagutin ang mga ito nang walang malalim na pagsisid sa materyal, dahil sa kasong ito ang dami ng libro ay hindi magiging sapat para sa atin! So, tara na.Panayam ng developer: pagsusuri ng mga tanong sa database - 1

1. Ano ang mga database? Anong mga uri ang nahahati sa kanila?

Ano ang ibig sabihin ng DBMS?

Panayam ng developer: pagsusuri ng mga tanong sa database - 2Ang database (DB) ay isang organisadong istraktura na idinisenyo para sa pag-iimbak, pagbabago at pagproseso ng magkakaugnay na impormasyon, pangunahin ang malalaking volume. Sa madaling salita, ang database ay isang structured data storage. Halimbawa, isang phone book.

Mga uri ng database

  1. Ang relational database ay isang koleksyon ng data na may paunang natukoy na mga relasyon sa pagitan ng mga ito. Ang data ay iniimbak bilang isang set ng mga talahanayan na binubuo ng mga column at row. Ang mga talahanayan ay nag-iimbak ng impormasyon tungkol sa mga bagay na kinakatawan sa database. Ang bawat haligi ng talahanayan ay nag-iimbak ng isang partikular na uri ng data, at ang bawat cell ay nag-iimbak ng isang halaga ng katangian.
  2. Ang mga non-relational system (NoSQL) ay mga system na idinisenyo para sa mga partikular na modelo ng data na may mga flexible na schema. Sa madaling salita, ito ay mga database na nag-iimbak ng data hindi sa anyo ng mga tabular scheme, row at column, ngunit sa ibang mga format.
Maaari kang magbasa nang higit pa tungkol sa mga database na hindi nauugnay sa artikulong ito: Isang Gabay sa NoSQL para sa Mga Nag-develop . Ang database management system (DBMS) ay isang set ng software kung saan ang user ay maaaring lumikha ng mga database (DBs) at magsagawa ng iba't ibang operasyon sa mga ito: supplement, update, delete, select, atbp. Ang DBMS ay ginagarantiyahan ang kaligtasan, integridad, seguridad ng data imbakan at nagbibigay-daan sa iyo na magbigay ng access sa pangangasiwa ng database. Bilang halimbawa, ang MySql ay isang DBMS na nagbibigay ng access sa isang relational database o MongoDB para sa isang hindi relational.

2. Ano ang normalisasyon? Normalized na anyo? Ilang anyo ng normalisasyon ang mayroon? Pangalanan ang unang tatlo.

Ang normalisasyon ay ang proseso ng pag-aayos at pag-istruktura ng data sa isang database, na nagbibigay ng higit na kakayahang umangkop sa database sa pamamagitan ng pag-aalis ng redundancy at hindi pagkakapare-pareho ng mga dependency. Ang normal na anyo ay isang pag-aari ng isang talahanayan, na isinasaalang-alang sa konteksto ng normalisasyon, na nagpapakilala sa talahanayan sa mga tuntunin ng pagiging simple at kawastuhan ng istraktura. Ang normal na anyo ay tinukoy bilang isang hanay ng mga kinakailangan na dapat matugunan ng isang talahanayan. Mayroong anim na normal na anyo sa kabuuan, ngunit sa pagsasanay ay hindi hihigit sa unang tatlo ang ginagamit:
  1. Unang normal na anyo:
    • Ang lahat ng mga katangian ay simple (iyon ay, atomic at hindi mahahati);
    • Ang lahat ng data ay scalar (iyon ay, positibo);
    • Walang mga duplicate na row (para dito, isang primary key ang nagagawa para sa bawat row).
  2. Pangalawang normal na anyo:
    • Ang mga kondisyon ng unang normal na anyo ay natutugunan;
    • Ang bawat hindi-key na katangian ay tumutukoy sa isang pangunahing susi.
  3. Ikatlong normal na anyo:
    • Ang mga kondisyon ng pangalawang normal na grupo ay natutugunan;
    • Ang mga nonkey na field ay independiyente sa iba pang nonkey na mga field: maaari lamang silang iugnay sa isang pangunahing key.

3. Denormalisasyon

Ang denormalization ay ang sadyang pagbabawas o paglabag sa mga anyo ng normalization ng database, kadalasan upang mapabilis ang pagbabasa mula sa database sa pamamagitan ng pagdaragdag ng kalabisan na data. Sa pangkalahatan, ito ay isang proseso na kabaligtaran sa normalisasyon. Nangyayari ito dahil ang teorya ng mga normal na anyo ay hindi palaging naaangkop sa pagsasanay. Halimbawa, ang mga di-atomic na halaga ay hindi palaging "masama": kung minsan kahit na ang kabaligtaran. Sa ilang mga kaso, ang mga karagdagang pagsali ay kinakailangan kapag nagsasagawa ng mga query, lalo na kapag nagpoproseso ng malaking halaga ng impormasyon. Sa huli, mapapabuti nito ang pagganap. Ang mga database na inilaan para sa analytics ay madalas na na-denormalize upang mapabilis ang pagpapatupad ng query. Halimbawa, madalas kang magsa-sample ng ilang data para sa mga ulat kung saan magkakaugnay ang mga non-key na column sa isa't isa. Sinadya mong alisin ang pangatlong anyo ng normalisasyon at pagsamahin ang lahat sa isang talahanayan para sa kadalian ng pag-sample - upang hindi mo na kailangang gumawa ng mga karagdagang query sa iba pang mga talahanayan.

4. Mga index

Ang index ay isang pinagsunod-sunod na hanay ng mga halaga na nauugnay sa isang talahanayan o view na may partikular na column na nagpapabilis sa pagkuha ng data. Iyon ay, ito ay isang uri ng index: tulad ng alpabeto sa isang phone book, na tumutulong sa amin kapag naghahanap sa pamamagitan ng apelyido. Kung ginamit nang tama, ang tampok na ito ay maaaring lubos na mapabuti ang pagganap kapag nagtatrabaho sa malalaking database. O maaari mong ibaba ito ng husto. Upang mapabilis ang paghahanap, ang mga key na ito ay iniimbak sa isang balanseng istraktura ng puno kung saan isinasagawa ang paghahanap. Bilang isang panuntunan, kailangang ilagay ang mga index sa mga field na pinakamadalas na hinahanap. Dapat mong isipin ang paglikha ng isang index nang hindi mas maaga kaysa kapag mayroon kang hindi bababa sa 10 libong mga tala. Kung hindi, hindi ka makakakita ng kapansin-pansing resulta, dahil ang napaaga na pag-optimize ay EVIL . At paano makakaapekto ang isang index sa pagganap ng system, itatanong mo? Kapag ang bagong data ay ipinasok o ang lumang data ay tinanggal, ang balanseng istraktura ng puno ay muling kakalkulahin. Sa totoo lang, mas maraming data at index, mas maraming puno ang kailangang bilangin. Isipin ang sitwasyon: mayroon kang humigit-kumulang 20,000 record at 7 index sa talahanayang ito. Iyon ay, kapag nagpasok ng data, kailangan mong muling kalkulahin ang 7 puno, bawat isa ay may 20,000 na talaan. Sa mahigpit na pagsasalita, ang paggamit ng mga index para sa mga talahanayan kung saan ang data ay madalas na idaragdag/ tatanggalin ay hindi inirerekomenda sa lahat. Sa wakas, gusto kong tandaan na ang mga index para sa mga column kung saan madalas na makikita ang halaga nullay hindi magiging kasing epektibo, kaya hindi ito nagkakahalaga ng pagdaragdag ng mga ito sa mga naturang column.

Ano ang pagkakaiba sa pagitan ng mga clustered at non-clustered index sa SQL?

Clustered:

  • Nagbibigay ng pisikal na pagkakasunud-sunod para sa napiling field;
  • Kung ang isang table ay may clustered index, ito ay sinasabing clustered;
  • Hindi hihigit sa isang index bawat talahanayan ang kailangan;
  • Sa MySQL, ang isang clustered index ay hindi tahasang tinukoy ng user, dahil kung hindi mo tutukuyin ang isang PRIMARY KEY sa iyong table, hahanapin ng MySQL ang unang index UNIQUEkung saan ang lahat ng key column ay NOT NULL, at ginagamit ito ng InnoDB bilang clustered index.

Hindi naka-cluster:

  • Hanggang sa 999 nonclustered index ay posible sa isang talahanayan;
  • Naglalaman ng pointer sa mga row na may totoong data sa talahanayan;
  • Hindi nagbibigay ng pisikal na kaayusan;
  • Para sa mga hindi naka-cluster na index, mayroong hiwalay na mga talahanayan na may pinagsunod-sunod na data, ibig sabihin, isang talahanayan para sa isang column kung saan matatagpuan ang index, samakatuwid, kapag humihiling ng data na hindi bahagi ng isang ibinigay na field, ang query ay unang isasagawa sa field sa talahanayang ito, at pagkatapos lamang ang karagdagang query laban sa isang row sa orihinal na talahanayan.
Paglikha ng hindi naka-cluster na index:
CREATE INDEX index_name ON table_name(column_name)

6. Ano ang composite index?

Composite index - binuo gamit ang pagpapadala sa ilang column nang sabay-sabay. Sa madaling salita, ito ay isang kumplikadong index na binubuo ng ilang mga column. Ginagamit ang mga naturang index kapag lumalabas ang higit sa isang column sa isang query. Paglikha ng isang composite index:
CREATE INDEX index_name ON table_name(first_column_name, second_column_name, third_column_name)
Karaniwan, ginagamit ang mga index na ito kapag ang data sa maraming column ay lohikal na nauugnay.

7. Ano ang covering index? Natatanging index?

Ang sumasaklaw na index ay isang index na sapat upang sagutin ang isang query nang hindi ina-access ang talahanayan mismo. Gamit ang index na ito, maaari mong makuha ang buong hilera ng data, ngunit sa katunayan ito ay hindi kinakailangan. Dahil hindi mo kailangang direktang pumunta sa source table at makakasagot gamit lamang ang index, mas mabilis na gamitin ang mga covering index. Kasabay nito, huwag kalimutan na ang mas maraming mga haligi, mas mahirap at mabagal ang index mismo ay nagiging. Kaya hindi mo dapat abusuhin ito. Sa itaas ay napag-usapan natin ang tungkol sa mga clustered at non-clustered index, na maaaring kakaiba . Nangangahulugan ito na walang dalawang field ang may parehong halaga para sa index key. Kung hindi, ang index ay hindi magiging natatangi, dahil ang ilang mga hilera ay maaaring maglaman ng parehong halaga. Isang halimbawa ng paglikha ng isang natatanging non-clustered index:
CREATE UNIQUE INDEX index_name ON table_name(column_name)

8. Ano ang pangunahing susi

Ang pangunahing key ay isang field sa isang talahanayan na kinikilala ang bawat hilera sa isang talahanayan ng database. Maaari lamang magkaroon ng isang ganoong field sa isang talahanayan, at ang lahat ng mga halaga ay dapat na natatangi. Wala ka bang naalala? Panayam ng developer: pagsusuri ng mga tanong sa database - 3Pagkatapos ng lahat, ang pangunahing susi ay hindi hihigit sa isang natatanging, clustered index. Bilang isang patakaran, ang mga pangunahing key ay nilikha kapag gumagawa ng isang talahanayan:
CREATE TABLE table_name(
column_name int PRIMARY KEY,..)
Ang isang paghihigpit ay awtomatikong idaragdag sa hanay na ito - NOT NULL. Maaari ka ring magtakda ng susi para sa isang nalikha nang talahanayan:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
Kung ang isang pangunahing susi ay idinagdag sa paraang inilarawan sa itaas, ang mga halaga ng mga patlang na tinukoy bilang pangunahing susi ( column_name) ay susuriin upang matiyak na ang mga ito ay hindi naglalaman ng mga null na halaga (isang hadlang ay idaragdag din - NOT NULL).

Ano ang foreign key?

Ang foreign key ay isang property na ginawa upang magbigay ng ugnayan sa pagitan ng mga talahanayan. Karaniwan, ang isang foreign key ay nakatakda sa mga column sa isang subtable at tumuturo sa isa sa mga column mula sa pangunahing talahanayan. Maaaring tukuyin bilang kapag lumilikha ng isang talahanayan:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) }
Kaya pagkatapos lumikha ng talahanayan:
ALTER TABLE table_name
ADD FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name));
Maaari mong itakda ang pag-uugali ng isang foreign key kapag minamanipula ang field na tinutukoy nito. Ang mga manipulasyon ay maaaring sa mga sumusunod ON DELETEna uri ON UPDATE: Mga posibleng opsyon sa pag-uugali:
  • CASCADE— sa property na ito, ang mga row mula sa dependent table ay awtomatikong tatanggalin o babaguhin kapag ang mga kaugnay na row ay tinanggal o binago sa main table;
  • SET NULL— gamit ang property na ito, kapag ang isang kaugnay na row ay tinanggal o na-update mula sa pangunahing talahanayan, ang halaga NULLpara sa foreign key column ay itatakda;
  • NO ACTION— tinatanggihan ang mga pagtatangka na tanggalin o baguhin ang mga hilera sa pangunahing talahanayan kung may mga kaugnay na hilera sa nakadependeng talahanayan;
  • RESTRICT- katumbas ng NO ACTION;
  • SET DEFAULT- gamit ang property na ito, kapag ang isang kaugnay na row ay tinanggal o na-update mula sa pangunahing talahanayan, ang default na halaga (kung mayroon) para sa foreign key column ay itatakda.
Halimbawa ng paggamit:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) ON UPDATE CASCADE ON DELETE CASCADE }
ON DELETEKung ang gawi para sa at hindi tahasang itinakda ON UPDATE, ang gawi ay itatakda sa RESTRICT.

10. Mga uri ng koneksyon sa pagitan ng mga talahanayan (Sumali)

Ang koneksyon sa pagitan ng mga talahanayan ay ibinibigay batay sa karaniwang data (mga patlang). Nangyayari ito gamit ang isang operator JOIN, isang operasyon na tumutugma sa mga row mula sa isang table na may mga row sa isa pa. Ginagawa ang pagmamapa upang ang mga haligi ng parehong mga talahanayan ay magkatabi, bagaman maaari silang makuha mula sa magkahiwalay na mga talahanayan. At kung mayroon kaming mga karaniwang field para sa tatlong talahanayan, maaari naming ipakita ang kanilang data bilang isang karaniwang talahanayan. Gayunpaman, ito ay nagkakahalaga ng pagsasaalang-alang na ang mas kaunting mga talahanayan na pinagsama, mas mabilis na tatakbo ang query. Kaya, ang mga uri JOIN:
  • INNER JOIN- isang koneksyon na nagpapakita lamang ng mga data mula sa unang talahanayan na tumutugma sa ilang data mula sa pangalawang talahanayan. Ang natitira ay bumaba.Panayam ng developer: pagsusuri ng mga tanong sa database - 4
  • LEFT JOIN- isang koneksyon na nagpapakita ng lahat ng data mula sa unang talahanayan at ang kaukulang data mula sa pangalawa, kung mayroon man. Kung walang katumbas na data, ang mga field para sa data mula sa pangalawang talahanayan ay walang laman.Panayam ng developer: pagsusuri ng mga tanong sa database - 5
  • RIGHT JOIN- isang koneksyon na nagpapakita ng lahat ng data mula sa pangalawang talahanayan at ang kaukulang data mula sa una, kung mayroon man. Kung walang katumbas na data, ang mga field para sa data mula sa unang talahanayan ay walang laman.Panayam ng developer: pagsusuri ng mga tanong sa database - 6
  • FULL JOIN- isang koneksyon na nagpapakita ng lahat ng data mula sa una at pangalawang talahanayan. Kung walang kaugnay na data sa kabilang talahanayan, ang mga field para sa data na iyon ay walang laman.Panayam ng developer: pagsusuri ng mga tanong sa database - 7
  • CROSS JOIN- isang cross join kung saan ang bawat hilera ng unang talahanayan ay pinagsama sa bawat hilera ng pangalawang talahanayan (bawat isa sa bawat isa). Iyon ay, kung ang dalawang talahanayan ay may 3 hilera bawat isa, pagkatapos ng pagsali na ito ay makakakuha tayo ng resulta ng 9 na hanay.Panayam ng developer: pagsusuri ng mga tanong sa database - 8
Halimbawa Join(inner):
SELECT *
FROM first_table
INNER JOIN second_table ON first_table.some_column = second_table.some_column

11. Ano ang isang ACID property sa isang database?

A - Atomicity , tinitiyak na walang transaksyon na bahagyang nakatuon sa system. Alinman sa lahat ng mga suboperasyon nito ay ginanap, o wala. Halimbawa, ang paglilipat ng pera mula sa isang bangko patungo sa isa pang account ay may kasamang dalawang operasyon:
  1. Maglipat ng pera sa isang bank account.
  2. Maglipat ng pera mula sa isang bank account patungo sa isang partikular na account.
Ngunit kahit ano ay maaaring mangyari. Halimbawa, pupunta sila sa bangko, at pagkatapos ay magaganap ang ilang error at hindi makukumpleto ang pangalawang operasyon. O vice versa: ang pangalawang operasyon lamang ang isasagawa. Samakatuwid, ang mga pagkilos na ito ay isinasagawa sa loob ng isang transaksyon, at ang resulta ay alinman sa lahat o wala. C - Consistency : Ang bawat matagumpay na transaksyon ay palaging nagre-record lamang ng mga resultang malulutas. Tinitiyak nito na ang lahat ng mga paghihigpit ay natutugunan (halimbawa, NOT NULL), kung hindi ay ibabalik ang transaksyon. At - paghihiwalay : sa panahon ng pagpapatupad ng isang transaksyon, ang mga parallel na transaksyon ay hindi dapat makaapekto sa resulta nito. Nagbibigay ito sa amin ng kakayahang itago ang mga hindi panghuling estado ng data mula sa lahat. Sa totoo lang, ito ang dahilan kung bakit hindi masisira ng mga hindi matagumpay na transaksyon ang anuman. Mas mababa ng kaunti ay makikilala natin ang mga antas ng paghihiwalay ng transaksyon. D - Durability : Kung ang isang transaksyon ay nakumpleto, pagkatapos ay makatitiyak ka na ang mga pagbabagong ginawa nito ay hindi makakansela dahil sa ilang pagkabigo.

12. Mga antas ng paghihiwalay ng transaksyon

Ang bawat antas ng paghihiwalay ay nagbibigay-daan/nagbabawal sa ilang partikular na pagkilos (mga pagkakataon):
  • phantom reading - sa loob ng parehong transaksyon, ang parehong kahilingan ng data ay nagbibigay ng iba't ibang resulta, na nangyayari dahil sa pagdaragdag ng data ng isa pang (parallel) na transaksyon.
  • hindi umuulit na pagbabasa - sa loob ng parehong transaksyon, ang parehong kahilingan ng data ay nagbibigay ng iba't ibang mga resulta, na nangyayari dahil sa pagbabago o pagtanggal ng data ng isa pang (parallel) na transaksyon.
  • "marumi" na nabasa - pagbabasa ng data na idinagdag o binago ng isang transaksyon na pagkatapos ay hindi na ibabalik;
  • nawalang update - kapag binago ng iba't ibang transaksyon ang parehong bloke ng data sa parehong oras, lahat ng pagbabago maliban sa huli ay mawawala (katulad ng isang "kondisyon ng lahi" sa multithreading).
Para sa kaginhawahan, isinasaalang-alang namin ang mga antas ng paghihiwalay at ang kanilang mga kakayahan sa talahanayan:
Mga antas ng pagkakabukod Pagbabasa ng multo Hindi paulit-ulit na pagbabasa "marumi" na pagbabasa nawala ang update
SERIALIZABLE + + + +
REPEATABLE_READ - + + +
READ_COMMITTED - - + +
READ_UNCOMMITTED - - - +

13. Ano ang SQL injection?

Ang SQL injection ay isa sa mga paraan ng pag-hack ng isang website, ang esensya nito ay ang pag-iniksyon ng ilang SQL code sa data sa pamamagitan ng GETmga query POSTo Cookies. Kung ang isang website ay nagsasagawa ng mga naturang iniksyon, posibleng makakuha ng access sa database at i-hack ang application. Halimbawa, alam natin ang pangalan ng ilang variable. Sabihin natin column_namena may uri boolean. Kung ang system ay madaling kapitan ng mga iniksyon, maaari naming idagdag OR column_name=trueat pagkatapos ay isulat ang lahat ng kailangan namin mula sa database. ORay lilikha ng isang OR kundisyon, at ang aming expression pagkatapos nito ay palaging magiging true, na magdadala sa amin nang higit pa. Ang isang pag-atake sa isang website tulad ng SQL injection ay posible dahil sa hindi wastong pagproseso ng papasok na data na ginamit sa mga query sa SQL. Kapag kumokonekta sa isang database gamit ang JDBC , gumagamit ka ng iba't - ibang Statements. Upang madagdagan ang seguridad, kinakailangan na gamitin PreparedStatementsa halip na ang karaniwan Statement, dahil kapag ginamit, Statementang mga string ng query at mga halaga ay idinaragdag lamang nang magkasama, na ginagawang posible ang mga iniksyon. Sa turn, mayroong PreparedStatementisang partikular na template ng kahilingan, at ang data ay ipinasok dito na may mga quotation mark na makikita. Bilang resulta, ang mga SQL injection ay makikita lamang bilang isang string na representasyon ng ilang field. Upang maprotektahan laban sa mga SQL injection, maaari kang gumamit ng mga tseke batay sa mga regular na expression (maaari kang magbasa nang higit pa tungkol sa mga regular na expression sa artikulong ito ). Собеседование разработчика: разбор вопросов по базам данных - 9Ang isa pang pagpipilian ay ang magtakda ng limitasyon sa bilang ng mga character ng mga papasok na parameter: halimbawa, kung dapat kang makatanggap ng isang numero na hindi hihigit sa 9999, isang limitasyon ng apat na papasok na mga character ang gagawin. Babawasan nito ang panganib ng pag-hack gamit ang mga SQL injection. Maaari kang matuto nang higit pa tungkol sa seguridad sa Java mula sa artikulong “Security in Java: best practices” .

14. Ano ang mga nakaimbak na pamamaraan? Mga naka-imbak na function? Trigger?

Ang mga nakaimbak na pamamaraan sa SQL ay isang entity sa database, na isang hanay ng mga tagubilin sa SQL na pinagsama-sama nang isang beses at nakaimbak sa server. Sa isang salita, ito ay isang analogue ng mga pamamaraan sa Java. Ang mga nakaimbak na pamamaraan ay maaaring magsagawa ng mga aksyon sa data, parehong normal na mga query at ilang mga aksyon na hindi available para sa mga normal na query. Ang isang pamamaraan ay isang SQL entity na nilikha nang isang beses at pagkatapos ay tinawag sa pamamagitan ng pagpasa ng mga argumento. Ang bentahe ng diskarteng ito ay ang mga tagubiling ito ay maaaring magamit muli nang higit sa isang beses. Ang mga nakaimbak na pamamaraan ay nagpapabuti sa pagganap, nagpapahusay ng mga kakayahan sa programming, at sumusuporta sa mga tampok ng seguridad ng data. Isaalang-alang natin ang paglikha ng isang pamamaraan:
CREATE PROCEDURE procedure_name (first_param some_type, second_param some_type..)
 begin
……...
 end
Pagtawag sa pamamaraan:
CALL procedure_name (first_param, second_param…..);
Ang stored function ay isang uri ng stored procedure. Ang pagkakaiba sa pagitan ng isang function ay palaging nagbabalik lamang ng isang halaga, habang ang isang pamamaraan ay palaging nagbabalik ng isang hanay ng mga halaga. Ang mga nakaimbak na pamamaraan ay hindi maaaring ihalo sa regular na SQL, habang ang isang nakaimbak na function ay maaaring - at ito ang kalamangan nito. Sa kabilang banda, ang mga naka-imbak na function ay may mas maraming limitasyon kaysa sa mga pamamaraan. Paglikha ng isang naka-imbak na function:
CREATE FUNCTION function_name (first_param, second_param…..)
RETURNS some_type
 begin
……...
RETURN some_value;
end
Pagtawag sa isang naka-imbak na function:
SELECT function_name(first_param, second_param…..);
Ang trigger ay isa pang uri ng naka-imbak na pamamaraan na hindi direktang tinatawag ng user, ngunit ina-activate kapag binago ang data. Ibig sabihin, isinaaktibo ang pamamaraang ito kapag natugunan ang ilang partikular na kundisyon, gaya ng, INSERTo DELETE, o UPDATEdata sa isang partikular na column ng isang ibinigay na talahanayan. Kapag ang isang trigger ay pinagana ay tinutukoy gamit ang mga keyword BEFORE(ang trigger ay gumagana bago ang nauugnay na kaganapan) o AFTER(pagkatapos ng kaganapan).
CREATE TRIGGER trigger_name
ON table_name
AFTER INSERT
 begin
……...
 end

15. Magsanay

Magkagayunman, ang pinakakaraniwang tanong sa SQL sa isang pakikipanayam ay ang pagsasanay - paglutas ng problema. Walang saysay na subukang hulaan kung aling mga gawain ang makikita mo, dahil ang lahat ay nakasalalay sa pagiging sopistikado ng imahinasyon ng taong kabaligtaran. Samakatuwid, ang tanging pagpipilian sa pagtatrabaho ay upang maging mas mahusay sa mga query sa SQL na may iba't ibang kumplikado. Ang sql-ex.ru ay maaaring magsilbi bilang isang mapagkukunan para sa pagsasanay sa iba't ibang mga gawain . Pagkatapos ng unang dalawampung nakumpletong gawain, magiging mahirap para sa iyong kausap na takutin ka sa anumang gawaing SQL. Собеседование разработчика: разбор вопросов по базам данных - 11Iyon lang para sa araw na ito: Umaasa ako na pagkatapos basahin ang artikulong ito, ang mga tanong tungkol sa mga database ay hindi magdudulot ng anumang mga paghihirap o problema. Salamat sa iyong pansin at makita kang muli!
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION