T-SQL-ийн үндэс. DML. Transact-SQL - өгөгдөл оруулах Өгөгдлийн сангийн демо хувилбар

Өмнө нь авч үзсэн SELECT мэдэгдлээс гадна Data Manipulation Language (DML) нь INSERT, UPDATE, DELETE гэсэн гурван мэдэгдлийг агуулдаг. SELECT мэдэгдлийн нэгэн адил эдгээр гурван мэдэгдэл нь хүснэгт эсвэл харагдац дээр ажилладаг. Энэ нийтлэлд INSERT мэдэгдлийг авч үзэх бөгөөд бусад хоёр мэдэгдлийг дараагийн өгүүллээр авч үзэх болно.

INSERT мэдэгдэлХүснэгтэнд мөр (эсвэл мөрийн хэсэг) оруулна. Энэхүү зааврын хоёр өөр хэлбэр байдаг:

INSERT tab_name [(col_list)] өгөгдмөл УТГА | VALUES (( DEFAULT | NULL | илэрхийлэл ) [ ,...n]) INSERT INTO tab_name | харах_нэр [(хамгийн_жагсаалт)] (сонгосон_мэдэгдэл | гүйцэтгэх_мэдэгдэл) Синтакс конвенцууд

Зааврын эхний хэлбэр нь хүснэгтэд нэг мөр (эсвэл түүний хэсгийг) оруулах боломжийг олгодог. Мөн INSERT мэдэгдлийн хоёр дахь хэлбэр нь SELECT мэдэгдлийн үр дүнгийн багц эсвэл EXECUTE хэллэгээр гүйцэтгэсэн хадгалагдсан процедурыг хүснэгтэд оруулах боломжийг олгодог. Хадгалагдсан процедур нь хүснэгтэд оруулах өгөгдлийг буцааж өгөх ёстой. INSERT хэллэгтэй хамт хэрэглэх үед SELECT мэдэгдэл нь харгалзах баганын өгөгдлийн төрлүүд таарч байвал өөр эсвэл өгөгдөл оруулж буй ижил хүснэгтээс утгуудыг сонгож болно.

Хоёр маягтын хувьд оруулсан утга бүрийн өгөгдлийн төрөл нь хүснэгтийн харгалзах баганын өгөгдлийн төрөлтэй тохирч байх ёстой. Бүх мөр болон түр өгөгдлийг хашилтанд оруулах ёстой; Тоон утгыг хашилтанд оруулах шаардлагагүй.

Нэг мөр оруулж байна

INSERT мэдэгдлийн хоёр хэлбэрийн хувьд баганын жагсаалтыг тодорхой зааж өгөх нь сонголт биш юм. Багануудыг жагсаахгүй байх нь хүснэгтийн бүх баганыг зааж өгөхтэй адил юм.

өгөгдмөл УТГА параметрбүх баганын өгөгдмөл утгыг оруулна. TIMESTAMP өгөгдлийн төрөл эсвэл IDENTITY шинж чанартай баганыг системээс автоматаар үүсгэсэн утгуудын хамт өгөгдмөл байдлаар оруулна. Бусад өгөгдлийн төрлийн баганын хувьд хэрэв байгаа бол харгалзах тэг биш анхдагч утгыг оруулах ба бусад тохиолдолд NULL утгыг оруулна. Хэрэв багана нь хоосон утгыг зөвшөөрдөггүй бөгөөд өгөгдмөл утга нь тодорхойлогдоогүй бол INSERT мэдэгдэл амжилтгүй болж, мессеж гарч ирнэ.

Доорх жишээнд SampleDb өгөгдлийн сангийн Ажилчдын хүснэгтэд мөрүүдийг оруулж, мэдээллийн санд бага хэмжээний өгөгдөл оруулахын тулд INSERT хэллэгийг ашиглаж байгааг харуулж байна:

SampleDb-г ашиглах; АЖИЛТНЫ ҮНЭ ЦЭВЭРТ ОРУУЛАХ (34990, "Андрей", "Батонов", "д1"); АЖИЛТНЫ ҮНЭ ЦЭВЭРТ ОРУУЛАХ (38640, "Алексей", "Васин", "d3");

Хоёр байна янз бүрийн арга замуудутгыг оруулах шинэ мөр. Доорх жишээн дэх INSERT мэдэгдэл нь NULL түлхүүр үгийг тодорхой ашиглаж, харгалзах баганад NULL утгыг оруулна.

