Гэр / Windows хичээлүүд / Transact-SQL - өгөгдөл оруулах. SQL query INSERT INTO - мэдээллийн санг мэдээллээр дүүргэх Синтакс руу оруулах

Transact-SQL - өгөгдөл оруулах. SQL query INSERT INTO - мэдээллийн санг мэдээллээр дүүргэх Синтакс руу оруулах

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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, Жишээ

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

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

INSERT INTO гэж юу вэ?

Өгөгдлийн сангийн системийн гол зорилго нь өгөгдлийг хүснэгтэд хадгалах явдал юм. Өгөгдлийг ихэвчлэн мэдээллийн сангийн дээд талд ажилладаг хэрэглээний программуудаар хангадаг. Үүний тулд SQL нь хүснэгтэд өгөгдлийг хадгалахад ашигладаг INSERT командтай байдаг. The INSERT команд нь шинэ мөр үүсгэнэхүснэгтэд өгөгдөл хадгалах.

Үндсэн синтакс

Доор үзүүлсэн SQL INSERT командын үндсэн синтаксийг харцгаая.

INSERT INTO `хүснэгтийн_нэр`(багана_1,багана_2,...) VALUES (утга_1, утга_2,...);

  • `хүснэгтийн_нэр`-д ОРУУЛАХЭнэ нь MySQL серверт `table_name` нэртэй хүснэгтэд шинэ мөр нэмэхийг хэлдэг тушаал юм.
  • (багана_1, багана_2,...)шинэ мөрөнд шинэчлэгдэх багануудыг зааж өгнө
  • VALUES (утга_1,утга_2,...)шинэ мөрөнд нэмэх утгуудыг зааж өгнө

Шинэ хүснэгтэд оруулах өгөгдлийн утгыг оруулахдаа янз бүрийн өгөгдлийн төрлүүдтэй ажиллахдаа дараахь зүйлийг анхаарч үзэх хэрэгтэй.

  • Мөр өгөгдлийн төрлүүд- бүх мөрийн утгыг нэг хашилтанд оруулах ёстой.
  • Тоон өгөгдлийн төрлүүд- бүх тоон утгыг дан эсвэл давхар хашилтанд оруулахгүйгээр шууд оруулах ёстой.
  • Огнооны өгөгдлийн төрлүүд- "YYYY-MM-DD" форматын огнооны утгыг нэг хашилтанд оруулах.

Жишээ:

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

Бүтэн нэрс Төрсөн өдөр хүйс физик хаяг шуудангийн хаяг холбогдох дугаар Имэйл хаяг
Леонард Хофштадтер Эрэгтэй Модон сүлд 0845738767
Шелдон Купер Эрэгтэй Модон сүлд 0976736763
Ражеш Коотрапали Эрэгтэй шударга харах 0938867763
Лесли Винкл 14/02/1984 Эрэгтэй 0987636553
Ховард Воловиц 24/08/1981 Эрэгтэй Өмнөд парк П.О. Хайрцаг 4563 0987786553

Өгөгдлийг нэг нэгээр нь INSERT хийхийг зөвшөөрнө үү. Бид Леонард Хофстадтерээс эхэлнэ. Бид холбоо барих дугаарыг тоон өгөгдлийн төрөл гэж үзэх бөгөөд дугаарыг дан хашилтанд оруулахгүй.

INSERT INTO `гишүүд` (`бүтэн_нэр`,`хүйс`,`физик_хаяг`,`холбоо барих_дугаар`) VALUES ("Леонард Хофштадтер","Эрэгтэй","Woodcrest",0845738767);

Дээрх скриптийг гүйцэтгэснээр Леонардын холбоо барих дугаараас 0-г буулгана. Учир нь энэ утгыг тоон утга гэж үзэх бөгөөд энэ нь ач холбогдолгүй тул эхэнд нь тэг (0) хасагдана.

