Аппараттық және бағдарламалық қамтамасыз етуді орнату

Transact-SQL – мәліметтерді енгізу. SQL INSERT INTO SELECT, функциядағы Ms sql insert операторы

Бәріңе сәлем! Бұл мақалада сіз қалай жасауға болатынын талқылайсыз кестеге деректерді қосыңызжылы Microsoft SQLСервер, егер сіз T-SQL тілімен аз да болса таныс болсаңыз, енді біз INSERT операторы туралы, сонымен қатар оны кестеге деректерді қосу үшін қалай пайдалануға болатыны туралы айтатынымызды түсінген боларсыз.

Кішкене теориядан бастайық.

T-SQL-де INSERT операторы

INSERTкестеге деректерді қосуға арналған T-SQL нұсқауы, яғни. жаңа жазбаларды жасау. Бұл нұсқаулықкестеге бір жол қосу үшін де, деректерді жаппай кірістіру үшін де пайдалануға болады. INSERT мәлімдемесі деректерді енгізуге рұқсатты талап етеді ( INSERT) мақсатты кестеге.

Енгізу қажет деректер бөлігінде INSERT операторын қолданудың бірнеше жолы бар:

  • Енгізілетін нақты мәндерді санау;
  • Деректер жиынын ТАҢДАУ сұрауы ретінде көрсету;
  • Деректер жиынын кестелік деректерді қайтаратын процедура шақыруы ретінде көрсету.

Жеңілдетілген синтаксис

INSERT [кесте] ( бағандар тізімі...) ҚҰНДЫЛЫҚТАР ( мәндер тізімі, … ) немесе ТАҢДАУ үлгі сұрауНемесе ОРЫНДАУ процедура

  • INSERT INTO — кестеге мәліметтер қосу командасы;
  • Кесте - жаңа жазбалар енгізілетін мақсатты кестенің атауы;
  • Бағандар тізімі - деректер кірістірілетін кестенің баған атауларының үтірмен бөлінген тізімі;
  • VALUES – кесте мәнінің конструкторы, оның көмегімен біз кестеге енгізетін мәндерді көрсетеміз;
  • Мәндер тізімі - үтірмен бөлінген мәндер енгізілетін мәндер. Олар бағандар тізімінде бағандар тізімделу ретімен тізімделеді;
  • ТАҢДАУ — кестеге кірістіру үшін деректерді таңдауға арналған сұрау. Сұрау қайтаратын нәтижелер жинағы бағандар тізіміне сәйкес келуі керек;
  • EXECUTE – кестеге кірістіру үшін деректерді алу үшін процедураға шақыру. Сақталған процедура арқылы қайтарылған нәтижелер жинағы бағандар тізіміне сәйкес келуі керек.

INSERT INTO операторының жеңілдетілген синтаксисі осылай көрінеді, көп жағдайда кестелерге жаңа жазбаларды осылай қосасыз.

Деректерді енгізетін бағандар тізімін алып тастауға болады, бұл жағдайда олардың реті кестедегі бағандардың нақты реті негізінде анықталады. Дегенмен, таңдау сұрауын енгізу немесе жазу үшін мәндерді көрсеткенде бұл ретті есте сақтау керек. Жеке, мен сізге әлі де деректерді қосуды жоспарлайтын бағандар тізімін көрсетуді ұсынамын.

Сондай-ақ, бағандар тізімінде және мәндер тізімінде тиісінше міндетті бағандар болуы керек екенін есте ұстаған жөн, бұл NULL мәнін қамтымайтындар. Егер олар көрсетілмесе және бағанда әдепкі мән болмаса, қате пайда болады.

Сондай-ақ, кірістіретін мәндердің деректер түрі осы мән енгізілетін бағанның деректер түріне сәйкес келуі немесе кем дегенде жасырын түрлендіруді қолдауы керек екенін атап өткім келеді. Бірақ мен сізге деректер түрін басқаруға кеңес беремін ( пішім) мәндер, мәндер тізімінде де, ТАҢДАУ сұрауында да.

Теория жеткілікті, практикаға көшейік.

Бастапқы деректер

Кестеге мәліметтерді қосу үшін бізге кестенің өзі керек, сәйкесінше оны құрайық және біз оған жазбаларды қосуға тырысамыз.