SampleDb-г ашиглах; INSERT INTO ажилчдын ҮНЭ ЦЭНЭ (34991, "Андрей", "Батонов", NULL);

Хүснэгтийн зарим баганад (гэхдээ бүгд биш) утгыг оруулахын тулд та эдгээр баганыг тодорхой зааж өгөх хэрэгтэй. Тодорхойлогдоогүй баганууд нь NULL утгыг зөвшөөрөх эсвэл өгөгдмөл утгыг тодорхойлсон байх ёстой.

SampleDb-г ашиглах; INSERT INTO ажилтны(Id, овог нэр, овог) ҮНЭ ЦЭНЭ (34992, "Андрей", "Батонов");

Өмнөх хоёр жишээ ижил байна. Ажилтны хүснэгтийн NULL утгыг зөвшөөрдөг цорын ганц багана бол Департаментын дугаар багана бөгөөд бусад бүх баганыг CREATE TABLE мэдэгдэл дэх NOT NULL заалтаар идэвхгүй болгосон.

Үнэт зүйлсийн дараалал VALUES санал болгож байна INSERT мэдэгдэл нь CREATE TABLE мэдэгдэлд заасан дарааллаас ялгаатай байж болно. Энэ тохиолдолд тэдгээрийн дараалал нь баганын жагсаалтад харгалзах багануудыг жагсаасан дараалалтай тохирч байх ёстой. Өгөгдлийг эх хувилбараас өөр дарааллаар оруулах жишээг доор харуулав.

SampleDb-г ашиглах; INSERT INTO ажилтны(тэнхимийн дугаар, овог, дугаар, нэр) ҮНЭ ЦЭНЭ ("d1", "Батонов", 34993, "Андрей");

Олон мөр оруулах

INSERT мэдэгдлийн хоёр дахь хэлбэр нь хүснэгтэд дэд асуулгаар сонгосон нэг буюу хэд хэдэн мөрийг оруулдаг. Доорх жишээнд INSERT мэдэгдлийн хоёр дахь хэлбэрийг ашиглан хүснэгтэд мөр оруулах аргыг харуулав. Энэ тохиолдолд Москвад байрлах хэлтэсүүдийн дугаар, нэрийг сонгох хүсэлт гаргаж, үр дүнгийн багцыг ачаална. шинэ ширээ, өмнө нь үүсгэсэн.

Дээрх жишээн дээр үүсгэсэн Москвагийн газрын шинэ хүснэгт нь байхгүй Байршлын баганаас бусад тохиолдолд одоо байгаа хэлтсийн хүснэгттэй ижил баганатай байна. INSERT мэдэгдлийн дэд асуулга нь Байршлын баганын утга нь "Москва" байх хэлтэс хүснэгтийн бүх мөрийг сонгон, дараа нь асуулгын эхэнд үүсгэсэн шинэ хүснэгтэд оруулна.

Доорх жишээ нь INSERT мэдэгдлийн хоёр дахь хэлбэрийг ашиглан хүснэгтэд мөр оруулах өөр аргыг харуулж байна. Энэ тохиолдолд p2 төсөл дээр ажиллаж буй "Менежер" албан тушаалтай бүх ажилчдад зориулсан боловсон хүчний тоо, төслийн дугаар, төсөл эхлэх огноог сонгох хүсэлтийг ажиллуулж, үр дүнгийн багцыг ажлын эхэнд үүсгэсэн шинэ хүснэгтэд ачаална. асуулга:

SampleDb-г ашиглах; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR (4) NULL БИШ, Огноог оруулах); INSERT INTO ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Meneger";

INSERT мэдэгдлийг ашиглан мөр оруулахаас өмнө MoscowDepartment болон ManagerTeam хүснэгтүүд (дээрх жишээнүүдэд) хоосон байсан. Хэрэв хүснэгт аль хэдийн байсан бөгөөд өгөгдөл бүхий мөрүүдийг агуулж байсан бол түүнд шинэ мөрүүд нэмэгдэх болно.

Сайн уу! Энэ нийтлэлд та хэрхэн хийх талаар ярилцах болно хүснэгтэд өгөгдөл нэмэх Microsoft дээр SQL серверХэрэв та T-SQL хэлийг бага зэрэг мэддэг бол одоо бид INSERT мэдэгдлийн талаар, мөн хүснэгтэд өгөгдөл нэмэхэд хэрхэн ашиглаж болох талаар ярих болно гэдгийг та ойлгосон байх.

