SQL INSERT INTO SELECT განცხადება. SQL მოთხოვნა INSERT INTO - შეავსეთ მონაცემთა ბაზა ინფორმაციის Sql ბრძანების სინტაქსით მწკრივის ჩასართავად

24.03.2023

SQL-ის გამოყენებით შეგიძლიათ დააკოპიროთ ინფორმაცია ერთი ცხრილიდან მეორეზე.

INSERT INTO SELECT განცხადება აკოპირებს მონაცემებს ერთი ცხრილიდან და ჩასვამს არსებულ ცხრილში.

SQL INSERT INTO SELECT განცხადება,

INSERT INTO SELECT განცხადება ირჩევს მონაცემებს ერთი ცხრილიდან და ათავსებს მათ არსებულ ცხრილში. სამიზნე ცხრილში არსებული მწკრივები არ იცვლება.

SQL INSERT INTO SELECT, სინტაქსი

ჩვენ შეგვიძლია დავაკოპიროთ ყველა სვეტი ერთი ცხრილიდან მეორე არსებულ ცხრილში:

ᲩᲐᲓᲔᲗ ცხრილი 2
აირჩიეთ * FROM ცხრილი1;

ან ჩვენ შეგვიძლია დავაკოპიროთ მხოლოდ სასურველი სვეტები სხვა, არსებულ ცხრილში:

ᲩᲐᲓᲔᲗ ცხრილი 2
(სვეტის_სახელ(ებ)ი)
აირჩიეთ სვეტის_სახელ(ებ)ი
FROM ცხრილი1;

დემო მონაცემთა ბაზა

ამ გაკვეთილში ჩვენ გამოვიყენებთ ცნობილ Northwind მონაცემთა ბაზას.

ქვემოთ მოცემულია არჩევანი "მომხმარებელთა" ცხრილიდან:

მომხმარებლის იდენტიფიკაციაკლიენტის სახელისაკონტაქტო პირიმისამართიქალაქისაფოსტო ინდექსიᲥვეყანა
1 ალფრედ ფუტერკისტე მარია ანდერსი ობერეს ქ. 57 ბერლინი 12209 გერმანია
2 ანა ტრუხილიო ემპარედოსი და ჰელადოსი ანა ტრუხილიო ავდა. de la Constitucion 2222 მექსიკა დ.ფ. 05021 მექსიკა
3 ანტონიო მორენო ტაკერია ანტონიო მორენო მატადეროსი 2312 მექსიკა დ.ფ. 05023 მექსიკა

და არჩევანი "მომწოდებლების" ცხრილიდან:

SQL INSERT INTO SELECT, მაგალითები

მხოლოდ რამდენიმე სვეტის კოპირება "მომწოდებლებიდან" "მომხმარებლებში":

დააკოპირეთ მხოლოდ გერმანელი მომწოდებლები "მომხმარებლებში".

Ბოლო განახლება: 13.07.2017

მონაცემების დასამატებლად გამოიყენება INSERT ბრძანება, რომელსაც აქვს შემდეგი ფორმალური სინტაქსი:

ცხრილის_სახელის ჩასმა [(სვეტის_სიტი)] VALUES (მნიშვნელობა1, მნიშვნელობა2, ... მნიშვნელობაN)

დასაწყისში არის INSERT INTO განცხადება, შემდეგ ფრჩხილებში შეგიძლიათ მიუთითოთ მძიმით გამოყოფილი სვეტების სია, რომლებშიც უნდა დაემატოს მონაცემები და ბოლოს სიტყვის VALUES-ის შემდეგ, ფრჩხილებში, მნიშვნელობები. ჩამოთვლილია სვეტებისთვის დასამატებელი.

მაგალითად, ვთქვათ, შემდეგი მონაცემთა ბაზა შეიქმნა ადრე:

მონაცემთა ბაზის შექმნა productsdb; GO USE productsdb; შექმენით ცხრილის პროდუქტები (ID INT IDENTITY PRIMARY KEY, პროდუქტის სახელი NVARCHAR(30) NOT NULL, მწარმოებელი NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, ფასი MONEY NOT NULL)

