තෝරාගත් ඔරකල් සින්ටැක්ස් වලට ඇතුල් කරන්න. T-SQL මූලික කරුණු. ඩී.එම්.එල්. පේළි කිහිපයක් ඇතුළත් කිරීම

කලින් සාකච්ඡා කළ SELECT ප්‍රකාශයට අමතරව, දත්ත හැසිරවීමේ භාෂාව (DML) හි තවත් ප්‍රකාශ තුනක් අඩංගු වේ: INSERT, UPDATE සහ DELETE. SELECT ප්‍රකාශය මෙන්, මෙම ප්‍රකාශ තුන වගු හෝ දසුන් මත ක්‍රියාත්මක වේ. මෙම ලිපිය INSERT ප්‍රකාශය ආවරණය කරන අතර අනෙක් ප්‍රකාශ දෙක ඊළඟ ලිපියෙන් ආවරණය කෙරේ.

ප්රකාශය ඇතුල් කරන්නවගුවකට පේළි (හෝ පේළි කොටස්) ඇතුල් කරයි. මෙම උපදෙස් වල විවිධ ආකාර දෙකක් තිබේ:

tab_name [(col_list)] DEFAULT VALUES | ඇතුළු කරන්න අගයන් (( පෙරනිමිය | ශුන්‍ය | ප්‍රකාශනය ) [ ,...n]) ටැබ්_නම ඇතුල් කරන්න | බලන්න_නම [(col_list)] (select_statement | execute_statement) සින්ටැක්ස් සම්මුති

උපදෙස් වල පළමු ආකෘතිය ඔබට එක් පේළියක් (හෝ එහි කොටසක්) මේසයට ඇතුල් කිරීමට ඉඩ සලසයි. සහ INSERT ප්‍රකාශයේ දෙවන ආකාරය මඟින් ඔබට SELECT ප්‍රකාශයක ප්‍රතිඵල කට්ටලයක් හෝ EXECUTE ප්‍රකාශයක් මඟින් ක්‍රියාත්මක කරන ලද ගබඩා කර ඇති ක්‍රියා පටිපාටියක් වගුවකට ඇතුළු කිරීමට ඉඩ සලසයි. ගබඩා කර ඇති ක්‍රියා පටිපාටිය වගුවට ඇතුළු කිරීමට දත්ත ආපසු ලබා දිය යුතුය. INSERT ප්‍රකාශයක් සමඟ භාවිතා කරන විට, SELECT ප්‍රකාශයකට අදාළ තීරු වල දත්ත වර්ග ගැළපෙන තාක්, දත්ත ඇතුළත් කරන වෙනත් හෝ එකම වගුවකින් අගයන් තෝරාගත හැක.

ආකෘති දෙකම සඳහා, එක් එක් ඇතුළත් කළ අගයේ දත්ත වර්ගය අනුරූප වගු තීරුවේ දත්ත වර්ගයට අනුකූල විය යුතුය. සියලුම තන්තු සහ තාවකාලික දත්ත උපුටා දැක්වීම් තුළ අමුණා තිබිය යුතුය; සංඛ්‍යාත්මක අගයන් උද්ධෘත ලකුණුවල ඇතුළත් කිරීම අවශ්‍ය නොවේ.

තනි පේළියක් ඇතුල් කිරීම

INSERT ප්‍රකාශයේ ආකාර දෙකටම, තීරු ලැයිස්තුව පැහැදිලිව සඳහන් කිරීම විකල්පමය වේ. තීරු ලැයිස්තුගත නොකිරීම වගුවේ ඇති සියලුම තීරු නියම කිරීමට සමාන වේ.

DEFAULT VALUES පරාමිතියසියලුම තීරු සඳහා පෙරනිමි අගයන් ඇතුළත් කරයි. TIMESTAMP දත්ත වර්ගයක් හෝ IDENTITY ගුණයක් සහිත තීරු පද්ධතිය මඟින් ස්වයංක්‍රීයව ජනනය වන අගයන් සමඟ පෙරනිමියෙන් ඇතුළු කෙරේ. වෙනත් දත්ත වර්ගවල තීරු සඳහා, තිබේ නම්, අනුරූප-ශුන්‍ය නොවන පෙරනිමි අගය ඇතුළත් කරනු ලැබේ, නැතහොත් NULL එසේ නොවේ. තීරුවක් ශුන්‍ය අගයන්ට ඉඩ නොදෙන්නේ නම් සහ පෙරනිමි අගයක් අර්ථ දක්වා නොමැති නම්, INSERT ප්‍රකාශය අසාර්ථක වන අතර පණිවිඩයක් දර්ශනය වේ.

පහත උදාහරණය මගින් නියැදි ඩීබී දත්ත ගබඩාවේ සේවක වගුව වෙත පේළි ඇතුල් කරයි, දත්ත ගබඩාවට කුඩා දත්ත ප්‍රමාණයක් ඇතුළු කිරීමට INSERT ප්‍රකාශයක් භාවිතා කිරීම පෙන්නුම් කරයි:

සාම්පල ඩීබී භාවිතා කරන්න; සේවක අගයන් ඇතුළත් කරන්න (34990, "Andrey", "Batonov", "d1"); සේවක අගයන් ඇතුළත් කරන්න (38640, "Alexey", "Vasin", "d3");

දෙකක් තියෙනවා විවිධ ක්රමනව පේළියකට අගයන් ඇතුළත් කිරීම. පහත උදාහරණයේ INSERT ප්‍රකාශය පැහැදිලිවම NULL මූල පදය භාවිතා කරන අතර අනුරූප තීරුවට NULL අගයක් ඇතුල් කරයි:

සාම්පල ඩීබී භාවිතා කරන්න; සේවක අගයන් ඇතුලත් කරන්න (34991, "Andrey", "Batonov", NULL);