Ердийнх шигээ жаахан онолоор эхэлцгээе.

T-SQL дээр INSERT мэдэгдлийг оруулна уу

INSERTЭнэ нь хүснэгтэд өгөгдөл нэмэхэд зориулагдсан T-SQL заавар юм. шинэ бичлэгүүдийг бий болгох. Энэхүү зааварХүснэгтэд нэг мөр нэмэх болон өгөгдлийг бөөнөөр оруулахад хоёуланг нь ашиглаж болно. INSERT мэдэгдэлд өгөгдөл оруулах зөвшөөрөл шаардлагатай ( INSERT) зорилтот хүснэгтэд.

Оруулах шаардлагатай өгөгдлийн хэсэг дээр INSERT мэдэгдлийг ашиглах хэд хэдэн арга байдаг:

  • Оруулах тодорхой утгуудыг жагсаах;
  • Өгөгдлийн багцыг SELECT асуулга болгон зааж өгөх;
  • Хүснэгтийн өгөгдлийг буцаадаг процедурын дуудлагын хэлбэрээр өгөгдлийн багцыг зааж өгөх.

Хялбаршуулсан синтакс

INSERT [хүснэгт] ( баганын жагсаалт...) ҮНЭ ЦЭНЭ ( үнэт зүйлсийн жагсаалт, … ) Эсвэл СОНГОХ дээжийн хүсэлтЭсвэл ГҮЙЦЭТГЭХ журам

  • INSERT INTO нь хүснэгтэд өгөгдөл нэмэх команд юм;
  • Хүснэгт нь шинэ бичлэг оруулахыг хүсч буй зорилтот хүснэгтийн нэр юм;
  • Баганын жагсаалт нь таслалаар тусгаарлагдсан өгөгдөл оруулах хүснэгтийн баганын нэрсийн жагсаалт юм;
  • VALUES нь хүснэгтэд оруулах утгуудыг тодорхойлдог хүснэгтийн утгын үүсгэгч юм;
  • Утгын жагсаалт нь таслалаар тусгаарлагдсан оруулах утгууд юм. Тэдгээр нь баганын жагсаалтад багана харагдах дарааллаар жагсаагдсан;
  • SELECT гэдэг нь хүснэгтэд оруулах өгөгдлийг сонгох асуулга юм. Асуулгын өгөөж нь баганын жагсаалттай тохирч байх ёстой гэсэн үр дүнгийн багц;
  • ГҮЙЦЭТГЭХ гэдэг нь хүснэгтэд оруулах өгөгдлийг олж авах процедурын дуудлага юм. Хадгалсан процедурын буцаах үр дүн нь баганын жагсаалттай тохирч байх ёстой.

INSERT INTO хэллэгийн хялбаршуулсан синтакс нь ойролцоогоор иймэрхүү харагдах бөгөөд ихэнх тохиолдолд та хүснэгтэд шинэ бичлэгүүдийг ингэж нэмэх болно.

Таны өгөгдөл оруулах баганын жагсаалтыг бичих шаардлагагүй бөгөөд энэ тохиолдолд хүснэгтийн баганын бодит дарааллаар тэдгээрийн дарааллыг тодорхойлно. Сонгох асуулга оруулах эсвэл бичих утгуудыг зааж өгөхдөө та энэ дарааллыг санаж байх ёстой. Би хувьдаа та өгөгдөл нэмэхээр төлөвлөж буй баганын жагсаалтыг зааж өгөхийг зөвлөж байна.

Баганын жагсаалт болон утгуудын жагсаалтад шаардлагатай багана гэж нэрлэгддэг байх ёстой бөгөөд эдгээр нь NULL утгыг агуулж болохгүй гэдгийг санах хэрэгтэй. Хэрэв та тэдгээрийг заагаагүй бөгөөд баганад анхдагч утга байхгүй бол алдаа гарна.

Таны оруулах утгуудын өгөгдлийн төрөл нь энэ утгыг оруулах баганын өгөгдлийн төрөлтэй тохирч байх ёстой, эсвэл ядаж далд хөрвүүлэлтийг дэмжих ёстой гэдгийг тэмдэглэхийг хүсч байна. Гэхдээ би танд өгөгдлийн төрлийг хянахыг зөвлөж байна ( формат) утгуудын жагсаалт болон SELECT асуулга доторх утгууд.