მოდით დავუმატოთ მას ერთი ხაზი INSERT ბრძანების გამოყენებით:

INSERT Products VALUES ("iPhone 7", "Apple", 5, 52000)

წარმატებით დასრულების შემდეგ SQL სერვერიმენეჯმენტის სტუდიამ უნდა აჩვენოს „დაზარალებული 1 მწკრივი“ შეტყობინების ველში:

გაითვალისწინეთ, რომ VALUES საკვანძო სიტყვის შემდეგ ფრჩხილებში მოცემული სვეტების მნიშვნელობები გადაეცემა იმ თანმიმდევრობით, რომლითაც ისინი გამოცხადებულია. მაგალითად, ზემოთ მოცემულ CREATE TABLE-ში, ხედავთ, რომ პირველი სვეტი არის Id. მაგრამ რადგან მას IDENTITY ატრიბუტი აქვს დაყენებული, ამ სვეტის მნიშვნელობა ავტომატურად გენერირდება და მისი გამოტოვება შეიძლება. მეორე სვეტი წარმოადგენს ProductName-ს, ამიტომ პირველი მნიშვნელობა, სტრიქონი "iPhone 7", გადაეცემა ამ სვეტს. მეორე მნიშვნელობა, სტრიქონი "Apple", გადაეცემა მესამე სვეტს Manufacturer და ა.შ. ანუ, მნიშვნელობები გადაეცემა სვეტებს შემდეგნაირად:

    პროდუქტის სახელი: "iPhone 7"

    მწარმოებელი: Apple

ასევე, მნიშვნელობების შეყვანისას, შეგიძლიათ მიუთითოთ უშუალო სვეტები, რომლებშიც დაემატება მნიშვნელობები:

INSERT INTO პროდუქტებში (პროდუქტის სახელი, ფასი, მწარმოებელი) VALUES ("iPhone 6S", 41000, "Apple")

აქ მნიშვნელობა მითითებულია მხოლოდ სამი სვეტისთვის. ახლა კი მნიშვნელობები გადაეცემა სვეტების თანმიმდევრობით:

    პროდუქტის სახელი: "iPhone 6S"

    მწარმოებელი: Apple

დაუზუსტებელი სვეტებისთვის (ამ შემთხვევაში, ProductCount), ნაგულისხმევი მნიშვნელობა დაემატება, თუ დაყენებულია DEFAULT ატრიბუტი ან NULL. თუმცა, დაუზუსტებელი სვეტები უნდა იყოს nullable ან ჰქონდეს DEFAULT ატრიბუტი.

ჩვენ ასევე შეგვიძლია რამდენიმე ხაზის ერთდროულად დამატება:

ჩადეთ პროდუქტებში VALUES ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

ამ შემთხვევაში, სამი სტრიქონი დაემატება ცხრილს.

ასევე, დამატებისას შეგვიძლია განვსაზღვროთ, რომ ნაგულისხმევი მნიშვნელობა გამოყენებული იქნას სვეტისთვის DEFAULT საკვანძო სიტყვის ან NULL-ის გამოყენებით:

INSERT INTO პროდუქტებში (პროდუქტის სახელი, მწარმოებელი, პროდუქტის რაოდენობა, ფასი) VALUES ("Mi6", "Xiaomi", DEFAULT, 28000)

ამ შემთხვევაში, ნაგულისხმევი მნიშვნელობა გამოყენებული იქნება ProductCount სვეტისთვის (თუ დაყენებულია, თუ არა, მაშინ NULL).

თუ ყველა სვეტს აქვს ნაგულისხმევი ატრიბუტი, რომელიც განსაზღვრავს ნაგულისხმევ მნიშვნელობას, ან ნულდება, მაშინ შეგიძლიათ ჩასვათ ნაგულისხმევი მნიშვნელობები ყველა სვეტისთვის:

ჩადეთ პროდუქტებში ნაგულისხმევი ღირებულებები

