T-SQL საფუძვლები. DML. SQL მოთხოვნების მაგალითები MySQL მონაცემთა ბაზაში მთელი რიგების დამატება

T-SQL საფუძვლები. DML. SQL მოთხოვნების მაგალითები MySQL მონაცემთა ბაზაში მთელი რიგების დამატება

წინა განყოფილებებში ჩვენ გადავხედეთ წინასწარ შექმნილი ცხრილებიდან მონაცემების მოძიებას. ახლა დროა გავარკვიოთ, როგორ შევქმნათ/წაშალოთ ცხრილები, დავამატოთ ახალი ჩანაწერები და წავშალოთ ძველი. ამ მიზნებისათვის ქ 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", "ლოს ანჯელესი", "ჰარი მონრო")

ამ მაგალითში ჩვენ არ დავაკონკრეტეთ მნიშვნელობა ორი სვეტისთვის მისამართიდა ქვეყანა. თქვენ შეგიძლიათ გამორიცხოთ რამდენიმე სვეტი განცხადებიდან ᲩᲐᲓᲔᲗ, თუ ეს იძლევა ცხრილის განსაზღვრას. ამ შემთხვევაში, ერთ-ერთი პირობა უნდა დაკმაყოფილდეს: ეს სვეტი განისაზღვროს, როგორც მოქმედი 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 ... არჩევა ...როდესაც მონაცემები ემატება არსებულ ცხრილს, დიზაინი კოპირებს მონაცემებს ახალ ცხრილში. ასევე შეიძლება ითქვას, რომ პირველი კონსტრუქცია ახდენს იმპორტის მონაცემებს, ხოლო მეორე ექსპორტს. დიზაინის გამოყენებისას აირჩიეთ ... შევიდა ... დან ...გასათვალისწინებელია შემდეგი:

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

ბოლო განახლება: 07/13/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 Server Management Studio-ში წარმატებული შესრულების შემდეგ, შეტყობინება „დაზარალებულია 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 მნიშვნელობას.

ჩანაწერების წაშლა

ცხრილიდან ჩანაწერების წასაშლელად გამოიყენეთ DELETE ოპერატორი:

DELETE FROM Tablename WHERE მდგომარეობა;

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

შემდეგი მოთხოვნა წაშლის ჩანაწერებს კლიენტების ცხრილიდან, სადაც LName სვეტის მნიშვნელობა არის „ივანოვი“:

წაშლა მომხმარებლისგან

WHERE LName = "ივანოვი"

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

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

წაშლა მომხმარებლისგან

WHERE IdCity IN (აირჩიეთ IDCity ქალაქიდან WHERE CityName = "მოსკოვი")

Transact-SQL აფართოებს სტანდარტულ SQL-ს და საშუალებას გაძლევთ გამოიყენოთ დამატებითი FROM პუნქტი DELETE განცხადებაში. ეს გაფართოება, რომელიც განსაზღვრავს შეერთებას, შეიძლება გამოყენებულ იქნას ქვემოთხოვნის ნაცვლად WHERE პუნქტში, რათა მიუთითოთ წასაშლელი რიგები. ის საშუალებას გაძლევთ მიუთითოთ მონაცემები მეორე FROM-დან და ამოიღოთ შესაბამისი რიგები ცხრილიდან პირველ FROM პუნქტში. კერძოდ, წინა შეკითხვა შეიძლება გადაიწეროს შემდეგნაირად

წაშლა მომხმარებლისგან

მომხმარებლისგან k INNER JOIN

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

აირჩიეთ *

მომხმარებლისგან k INNER JOIN

ქალაქი c ON k.IdCity = c.IdCity და c.CityName = "მოსკოვი"

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

წაშლა პროდუქტიდან

დავალება დამოუკიდებელი მუშაობისთვის:ჩამოაყალიბეთ მოთხოვნა SQL-ში, რათა წაშალოთ ყველა შეკვეთა, რომელიც არ შეიცავს ერთ პროდუქტს (ანუ ყველა ცარიელი შეკვეთა).

ადრე განხილული 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 სხვაგვარად. თუ სვეტი არ იძლევა null მნიშვნელობებს და არ აქვს განსაზღვრული ნაგულისხმევი მნიშვნელობა, INSERT განცხადება ვერ ხერხდება და გამოჩნდება შეტყობინება.

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