වගුවක සමහර තීරු (නමුත් සියල්ලම නොවේ) අගයන් ඇතුළත් කිරීමට, ඔබ සාමාන්‍යයෙන් එම තීරු පැහැදිලිව සඳහන් කළ යුතුය. නිශ්චිතව දක්වා නොමැති තීරු NULL අගයන්ට ඉඩ දිය යුතුය, නැතහොත් පෙරනිමි අගයක් අර්ථ දක්වා තිබිය යුතුය.

සාම්පල ඩීබී භාවිතා කරන්න; සේවකයාට ඇතුල් කරන්න (Id, Firstname, Last Name) අගයන් (34992, "Andrey", "Batonov");

පෙර උදාහරණ දෙක සමාන වේ. සේවක වගුවේ, NULL අගයන් සඳහා ඉඩ දෙන එකම තීරුව දෙපාර්තමේන්තු අංක තීරුව වන අතර අනෙකුත් සියලුම තීරු CREATE TABLE ප්‍රකාශයේ NOT NULL වගන්තිය මගින් අක්‍රීය කර ඇත.

අගයන් අනුපිළිවෙල VALUES පිරිනැමීම INSERT ප්‍රකාශ CREATE TABLE ප්‍රකාශයේ දක්වා ඇති අනුපිළිවෙලට වඩා වෙනස් විය හැක. මෙම අවස්ථාවෙහිදී, ඔවුන්ගේ ඇණවුම තීරු ලැයිස්තුවේ අනුරූප තීරු ලැයිස්තුගත කර ඇති අනුපිළිවෙලට අනුරූප විය යුතුය. මුල් පිටපතට වඩා වෙනස් අනුපිළිවෙලකට දත්ත ඇතුළත් කිරීමේ උදාහරණයක් පහත දැක්වේ:

සාම්පල ඩීබී භාවිතා කරන්න; සේවකයාට ඇතුල් කරන්න (දෙපාර්තමේන්තු අංකය, අවසාන නම, හැඳුනුම්පත, පළමු නම) අගයන් ("d1", "Batonov", 34993, "Andrey");

පේළි කිහිපයක් ඇතුළත් කිරීම

INSERT ප්‍රකාශයේ දෙවන ආකෘතිය උප විමසුමකින් තෝරාගත් පේළි එකක් හෝ කිහිපයක් වගුවට ඇතුල් කරයි. පහත උදාහරණයෙන් දැක්වෙන්නේ INSERT ප්‍රකාශයේ දෙවන ආකාරය භාවිතයෙන් වගුවකට පේළි ඇතුල් කරන ආකාරයයි. මෙම අවස්ථාවෙහිදී, මොස්කව්හි පිහිටා ඇති දෙපාර්තමේන්තු වල අංක සහ නම් තෝරාගැනීම සඳහා විමසුමක් ක්රියාත්මක වන අතර, ප්රතිඵලයක් වශයෙන් ප්රතිඵල කට්ටලය කලින් නිර්මාණය කරන ලද නව වගුවකට පටවනු ලැබේ.

ඉහත උදාහරණයේ නිර්මාණය කරන ලද නව මොස්කව් දෙපාර්තමේන්තු වගුවේ නැතිවූ ස්ථාන තීරුව හැර, පවතින දෙපාර්තමේන්තු වගුවට සමාන තීරු ඇත. INSERT ප්‍රකාශයේ ඇති උප විමසුම මඟින් ස්ථාන තීරු අගය "මොස්කව්" වන දෙපාර්තමේන්තු වගුවේ සියලුම පේළි තෝරා ගනී, පසුව විමසුමේ ආරම්භයේ දී සාදන ලද නව වගුවට ඒවා ඇතුළත් කරනු ලැබේ.

පහත උදාහරණය INSERT ප්‍රකාශයේ දෙවන ආකාරය භාවිතයෙන් වගුවකට පේළි ඇතුළු කිරීමට තවත් ක්‍රමයක් පෙන්වයි. මෙම අවස්ථාවෙහිදී, p2 ව්‍යාපෘතියේ සේවය කරන "කළමනාකරු" තනතුර ඇති සියලුම සේවකයින් සඳහා පුද්ගල අංක, ව්‍යාපෘති අංක සහ ව්‍යාපෘති ආරම්භක දිනයන් තෝරා ගැනීමට විමසුමක් ක්‍රියාත්මක කරනු ලබන අතර එහි ප්‍රතිඵලය ආරම්භයේ දී සාදන ලද නව වගුවකට පැටවීම. විමසුම:

සාම්පල ඩීබී භාවිතා කරන්න; වගු කළමනාකරු කණ්ඩායම සාදන්න (EmpId INT null නොවේ, ProjectNumber CHAR (4) NULL නොවේ, Date DATE ඇතුළත් කරන්න); ManagerTeam වෙත ඇතුළු කරන්න (EmpId, ProjectNumber, EnterDate) රැකියා = "කළමනාකරු" යන ස්ථානයෙන් Works_on EmpId, ProjectNumber, EnterDate තෝරන්න;

INSERT ප්රකාශය භාවිතයෙන් පේළි ඇතුල් කිරීමට පෙර, මොස්කව් දෙපාර්තමේන්තුව සහ කළමනාකරු කණ්ඩායම් වගු (ඉහත උදාහරණවල) හිස් විය. වගුව දැනටමත් පැවතියේ නම් සහ දත්ත සහිත පේළි අඩංගු නම්, ඊට නව පේළි එකතු වේ.