მაგრამ თუ აიღებთ პროდუქტების ცხრილს, მაშინ ასეთი ბრძანება ვერ მოხდება, რადგან რამდენიმე ველს არ აქვს DEFAULT ატრიბუტი და ამავე დროს არ იძლევა null მნიშვნელობებს.

წინა განყოფილებებში განვიხილეთ წინასწარ შექმნილი ცხრილებიდან მონაცემების მოპოვების სამუშაო. ახლა დროა გავარკვიოთ, როგორ შევქმნათ/წაშალოთ ცხრილები, დავამატოთ ახალი ჩანაწერები და წავშალოთ ძველი. ამ მიზნებისათვის ქ SQLარის ოპერატორები, როგორიცაა: ᲨᲔᲥᲛᲜᲐ- ქმნის ცხრილს ALTER- ცვლის ცხრილის სტრუქტურას, ვარდნა- წაშლის ცხრილს ან ველს, INSERT- ამატებს მონაცემებს ცხრილში. დავიწყოთ ჩვენი გაცნობა ამ ჯგუფის ოპერატორებთან ოპერატორისგან INSERT.

1. მთელი ხაზების დამატება

როგორც სახელი გვთავაზობს, ოპერატორი INSERTგამოიყენება მონაცემთა ბაზის ცხრილში რიგების ჩასართავად. დამატება შეიძლება გაკეთდეს რამდენიმე გზით:

  • - დაამატეთ ერთი სრული ხაზი
  • - დაამატეთ ხაზის ნაწილი
  • - დაამატეთ შეკითხვის შედეგები.

ასე რომ დავამატოთ ახალი ხაზიცხრილში, ჩვენ უნდა მივუთითოთ ცხრილის სახელი, ჩამოვთვალოთ სვეტების სახელები და თითოეული სვეტის მნიშვნელობა კონსტრუქციის გამოყენებით. ᲩᲐᲓᲔᲗ ცხრილის_სახელი (ველი1, ველი2 ...) ღირებულებები (მნიშვნელობა 1, მნიშვნელობა 2 ...). მოდით შევხედოთ მაგალითს.

INSERT INTO Sellers (ID, მისამართი, ქალაქი, გამყიდველის_სახელი, ქვეყანა) VALUES("6", "1-ლი ქუჩა", "ლოს ანჯელესი", "ჰარი მონრო", "აშშ")

თქვენ ასევე შეგიძლიათ შეცვალოთ სვეტების სახელების თანმიმდევრობა, მაგრამ ამავე დროს თქვენ უნდა შეცვალოთ მნიშვნელობების თანმიმდევრობა პარამეტრში ღირებულებები.

2. ხაზების ნაწილის დამატება

წინა მაგალითში, ოპერატორის გამოყენებისას INSERTჩვენ აშკარად აღვნიშნეთ ცხრილის სვეტების სახელები. ამ სინტაქსის გამოყენებით, ჩვენ შეგვიძლია გამოვტოვოთ რამდენიმე სვეტი. ეს ნიშნავს, რომ თქვენ შეიყვანთ მნიშვნელობას ზოგიერთი სვეტისთვის, მაგრამ არ აწვდით მნიშვნელობებს სხვებისთვის. Მაგალითად:

INSERT INTO Sellers (ID, ქალაქი, Seller_name) VALUES("6", "ლოს ანჯელესი", "ჰარი მონრო")

IN ეს მაგალითიჩვენ არ დავაკონკრეტეთ მნიშვნელობა ორი სვეტისთვის მისამართიდა ქვეყანა. თქვენ შეგიძლიათ გამორიცხოთ რამდენიმე სვეტი განცხადებიდან ᲩᲐᲓᲔᲗ, თუ ის იძლევა ცხრილის განსაზღვრის საშუალებას. ამ შემთხვევაში, ერთ-ერთი შემდეგი პირობა უნდა დაკმაყოფილდეს: ეს სვეტი განისაზღვრება, როგორც მნიშვნელობის დაშვება NULL(ნებისმიერი მნიშვნელობის არარსებობა) ან ცხრილის განმარტებაში მითითებული ნაგულისხმევი მნიშვნელობა. ეს ნიშნავს, რომ თუ მნიშვნელობა არ არის მითითებული, გამოყენებული იქნება ნაგულისხმევი მნიშვნელობა. თუ ცხრილის სვეტს გამოტოვებთ, რომელიც არ იძლევა მნიშვნელობებს მის რიგებში NULLდა არ აქვს განსაზღვრული ნაგულისხმევი მნიშვნელობა, DBMS გამოსცემს შეცდომის შეტყობინებას და ეს მწკრივი არ დაემატება.