Ескерту! Барлық мысалдар Microsoft SQL Server 2016 Express бағдарламасында іске қосылады.

КЕСТЕНІ ЖАСАУ TestTable( IDENTITY(1,1) NO NULL, (100) NO NULL, NULL ЕМЕС)

Біздің сынақ кестемізде бағасы бар өнімдер тізімі болады.

Сондай-ақ мысалдарда кестеге деректерді қосу үшін кесте мәнін қайтаратын процедураны қолданамыз, сондықтан оны да жасайық.

ПРОЦЕДУРАНЫ ЖАСАУ СынақПроцедурасын БАСТАУ САЙЫНДА Өнім атауын, бағасын Сынақ кестесінен ТАҢДАҢЫЗ.

Мысалы, ол жаңадан жасалған TestTable кестесінен деректерді қайтарады.

Ескерту!

Түсінгеніңіздей, бұл материалды оқу T-SQL тілін белгілі бір деңгейде білуді білдіреді, сондықтан сізге бірдеңе түсініксіз болса, келесі материалдармен танысуды ұсынамын:

1-мысал - Кесте мәнін құрастырушы көмегімен кестеге жаңа жазба қосу

Алдымен, бір жазбаны қосуға тырысайық және бірден нәтижеге қарайық, яғни. Таңдау үшін сұрау жазайық.

INSERT INTO TestTable(ProductName, Price) VALUES("Компьютер", 100) Сынақ кестесінен * ТАҢДАУҒА ӨТУ

Кесте атауынан кейін біз деректерді қосатын бағандардың атауларын үтірмен бөліп, тізгенімізді көре аласыз, содан кейін біз көрсеткен кілт сөз ҚҰНДЫЛЫҚТАРжәне жақшаға, сондай-ақ, үтірмен бөлінген бірдей тәртіпте, біз енгізгіміз келетін мәндерді жаздық.

INSERT операторынан кейін SELECT операторын жазып, оларды GO командасымен бөлдім.

Енді бізге бірнеше жолдарды қосу керек деп елестетіп көрейік. Ол үшін келесі сұрауды жазамыз.

INSERT INTO TestTable(ProductName, Price) VALUES («Компьютер», 100), («Пернетақта», 20), («Монитор», 50) Сынақ кестесінен ТАҢДАУҒА ӨТУ *


2-мысал - ТАҢДАУ сұрауы арқылы кестеге жаңа жолдарды қосу

Көбінесе кестеге көптеген деректерді қосу қажеттілігі туындайды, мысалы, таңдау сұранысы негізінде, яғни. ТАҢДАУ. Ол үшін VALUES орнына сұрауды көрсету керек.

INSERT INTO TestTable(ProductName, Price) ТАҢДАУ Тауар атауын, бағасын Сынақ кестесінен ТАҢДАУ Идентификаторы >


Бұл мысалда біз TestTable кестесінен деректерді қайтаратын SELECT сұрауын жаздық, бірақ барлығы емес, тек 2-ден үлкен идентификаторы барлар. Және нәтиже бірдей TestTable кестесіне кірістірілді.

Кестеге жазбаларды бағандар тізімін көрсетпей қосу әдісінің мысалы ретінде жоғарыдағы сұраумен бірдей әрекетті орындайтын басқа кірістіру сұрауын жазайық, тек ол кірістірілетін бағандардың тізімін көрсетпейді.

INSERT INTO TestTable ТАҢДАУ Өнім атауын, бағасын Сынақ кестесінен алыңыз. Id > 2 Сынақ кестесінен ТАҢДАУ * ӨТУ


Бұл жағдайда, сынақ кестесінде бірінші баған Өнім атауы, екіншісі - Баға екеніне сенімдіміз, сондықтан оны осылай жазуға мүмкіндік аламыз. Бірақ, тағы да, іс жүзінде бағандар тізімін көрсеткен дұрыс.

Байқасаңыз, мен барлық мысалдарда Id бағанын көрсетпедім, бірақ бізде ол бар, қате болған жоқ, бұл бағанның IDENTITY қасиеті болғандықтан, ол автоматты түрде идентификаторларды жасайды, сондықтан мұндай бағанға деректерді енгізу оңай болады' т жұмыс.