කලින් කොටස් වලදී, අපි කලින් සාදන ලද වගු වලින් දත්ත ලබා ගැනීමේ කාර්යය දෙස බැලුවෙමු. දැන් අපට වගු සෑදීම/මකා දැමීම, නව වාර්තා එකතු කිරීම සහ පැරණි ඒවා මකා දැමිය හැකි ආකාරය සොයා ගැනීමට කාලයයි. මෙම අරමුණු සඳහා SQLවැනි ක්රියාකරුවන් ඇත: නිර්මාණය කරන්න- මේසයක් සාදයි, ALTER- මේස ව්යුහය වෙනස් කරයි, අතහරින්න- වගුවක් හෝ ක්ෂේත්‍රයක් මකා දමයි, ඇතුල් කරන්න- වගුව වෙත දත්ත එකතු කරයි. අපි මෙම ක්‍රියාකරු කණ්ඩායම සමඟ ක්‍රියාකරුගෙන් දැන හඳුනා ගැනීමට පටන් ගනිමු ඇතුල් කරන්න.

1. සම්පූර්ණ රේඛා එකතු කිරීම

නමට අනුව, ක්රියාකරු ඇතුල් කරන්නදත්ත සමුදා වගුවකට පේළි ඇතුල් කිරීමට (ඇමිණීමට) භාවිතා කරයි. එකතු කිරීම ක්රම කිහිපයකින් සිදු කළ හැකිය:

  • - එක් සම්පූර්ණ පේළියක් එක් කරන්න
  • - පේළියක කොටසක් එකතු කරන්න
  • - විමසුම් ප්රතිඵල එකතු කරන්න.

එබැවින්, වගුවකට නව පේළියක් එක් කිරීමට, අපි වගුවේ නම සඳහන් කළ යුතු අතර, තීරු නාම ලැයිස්තුගත කර, ඉදිකිරීම් භාවිතයෙන් එක් එක් තීරුව සඳහා අගය සඳහන් කළ යුතුය. ඇතුල් කරන්න වගු_නම (ක්ෂේත්‍ර1, ක්ෂේත්‍ර2 ...) අගයන් (අගය1, අගය2...). අපි උදාහරණයක් බලමු.

විකුණුම්කරුවන් තුළට ඇතුළු කරන්න (ID, ලිපිනය, නගරය, විකුණුම්කරු_නම, රට) VALUES("6", "පළමු වීදිය", "ලොස් ඇන්ජලීස්", "හැරී මොන්රෝ", "ඇමරිකා එක්සත් ජනපදය")

ඔබට තීරු නාමවල අනුපිළිවෙලද වෙනස් කළ හැකිය, නමුත් ඒ සමඟම ඔබ පරාමිතියෙහි අගයන් අනුපිළිවෙල වෙනස් කළ යුතුය අගයන්.

2. රේඛාවල කොටසක් එකතු කිරීම

පෙර උදාහරණයේදී, ක්රියාකරු භාවිතා කරන විට ඇතුල් කරන්නඅපි වගු තීරු නාම පැහැදිලිව සලකුණු කර ඇත. මෙම වාක්‍ය ඛණ්ඩය භාවිතයෙන්, අපට සමහර තීරු මඟ හැරිය හැක. මෙයින් අදහස් කරන්නේ ඔබ සමහර තීරු සඳහා අගයන් ඇතුළත් කරන නමුත් අනෙක් ඒවා සඳහා ඒවා ලබා නොදෙන බවයි. උදාහරණ වශයෙන්:

විකුණුම්කරුවන්ට ඇතුළු කරන්න (ID, නගරය, විකුණුම්කරු_නම) VALUES("6", "ලොස් ඇන්ජලීස්", "හැරී මොන්රෝ")

මෙම උදාහරණයේදී, අපි තීරු දෙකක් සඳහා අගයක් නියම කර නැත ලිපිනයසහ රට. ඔබට ප්‍රකාශයෙන් සමහර තීරු බැහැර කළ හැක ඇතුල් කරන්න, මෙය වගුවේ අර්ථ දැක්වීමට ඉඩ දෙන්නේ නම්. මෙම අවස්ථාවේදී, කොන්දේසි වලින් එකක් සපුරාලිය යුතුය: මෙම තීරුව වලංගු ලෙස අර්ථ දැක්වේ NULL(ඕනෑම අගයක් නොමැති වීම) හෝ වගු අර්ථ දැක්වීමේ නිශ්චිත පෙරනිමි අගය. මෙයින් අදහස් කරන්නේ අගයක් නියම කර නොමැති නම්, පෙරනිමි අගය භාවිතා කරන බවයි. ඔබට එහි පේළිවල අගයන් පෙන්වීමට ඉඩ නොදෙන වගුවකින් තීරුවක් අස්ථානගත වී ඇත්නම් NULLසහ පෙරනිමි අගයක් අර්ථ දක්වා නැත, DBMS දෝෂ පණිවිඩයක් ජනනය කරනු ඇති අතර පේළිය එක් නොකෙරේ.

3. තෝරාගත් දත්ත එකතු කිරීම

පෙර උදාහරණයේදී, අපි විමසුමට අතින් දත්ත ඇතුළත් කිරීමෙන් වගුවලට ඇතුළත් කළෙමු. කෙසේ වෙතත්, ක්රියාකරු ඇතුල් කරන්නඅපට වෙනත් වගුවකින් දත්ත ඇතුළු කිරීමට අවශ්‍ය නම් මෙම ක්‍රියාවලිය ස්වයංක්‍රීය කිරීමට අපට ඉඩ සලසයි. මේ සඳහා SQL හි එවැනි ඉදිකිරීමක් තිබේ ඇතුල් කරන්න ... තෝරන්න .... මෙම සැලසුම මඟින් ඔබට එක් වගුවකින් එකවර දත්ත තෝරා තවත් වගුවකට ඇතුල් කිරීමට ඉඩ සලසයි. අපි හිතමු අපිට තවත් මේසයක් තියෙනවා කියලා විකුණුම්කරුවන්_EUයුරෝපයේ අපගේ භාණ්ඩ විකුණන්නන්ගේ ලැයිස්තුවක් සමඟ අපි ඒවා සාමාන්‍ය වගුවට එකතු කළ යුතුය විකුණුම්කරුවන්. මෙම වගු වල ව්‍යුහය සමාන වේ (එකම තීරු ගණන සහ එකම නම්), නමුත් දත්ත වෙනස් වේ. මෙය සිදු කිරීම සඳහා, අපට පහත විමසුම ලිවිය හැකිය:

විකුණුම්කරුවන්ට ඇතුළු කරන්න (ID, ලිපිනය, නගරය, විකුණුම්කරු_නම, රට) තෝරන්නID, ලිපිනය, නගරය, Seller_name, Sellers_EU වෙතින් රට

අභ්යන්තර යතුරු වල අගයන් නැවත නැවත සිදු නොවන පරිදි ඔබ අවධානය යොමු කළ යුතුය (ක්ෂේත්රය හැඳුනුම්පත), එසේ නොමැතිනම් දෝෂයක් සිදුවනු ඇත. ක්රියාකරු තෝරන්නයෝජනා ද ඇතුළත් විය හැක කොහෙදදත්ත පෙරීමට. ප්‍රකාශයේ අඩංගු තීරුවල නම් පිළිබඳව DBMS අවධානය යොමු නොකරන බව ද සඳහන් කළ යුතුය. තෝරන්න, ඒවා සකස් කර ඇති අනුපිළිවෙල පමණක් ඇයට වැදගත් වේ. එම නිසා, නිසා තෝරාගත් පළමු නිශ්චිත තීරුවේ දත්ත තෝරන්න, ඕනෑම අවස්ථාවක වගුවේ පළමු තීරුවේ පුරවනු ලැබේ විකුණුම්කරුවන්, ක්රියාකරුට පසුව නියම කර ඇත ඇතුල් කරන්න, ක්ෂේත්‍ර නාමය කුමක් වුවත්.

4. එක් වගුවක සිට තවත් වගුවකට දත්ත පිටපත් කිරීම

බොහෝ විට දත්ත සමුදායන් සමඟ වැඩ කරන විට, උපස්ථ කිරීම හෝ වෙනස් කිරීම සඳහා ඕනෑම වගු වල පිටපත් සෑදීමට අවශ්ය වේ. කිරීමට සම්පූර්ණ පිටපත SQL වල tables වලට වෙනම operator එකක් තියෙනවා වෙත තෝරන්න. උදාහරණයක් ලෙස, අපි මේසයේ පිටපතක් සෑදිය යුතුය විකුණුම්කරුවන්, ඔබට පහත පරිදි ඉල්ලීම ලිවිය යුතුය:

තෝරන්න * විකුණුම්කරුවන්_නව විකුණුම්කරුවන්ගෙන්

පෙර නිර්මාණය මෙන් නොව ඇතුල් කරන්න ... තෝරන්න ...පවතින වගුවකට දත්ත එකතු කළ විට, සැලසුම නව වගුවට දත්ත පිටපත් කරයි. පළමු ගොඩනැගීම දත්ත ආනයනය කරන බවත්, දෙවන අපනයනය කරන බවත් ඔබට පැවසිය හැකිය. මෝස්තරය භාවිතා කරන විට තෝරන්න ... ඇතුලට ... සිට ...පහත සඳහන් කරුණු සලකා බැලිය යුතුය:

  • - ඔබට ක්රියාකරු තුළ ඕනෑම වාක්යයක් භාවිතා කළ හැකිය තෝරන්න, ආදි කණ්ඩායම විසින්සහ තිබීම
  • - ඔබට වගු කිහිපයකින් දත්ත එක් කිරීමට සම්බන්ධ කිරීමක් භාවිතා කළ හැක
  • - දත්ත කොපමණ වගු වලින් ගත්තත් එක් වගුවකට පමණක් එකතු කළ හැක.

කණ්ඩායම මේසයට පේළි එකතු කරයිහෝ ප්රධාන වගු දර්ශනය.

Sql INSERT Command Syntax

Command Syntax ඇතුළු කරන්න


INSERT විධානයේ මූලික මූල පද සහ පරාමිතීන්
  • යෝජනා ක්රමය- අවසර හඳුනාගැනීම, සාමාන්‍යයෙන් සමහර පරිශීලකයෙකුගේ නමට ගැලපේ
  • මේස දර්ශනය- පේළි ඇතුල් කළ යුතු වගුවේ නම; දර්ශනයක් නියම කර ඇත්නම්, පේළි දර්ශනයේ ප්‍රධාන වගුවට ඇතුල් කරනු ලැබේ
  • උප විමසුම_1- සේවාදායකය දර්ශනයක් ලෙසම සකසන උප විමසුමකි
  • තීරුව- ඇතුළු කළ එක් එක් පේළිය සඳහා වාක්‍ය ඛණ්ඩයේ අගය ඇතුළත් කර ඇති වගුවක් හෝ දර්ශන තීරුවක් අගයන්හෝ subquery; වගුවේ තීරු වලින් එකක් මෙම ලැයිස්තුවෙන් ඉවත් කර ඇත්නම්, ඇතුළත් කළ පේළිය සඳහා තීරු අගය වන්නේ වගුව සාදන විට අර්ථ දක්වා ඇති පෙරනිමි තීරු අගයයි. තීරු ලැයිස්තුවක් සම්පූර්ණයෙන්ම ඉවත් කර ඇත්නම්, වගන්තිය අගයන්හෝ විමසුම වගුවේ ඇති සියලුම තීරු සඳහා අගයන් තීරණය කළ යුතුය
  • අගයන්- වගුවට හෝ දර්ශනයට ඇතුළු කරන අගයන් මාලාවක් නිර්වචනය කරයි; අර්ථය වාක්‍යයේ අර්ථ දැක්විය යුතුය අගයන්තීරු ලැයිස්තුවේ එක් එක් තීරු සඳහා
  • උප විමසුම_2- වගුවට ඇතුල් කරන ලද පේළි ආපසු ලබා දෙන උප විමසුමක්; මෙම උප විමසුමේ තේරීම් ලැයිස්තුවේ ප්‍රකාශ තීරු ලැයිස්තුවට සමාන තීරු සංඛ්‍යාවක් තිබිය යුතුය