Иймэрхүү бэрхшээлээс зайлсхийхийн тулд утгыг доор үзүүлсэн шиг ганц хашилтанд оруулах ёстой.

INSERT INTO `гишүүд` (`бүтэн_нэр`,`хүйс`,`физик_хаяг`,`холбоо барих_дугаар`) VALUES ("Шелдон Купер","Эрэгтэй","Woodcrest", "0976736763");

Дээрх тохиолдолд тэг (0) буурахгүй

Зөв утгыг зөв багананд буулгасан тохиолдолд баганын дарааллыг өөрчлөх нь INSERT асуулгад ямар ч нөлөө үзүүлэхгүй.

Доор үзүүлсэн асуулга нь дээрх санааг харуулж байна.

INSERT INTO `гишүүд` (`холбоо барих_дугаар`,`хүйс`,`бүтэн_нэр`,`бодит_хаяг`)ҮНЭТ ("0938867763","Эрэгтэй","Ражеш Коотрапали","Woodcrest");

Дээрх асуулгад төрсөн огноо баганыг алгассан, анхдагчаар MySQL нь INSERT асуулгад алгассан баганад NULL утгыг оруулна.

Одоо төрсөн огноог нь бичсэн Леслигийн бичлэгийг оруулъя. Огнооны утгыг "YYYY-MM-DD" форматыг ашиглан дан хашилтанд оруулах ёстой.

INSERT INTO `гишүүд` (`бүтэн_нэр`,`төрсөн_огноо`,`хүйс`,`биет_хаяг`,`холбоо барих_дугаар`) ҮНЭ ЦЭНЭ ("Лэсли Винкл","1984-02-14","Эрэгтэй","Woodcrest", " 0987636553");

Дээрх бүх асуулга нь баганыг зааж, тэдгээрийг оруулах мэдэгдэл дэх утгуудтай харьцуулсан. Хэрэв бид хүснэгтийн БҮХ баганын утгыг өгч байгаа бол оруулах асуулгад багануудыг орхиж болно.

INSERT INTO `members` VALUES (9,"Howard Wolowitz","Male","1981-08-24","SouthPark","P.O. Box 4563", "0987786553", "lwolowitzemail.me");

"Гишүүдийн хүснэгтийн бүх мөрийг харахын тулд SELECT хэллэгийг ашиглая. SELECT * FROM `members`;

Гишүүнчлэлийн дугаарбүтэн_нэрхүйстөрсөн өдөрфизик_хаягшуудангийн хаягхолбоо барих_тооимэйл
1 Жанет ЖонсЭмэгтэй21-07-1980 Нэгдүгээр гудамжны 4-р талбайХувийн цүнх0759 253 542 Энэ имэйл хаягийг спамнаас хамгаалж байна. Үүнийг үзэхийн тулд та JavaScript-г идэвхжүүлэх хэрэгтэй.
2 Жанет Смит ЖонсЭмэгтэй23-06-1980 Мелроуз 123NULLNULLЭнэ имэйл хаягийг спамнаас хамгаалж байна. Үүнийг үзэхийн тулд та JavaScript-г идэвхжүүлэх хэрэгтэй.
3 Роберт ФилЭрэгтэй12-07-1989 3-р гудамж 34NULL12345 Энэ имэйл хаягийг спамнаас хамгаалж байна. Үүнийг үзэхийн тулд та JavaScript-г идэвхжүүлэх хэрэгтэй.
4 Глория УильямсЭмэгтэй14-02-1984 2-р гудамж 23NULLNULLNULL
5 Леонард ХофштадтерЭрэгтэйNULLМодон сүлдNULL845738767 NULL
6 Шелдон КуперЭрэгтэйNULLМодон сүлдNULL976736763 NULL
7 Ражеш КоотрапалиЭрэгтэйNULLМодон сүлдNULL938867763 NULL
8 Лесли ВинклЭрэгтэй14-02-1984 Модон сүлдNULL987636553 NULL
9 Ховард ВоловицЭрэгтэй24-08-1981 Өмнөд паркП.О. Хайрцаг 4563987786553 Энэ имэйл хаягийг спамнаас хамгаалж байна. Үүнийг үзэхийн тулд та JavaScript-г идэвхжүүлэх хэрэгтэй.