3-мысал - Сақталған процедураны пайдаланып кестеге жаңа жазбаларды қосу

Енді сақталатын процедура бізге қайтарылатын деректерді кестеге кірістірейік. Мұндағы мағына бірдей, VALUES орнына және сұраудың орнына процедура шақыруын көрсетеміз. Бірақ сіз түсінгеніңіздей, процедура арқылы қайтарылған бағандардың реті мен саны кірістірілетін бағандар тізіміне қатаң сәйкес келуі керек ( бағандар тізімі көрсетілмесе де).

INSERT INTO TestTable(ProductName, Price) EXEC TestProcedure Сынақ кестесінен * ТАҢДАУ ӨТУ


Бұл материал нұсқауларды түсінуге көмектесті деп үміттенемін. INSERT INTO, және менде қазір бәрі бар!

Соңғы жаңарту: 13.07.2017

Деректерді қосу үшін келесі ресми синтаксисі бар INSERT пәрмені пайдаланылады:

Кесте_атын INSERT [(баған_тізімі)] VALUES (мән1, мән2, ... мәнN)

Басында INSERT INTO операторы бар, содан кейін жақшада үтірмен бөлінген, деректер қосылатын бағандар тізімін, ал соңында VALUES сөзінен кейін жақшада мәндерді көрсетуге болады. бағандар үшін тізімде көрсетілген.

Мысалы, келесі дерекқор бұрын жасалған делік:

ДЕРЕКТЕР БАЗЫН ҚҰРУ өнімдеріdb; GO USE productsdb; CREATE TABLE өнімдері (Id INT IDENTITY PRIMARY KEY, Өнім атауы NVARCHAR(30) NULL ЕМЕС, Өндіруші NVARCHAR(20) NULL ЕМЕС, Өнім саны INT Әдепкі 0, баға MONEY NULL ЕМЕС)

Оған INSERT командасы арқылы бір жолды қосамыз:

INSERT Products VALUES («iPhone 7», «Apple», 5, 52000)

Сәтті аяқталғаннан кейін SQL сервері Management Studio хабар жолағында "1 жол(лар) әсер етті" көрсетуі керек:

VALUES кілт сөзінен кейін жақшадағы бағандарға арналған мәндер олар жарияланған ретпен берілетінін ескеріңіз. Мысалы, жоғарыдағы CREATE TABLE мәлімдемесінде бірінші баған Id екенін көре аласыз. Бірақ ол үшін IDENTITY төлсипаты орнатылғандықтан, бұл бағанның мәні автоматты түрде жасалады және оны өткізіп жіберуге болады. Екінші баған Өнім атауын білдіреді, сондықтан бірінші мән, "iPhone 7" жолы сол бағанға беріледі. Екінші мән, "Apple" жолы үшінші баған Өндірушіге жіберіледі және т.б. Яғни, мәндер бағандарға келесідей беріледі:

    Өнім атауы: "iPhone 7"

    Өндіруші: Apple

Сондай-ақ, мәндерді енгізу кезінде мәндер қосылатын тікелей бағандарды көрсетуге болады:

INSERT INTO Өнімдерге (өнім атауы, бағасы, өндіруші) МӘНДЕР («iPhone 6S», 41000, «Apple»)

Мұнда мән тек үш баған үшін көрсетілген. Енді мәндер бағандар ретімен беріледі:

    Өнім атауы: "iPhone 6S"

    Өндіруші: Apple

Белгіленбеген бағандар үшін (бұл жағдайда, ProductCount) әдепкі мән DEFAULT төлсипаты орнатылған болса немесе NULL мәніне қосылады. Дегенмен, анықталмаған бағандар нөл болуы немесе DEFAULT төлсипаты болуы керек.

Сонымен қатар біз бірден бірнеше жолды қоса аламыз:

ӨНІМДЕРДІҢ МӘНДЕРІНЕ КІРУ («iPhone 6», «Apple», 3, 36000), («Galaxy S8», «Samsung», 2, 46000), («Galaxy S8 Plus», «Samsung», 1, 56000)

Бұл жағдайда кестеге үш жол қосылады.

Сондай-ақ, қосу кезінде біз әдепкі мәннің DEFAULT кілт сөзі немесе NULL арқылы баған үшін пайдаланылатынын көрсете аламыз:

INSERT INTO Өнімдер (өнім атауы, өндіруші, өнім саны, бағасы) МӘНДЕР («Mi6», «Xiaomi», ӘДІСТЕМЕЛІК, 28000)

Бұл жағдайда ProductCount бағаны үшін әдепкі мән пайдаланылады (егер ол орнатылған болса, орнатылмаған болса, NULL).

Барлық бағандарда әдепкі мәнді көрсететін DEFAULT төлсипаты болса немесе нөлге тең болса, онда барлық бағандар үшін әдепкі мәндерді енгізуге болады:

Өнімдерге Әдепкі МӘНДЕРДІ ЕНГІЗУ

Бірақ егер сіз Өнімдер кестесін алсаңыз, онда мұндай пәрмен орындалмайды, өйткені бірнеше өрістерде DEFAULT атрибуты жоқ және бір уақытта нөлдік мәндерге рұқсат бермейді.

INSERT операторы кестеге жаңа жазбаларды кірістіреді. Бұл жағдайда баған мәндері әріптік тұрақтылар болуы мүмкін немесе ішкі сұраудың нәтижесі болуы мүмкін. Бірінші жағдайда әрбір жолды кірістіру үшін жеке INSERT операторы қолданылады; екінші жағдайда ішкі сұрау қайтарған жолдардың саны кірістіріледі.

Оператор синтаксисі келесідей:

    КІРУ [(,...)]

    (ҚҰНДЫЛЫҚТАР(,…) )

  1. | ( Әдепкі МӘНДЕР )

Ұсынылған синтаксистен көріп отырғаныңыздай, бағандар тізімі міндетті емес (айтқандай шаршы жақшаларсинтаксистің сипаттамасында). Егер ол жоқ болса, енгізілген мәндердің тізімі толық болуы керек, яғни кестенің барлық бағандары үшін мәндерді беру керек. Мәндердің реті жолдар енгізілген кесте үшін CREATE TABLE операторында көрсетілген ретпен сәйкес келуі керек. Сонымен қатар, бұл мәндер олар енгізілген бағандармен бірдей деректер түрінде болуы керек. Мысал ретінде жасаған Өнім кестесіне жолды енгізуді қарастырыңыз келесі операторКЕСТЕ ҚҰРУ:

    TABLE өнімін ЖАСАУ

    maker char (1 ) NO NULL ,

    varchar үлгісі(4) NULL ЕМЕС,

    varchar(7) ЕМЕС NULL теріңіз

Осы кестеге В өндірушінің 1157 ДК үлгісін қосу талап етілсін, мұны келесі мәлімдеме арқылы жасауға болады:

    Өнімге кірістіру

    МӘНДЕР («В» , 1157 , «ДК» ) ;

Бағандар тізімін көрсетсеңіз, олардың реттілігінің «табиғи» ретін өзгертуге болады:

    INSERT INTO өнім (түрі, үлгісі, өндірушісі)

    МӘНДЕР («ДК» , 1157 , «Б» ) ;

Бұл дизайнды тек ауырлататын мүлдем қажетсіз функция болып көрінеді. Дегенмен, егер бағандарда әдепкі мәндер болса, ол жеңеді. Келесі кесте құрылымын қарастырыңыз:

    КЕСТЕЛЕР өнімін ЖАСАУ_D

    жасаушы таңба (1 ) NULL ,

    varchar үлгісі(4) NULL ,

    varchar теріңіз (7) NULL ЕМЕС Әдепкі "ДК"

Мұнда барлық бағандардың мәндерінің әдепкі мәндері бар екенін ескеріңіз (алғашқы екеуі NULL және соңғы баған түрі - ДК). Енді біз жаза аламыз:

    INSERT INTO Product_D(модель, жасаушы)

    VALUES(1157 , "B" ) ;

Бұл жағдайда жол енгізілген кезде жетіспейтін мән әдепкі мәнмен, ДК ауыстырылады. CREATE TABLE мәлімдемесіндегі баған үшін әдепкі мән көрсетілмесе және NULL параметрін пайдалануды болдырмау үшін NOT NULL шектеуі көрсетілгенін ескеріңіз. осы бағанкестеде, әдепкі мән NULL болып табылады.