ප්රකාශය වාක්‍ය ඛණ්ඩය සමඟ අගයන්මේසයට තනි පේළියක් එකතු කරයි. මෙම පේළියේ වාක්‍ය ඛණ්ඩයෙන් අර්ථ දක්වා ඇති අගයන් අඩංගු වේ අගයන්.
සමග ප්රකාශය උප විමසුමවාක්‍ය ඛණ්ඩයක් වෙනුවට අගයන්උප විමසුම මගින් ආපසු ලබා දෙන සියලුම පේළි වගුව වෙත එක් කරයි. සේවාදායකය ක්‍රියාවලි කරයි උප විමසුමසහ ආපසු එක් එක් පේළිය මේසයට ඇතුල් කරයි. උප විමසුම කිසිදු පේළියක් තෝරා නොගන්නේ නම්, සේවාදායකය වගුවට කිසිදු පේළියක් ඇතුල් නොකරයි.
උප විමසුමඉලක්ක ප්‍රකාශන වගුව ඇතුළුව ඕනෑම වගුවකට හෝ දර්ශනයකට ප්‍රවේශ විය හැක . වගුවේ ඇති තීරු වල අභ්‍යන්තර පිහිටීම සහ වාක්‍ය ඛණ්ඩ අගයන් අනුපිළිවෙල මත පදනම්ව සේවාදායකය නව පේළිවල ක්ෂේත්‍ර සඳහා අගයන් පවරයි. අගයන්හෝ විමසුම් තේරීම් ලැයිස්තුවේ. තීරු ලැයිස්තුවෙන් කිසියම් තීරුවක් අස්ථානගත වී ඇත්නම්, සේවාදායකය විසින් වගුව නිර්මාණය කරන විට අර්ථ දක්වා ඇති පෙරනිමි අගයන් ඔවුන්ට පවරයි. මෙම තීරුවලින් කිසිවකුට NOT NULL සීමාවක් තිබේ නම්, සේවාදායකය බාධාව උල්ලංඝනය කර ඇති බවට දෝෂයක් ලබා දෙන අතර INSERT ප්‍රකාශය අවලංගු කරයි.
INSERT ප්‍රකාශයක් නිකුත් කළ විට, මේසය මත අර්ථ දක්වා ඇති ඕනෑම INSERT ප්‍රේරකයක් සක්‍රීය වේ.

උදාහරණ 1 ට ඇතුල් කරන්න

ඇතුල් කරන්නදෙපාර්තමේන්තුව අගයන්(50, "නිෂ්පාදන", "SAN FRANCISCO");

ඇතුල් කරන්නපාරිභෝගිකයින් (නගරය, cname, cnum) අගයන්('ලන්ඩන්', 'හොෆ්මන්', 2001);

උදාහරණ 2 ට ඇතුල් කරන්න
පහත දැක්වෙන විධානය මඟින් කොමිස් ආදායමෙන් 25% ඉක්මවන සමාගම් සේවකයින්ගේ දත්ත ප්‍රසාද වගුවට පිටපත් කරයි:

ඇතුල් කරන්නප්‍රසාද SELECT එනමේම්, ජොබ්, සල්, කොම් සිට එම්ප් කොම් > 0.25 * සල්;

උදාහරණ 3 ට ඇතුල් කරන්න
ඔබට ඇතුල් කිරීමට අවශ්ය නම් NULL-value, ඔබ එය සාමාන්‍ය අගයක් ලෙස පහත පරිදි සඳහන් කළ යුතුය:

ඇතුල් කරන්නවිකුණුම්කරුවන්ගේ වටිනාකම් (1001, 'පීල්', NULL,12);

උදාහරණ 4 ට ඇතුල් කරන්න
විධානය එක් වගුවකින් අගයන් ලබා ගැනීමට සහ විමසුමක් භාවිතයෙන් තවත් වගුවක තැබීමට භාවිතා කළ හැක. මෙය සිදු කිරීම සඳහා, වාක්යය ප්රතිස්ථාපනය කිරීම ප්රමාණවත්ය අගයන්අදාළ ඉල්ලීමට:

ඇතුල් කරන්න Londonstaff SELECT * වෙළෙන්දන්ගෙන් කොහේද නගරය = 'ලන්ඩන්';

MySQL INSERT

MySQL දත්ත ගබඩාවකට නව පේළි ඇතුළු කිරීමට, භාවිතා කරන්න INSERT විධානය, විධාන උදාහරණ පහත දක්වා ඇත:
උදාහරණ 1 ට ඇතුල් කරන්න.
ඇතුල් කරන්න නව මාර්ගයමේසයට_නම.

ඇතුල් කරන්න

උදාහරණ 2 ට ඇතුල් කරන්න.
අපට අවශ්‍ය තීරුවලට දත්ත ඇතුළත් කිරීම පෙන්නුම් කරමින් table_name වගුවට නව පේළියක් ඇතුළු කිරීම.

ඇතුල් කරන්න table_name VALUES('1','165','0','name');

දත්ත ගබඩාවේ MySQLඑක් විධානයක් භාවිතයෙන් නව රේඛා කිහිපයක් ඇතුළත් කළ හැකිය.
උදාහරණ 3 ට ඇතුල් කරන්න.
වගු_නම තුළට පේළි කිහිපයක් ඇතුළත් කිරීම.