გამოიყენეთ SampleDb; INSERT INTO Employee VALUES (34990, "Andrey", "Batonov", "d1"); INSERT INTO Employee VALUES (38640, "Alexey", "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 ცხრილები (ზემოთ მაგალითებში) ცარიელი იყო. თუ ცხრილი უკვე არსებობდა და შეიცავდა სტრიქონებს მონაცემებით, მაშინ მას დაემატება ახალი რიგები.

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

მეთოდი ნომერი 1.
შევეცადოთ დავამატოთ ჩანაწერი ახალი ქვეყნის შესახებ ქვეყნების ცხრილში. დამატების სინტაქსი იქნება შემდეგი:
INSERT INTO ცხრილის_სახელში (ველი_1, ველი_2, ...) VALUES (მნიშვნელობა_1, მნიშვნელობა_2, ...); ჩვენი ცხრილის სტრუქტურიდან გამომდინარე, SQL მოთხოვნა იქნება ასეთი:
INSERT INTO ქვეყნებში (ქვეყნის_სახელი, აკრონიმი_სახელი) VALUES ("რუსეთი", "RU"); ასე დავამატეთ ჩვენს ცხრილში ჩანაწერი ქვეყნის შესახებ „რუსეთი“. აქ ყველაფერი გასაგები და მარტივი უნდა იყოს, მთავარია ყურადღებით დააკვირდეთ პირველ ფრჩხილებში რომელ ველებს მიუთითებთ და მეორეში იგივე თანმიმდევრობით ჩაწერეთ მნიშვნელობები.

მეთოდი ნომერი 2.
მეორე მეთოდი, ჩემი აზრით, ცოტა უფრო მარტივია, რადგან ხედავთ რას ანიჭებთ და რომელ სფეროს. მერწმუნეთ, თუ ცხრილს აქვს სვეტების დიდი რაოდენობა, ძალიან ადვილია აღრევა ან უგულებელყოფა პირველში ველების თანმიმდევრობას და მეორე ფრჩხილებში მნიშვნელობების თანმიმდევრობას. მეორე მეთოდის სინტაქსი ასეთია:
INSERT INTO ცხრილის_სახელში SET ველი_1 = მნიშვნელობა_1, ველი_2 = მნიშვნელობა_2, ... ; მოდით გამოვიყენოთ ეს მაგალითი ცხრილში გარკვეული ინფორმაციის დასამატებლად. პირები, რადგან მეტი ველია და მეორე მეთოდის უპირატესობა მაშინვე იგრძნობა:
INSERT INTO persons SET first_name="Ivan", last_name="Dulin", register_date="2012-06-14", country="1"; ახლა ჩვენი ცხრილი შეიცავს შემდეგ მონაცემებს:


ალბათ შეამჩნიეთ, რომ ასაკისთვის მნიშვნელობა არ დავაკონკრეტეთ, მაგრამ შევსებული აღმოჩნდა... ყველაფერი სწორია - ამ ველისთვის ჩვენ დავაყენეთ ნაგულისხმევი მნიშვნელობა, როგორც 25. ახლა ჩვენი ივან დულინი ჩამოთვლილია მონაცემთა ბაზაში ასაკი 25 წელი. ეს შეიძლება არ იყოს საუკეთესო მაგალითი ასაკის ველისთვის ნაგულისხმევი მნიშვნელობის დასაყენებლად, მაგრამ შეგიძლიათ დააყენოთ ასეთი თვისებები ისეთ ველებზე, როგორიცაა, მაგალითად, საიტის მომხმარებლის რეიტინგი ან გვერდის ნახვების რაოდენობა. ისინი თავდაპირველად დაყენებულია 0-ზე.

ასევე ყურადღება უნდა მიაქციოთ თარიღის ფორმატს MySQL-ში: YYYY-MM-DD. თუ თქვენ არ იცავთ მას, მაშინ თქვენი ჩანაწერები უბრალოდ არ შეიტანება ცხრილში.

როგორც ხედავთ, პროფესიის ველი ივსება როგორც NULL, ეს არის ცარიელი მნიშვნელობა. ამ სფეროსთვის.

როგორც დამატებით, განიხილეთ შემდეგი ბრძანება:
მონაცემთა ლოკალური INFILE "D:\zapros.txt" ჩატვირთვა TABLE პირებში; როგორ ფიქრობთ, რა გავაკეთეთ ახლა?! ჩვენ გავაკეთეთ შემდეგი: დავამატეთ მონაცემები ცხრილში პირებიფაილიდან მოითხოვს.txt, რომელიც მდებარეობს დისკზე D. ფაილში მოცემულ ინფორმაციას უნდა ჰქონდეს შემდეგი სტრუქტურა:


ფაილის მონაცემთა სტრუქტურა უნდა აკმაყოფილებდეს შემდეგ მოთხოვნებს:
  1. ყოველი ახალი ჩანაწერი უნდა იყოს აღწერილი ახალ ხაზზე
  2. მონაცემები უნდა იყოს მითითებული აბსოლუტურად ყველა ველისთვის. როგორც ხედავთ, ჩვენ დავაზუსტეთ NULL მნიშვნელობა id ველისთვის, რადგან ის ავტომატურად იზრდება, ამიტომ თავად MySQL შეიყვანს საჭირო მნიშვნელობას.
  3. ველები ერთმანეთისგან გამოყოფილია ჩანართის სიმბოლოთი (Tab გასაღები).
  4. თქვენ მიერ შეყვანილი ინფორმაცია უნდა შეესაბამებოდეს კონკრეტული ველის მონაცემთა ტიპებს. ეს არის, მაგალითად, თარიღი ფორმატში YYYY-MM-DD, მთელი რიცხვი მთელი რიცხვისთვის და ა.შ.
ამრიგად, თქვენ ისწავლეთ როგორ შეიყვანოთ ახალი მონაცემები თქვენს მონაცემთა ბაზის ცხრილებში. თქვენ მიერ შესწავლილი მასალის კონსოლიდაციისთვის, თქვენ თვითონ შეიყვანეთ შემდეგი ინფორმაცია:

პროფესიის ცხრილი:

პირთა მაგიდა:

სახელი გვარი ასაკი რეგისტრაციის თარიღი ქვეყანა პროფესია
ლეონიდი ბილაკი 45 2012-06-20 2 1
იური ნაზაროვი 22 2012-06-21 3 1
ალა სავენკო 25 2012-06-22 2 3
ირინა ნიკოლაევა 31 2012-06-22 1 3

დარწმუნდით, რომ დაამატეთ ეს ჩანაწერები, რადგან ისინი დაგვჭირდება SELECT განცხადების შესასწავლად (ინფორმაციის არჩევა მონაცემთა ბაზიდან), რომელსაც განვიხილავთ შემდეგ (მეოთხე) სტატიაში SQL მოთხოვნების შესწავლის შესახებ.
დათვალიერება