Хангалттай онол, практикт шилжье.

Анхны өгөгдөл

Хүснэгтэд өгөгдөл нэмэхийн тулд хүснэгт өөрөө хэрэгтэй тул үүнийг үүсгэж, түүнд бичлэг нэмэхийг хичээцгээе.

Анхаар! Бүх жишээг Microsoft SQL Server 2016 Express дээр ажиллуулах болно.

ХҮСНЭГТ ҮЗҮҮЛЭХ Туршилтын хүснэгт( IDENTITY(1,1) NULL БУС, (100) NULL, NULL биш)

Манай туршилтын хүснэгтэд үнэ бүхий бүтээгдэхүүний жагсаалтыг агуулсан болно.

Мөн жишээнүүдэд бид хүснэгтэд өгөгдөл нэмэхийн тулд хүснэгтийн утгыг буцаадаг процедурыг ашиглах тул үүнийг бас үүсгэцгээе.

ЖУРАМ ҮҮСГЭЖ ЭХЭЛЛЭЭ Туршилтын Процедурыг Бүтээгдхүүний нэр, Үнийг Туршилтын Хүснэгтээс СОНГОХ

Жишээлбэл, энэ нь шинээр үүсгэсэн TestTable хүснэгтээс өгөгдлийг буцаана.

Анхаар!

Таны ойлгож байгаагаар энэ материалыг унших нь тодорхой хэмжээний мэдлэгтэй байх болно гэсэн үг юм T-SQL хэл, тиймээс танд ямар нэг зүйл тодорхойгүй байвал дараах материалуудтай танилцахыг зөвлөж байна.

Жишээ 1 – Хүснэгтийн утгыг үүсгэгчийг ашиглан хүснэгтэд шинэ бичлэг нэмэх

Эхлээд нэг бичлэг нэмж оруулаад үр дүнг шууд харцгаая, i.e. Загвар авах хүсэлтээ бичье.

Туршилтын хүснэгтэд ОРУУЛАХ(Бүтээгдэхүүний нэр, үнэ) УТГА ("Компьютер", 100) Тестийн Хүснэгтээс СОНГОХ * ГАРНА

Хүснэгтийн нэрний дараа бид өгөгдөл нэмэх баганын нэрийг таслалаар тусгаарлаж, дараа нь түлхүүр үгийг зааж өгсөн болохыг та харж байна. ҮНЭ ЦЭНЭМөн хаалтанд таслалаар тусгаарлагдсан ижил дарааллаар бид оруулахыг хүсч буй утгуудыг бичсэн.

INSERT мэдэгдлийн дараа би бичсэн SELECT мэдэгдэлмөн GO баг тэднийг салгав.

Одоо бид хэд хэдэн мөр нэмэх хэрэгтэй гэж төсөөлөөд үз дээ. Үүний тулд бид дараах хүсэлтийг бичих болно.

Туршилтын хүснэгтэд ОРУУЛАХ(Бүтээгдэхүүний нэр, үнэ) УТГА ("Компьютер", 100), ("Гар", 20), ("Монитор", 50) Тестийн Хүснэгтээс СОНГОХ * ГАРНА


Жишээ 2 - SELECT асуулга ашиглан хүснэгтэд шинэ мөр нэмэх

Ихэнх тохиолдолд хүснэгтэд маш олон өгөгдөл нэмэх шаардлагатай байдаг, жишээлбэл, сонгох асуулгад үндэслэн, i.e. СОНГОХ. Үүнийг хийхийн тулд VALUES-ийн оронд хүсэлтийг зааж өгөхөд л хангалттай.

Туршилтын хүснэгтэнд ОРУУЛАХ(Бүтээгдэхүүний нэр, үнэ) ХААНА Id > Туршилтын хүснэгтээс бүтээгдэхүүний нэр, үнийг сонго.


IN энэ жишээндбид бичсэн СОНГОХ асуулга, энэ нь TestTable хүснэгтээс өгөгдлийг буцаадаг, гэхдээ бүгдийг нь биш, зөвхөн 2-оос их танигчтай. Мөн үр дүнг ижил TestTable хүснэгтэд оруулсан.

Хүснэгтэнд баганын жагсаалтыг заахгүйгээр хэрхэн бичлэг нэмж болох жишээний хувьд дээрх асуулгатай яг ижил зүйлийг хийх өөр өгөгдөл оруулах асуулга бичье, зөвхөн оруулах багануудыг жагсаахгүй.