ඇතුල් කරන්නවගු_නම (tbl_id, chislo, chislotwo, නම) VALUES ('1′,'159′,'34','name1′), ('2′,'14','61','name2′), ('3 ′,'356′,'8′,'name3');

දත්ත සමුදා වගුවක් නිර්මාණය කර ඇති විට sql විමසුම INSERT INTO අර්ථවත් කරයි. එනම්, වගුව පවතී, නමක් ඇත, පේළි සහ තීරු නිර්මාණය කර ඇත. වගුව නිර්මාණය කර ඇත්තේ ක්‍රියාකරු විසිනි: , වගුව ක්‍රියාකරු විසින් වෙනස් කරනු ලැබේ.

sql විමසුම ඇතුල් කරන්න - විමසුම් වාක්‍ය ඛණ්ඩය

sql විමසුම INSERT INTO හි පහත වාක්‍ය ඛණ්ඩය ඇත:

වගු_නම ඇතුල් කරන්න (අවශ්‍ය නම්, වරහන් තුළ, ඔබට දත්ත ඇතුළු කිරීමට අවශ්‍ය තීරු ලැයිස්තුවක් ඇතුළු කරන්න) VALUES දත්ත1, ඇතුළු කළ දත්ත2, ඇතුළු කළ දත්ත3.

ඔබට INSERT සහ INTRO අතර IGNORE විකල්පයක් ඇතුළත් කළ හැක. එය අවශ්ය නොවේ. වගුවක් සංස්කරණය කිරීමේදී ප්‍රාථමික යතුරු ආරක්ෂා කිරීමට අවශ්‍ය වේ. එසේ නොමැති නම්, සංස්කරණය කිරීමේදී ප්‍රාථමික යතුරු අනුපිටපත් කිරීම සිදු වුවහොත්, IGNORE විකල්පය ඇතුළු කරන විට, ප්‍රාථමික යතුර සහිත පළමු පේළිය සංස්කරණය කෙරෙන වගුවේ පවතිනු ඇත. අනෙකුත් ප්‍රාථමික යතුරු මකා දැමෙනු ඇත. පෙරනිමියෙන්, අපි මෙම විකල්පය මඟහරිමු.

විකල්ප විකල්ප LOW_PRIORITY සහ DELAYED ඇත. ඔවුන් දත්ත සමුදායට තොරතුරු එකතු කිරීම සඳහා ප්රමුඛතා තීරණය කරයි. පළමුවැන්න දත්ත සමුදාය මුදා හැරීමට බලා සිටීම නියම කරයි, දෙවැන්න යනු බෆරින් තොරතුරු ය.

විමසුමේ ඇති පේළිය: VALUES වාක්‍ය ඛණ්ඩය සමඟ INSERT ඔබට දත්ත සමුදා වගුවට තනි පේළියක් එක් කිරීමට ඉඩ සලසයි. VALUES වගන්තියේ මෙම දත්තවල අගයන් අඩංගු වේ.

VALUES වාක්‍ය ඛණ්ඩය වෙනුවට උප විමසුම් නියම කළ හැක. උප විමසුමකින් INSERT මඟින් උප විමසුම මඟින් ආපසු ලබා දෙන පේළි වගුවට එක් කරයි. දත්ත සමුදා සේවාදායකය උප විමසුම සකසන අතර ආපසු ලබා දුන් සියලුම පේළි වගුවට ඇතුල් කරයි. උප විමසුම විසින් ඒවා තෝරන්නේ නම් මිස සේවාදායකය පේළි ඇතුල් නොකරයි.

  • subquery_1 - සේවාදායකය දර්ශනය ලෙසම සකසන උප විමසුමකි
  • subquery_2 යනු වගුවට ඇතුළු කළ පේළි ආපසු ලබා දෙන උප විමසුමකි. මෙම උප විමසුමේ ලැයිස්තුවේ INSERT තීරු ලැයිස්තුවට සමාන තීරු සංඛ්‍යාවක් තිබිය යුතුය.

MySQL දත්ත ගබඩාවක උප විමසුම් ප්‍රායෝගිකව භාවිතා නොවේ.

MySQL දත්ත ගබඩාවක INSERT INTO sql විමසුමේ උදාහරණ

අපි INSERT INTRO විධානය භාවිතයෙන් MySQL දත්ත ගබඩාවට නව පේළි ඇතුල් කරන්නෙමු.

පළමු උදාහරණය.

වගුව_නම තුළට නව පේළි ඇතුළු කරන්න.