Леонард Хофштадтерын холбоо барих дугаар нь холбоо барих дугаараас тэг (0) буурсан болохыг анхаарна уу. Бусад холбоо барих утаснууд эхэндээ тэг (0) буураагүй байна.

Өөр хүснэгтээс хүснэгт оруулах

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

Хүснэгтэд INSERT_1 СОНГОХ * Хүснэгтээс_2;

Одоо практик жишээг харцгаая, бид үзүүлэх зорилгоор киноны ангилалд зориулсан хуурамч хүснэгт үүсгэх болно. Бид шинэ ангиллын хүснэгтийг категориуд_архив гэж нэрлэх болно. Доор үзүүлсэн скрипт нь хүснэгтийг үүсгэдэг.

CREATE TABLE `category_archive` (`category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category)

Хүснэгт үүсгэхийн тулд дээрх скриптийг ажиллуулна уу.

"Одоо ангиллын хүснэгтийн бүх мөрийг категорийн архивын хүснэгтэд оруулъя. Доор үзүүлсэн скрипт нь бидэнд үүнийг хийхэд тусална.

`categories_archive` INSERT INTO SELECT * FROM `categories`;

Дээрх скриптийг ажиллуулснаар категорийн хүснэгтийн бүх мөрийг категорийн архивын хүснэгтэд оруулна. Скрипт ажиллахын тулд хүснэгтийн бүтэц ижил байх ёстойг анхаарна уу. Илүү бат бөх скрипт нь оруулах хүснэгт дэх баганын нэрийг өгөгдөл агуулсан хүснэгтэн дэх баганын нэрстэй харьцуулдаг скрипт юм.

Доор үзүүлсэн асуулга нь түүний хэрэглээг харуулж байна.

`Ангилал_архив` INSERT INTO (Ангиллын_id, категорийн_нэр, тайлбар) `Ангилал`-аас ангиллын_id, категорийн_нэр, тайлбарыг СОНГОХ;

SELECT хайлтыг гүйцэтгэж байна

`Ангилал_архив`-аас * СОНГОХ

доор үзүүлсэн дараах үр дүнг өгдөг.

категорийн_idкатегори_нэртайлбар
1 ИнээдмийнХошин шогтой кинонууд
2 Романтикхайрын түүхүүд
3 туульсэртний киноны түүх
4 АймшигNULL
5 Шинжлэх ухааны уран зөгнөлNULL
6 ТриллерNULL
7 үйлдэлNULL
8 романтик инээдмийнNULL
9 Хүүхэлдэйн киноNULL
10 Хүүхэлдэйн киноNULL

Дүгнэлт

  • INSERT командыг хүснэгтэд шинэ өгөгдөл нэмэхэд ашигладаг
  • Огноо болон мөрийн утгыг дан хашилтанд оруулах ёстой.
  • Тоон утгыг хашилтанд оруулах шаардлагагүй.
  • INSERT командыг нэг хүснэгтээс нөгөө хүснэгтэд өгөгдөл оруулахад ашиглаж болно.

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

Операторын синтакс дараах байдалтай байна.

    ОРУУЛАХ[(,...)]

    (УТГА(,…) )

  1. | ( ӨГӨХ УТГА )

Та танилцуулсан синтаксаас харж байгаагаар баганын жагсаалт нь заавал биш юм (синтаксийн тайлбар дахь дөрвөлжин хаалт нь үүнийг заана). Хэрэв энэ нь байхгүй бол оруулсан утгуудын жагсаалт бүрэн байх ёстой, өөрөөр хэлбэл хүснэгтийн бүх баганын утгыг өгөх ёстой. Утгын дараалал нь мөр оруулах хүснэгтийн CREATE TABLE хэллэгт заасан дараалалтай тохирч байх ёстой. Нэмж дурдахад эдгээр утгууд нь оруулсан баганатай ижил төрлийн өгөгдлийн төрөл байх ёстой. Жишээ болгон дараах CREATE TABLE хэллэгээр үүсгэсэн Бүтээгдэхүүний хүснэгтэд мөр оруулах талаар бодож үзээрэй.

    ХҮСНЭГТ бүтээгдэхүүн үүсгэх

    maker char (1 ) NULL БИШ,

    загвар varchar(4) NULL БИШ,

    varchar(7) гэж бичнэ үү

Энэ хүснэгтэд В үйлдвэрлэгчийн 1157 дугаартай компьютерийн загварыг нэмж оруулах шаардлагатай. Үүнийг дараах мэдэгдлээр хийж болно.

    Бүтээгдэхүүнд оруулах

    ҮНЭ ЦЭНЭ ("B" , 1157 , "PC" );

Хэрэв та баганын жагсаалтыг зааж өгвөл тэдгээрийн дарааллын "байгалийн" дарааллыг өөрчилж болно.

    Бүтээгдэхүүнд INSERT INTO (төрөл, загвар, үйлдвэрлэгч)

    ҮНЭ ЦЭНЭ ("PC" , 1157, "B" );

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

    ХҮСНЭГТИЙН бүтээгдэхүүн үүсгэх_D

    maker char (1) NULL,

    загвар varchar(4) NULL,

    varchar (7) гэж бичнэ үү. NULL өгөгдмөл "PC"

Энд бүх баганын утгууд нь анхдагч утгатай байна гэдгийг анхаарна уу (эхний хоёр нь NULL, сүүлчийн багана нь PC төрөл). Одоо бид бичиж болно:

    Бүтээгдэхүүн_D (загвар, үйлдвэрлэгч) INSERT INTO

    VALUES(1157 , "B" );

Энэ тохиолдолд мөр оруулах үед алга болсон утгыг анхдагч утга болох PC-ээр солино. CREATE TABLE мэдэгдлийн баганад өгөгдмөл утгыг заагаагүй бөгөөд тухайн хүснэгтийн баганад NULL-г ашиглахыг хориглосон NOT NULL хязгаарлалт заагаагүй бол NULL-ийн анхдагч утгыг илэрхийлнэ гэдгийг анхаарна уу.

Асуулт гарч ирнэ: баганын жагсаалтыг зааж өгөхгүй байх боломжтой юу, гэхдээ анхдагч утгуудыг ашиглах боломжтой юу? Хариулт нь тийм. Үүнийг хийхийн тулд утгыг тодорхой зааж өгөхийн оронд DEFAULT гэсэн нөөцлөгдсөн үгийг ашиглана уу:

    Бүтээгдэхүүнд ОРУУЛАХ_D

    УТГА ("B" , 1158 , ӨГӨГДМӨЛ ) ;

Бүх баганууд анхдагч утгуудтай тул өгөгдмөл утгатай мөр оруулахын тулд дараахь зүйлийг бичиж болно.

    Бүтээгдэхүүнд ОРУУЛАХ_D

    УТГА (ӨГӨГДМӨЛ , өгөгдмөл , өгөгдмөл ) ;

Гэсэн хэдий ч, энэ тохиолдолд тусгай DEFAULT VALUES бүтэц бий (операторын синтаксийг үзнэ үү) дээрх операторыг дараах байдлаар дахин бичихэд ашиглаж болно.

    Бүтээгдэхүүний_D өгөгдмөл УТГА ОРУУЛАХ ;

Хүснэгтэд мөр оруулахдаа бүх хязгаарлалт тавигддаг болохыг анхаарна уу энэ хүснэгт. Эдгээр нь үндсэн гол хязгаарлалт эсвэл байж болно өвөрмөц индекс, CHECK төрлийн хязгаарлалтыг шалгах, лавлагааны бүрэн бүтэн байдлын хязгаарлалт. Хэрэв ямар нэгэн хязгаарлалт зөрчсөн бол мөр оруулахаас татгалзах болно. Одоо дэд асуулга ашиглах тохиолдлыг авч үзье. Бүтээгдэхүүний хүснэгтээс загвартай холбоотой бүх мөрийг Бүтээгдэхүүн_D хүснэгтэд оруулахыг хүсч байна гэж бодъё хувийн компьютерууд(төрөл = 'PC'). Бидэнд шаардлагатай утгууд аль хэдийн зарим хүснэгтэд байгаа тул оруулсан мөрүүдийг гараар үүсгэх нь нэгдүгээрт, үр ашиггүй, хоёрдугаарт, оролтын алдаа гаргах боломжийг олгодог. Дэд асуулга ашиглах нь дараах асуудлуудыг шийддэг.

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

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

Энэ тохиолдолд Бүтээгдэхүүн_D хүснэгтийн төрөл баганыг оруулсан бүх мөрийн PC-ийн анхдагч утгад тохируулна.

Предикат агуулсан дэд асуулга ашиглах үед зөвхөн уг предикатын утга ҮНЭН (МЭДЭГДЭХГҮЙ! биш) гэсэн мөрүүдийг оруулах болно гэдгийг анхаарна уу. Өөрөөр хэлбэл, Бүтээгдэхүүний хүснэгтийн төрлийн багана нь хүчинтэй биш бөгөөд энэ утга нь хэд хэдэн мөрөнд байгаа бол тэдгээр мөрийг Бүтээгдэхүүн_D хүснэгтэд оруулахгүй.

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

    Бүтээгдэхүүнд ОРУУЛАХ_D

    "B" AS үйлдвэрлэгч, 1158 AS загвар, "PC" AS төрлийг сонго

    НЭГДЭЛ

    "C" , 2190 , "Зөөврийн компьютер"-ийг сонго

    НЭГДЭЛ

    "D" , 3219 , "Хэвлэгч"-ийг сонго;

Давхардсан мөр байхгүй гэсэн баталгаатай байсан ч UNION ALL-г ашиглах нь илүү тохиромжтой, учир нь энэ тохиолдолд давхардсан эсэхийг шалгахгүй.

Мөр үүсгэгчийг ашиглан олон тооны tuple оруулах нь аль хэдийн хэрэгжсэн гэдгийг тэмдэглэх нь зүйтэй Microsoft корпорациас боловсруулсан Relational Data Management System (DBMS).Structured Query Language нь харилцааны өгөгдлийн сан дахь өгөгдлийг үүсгэх, өөрчлөх, удирдахад ашигладаг ерөнхий зориулалттай компьютерийн хэл юм. SQL сервер 2008. Энэ боломжийг харгалзан сүүлийн асуулга дараах байдлаар дахин бичиж болно.

    Бүтээгдэхүүний_D ҮНЭ ЦЭВЭРТ ОРУУЛАХ

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

    ("C", 2190, "Зөөврийн компьютер") ,

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

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

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

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

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

Нэг мөр оруулах

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

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

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

SampleDb-г ашиглах; INSERT INTO ажилчдын ҮНЭ ЦЭНЭ(34990, "Андрей", "Батонов", "d1"); INSERT INTO ажилчдын ҮНЭ ЦЭНЭ(38640, "Алексей", "Васин", "d3");

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

SampleDb-г ашиглах; INSERT INTO Employée VALUES(34991, "Андрей", "Батонов", NULL);

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

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

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

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

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

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

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

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

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

SampleDb-г ашиглах; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR(4) NOT NULL, Enter Date DATE); INSERT INTO ManagerTeam(EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Meneger";

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