Туршилтын хүснэгтэд ОРУУЛАХ Бүтээгдэхүүний нэр, үнэ Тестийн хүснэгтээс сонгох Id > 2-оос сонгогдох * TestTable-с


Энэ тохиолдолд Туршилтын хүснэгтийн эхний багана нь Бүтээгдэхүүний нэр, хоёр дахь багана нь Үнэ гэдэгт бид итгэлтэй байгаа тул үүнийг ингэж бичих боломжтой. Гэхдээ дахин хэлэхэд практик дээр баганын жагсаалтыг зааж өгөх нь дээр.

Хэрэв та анзаарсан бол бүх жишээн дээр би Id баганыг заагаагүй, гэхдээ бидэнд байгаа, ямар ч алдаа гараагүй, энэ багана нь IDENTITY шинж чанартай тул автоматаар танигч үүсгэдэг тул ийм баганад өгөгдөл оруулах боломжгүй юм.

Жишээ 3 - Хадгалсан процедурыг ашиглан хүснэгтэд шинэ бичлэг нэмэх

Одоо хадгалагдсан процедур бидэнд буцаж ирэх өгөгдлийг хүснэгтэд оруулъя. Энд байгаа утга нь адилхан бөгөөд VALUES-ийн оронд, хүсэлтийн оронд процедурын дуудлагыг зааж өгнө. Гэхдээ таны ойлгож байгаагаар процедурын дагуу буцаасан баганын дараалал, тоо нь оруулах баганын жагсаалттай яг таарч байх ёстой ( баганын жагсаалтыг заагаагүй байсан ч).

TestTable-д INSERT INSERT(ProductName, Price) EXEC TestProcedure Тестийн Хүснэгтээс СОНГОХ * ГАРНА.


Найдвар, энэ материалзааврыг ойлгоход тусалсан INSERT INTO, одоохондоо энэ л надад байна!

Өмнөх хэсгүүдэд бид урьдчилан үүсгэсэн хүснэгтүүдээс өгөгдөл авах ажлыг авч үзсэн. Одоо бид хэрхэн хүснэгт үүсгэх/устгах, шинэ бичлэг нэмэх, хуучин бичлэгүүдийг устгах боломжтойг олж мэдэх цаг болжээ. Эдгээр зорилгоор SQLИйм операторууд байдаг: БҮТЭЭХ- хүснэгт үүсгэх, ӨӨРЧЛӨХ- хүснэгтийн бүтцийг өөрчлөх; DROP- хүснэгт эсвэл талбарыг устгах; INSERT- хүснэгтэд өгөгдөл нэмнэ. Оператороос энэ бүлгийн операторуудтай танилцаж эхэлцгээе INSERT.

1. Бүхэл бүтэн мөр нэмэх

Нэрнээс нь харахад оператор INSERTөгөгдлийн сангийн хүснэгтэд мөр оруулах (нэмэх) хийхэд ашигладаг. Нэмэлтийг хэд хэдэн аргаар хийж болно:

  • - нэг бүтэн мөр нэмнэ үү
  • - мөрийн хэсгийг нэмнэ үү
  • - асуулгын үр дүнг нэмэх.

Тиймээс, хүснэгтэд шинэ мөр нэмэхийн тулд бид хүснэгтийн нэрийг зааж, баганын нэрийг жагсааж, бүтэц ашиглан багана бүрийн утгыг зааж өгөх хэрэгтэй. INSERT INTO хүснэгтийн нэр (талбар1, талбар2 ...) ҮНЭ ЦЭНЭ (утга1, утга2...). Нэг жишээ авч үзье.

Борлуулагчид (ID, Хаяг, Хот, Худалдагчийн_нэр, Улс) ҮНЭ ЦЭНГҮҮД ОРУУЛАХ("6", "1-р гудамж", "Лос Анжелес", "Харри Монро", "АНУ")

Та мөн баганын нэрсийн дарааллыг өөрчилж болно, гэхдээ нэгэн зэрэг параметр дэх утгуудын дарааллыг өөрчлөх хэрэгтэй. ҮНЭ ЦЭНЭ.

2. Мөрний хэсгийг нэмэх