Сұрақ туындайды: бағандар тізімін көрсетпеуге және соған қарамастан әдепкі мәндерді қолдануға бола ма? Жауап иә. Мұны істеу үшін мәнді нақты көрсетудің орнына DEFAULT сақталған сөзін пайдаланыңыз:

    Өнiмге ендiру_D

    МӘНДЕР («В» , 1158 , Әдепкі ) ;

Барлық бағандарда әдепкі мәндер болғандықтан, әдепкі мәндері бар жолды енгізу үшін мынаны жазуға болады:

    Өнiмге ендiру_D

    МӘНДЕР ( Әдепкі , Әдепкі , Әдепкі );

Дегенмен, бұл жағдай үшін арнайы ӘДЕПТІ МӘНДЕР құрылымы бар (оператор синтаксисін қараңыз), оны жоғарыдағы операторды келесідей қайта жазу үшін пайдалануға болады.

    Өнім_D Әдепкі МӘНДЕРІНЕ ЕНГІЗУ ;

Кестеге жолды кірістіру кезінде барлық шектеулер қойылатынын ескеріңіз бұл кесте. Бұл бастапқы кілт немесе бірегей индекс шектеулері, CHECK түрін тексеру шектеулері, анықтамалық тұтастық шектеулері болуы мүмкін. Кез келген шектеу бұзылса, жолды енгізу қабылданбайды. Енді ішкі сұрауды пайдалану жағдайын қарастырайық. Өнім_D кестесіне үлгілерге қатысты Өнім кестесіндегі барлық жолдарды кірістіргіміз келеді делік дербес компьютерлер(түрі='ДК'). Бізге қажет мәндер әлдеқашан кестеде болғандықтан, кірістірілген жолдарды қолмен қалыптастыру, біріншіден, тиімсіз, екіншіден, енгізу қателеріне жол беруі мүмкін. Ішкі сұрауды пайдалану мына мәселелерді шешеді:

Ішкі сұрауда «*» таңбасын пайдалану бұл жағдайда негізделген, өйткені бағандардың реті екі кесте үшін де бірдей. Егер олай болмаса, бағандар тізімі INSERT операторында немесе ішкі сұрауда немесе бағандардың ретіне сәйкес келетін екеуінде де қолданылуы керек еді:

Мұнда, бұрынғыдай, бар әдепкі мәндерді пайдаланғыңыз келсе, барлық бағандарды көрсете алмайсыз, мысалы:

Бұл жағдайда Өнім_D кестесінің түр бағаны барлық кірістірілген жолдар үшін әдепкі ДК мәніне орнатылады.

Құрамында предикат бар ішкі сұрауды пайдаланған кезде предикаттың мәні ШЫН (БІЛІМІЗ емес!) болатын жолдар ғана кірістірілетінін ескеріңіз. Басқаша айтқанда, егер Өнім кестесіндегі түр бағаны нөлге тең болса және бұл мән бірнеше жолдарда болса, бұл жолдар Өнім_D кестесіне кірістірілмейді.

VALUES сөйлемінде жол конструкторын пайдаланған кезде INSERT операторына жалғыз жолды кірістіру шектеуін еңсеру үшін, UNION ALL сөйлемімен жолды құрайтын ішкі сұрауды пайдалану жасанды амал болып табылады. Сондықтан бір INSERT операторымен бірнеше жолдарды кірістіру қажет болса, біз жаза аламыз:

    Өнiмге ендiру_D

    "B" AS жасаушысын, 1158 AS үлгісін, "PC" AS түрін ТАҢДАҢЫЗ

    БАРЛЫҚ ОДАҚ

    "C" , 2190 , "Ноутбукты" ТАҢДАҢЫЗ

    БАРЛЫҚ ОДАҚ

    ТАҢДАУ "D" , 3219 , "Принтер" ;

Қайталанатын жолдар болмайтынына кепілдік берілсе де, UNION ALL функциясын пайдалану жақсырақ, өйткені бұл жағдайда көшірмелерді тексеру болмайды.