3. არჩეული მონაცემების დამატება

წინა მაგალითებში ჩვენ ჩავსვით მონაცემები ცხრილებში მათი ხელით ჩაწერით მოთხოვნაში. თუმცა, ოპერატორი ᲩᲐᲓᲔᲗსაშუალებას გვაძლევს მოვახდინოთ ამ პროცესის ავტომატიზაცია, თუ გვინდა მონაცემების ჩასმა სხვა ცხრილიდან. ამისათვის SQL-ს აქვს ასეთი სტრუქტურა: INSERT INTO ... არჩევა .... ეს დიზაინი საშუალებას გაძლევთ ერთდროულად აირჩიოთ მონაცემები ერთი ცხრილიდან და ჩასვათ მეორეში. დავუშვათ, გვაქვს სხვა მაგიდა გამყიდველები_ევროკავშირიევროპაში ჩვენი საქონლის გამყიდველების სიით და ჩვენ უნდა დავამატოთ ისინი ზოგად ცხრილში გამყიდველები. ამ ცხრილების სტრუქტურა იგივეა (სვეტების იგივე რაოდენობა და იგივე სახელები), მაგრამ განსხვავებული მონაცემები. ამისათვის ჩვენ შეგვიძლია დავწეროთ შემდეგი შეკითხვა:

INSERT INTO Sellers (ID, მისამართი, ქალაქი, გამყიდველის_სახელი, ქვეყანა) SELECTID, მისამართი, ქალაქი, Seller_name, Country FROM Sellers_EU

ყურადღება უნდა მიაქციოთ, რომ შიდა გასაღებების მნიშვნელობა არ განმეორდეს (ველი ID), წინააღმდეგ შემთხვევაში მოხდება შეცდომა. ოპერატორი აირჩიეთშეიძლება ასევე შეიცავდეს წინადადებებს სადმონაცემების გასაფილტრად. აქვე უნდა აღინიშნოს, რომ DBMS ყურადღებას არ აქცევს განცხადებაში მოცემული სვეტების სახელებს. აირჩიეთ, მისთვის მნიშვნელოვანია მხოლოდ მათი მოწყობის თანმიმდევრობა. აქედან გამომდინარე, მონაცემები პირველ მითითებულ სვეტში, რომელიც შეირჩა იმის გამო აირჩიეთ, მაინც შეივსება ცხრილის პირველ სვეტში გამყიდველებიმითითებულია ოპერატორის შემდეგ ᲩᲐᲓᲔᲗველის სახელის მიუხედავად.

4. მონაცემების გადაწერა ერთი ცხრილიდან მეორეზე

ხშირად მონაცემთა ბაზებთან მუშაობისას საჭირო ხდება ნებისმიერი ცხრილის ასლების შექმნა სარეზერვო ან მოდიფიკაციის მიზნით. SQL-ში ცხრილის სრული ასლის შესაქმნელად, მოცემულია ცალკე განცხადება აირჩიეთ INTO. მაგალითად, ჩვენ უნდა შევქმნათ ცხრილის ასლი გამყიდველები, თქვენ უნდა დაწეროთ მოთხოვნა შემდეგნაირად:

SELECT * INTO Sellers_new FROM Sellers