Өмнөх жишээнд операторыг ашиглах үед INSERTБид хүснэгтийн баганын нэрийг тодорхой тэмдэглэсэн. Ашиглаж байна энэ синтакс, бид зарим баганыг алгасаж магадгүй. Энэ нь та зарим баганад утгыг оруулах боловч бусад баганад оруулахгүй гэсэн үг юм. Жишээлбэл:

Худалдагч (ID, Хот, Худалдагчийн_нэр) ҮНЭ ЦЭНГҮҮД ОРУУЛАХ("6", "Лос Анжелес", "Харри Монро")

Энэ жишээнд бид хоёр баганад утгыг заагаагүй ХаягТэгээд Улс. Та мэдэгдлийн зарим баганыг хасч болно INSERT INTO, хэрэв энэ нь хүснэгтийн тодорхойлолтыг зөвшөөрвөл. Энэ тохиолдолд нөхцөлүүдийн аль нэгийг хангасан байх ёстой: энэ баганыг хүчинтэй гэж тодорхойлсон NULL(ямар нэг утга байхгүй) эсвэл хүснэгтийн тодорхойлолтод заасан анхдагч утга. Энэ нь утгыг заагаагүй тохиолдолд анхдагч утгыг ашиглана гэсэн үг юм. Хэрэв та хүснэгтийн мөрөнд утгыг харуулахыг зөвшөөрдөггүй багана байхгүй бол NULLба тодорхойлогдсон анхдагч утга байхгүй бол DBMS нь алдааны мессеж үүсгэх бөгөөд мөр нэмэгдэхгүй.

3. Сонгосон өгөгдлийг нэмэх

Өмнөх жишээнд бид өгөгдлийг асуулгад гараар оруулах замаар хүснэгтэд оруулсан. Гэсэн хэдий ч оператор INSERT INTOХэрэв бид өөр хүснэгтээс өгөгдөл оруулахыг хүсвэл энэ процессыг автоматжуулах боломжийг олгодог. Энэ зорилгоор SQL-д ийм бүтэц байдаг ОРУУЛАХ ... СОНГОХ .... Энэхүү загвар нь нэг хүснэгтээс өгөгдлийг нэгэн зэрэг сонгож, нөгөө хүснэгтэд оруулах боломжийг олгодог. Бидэнд өөр ширээ байна гэж бодъё Борлуулагчид_ЕХЕвроп дахь манай бараа борлуулагчдын жагсаалттай бөгөөд бид тэдгээрийг ерөнхий хүснэгтэд нэмэх хэрэгтэй Борлуулагчид. Эдгээр хүснэгтүүдийн бүтэц нь ижил (ижил тооны багана, ижил нэртэй) боловч өгөгдөл нь өөр байна. Үүнийг хийхийн тулд бид дараах хүсэлтийг бичиж болно.

INSERT INTO Худалдагч (ID, Хаяг, Хот, Худалдагчийн_нэр, Улс) СОНГОХID, Хаяг, Хот, Худалдагчийн_нэр, Худалдагч_ЕХ-с Улс

Дотоод түлхүүрүүдийн утгыг давтахгүйн тулд та анхаарлаа хандуулах хэрэгтэй (талбар ID), эс бөгөөс алдаа гарна. Оператор СОНГОХсаналуудыг мөн багтааж болно ХААНАөгөгдлийг шүүх. DBMS нь мэдэгдэлд агуулагдсан баганын нэрэнд анхаарал хандуулдаггүй гэдгийг тэмдэглэх нь зүйтэй. СОНГОХ, зөвхөн тэдгээрийн дараалал нь түүний хувьд чухал юм. Тиймээс, учир нь сонгосон эхний заасан баганад өгөгдөл СОНГОХ, ямар ч тохиолдолд хүснэгтийн эхний баганад бөглөнө Борлуулагчид, операторын дараа заасан INSERT INTO, талбайн нэрээс үл хамааран.

4. Нэг хүснэгтээс нөгөө хүснэгтэд өгөгдлийг хуулах

Ихэнх тохиолдолд мэдээллийн сантай ажиллахдаа нөөцлөх, өөрчлөх зорилгоор аливаа хүснэгтийн хуулбарыг үүсгэх шаардлагатай болдог. Хүснэгтийг бүрэн хуулбарлахын тулд SQL нь тусдаа мэдэгдэл өгдөг СОНГОХ. Жишээлбэл, бид хүснэгтийн хуулбарыг үүсгэх хэрэгтэй Борлуулагчид, та хүсэлтийг дараах байдлаар бичих хэрэгтэй болно.