Жол конструкторы арқылы бірнеше кортеждерді кірістіру қазірдің өзінде іске асырылғанын атап өткен жөн Microsoft корпорациясы әзірлеген реляциялық дерекқорды басқару жүйесі (ДҚБЖ).Құрылымдық сұрау тілі – реляциялық деректер қорындағы деректерді құру, өзгерту және өңдеу үшін қолданылатын жалпы мақсаттағы компьютер тілі. SQL сервері 2008. Осы мүмкіндікті ескере отырып, соңғы сұрауды келесідей қайта жазуға болады:

    Өнім_D МӘНДЕРІНЕ ЕНГІЗУ

    («В» , 1158 , «ДК» ) ,

    («C» , 2190 , «Нутбук» ) ,

Команда кестеге жолдар қосадынемесе негізгі кестенің көрінісі.

Sql INSERT пәрмен синтаксисі

Пәрмен синтаксисін кірістіру


INSERT командасының негізгі түйінді сөздері мен параметрлері
  • схема- өкілеттік идентификаторы, әдетте кейбір пайдаланушының атымен бірдей
  • кесте көрінісі- жолдар енгізілетін кестенің атауы; егер көрініс көрсетілсе, жолдар көріністің негізгі кестесіне кірістіріледі
  • ішкі сұрау_1- сервер көрініс сияқты өңдейтін қосалқы сұрау
  • баған- әрбір кірістірілген жол үшін сөз тіркесінің мәні енгізілетін кестенің немесе көріністің бағаны ҚҰНДЫЛЫҚТАРнемесе ішкі сұрау; егер кесте бағандарының бірі осы тізімнен алынып тасталса, кірістірілген жолдың бағанының мәні кесте жасалған кезде анықталған бағанның әдепкі мәні болып табылады. Бағандар тізімі толығымен алынып тасталса, сөйлем ҚҰНДЫЛЫҚТАРнемесе сұрау кестедегі барлық бағандар үшін мәндерді анықтауы керек
  • ҚҰНДЫЛЫҚТАР- кестеге немесе көрініске енгізілетін мәндер жолын анықтайды; сөйлемде мағына анықталуы керек ҚҰНДЫЛЫҚТАРбағандар тізіміндегі әрбір баған үшін
  • ішкі сұрау_2- кестеге енгізілген жолдарды қайтаратын ішкі сұрау; осы ішкі сұраудың таңдау тізімінде бекітудегі бағандар тізімімен бірдей бағандар саны болуы керек

Мәлімдеме сөз тіркесімен ҚҰНДЫЛЫҚТАРкестеге бір жолды қосады. Бұл жолда сөз тіркесі арқылы анықталған мәндер бар ҚҰНДЫЛЫҚТАР.
көмегімен бекіту ішкі сұраусөз тіркесінің орнына ҚҰНДЫЛЫҚТАРкестеге ішкі сұраумен қайтарылған барлық жолдарды қосады. Сервер өңделуде ішкі сұраужәне әрбір қайтарылған жолды кестеге кірістіреді. Ішкі сұрау ешбір жолды таңдамаса, сервер кестеге ешқандай жолдарды кірістірмейді.
Ішкі сұраукез келген кестеге немесе көрініске, соның ішінде бекітудің мақсатты кестесіне сілтеме жасай алады . Сервер кестедегі бағандардың ішкі орналасуына және фразалық мәндердің ретіне негізделген жаңа жолдардағы өрістерге мәндерді тағайындайды. ҚҰНДЫЛЫҚТАРнемесе сұрауды таңдау тізімінде. Егер бағандар тізімінде кез келген баған жоқ болса, сервер оларға кесте жасалған кезде анықталған әдепкі мәндерді тағайындайды. Осы бағандардың кез келгенінде NO NULL шектеуі болса, сервер шектеудің бұзылғанын көрсететін қатені қайтарады және INSERT мәлімдемесін болдырмайды.
INSERT операторы шығарылған кезде кестеде анықталған кез келген INSERT триггері қосылады.

INSERT INTO 1-мысал

INSERT INTOбөлім ҚҰНДЫЛЫҚТАР(50, PRODUCTS, САН-ФРАНЦИСКО);

INSERT INTOТұтынушылар (қала, cname, cnum) ҚҰНДЫЛЫҚТАР(«Лондон», «Хоффман», 2001);

INSERT INTO 2-мысал
Келесі пәрмен сыйақылар кестесіне сыйақылары табыстың 25% асатын фирма қызметкерлерінің деректерін көшіреді:

INSERT INTOбонус ТАҢДАУ эмал, жұмыс, sal, comm FROM emp WHERE comm > 0,25 * sal;

INSERT INTO 3-мысал
Кіру қажет болса NULL-мән болса, оны қалыпты мән ретінде келесідей көрсету керек:

INSERT INTO Salespeople VALUES(1001,'Peel',NULL,12);

INSERT INTO 4-мысал
Пәрменді сұрау арқылы бір кестеден мәндерді алу және оларды басқа кестеге орналастыру үшін пайдалануға болады. Ол үшін сөйлемді ауыстыру жеткілікті ҚҰНДЫЛЫҚТАРтиісті өтінішке:

INSERT INTO Londonstaff SELECT * FROM Salespeople WHERE қала = 'Лондон';

MySQL INSERT

Дерекқорға жаңа жолдарды кірістіру үшін MySQL деректеріпайдаланылады INSERT командасы, пәрмен мысалдары төменде берілген:
INSERT INTO 1-мысал.
Кесте_атауына жаңа жол кірістіру.

INSERT INTO

INSERT INTO 2-мысал.
Кесте_атауы кестесіне бізге қажет бағандарға деректерді кірістіруді көрсететін жаңа жолды кірістіру.

INSERT INTOкесте_атауы VALUES('1','165','0','атауы');

Деректер базасында MySQLбір пәрмен арқылы бірнеше жаңа жолдарды енгізуге болады.
INSERT INTO 3-мысал.
Кестенің_атауына бірнеше жолдарды енгізіңіз.