წინა დიზაინისგან განსხვავებით INSERT INTO ... არჩევა ...როდესაც მონაცემები ემატება არსებულ ცხრილს, კონსტრუქცია აკოპირებს მონაცემებს ახალ ცხრილში. ასევე შეიძლება ითქვას, რომ პირველი კონსტრუქცია იმპორტის მონაცემებს ახორციელებს, მეორე კი ექსპორტს. სტრუქტურის გამოყენებისას აირჩიეთ ... შევიდა ... დან ...გასათვალისწინებელია შემდეგი:

  • - შეგიძლიათ გამოიყენოთ ნებისმიერი წინადადება ოპერატორში აირჩიეთ, როგორიცაა ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐდა ქონა
  • - შეერთება შეიძლება გამოყენებულ იქნას მრავალი ცხრილიდან მონაცემების დასამატებლად
  • - მონაცემები შეიძლება დაემატოს მხოლოდ ერთ ცხრილს, მიუხედავად იმისა, თუ რამდენი ცხრილიდან არის აღებული.

ეს განცხადება ამატებს ცხრილში ერთ ან მეტ ჩანაწერს (ახორციელებს დამატების მოთხოვნას).

Სინტაქსი

მოთხოვნა მრავალი ჩანაწერის დასამატებლად:

ᲩᲐᲓᲔᲗ სამიზნე_ობიექტი [(ველი 1[, ველი2[, ...]])]
აირჩიეთ[ წყარო.]ველი 1[, ველი2[, ...]
FROM ცხრილი_გამოთქმა

მოითხოვეთ ერთი ჩანაწერის დამატება:

ᲩᲐᲓᲔᲗ სამიზნე_ობიექტი [(ველი 1[, ველი2[, ...]])]
ღირებულებები ( ველი 1[, ველი2[, ...])

INSERT INTO განცხადება შედგება შემდეგი ელემენტებისაგან:

ნაწილი

აღწერა

სამიზნე_ობიექტი

ცხრილის ან მოთხოვნის სახელი, სადაც დამატებულია ჩანაწერები.

ველი 1, ველი2

კამათის შემდეგ სამიზნე_ობიექტი- იმ ველების სახელები, რომლებზეც დამატებულია მონაცემები; კამათის შემდეგ წყარო- ველების სახელები, საიდანაც ხდება მონაცემების მოძიება.

გარე_მონაცემთა ბაზა

გზა გარე ბაზამონაცემები. ბილიკის აღწერისთვის იხილეთ სტატია IN პუნქტის შესახებ.

წყარო

ცხრილის ან მოთხოვნის სახელი, საიდანაც კოპირებულია ჩანაწერები.

ცხრილი_გამოთქმა

ერთი ან მეტი ცხრილის სახელი, საიდანაც უნდა მოიძებნოს ჩანაწერები. ეს არგუმენტი შეიძლება იყოს ერთი ცხრილის სახელი, INNER JOIN, LEFT JOIN, ან RIGHT JOIN გამოხატვის შედეგი, ან შენახული მოთხოვნის შედეგი.

ღირებულება1, ღირებულება2

ღირებულებები უნდა დაემატოს ახალი ჩანაწერის კონკრეტულ ველებს. თითოეული მნიშვნელობა ჩასმულია სიაში მისი პოზიციის შესაბამის ველში: ღირებულება1დამატება ველი 1ახალი ჩანაწერი, ღირებულება2- ვ ველი2და ა.შ. თქვენ უნდა გამოყოთ მნიშვნელობები მძიმით და ჩართოთ ტექსტის ველები ბრჭყალებში ("").

შენიშვნები

INSERT INTO განცხადებას შეუძლია ცხრილის ერთი ჩანაწერის დამატება ზემოაღნიშნული სინტაქსის გამოყენებით. ამ შემთხვევაში, სახელები და მნიშვნელობები მითითებულია ჩანაწერის თითოეული ველისთვის. თქვენ უნდა მიუთითოთ ჩანაწერის ყველა ველი, რომელსაც ენიჭება მნიშვნელობები და მათი შესაბამისი მნიშვნელობები. თუ არ მიუთითებთ ველის მნიშვნელობას, მას მიენიჭება ნაგულისხმევი მნიშვნელობა ან NULL. ჩანაწერები ემატება ცხრილის ბოლოს.

თქვენ ასევე შეგიძლიათ გამოიყენოთ INSERT INTO განცხადება სხვა ცხრილიდან ან მოთხოვნის ჩანაწერების ნაკრების დასამატებლად SELECT... FROM პუნქტის გამოყენებით, როგორც ეს ნაჩვენებია ზემოთ (იხ. მრავალი ჩანაწერის შეკითხვის სინტაქსი). ამ შემთხვევაში, SELECT პუნქტი განსაზღვრავს ველებს, რომლებიც უნდა დაამატოთ მითითებულს სამიზნე_ობიექტი.

წყაროან სამიზნე_ობიექტიშეიძლება იყოს ცხრილი ან შეკითხვა. თუ შეკითხვა მოცემულია, მონაცემთა ბაზის ძრავა Microsoft Accessამატებს ჩანაწერებს ყველა ცხრილს, რომელსაც აბრუნებს.

INSERT INTO განცხადების გამოყენება არჩევითია. თუ არსებობს, ის წინ უნდა უსწრებდეს SELECT განცხადებას.

თუ სამიზნე ცხრილი შეიცავს ძირითად გასაღებს, დარწმუნდით, რომ ერთ ან რამდენიმე ძირითადი გასაღების ველში დამატებული მნიშვნელობები უნიკალურია და განსხვავდება NULL; წინააღმდეგ შემთხვევაში, ჩანაწერები არ დაემატება.

თუ ჩანაწერები დაემატება ცხრილს Count ველით და გსურთ მათი ხელახლა დანომრვა, არ ჩართოთ Count ველი თქვენს მოთხოვნაში. ჩართეთ მოთხოვნაში "Counter" ველი, თუ გსურთ შეინახოთ ორიგინალური მნიშვნელობები ველიდან.

თქვენ შეგიძლიათ დაამატოთ ჩანაწერები ცხრილში სხვა მონაცემთა ბაზაში IN პუნქტის გამოყენებით.

ცხრილის შესაქმნელად გამოიყენეთ SELECT... INTO განცხადება, რათა მიიღოთ მოთხოვნა ცხრილის შესაქმნელად.

დამატებული მოთხოვნის გაშვებამდე, გამოიყენეთ შერჩევის მოთხოვნა იმავე შერჩევის კრიტერიუმებით, რათა დაადგინოთ, რომელი ჩანაწერები დაემატება შედეგების მიხედვით.

დამატებული მოთხოვნა აკოპირებს ჩანაწერებს ერთი ან მეტი ცხრილიდან მეორე ცხრილში. ამავდროულად, დამატებული ჩანაწერების შემცველი ცხრილები უცვლელი რჩება.

იმის ნაცვლად, რომ დაამატოთ ჩანაწერები სხვა ცხრილიდან, შეგიძლიათ დააყენოთ თითოეული ველის მნიშვნელობა ცალკე ახალ ჩანაწერში VALUES პუნქტის გამოყენებით. თუ ველების სია გამოტოვებულია, VALUES პუნქტი უნდა შეიცავდეს ცხრილის თითოეული ველის შესაბამის მნიშვნელობებს; წინააღმდეგ შემთხვევაში, INSERT ოპერაცია ჩაიშლება. გამოიყენეთ INSERT INTO განცხადება VALUES პუნქტთან ერთად თითოეული დამატებითი ჩანაწერისთვის, რომლის შექმნაც გსურთ.

ადრე განხილული SELECT განცხადების გარდა, მონაცემთა მანიპულირების ენა (DML) შეიცავს სამ სხვა განცხადებას: INSERT, UPDATE და DELETE. SELECT განცხადების მსგავსად, ეს სამი განცხადება მოქმედებს ცხრილებზე ან ხედებზე. ეს სტატია ეხება INSERT განცხადებას, ხოლო დანარჩენი ორი განცხადება განიხილება შემდეგ სტატიაში.

INSERT განცხადებაათავსებს რიგებს (ან მწკრივების ნაწილებს) ცხრილში. ამ ინსტრუქციის ორი განსხვავებული ფორმა არსებობს:

ჩანართის_სახელის ჩასმა [(col_list)] DEFAULT VALUES | VALUES (( ნაგულისხმევი | NULL | გამოხატულება ) [ ,...n]) ჩასმა tab_name | view_name [(col_list)] (select_statement | execute_statement) სინტაქსური კონვენციები

განცხადების პირველი ფორმა საშუალებას გაძლევთ ჩასვათ ერთი მწკრივი (ან მისი ნაწილი) ცხრილში. და INSERT განცხადების მეორე ფორმა საშუალებას გაძლევთ ჩადოთ ცხრილში SELECT განცხადების შედეგების ნაკრები ან შენახული პროცედურა, რომელიც შესრულებულია EXECUTE განაცხადით. შენახულმა პროცედურამ უნდა დააბრუნოს მონაცემები ცხრილში ჩასართავად. როდესაც გამოიყენება INSERT განცხადებასთან ერთად, SELECT განცხადებას შეუძლია შეარჩიოს მნიშვნელობები სხვა ან იგივე ცხრილიდან, რომელშიც ჩასმულია მონაცემები, თუ შესაბამისი სვეტების მონაცემთა ტიპები თავსებადია.

ორივე ფორმისთვის, თითოეული ჩასმული მნიშვნელობის მონაცემთა ტიპი უნდა შეესაბამებოდეს შესაბამისი ცხრილის სვეტის მონაცემთა ტიპს. ყველა სტრიქონი და დროებითი მონაცემი უნდა იყოს ჩასმული ბრჭყალებში; ციფრული მნიშვნელობები არ არის საჭირო ბრჭყალებში ჩასმა.

ერთი ხაზის ჩასმა

INSERT განცხადების ორივე ფორმისთვის, სვეტების აშკარა სია არჩევითია. სვეტების სიის არარსებობა ცხრილის ყველა სვეტის მითითების ტოლფასია.

DEFAULT VALUES პარამეტრიაყენებს ნაგულისხმევ მნიშვნელობებს ყველა სვეტისთვის. სვეტები TIMESTAMP მონაცემთა ტიპის ან IDENTITY თვისებით ჩასმულია ნაგულისხმევად სისტემის მიერ ავტომატურად გენერირებული მნიშვნელობებით. მონაცემთა სხვა ტიპების სვეტებისთვის ჩასმულია შესაბამისი არა null ნაგულისხმევი მნიშვნელობა, ასეთის არსებობის შემთხვევაში, ან NULL სხვაგვარად. თუ ნულოვანი მნიშვნელობები არ არის დაშვებული სვეტისთვის და არ არის განსაზღვრული ნაგულისხმევი მნიშვნელობა სვეტისთვის, INSERT განცხადება ვერ ხერხდება და გამოჩნდება შესაბამისი შეტყობინება.

შემდეგი მაგალითი ათავსებს რიგებს Employee ცხრილში SampleDb მონაცემთა ბაზაში, რაც აჩვენებს, თუ როგორ გამოვიყენოთ INSERT განცხადება მონაცემთა მცირე რაოდენობის მონაცემთა ბაზაში ჩასართავად:

გამოიყენეთ SampleDb; INSERT INTO Employee VALUES (34990, "Andrey", "Batonov", "d1"); INSERT INTO Employee VALUES (38640, "Aleksey", "Vasin", "d3");

არის ორი სხვადასხვა გზებიმნიშვნელობების ჩასმა ახალ მწკრივში. ქვემოთ მოცემულ მაგალითში INSERT განცხადება აშკარად იყენებს საკვანძო სიტყვა NULL და ჩასვამს NULL მნიშვნელობას შესაბამის სვეტში:

გამოიყენეთ SampleDb; INSERT INTO Employee VALUES (34991, "Andrey", "Batonov", NULL);

ცხრილის ზოგიერთ (მაგრამ არა ყველა) სვეტში მნიშვნელობების ჩასართავად, ჩვეულებრივ, მკაფიოდ უნდა მიუთითოთ ეს სვეტები. სვეტები, რომლებიც არ არის მითითებული, უნდა დაუშვან NULL მნიშვნელობები, ან უნდა ჰქონდეთ მათთვის განსაზღვრული ნაგულისხმევი მნიშვნელობა.

გამოიყენეთ SampleDb; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Andrey", "Batonov");

წინა ორი მაგალითი ექვივალენტურია. Employee ცხრილში ერთადერთი სვეტი, რომელიც იძლევა null მნიშვნელობებს, არის სვეტი DepartmentNumber, ხოლო ყველა სხვა სვეტისთვის ეს მნიშვნელობა აკრძალული იყო NOT NULL პუნქტით CREATE TABLE განცხადებაში.

ფასეულობების რიგი წინადადება VALUES INSERT განცხადებები შეიძლება განსხვავდებოდეს CREATE TABLE განცხადებაში მითითებული თანმიმდევრობისგან. ასეთ შემთხვევაში, მათი თანმიმდევრობა უნდა ემთხვეოდეს იმ თანმიმდევრობას, რომლითაც შესაბამისი სვეტები ჩამოთვლილია სვეტების სიაში. ქვემოთ მოცემულია მონაცემთა ჩასმის მაგალითი ორიგინალისგან განსხვავებული თანმიმდევრობით:

გამოიყენეთ SampleDb; INSERT INTO Employee(DepartamentNumber, LastName, Id, FirstName) VALUES ("d1", "Batonov", 34993, "Andrey");

მრავალი მწკრივის ჩასმა

INSERT განცხადების მეორე ფორმა ათავსებს ქვემოთხოვნის მიერ შერჩეულ ერთ ან მეტ მწკრივს ცხრილში. ქვემოთ მოყვანილი მაგალითი გვიჩვენებს, თუ როგორ უნდა ჩასვათ რიგები ცხრილში INSERT განცხადების მეორე ფორმის გამოყენებით. ამ შემთხვევაში, შესრულებულია მოთხოვნა მოსკოვში მდებარე განყოფილებების ნომრებისა და სახელების შესარჩევად და მიღებული ნაკრების ჩატვირთვა ადრე შექმნილ ახალ ცხრილში.

ზემოთ მოყვანილ მაგალითში შექმნილ მოსკოვის დეპარტამენტის ახალ ცხრილს აქვს იგივე სვეტები, როგორც არსებული დეპარტამენტის ცხრილი, გამოტოვებული მდებარეობის სვეტის გარდა. INSERT განცხადებაში ქვემოთხოვნა ირჩევს დეპარტამენტის ცხრილის ყველა სტრიქონს, რომლებისთვისაც მდებარეობა სვეტის მნიშვნელობა არის მოსკოვი, რომლებიც შემდეგ ჩასმულია მოთხოვნის დასაწყისში შექმნილ ახალ ცხრილში.

ქვემოთ მოყვანილი მაგალითი გვიჩვენებს ცხრილში რიგების ჩასმის სხვა გზას INSERT განცხადების მეორე ფორმის გამოყენებით. ამ შემთხვევაში, მოთხოვნა შესრულებულია პერსონალის ნომრების, პროექტის ნომრების და პროექტის დაწყების თარიღების მისაღებად ყველა თანამშრომლისთვის, პოზიციით "მენეჯერი", რომლებიც მუშაობენ p2 პროექტზე, და შემდეგ იტვირთება მიღებული ნაკრები დასაწყისში შექმნილ ახალ ცხრილში. შეკითხვის შესახებ:

გამოიყენეთ SampleDb; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR(4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam(EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "მენეჯერი";

INSERT განცხადების გამოყენებით რიგების ჩასმამდე, მოსკოვის დეპარტამენტისა და ManagerTeam ცხრილები (ზემოთ მაგალითებში) ცარიელი იყო. თუ ცხრილი უკვე არსებობდა და შეიცავდა მონაცემთა სტრიქონებს, მაშინ მას დაემატება ახალი რიგები.