වගු_නම අගයන් ('2′,'145′,'1′,'නම') තුළට ඇතුළු කරන්න;

මෙයින් අදහස් කරන්නේ අපට වගුව_නම් තීරුවලට 2,145,1, නම ඇතුළත් කිරීමට අවශ්‍ය බවයි. තීරු නියම කර නොමැති බැවින්, වගුවේ සියලුම තීරු වල අගයන් පුරවා ඇත.

උදාහරණ දෙක.

table_name වගුවේ අවශ්‍ය (නිශ්චිත) තීරුවලට තොරතුරු ඇතුල් කරන්න.

වගු_නම ඇතුලත් කරන්න (Client_customer, client_subclient, client_mail) VALUES ('name1','subname1',' [ඊමේල් ආරක්ෂිත]′), (‘නම2′,’subname2′,’ [ඊමේල් ආරක්ෂිත]′), ('name3','subname3',(' [ඊමේල් ආරක්ෂිත]′);

Igor Serov විශේෂයෙන් "" වෙබ් අඩවිය සඳහා.

INSERT ප්‍රකාශය නව වාර්තා වගුවකට ඇතුල් කරයි. මෙම අවස්ථාවෙහිදී, තීරු අගයන් වචනාර්ථ නියතයන් විය හැකිය, නැතහොත් උප විමසුමක් ක්‍රියාත්මක කිරීමේ ප්‍රතිඵලයක් විය හැකිය. පළමු අවස්ථාවේ දී, එක් එක් පේළිය ඇතුළු කිරීමට වෙනම INSERT ප්රකාශයක් භාවිතා කරයි; දෙවන අවස්ථාවෙහිදී, උප විමසුම මගින් ආපසු ලැබෙන පරිදි පේළි ගණනාවක් ඇතුල් කරනු ලැබේ.

ක්රියාකරුගේ වාක්ය ඛණ්ඩය පහත පරිදි වේ:

    ඇතුල් කරන්න [ (,...) ]

    (අගය (,...))

  1. | (පෙරනිමි අගයන්)

ඉදිරිපත් කරන ලද වාක්‍ය ඛණ්ඩයෙන් ඔබට පෙනෙන පරිදි, තීරු ලැයිස්තුව විකල්ප වේ (මෙය කියනු ලැබේ හතරැස් වරහන්සින්ටැක්ස් විස්තරයේ). එය අස්ථානගත වී ඇත්නම්, ඇතුළත් කළ අගයන් ලැයිස්තුව සම්පූර්ණ විය යුතුය, එනම් වගුවේ සියලුම තීරු සඳහා අගයන් සපයන්න. මෙම අවස්ථාවෙහිදී, අගයන්හි අනුපිළිවෙල පේළි ඇතුළත් කර ඇති වගුව සඳහා CREATE TABLE ප්‍රකාශය මගින් දක්වා ඇති අනුපිළිවෙලට අනුරූප විය යුතුය. මීට අමතරව, මෙම අගයන් ඇතුළත් කර ඇති තීරු වලට සමාන දත්ත වර්ගයක් විය යුතුය. උදාහරණයක් ලෙස, පහත CREATE TABLE ප්‍රකාශය මඟින් සාදන ලද නිෂ්පාදන වගුවට පේළියක් ඇතුළු කිරීම සලකා බලන්න:

    මේස නිෂ්පාදනයක් සාදන්න

    නිෂ්පාදක චාර් (1) ශුන්‍ය නොවේ,

    ආකෘතිය varchar(4) NULL නොවේ,

    varchar(7) NULL නොවන බව ටයිප් කරන්න

ඔබට මෙම වගුවට නිෂ්පාදකයා B වෙතින් PC මාදිලිය 1157 එක් කිරීමට අවශ්‍ය යැයි සිතන්න.මෙය පහත ප්‍රකාශය සමඟ කළ හැක:

    නිෂ්පාදනයට ඇතුළු කරන්න

    අගයන් ("B" , 1157 , "PC" );

ඔබ තීරු ලැයිස්තුවක් සඳහන් කරන්නේ නම්, ඔබට ඒවායේ "ස්වාභාවික" අනුපිළිවෙල වෙනස් කළ හැකිය:

    නිෂ්පාදනයට ඇතුළු කරන්න (වර්ගය, ආකෘතිය, සාදන්නා)

    අගයන් ("PC" , 1157 , "B" );

මෙය සම්පූර්ණයෙන්ම අනවශ්‍ය අංගයක් බව පෙනේ, එමඟින් සැලසුම වඩාත් කරදරකාරී වේ. කෙසේ වෙතත්, තීරු වල පෙරනිමි අගයන් තිබේ නම් එය ජය ගනී. පහත වගු ව්‍යුහය සලකා බලන්න:

    නිෂ්පාදන වගු සාදන්න_D

    නිෂ්පාදක චාර් (1) NULL,

    ආකෘතිය varchar(4) NULL,

    varchar (7 ) nULL DEFAULT "PC" ටයිප් කරන්න

මෙහි සියලුම තීරු වල අගයන්ට පෙරනිමි අගයන් ඇති බව සලකන්න (පළමු දෙක NULL වන අතර අවසාන තීරුව වර්ගය - PC). දැන් අපට ලිවිය හැකිය:

    නිෂ්පාදන_D (ආකෘතිය, සාදන්නා) තුළට ඇතුළු කරන්න

    අගයන්(1157, "B");

මෙම අවස්ථාවෙහිදී, පේළියක් ඇතුළත් කිරීමේදී නැතිවූ අගය පෙරනිමි අගයෙන් ප්‍රතිස්ථාපනය වේ - PC. CREATE TABLE ප්‍රකාශයක තීරුවකට පෙරනිමි අගයක් ලබා දී නොමැති නම් සහ එම වගු තීරුවේ NULL භාවිතය තහනම් කිරීම සඳහා NOT NULL සීමාවක් සඳහන් කර ඇත්නම්, NULL හි පෙරනිමි අගය උපකල්පනය කරන බව සලකන්න.

ප්රශ්නය පැනනගින්නේ: තීරු ලැයිස්තුවක් සඳහන් නොකිරීමට සහ, කෙසේ වෙතත්, පෙරනිමි අගයන් භාවිතා කළ හැකිද? පිළිතුර ඔව් යන්නයි. මෙය සිදු කිරීම සඳහා, අගය පැහැදිලිව සඳහන් කරනවා වෙනුවට, DEFAULT යන වෙන් කර ඇති වචනය භාවිතා කරන්න:

    නිෂ්පාදනයට ඇතුළු කරන්න_D

    අගයන් ("B" , 1158 , DEFAULT );

සියලුම තීරු වල පෙරනිමි අගයන් ඇති බැවින්, පෙරනිමි අගයන් සහිත පේළියක් ඇතුල් කිරීමට ඔබට ලිවිය හැක:

    නිෂ්පාදනයට ඇතුළු කරන්න_D

    අගයන් (පෙරනිමි, පෙරනිමි, පෙරනිමි);

කෙසේ වෙතත්, මෙම අවස්ථාව සඳහා විශේෂ ඉදිකිරීම් DEFAULT VALUES ඇත (ක්‍රියාකරු වාක්‍ය ඛණ්ඩය බලන්න), එය සමඟ ඉහත ක්‍රියාකරු පෝරමයේ නැවත ලිවිය හැකිය

    නිෂ්පාදන_D පෙරනිමි අගයන් තුළට ඇතුළු කරන්න;

වගුවකට පේළියක් ඇතුළු කරන විට, මෙම වගුව මත පනවා ඇති සියලුම සීමාවන් පරීක්ෂා කරනු ලබන බව සලකන්න. මේවා ප්‍රාථමික යතුර හෝ අනන්‍ය දර්ශක සීමාවන්, බාධක පරීක්ෂා කරන්න, හෝ යොමු අඛණ්ඩතා සීමාවන් විය හැකිය. කිසියම් සීමාවක් උල්ලංඝනය කළහොත්, පේළිය ඇතුළත් කිරීම ප්රතික්ෂේප කරනු ලැබේ. අපි දැන් උප විමසුමක් භාවිතා කිරීමේ අවස්ථාව සලකා බලමු. පුද්ගලික පරිගණක ආකෘති (type = 'PC') සම්බන්ධ නිෂ්පාදන වගුවේ ඇති සියලුම පේළි නිෂ්පාදන_D වගුවට ඇතුළු කිරීමට අවශ්‍ය යැයි සිතමු. අපට අවශ්‍ය අගයන් දැනටමත් සමහර වගුවක ඇති බැවින්, ඇතුළත් කළ පේළි අතින් ජනනය කිරීම, පළමුව, අකාර්යක්ෂම වන අතර, දෙවනුව, ආදාන දෝෂ වලට ඉඩ දිය හැකිය. උප විමසුමක් භාවිතා කිරීම මෙම ගැටළු විසඳයි:

වගු දෙකටම තීරු අනුපිළිවෙල සමාන වන බැවින් උප විමසුමේ "*" සංකේතය භාවිතා කිරීම මෙම නඩුවේ යුක්ති සහගත වේ. මෙය එසේ නොවේ නම්, තීරු අනුපිළිවෙලට ගැලපෙන INSERT ප්‍රකාශය, උප විමසුම හෝ දෙකෙහිම තීරු ලැයිස්තුවක් යෙදිය යුතුය:

මෙහිදී, පෙර මෙන්, ඔබට පවතින පෙරනිමි අගයන් භාවිතා කිරීමට අවශ්‍ය නම්, ඔබට සියලුම තීරු සඳහන් කළ නොහැක, උදාහරණයක් ලෙස:

මෙම අවස්ථාවේදී, Product_D වගුවේ වර්ගය තීරුව ඇතුළු කරන ලද සියලුම පේළි සඳහා පෙරනිමි අගය PC සමඟ ආදේශ කරනු ලැබේ.

පුරෝකථනයක් අඩංගු උප විමසුමක් භාවිතා කරන විට, පුරෝකථන අගය සත්‍ය (නොදන්නා !) වන පේළි පමණක් ඇතුළත් කරන බව සලකන්න. වෙනත් වචන වලින් කිවහොත්, නිෂ්පාදන වගුවේ ඇති වර්ගයේ තීරුව අවලංගු කළ හැකි නම් සහ එම අගය පේළි ගණනක තිබුනේ නම්, එම පේළි නිෂ්පාදන_D වගුවට ඇතුළු නොකෙරේ.

UNION ALL වගන්තිය සමඟ පේළියක් සාදන උප විමසුමක් භාවිතා කිරීමේ කෘතිම තාක්‍ෂණය මඟින් VALUES වගන්තියේ පේළි කන්ස්ට්‍රැක්ටරය භාවිතා කරන විට INSERT ප්‍රකාශයේ එක් පේළියක් ඇතුළු කිරීමේ සීමාව ජය ගැනීමට ඔබට ඉඩ සලසයි. එබැවින් අපට එක් INSERT ප්‍රකාශයක් භාවිතයෙන් පේළි කිහිපයක් ඇතුළු කිරීමට අවශ්‍ය නම්, අපට ලිවිය හැකිය:

    නිෂ්පාදනයට ඇතුළු කරන්න_D

    "B" AS සාදන්නා, 1158 AS ආකෘතිය, "PC" AS වර්ගය තෝරන්න

    යුනියන් සියල්ල

    "C" , 2190 , "ලැප්ටොප්" තෝරන්න

    යුනියන් සියල්ල

    තෝරන්න "D" , 3219 , "මුද්රණ යන්ත්රය" ;

අනුපිටපත් පේළි නොමැති බව සහතික වුවද UNION ALL භාවිතා කිරීම UNION ට වඩා යෝග්‍ය වේ.

පේළි කන්ස්ට්‍රැක්ටරය භාවිතයෙන් බහු ටියුපල් ඇතුළු කිරීම දැනටමත් ක්‍රියාත්මක කර ඇති බව සැලකිල්ලට ගත යුතුය Microsoft Corporation විසින් වැඩි දියුණු කරන ලද සම්බන්ධතා දත්ත සමුදා කළමනාකරණ පද්ධතිය (DBMS).ව්‍යුහගත විමසුම් භාෂාව) යනු සම්බන්ධතා දත්ත සමුදායන් තුළ දත්ත නිර්මාණය කිරීමට, වෙනස් කිරීමට සහ හැසිරවීමට භාවිතා කරන විශ්වීය පරිගණක භාෂාවකි. SQL සේවාදායකය 2008. මෙම හැකියාව අනුව, අවසාන විමසුම මෙසේ නැවත ලිවිය හැක:

    නිෂ්පාදන_D අගයන් තුළට ඇතුළු කරන්න

    ("B", 1158, "PC"),

    ("C", 2190, "ලැප්ටොප්"),


ඉහල