* Худалдагчдаас Sellers_new-г СОНГОХ

Өмнөх загвараас ялгаатай ОРУУЛАХ ... СОНГОХ ...Одоо байгаа хүснэгтэд өгөгдөл нэмэх үед дизайн нь өгөгдлийг шинэ хүснэгтэд хуулдаг. Эхний бүтэц нь импортын өгөгдөл, хоёр дахь нь экспорт хийдэг гэж та бас хэлж болно. Дизайныг ашиглах үед СОНГОХ ... ДОТО ... ...Дараахь зүйлийг анхаарч үзэх хэрэгтэй.

  • - та оператор дээр дурын өгүүлбэр ашиглаж болно СОНГОХгэх мэт GROUP BYТэгээд БАЙХ
  • - та олон хүснэгтээс өгөгдөл нэмэхийн тулд холболтыг ашиглаж болно
  • - Өгөгдлийг хэдэн хүснэгтээс авсан хамаагүй зөвхөн нэг хүснэгтэд нэмж болно.

Сүүлийн шинэчлэлт: 2017/07/13

Өгөгдөл нэмэхийн тулд дараах албан ёсны синтакстай INSERT командыг ашиглана уу:

Хүснэгтийн нэр INSERT [(баганын_жагсаалт)] VALUES (утга1, утга2, ... утгаN)

Эхлээд INSERT INTO илэрхийлэл гарч ирэх ба дараа нь хаалтанд та өгөгдөл нэмэх баганын таслалаар тусгаарласан жагсаалтыг зааж өгөх ба төгсгөлд VALUES гэсэн үгийн дараа баганад нэмэх утгуудыг жагсаасан болно. хаалт.

Жишээлбэл, дараах мэдээллийн санг өмнө нь үүсгэсэн гэж бодъё.

МЭДЭЭЛЛИЙН САН БҮТЭЭГДЭХҮҮН бүтээгдэхүүнdb; GO USE productsdb; ХҮСНЭГТ БҮТЭЭГДЭХҮҮН (Id INT IDENTITY PRIMARY KEY, Бүтээгдэхүүний нэр NVARCHAR(30) NULL БУС, Үйлдвэрлэгч NVARCHAR(20) NULL БУС, ProductCount INT DEFAULT 0, Үнэ MONEY NULL БУС)

Үүнд INSERT командыг ашиглан нэг мөр нэмье:

БҮТЭЭГДЭХҮҮНИЙ ҮНЭ ЦЭНЭ ОРУУЛАХ ("iPhone 7", "Apple", 5, 52000)

SQL Server Management Studio дээр амжилттай ажилласны дараа мессежийн талбарт "Нөлөөлөлд өртсөн 1 мөр" гэсэн мессеж гарч ирнэ.

Дараа нь хаалтанд байгаа баганын утгыг анхаарч үзэх нь зүйтэй түлхүүр үг VALUES-ыг зарласан дарааллаар нь дамжуулдаг. Жишээлбэл, дээрх CREATE TABLE мэдэгдэлд эхний багана нь Id байгааг харж болно. Гэхдээ IDENTITY шинж чанарыг зааж өгсөн тул энэ баганын утга автоматаар үүсгэгдэх бөгөөд үүнийг орхигдуулж болно. Хоёрдахь багана нь Бүтээгдэхүүний нэрийг илэрхийлдэг тул эхний утга болох "iPhone 7" мөрийг тухайн баганад шилжүүлэх болно. Хоёрдахь утга - "Apple" гэсэн мөр нь Үйлдвэрлэгч гэх мэт гурав дахь багана руу шилжих болно. Өөрөөр хэлбэл утгуудыг багануудад дараах байдлаар дамжуулна.

    Бүтээгдэхүүний нэр: "iPhone 7"

    Үйлдвэрлэгч: "Apple"

Мөн утгыг оруулахдаа та утгууд нэмэгдэх шууд багануудыг зааж өгч болно.

БҮТЭЭГДЭХҮҮНИЙГ ОРУУЛАХ (Бүтээгдэхүүний нэр, үнэ, үйлдвэрлэгч) ҮНЭ ЦЭНЭ ("iPhone 6S", 41000, "Apple")