INSERT INTOкесте_атауы (tbl_id, chislo, chislotwo, атау) VALUES ('1','159','34','name1'), ('2','14','61','name2'), ('3' ','356','8','name3');

Бұрын талқыланған ТАҢДАУ мәлімдемесіне қоса, Деректерді өңдеу тілі (DML) тағы үш мәлімдемені қамтиды: INSERT, UPDATE және DELETE. SELECT операторы сияқты бұл үш мәлімдеме кестелерде немесе көріністерде жұмыс істейді. Бұл мақалада INSERT мәлімдемесі қарастырылады, ал қалған екі мәлімдеме келесі мақалада талқыланады.

INSERT мәлімдемесікестеге жолдарды (немесе жолдардың бөліктерін) кірістіреді. Бұл нұсқаудың екі түрлі формасы бар:

қойынды_атын INSERT [(col_list)] ӘДЕПТІ МӘНДЕР | VALUES (( ӘДІПТІ | NULL | өрнек ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement | execute_statement) Синтаксистік конвенциялар

Мәлімдеменің бірінші формасы кестеге бір жолды (немесе оның бөлігін) кірістіруге мүмкіндік береді. Ал INSERT операторының екінші формасы кестеге SELECT операторының нәтижелер жиынын немесе EXECUTE операторымен орындалатын сақталатын процедураны енгізуге мүмкіндік береді. Сақталған процедура кестеге кірістірілетін деректерді қайтаруы керек. INSERT операторымен пайдаланылған кезде, SELECT операторы сәйкес бағандардың деректер түрлері үйлесімді болған жағдайда, деректер енгізілетін басқа немесе бірдей кестеден мәндерді таңдай алады.

Екі пішін үшін де әрбір енгізілген мәннің деректер түрі сәйкес кесте бағанының деректер түрімен үйлесімді болуы керек. Барлық жол және уақытша деректер тырнақшаға алынуы керек; Сандық мәндерді тырнақшаға алудың қажеті жоқ.

Жалғыз жол кірістіру

INSERT мәлімдемесінің екі пішіні үшін де бағандардың анық тізімі міндетті емес. Бағандар тізімінің болмауы кестенің барлық бағандарын көрсетуге тең.

Әдепкі МӘНДЕР параметрібарлық бағандар үшін әдепкі мәндерді кірістіреді. TIMESTAMP деректер түрі немесе IDENTITY сипаты бар бағандар жүйемен автоматты түрде жасалған мәндермен әдепкі бойынша кірістіріледі. Басқа деректер түрлерінің бағандары үшін сәйкес нөлдік емес әдепкі мән, егер бар болса немесе NULL ішіне енгізіледі. әйтпесе. Егер баған үшін нөлдік мәндерге рұқсат берілмесе және баған үшін әдепкі мән анықталмаса, INSERT мәлімдемесі орындалмайды және сәйкес хабарлама көрсетіледі.

Келесі мысал деректердің аз мөлшерін дерекқорға кірістіру үшін INSERT операторын пайдалану жолын көрсететін SampleDb дерекқорындағы Қызметкер кестесіне жолдарды кірістіреді:

USE SampleDb; INSERT INTO Employee VALUES(34990, "Андрей", "Батонов", "d1"); INSERT INTO Employee VALUES(38640, "Алексей", "Васин", "d3");

Олар екеу әртүрлі жолдармәндерді жаңа жолға енгізу. Төмендегі мысалдағы INSERT операторы NULL кілт сөзін анық пайдаланады және NULL мәнін сәйкес бағанға кірістіреді:

USE SampleDb; INSERT INTO Employee VALUES(34991, "Андрей", "Батонов", NULL);

Кестенің кейбір (бірақ барлығы емес) бағандарына мәндерді енгізу үшін әдетте сол бағандарды нақты көрсету керек. Көрсетілмеген бағандар NULL мәндерге рұқсат беруі немесе олар үшін анықталған әдепкі мәнге ие болуы керек.

USE SampleDb; INSERT INTO Employee(Id, Name, Name) VALUES (34992, "Андрей", "Батонов");

Алдыңғы екі мысал баламалы. Қызметкерлер кестесінде нөлдік мәндерге рұқсат беретін жалғыз баған БөлімNumber бағаны болып табылады және барлық басқа бағандар үшін бұл мән CREATE TABLE мәлімдемесіндегі NOT NULL сөйлемімен тыйым салынған.

Құндылықтардың реті сөйлем ҚҰНДЫЛЫҚТАР INSERT операторлары CREATE TABLE операторында көрсетілген тәртіптен өзгеше болуы мүмкін. Мұндай жағдайда олардың реті бағандар тізімінде сәйкес бағандардың тізімделген ретімен сәйкес келуі керек. Төменде деректерді түпнұсқадан басқа ретпен енгізудің мысалы берілген:

USE SampleDb; INSERT INTO Қызметкер(БөлімНөмірі, Тегі, Идентификаторы, Аты) МӘНДІЛЕРІН ("d1", "Батонов", 34993, "Андрей");

Бірнеше жолдарды кірістіру

INSERT операторының екінші пішіні кестеге ішкі сұрау арқылы таңдалған бір немесе бірнеше жолдарды кірістіреді. Төмендегі мысал INSERT операторының екінші пішінін пайдаланып кестеге жолдарды кірістіру жолын көрсетеді. Бұл жағдайда Мәскеуде орналасқан бөлімдердің нөмірлері мен атауларын таңдауға сұраныс жасалады және алынған жиынтыққа жүктеледі. жаңа үстелбұрын құрылған.

Жоғарыдағы мысалда жасалған жаңа Мәскеу департаменті кестесінде жоқ "Орын" бағанын қоспағанда, бар Бөлім кестесімен бірдей бағандар бар. INSERT операторындағы ішкі сұрау «Орын» бағанының мәні Мәскеу болып табылатын Бөлім кестесіндегі барлық жолдарды таңдайды, содан кейін олар сұраудың басында жасалған жаңа кестеге кірістіріледі.

Төмендегі мысал INSERT операторының екінші пішінін пайдаланып кестеге жолдарды кірістірудің басқа әдісін көрсетеді. Бұл жағдайда p2 жобасында жұмыс істейтін «Менеджер» лауазымы бар барлық қызметкерлер үшін персонал нөмірлерін, жоба нөмірлерін және жобаның басталу күндерін таңдау үшін сұраныс орындалады, содан кейін алынған жиынтықты басында жасалған жаңа кестеге жүктейді. сұрау бойынша:

USE SampleDb; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR(4) NO NULL, EnterDate DATE); INSERT INTO ManagerTeam(EmpId, ProjectNumber, EnterDate) ТАҢДАУ EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Менеджер";

INSERT операторы арқылы жолдарды кірістірмес бұрын, MoscowDepartment және ManagerTeam кестелері (жоғарыдағы мысалдардағы) бос болды. Егер кесте бұрыннан бар болса және деректер жолдары болса, оған жаңа жолдар қосылады.

Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!