Энд зөвхөн гурван баганад утгыг зааж өгсөн болно. Түүнээс гадна, одоо утгуудыг баганын дарааллаар дамжуулж байна:

    Бүтээгдэхүүний нэр: "iPhone 6S"

    Үйлдвэрлэгч: "Apple"

Тодорхойгүй баганын хувьд (энэ тохиолдолд ProductCount) өгөгдмөл утгыг DEFAULT шинж чанарыг зааж өгсөн эсвэл NULL утгыг нэмнэ. Гэсэн хэдий ч тодорхойгүй баганууд нь null буюу DEFAULT шинж чанартай байх ёстой.

Бид нэгэн зэрэг хэд хэдэн мөр нэмж болно:

БҮТЭЭГДЭХҮҮНИЙ ҮНЭ ЦЭВЭРТ ОРУУЛАХ ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

Энэ тохиолдолд хүснэгтэд гурван мөр нэмэгдэх болно.

Мөн нэмэх үед багана нь DEFAULT түлхүүр үг эсвэл NULL утгатай байх ёстойг зааж өгч болно:

БҮТЭЭГДЭХҮҮНИЙГ ОРУУЛАХ (Бүтээгдэхүүний нэр, Үйлдвэрлэгч, Бүтээгдэхүүний тоо, Үнэ) ҮНЭ ЦЭНЭ ("Mi6", "Xiaomi", ӨГӨГДМӨЛ, 28000)

Энэ тохиолдолд ProductCount баганын өгөгдмөл утгыг ашиглана (хэрэв үүнийг тохируулаагүй бол NULL).

Хэрэв бүх баганууд нь өгөгдмөл утгыг зааж өгөх DEFAULT шинж чанартай эсвэл тэглэх боломжтой бол та бүх баганад өгөгдмөл утгыг оруулж болно:

БҮТЭЭГДЭХҮҮНИЙГ ӨГӨХ УТГА ОРУУЛАХ

Гэхдээ хэрэв бид Бүтээгдэхүүний хүснэгтийг авбал хэд хэдэн талбарт DEFAULT шинж чанар байхгүй бөгөөд нэгэн зэрэг NULL утгыг зөвшөөрдөггүй тул ийм тушаал алдаатай байх болно.

SQL ашиглан та мэдээллийг нэг хүснэгтээс нөгөө хүснэгтэд хуулж болно.

INSERT INTO SELECT мэдэгдэл нь нэг хүснэгтээс өгөгдлийг хуулж, одоо байгаа хүснэгтэд оруулна.

SQL INSERT INTO SELECT мэдэгдэл,

INSERT INTO SELECT команд нь нэг хүснэгтээс өгөгдлийг сонгож, одоо байгаа хүснэгтэд оруулна. Зорилтот хүснэгтэд байгаа мөрүүдийг өөрчлөхгүй.

SQL INSERT INTO SELECT, Syntax

Бид бүх баганыг нэг хүснэгтээс нөгөө хүснэгтэд хуулж болно, одоо байгаа хүснэгт:

INSERT INTO хүснэгт2
СОНГОХ *-аас хүснэгт1;

Эсвэл бид зөвхөн хүссэн баганаа өөр, одоо байгаа хүснэгтэд хуулж болно:

INSERT INTO хүснэгт2
(баганын_нэр)
СОНГОХ баганын_нэр(үүд)
FROM хүснэгт1;

Өгөгдлийн сангийн демо хувилбар

Энэ зааварт бид сайн мэддэг Northwind мэдээллийн санг ашиглах болно.

Доорх нь "Хэрэглэгчид" хүснэгтээс сонголт юм.

Хэрэглэгчийн IDҮйлчлүүлэгчийн нэрХолбоо барих хүнХаягхотШуудангийн кодУлс орон
1 Альфредс Футеркисте Мария Андерс Obere Str. 57 Берлин 12209 Герман
2 Ана Трухильо Эмпаредос ба геладос Ана Трухильо Авда. де ла Үндсэн хууль 2222 Мексик D.F. 05021 Мексик
3 Антонио Морено Такериа Антонио Морено Матадерос 2312 Мексик D.F. 05023 Мексик

Мөн "Нийлүүлэгч" хүснэгтээс сонголт:

SQL INSERT INTO SELECT, Жишээ

"Нийлүүлэгчид"-ийн цөөн хэдэн баганыг "Хэрэглэгчид" рүү хуулж байна:

Зөвхөн Германы ханган нийлүүлэгчдийг "Хэрэглэгчид" рүү хуулах.