โกลอฟนา
ก่อนที่คุณจะเริ่มสร้างตาราง SQL คุณต้องกำหนดโมเดลฐานข้อมูลก่อน
ออกแบบแผนภาพ ER ซึ่งมีสาระสำคัญ คุณลักษณะ และความเชื่อมโยงที่สำคัญ
แนวคิดพื้นฐาน
เอนทิตีคือวัตถุและข้อเท็จจริง ซึ่งข้อมูลจะต้องได้รับการเก็บรักษาไว้
ตัวอย่างเช่นการพัฒนาของบริษัทและโครงการที่องค์กรกำลังดำเนินการ
- คุณลักษณะคือคลังสินค้าที่อธิบายสาระสำคัญที่มีคุณสมบัติตามที่กำหนด
- ตัวอย่างเช่น คุณลักษณะของนิติบุคคล “ผู้ประกอบวิชาชีพ” คือเงินเดือน และคุณลักษณะของนิติบุคคล “โครงการ” คือค่าจ้างที่มีราคาแพง
- การเชื่อมต่อคือการเชื่อมโยงระหว่างสององค์ประกอบ
- มันสามารถเป็นแบบสองทิศทางได้
- ในทำนองเดียวกัน มีการเชื่อมต่อแบบเรียกซ้ำ เช่นการเชื่อมต่อระหว่างแก่นแท้กับตัวมันเอง
นอกจากนี้ยังจำเป็นต้องระบุคีย์และกลไกในการรักษาความสมบูรณ์ของฐานข้อมูล
สิ่งนี้หมายความว่าอย่างไร?
กล่าวคือมาตรการที่จะช่วยรักษาฐานข้อมูลให้ถูกต้องและเป็นระเบียบเรียบร้อย การเปลี่ยนจากไดอะแกรม ER เป็นแบบจำลองตารางกฎสำหรับการเปลี่ยนไปใช้โมเดลแบบตาราง:
จัดเรียงเอนทิตีทั้งหมดบนโต๊ะใหม่ เปลี่ยนแอตทริบิวต์ทั้งหมดในคอลัมน์ เพื่อให้แอตทริบิวต์เอนทิตีแต่ละรายการปรากฏอยู่ในชื่อของคอลัมน์ตาราง
ตัวระบุที่ไม่ซ้ำกันจะถูกสร้างขึ้นใหม่บนคีย์หลัก
- ลิงก์ทั้งหมดจะถูกแปลงเป็นคีย์ภายนอก
- เปิดตาราง SQL ที่สร้างขึ้น
การสร้างฐาน
จากนี้ไปคุณจะต้องเริ่มเซิร์ฟเวอร์ MySQL ในการเริ่มต้น ให้ไปที่เมนู "Start" จากนั้นไปที่ "Programs" จากนั้นไปที่ MySQL และ MySQL Server เลือก MySQL-Command-Line-Client
หากต้องการสร้างฐานข้อมูล ให้ใช้คำสั่งสร้างฐานข้อมูล
ขณะนี้โมเดลได้รับการออกแบบ สร้างฐานข้อมูลแล้ว และเซิร์ฟเวอร์ได้รับการระบุเกี่ยวกับวิธีการทำงานแล้ว
ตอนนี้คุณสามารถเริ่มสร้างตาราง SQL ได้แล้ว
มีที่มาของภาษาของข้อมูล (DDL)
ใช้สำหรับสร้างตาราง MS SQL รวมถึงการกำหนดวัตถุและทำงานกับโครงสร้าง DDL มีชุดคำสั่ง(SQL Server สร้างตาราง ด้วยคำสั่ง DDL เพียงคำสั่งเดียว คุณสามารถสร้างอ็อบเจ็กต์ฐานข้อมูลที่แตกต่างกันและพารามิเตอร์ต่างๆ ได้คำสั่งสร้างตารางใช้สำหรับสิ่งนี้รูปแบบ tt มีลักษณะดังนี้:
สร้างแทดเดิล
- ตาราง_ชื่อ,
- name_stovptsya1
- ชื่อ
- _stovptsya2
ชนิดข้อมูล [boundary_stovptsya],[boundary_table])
รายงานต่อไปนี้อธิบายไวยากรณ์ของคำสั่งนี้:
- ชื่อของตารางต้องมีความยาวไม่เกิน 30 อักขระและขึ้นต้นด้วยตัวอักษร
- อนุญาตให้ใช้เฉพาะอักขระตัวอักษรและตัวอักษรเท่านั้น รวมถึงสัญลักษณ์ “_”, “$” และ “#”
- อนุญาตให้ใช้อักษรซีริลลิกได้ สิ่งสำคัญคือต้องทราบว่าชื่อตารางไม่ตรงกับชื่อของวัตถุอื่นหรือคำที่จองเซิร์ฟเวอร์ฐานข้อมูล เช่น คอลัมน์ ตาราง ดัชนี ฯลฯสำหรับผิวหนัง stovpchik เลื่อน obov'yazkovo ระบุประเภทของข้อมูล
- นี่คือชุดมาตรฐานที่ไวกิ้งส่วนใหญ่ใช้
ตัวอย่างเช่น Char, Varchar, ตัวเลข, วันที่, ประเภท Null เป็นต้น
- การใช้พารามิเตอร์ Default คุณสามารถตั้งค่าสำหรับการตั้งค่าได้
- สิ่งนี้รับประกันว่าตารางไม่มีค่าที่ไม่สำคัญ
- เราจะเข้าใจสิ่งนี้ได้อย่างไร?
- ความหมายเบื้องหลังโปรโมชั่นอาจเป็นสัญลักษณ์ สัญลักษณ์ ฟังก์ชันก็ได้
ไวยากรณ์ของคำสั่งนี้มีลักษณะดังนี้: ALTER TABLE สิ่งสำคัญคือต้องทราบว่าชื่อตารางไม่ตรงกับชื่อของวัตถุอื่นหรือคำที่จองเซิร์ฟเวอร์ฐานข้อมูล เช่น คอลัมน์ ตาราง ดัชนี ฯลฯ( | | | | [(เปิดใช้งาน | ปิดการใช้งาน) คงที่ ฉัน_obezhennya ] | }.
ค้นหาคำสั่งอื่นๆ:
- RENAME – เปลี่ยนชื่อตาราง
- TRUNCATE TABLE แสดงแถวทั้งหมดในตาราง
อาจจำเป็นต้องใช้ฟังก์ชันนี้หากจำเป็นต้องเติมตารางใหม่ แต่ไม่จำเป็นต้องบันทึกข้อมูลก่อนหน้า
สถานการณ์เดียวกันนี้เกิดขึ้นเมื่อโครงสร้างฐานข้อมูลมีการเปลี่ยนแปลงและตารางแทร็กถูกลบ ด้วยคำสั่ง DDL เพียงคำสั่งเดียว คุณสามารถสร้างอ็อบเจ็กต์ฐานข้อมูลที่แตกต่างกันและพารามิเตอร์ต่างๆ ได้นี่คือสาเหตุที่ใช้คำสั่ง DROP
แน่นอน คุณต้องเลือกฐานข้อมูลก่อนจึงจะสามารถดูตารางที่แบ่งย่อยได้ ไวยากรณ์ของคำสั่งคือ: DROP TABLE _โต๊ะ.
ที่เอสแอลแอล เกตเวย์การเข้าถึงตารางการเปลี่ยนแปลงนี้ทำโดยคำสั่งที่ระบุไว้ข้างต้น
เมื่อใช้ตัวเลือก CREATE TABLE เพิ่มเติม คุณสามารถสร้างตารางว่างแล้วกรอกข้อมูลลงในตารางได้
- นั่นไม่ใช่ทั้งหมด ด้วยคำสั่ง DDL เพียงคำสั่งเดียว คุณสามารถสร้างอ็อบเจ็กต์ฐานข้อมูลที่แตกต่างกันและพารามิเตอร์ต่างๆ ได้คุณยังสามารถสร้างตารางจากตารางอื่นพร้อมกันได้[(ใช่ไหม?จากนั้นจึงสามารถเลือกตารางและเติมข้อมูลจากตารางอื่นลงในตารางได้
- มันพิเศษสำหรับใคร?คำหลัก
- เช่น.
ไวยากรณ์นั้นง่ายมาก:
สร้างตาราง
_โต๊ะ
ได้รับการแต่งตั้ง_stovpts_v
- )] AS พอดซาปิต;
- ได้รับการแต่งตั้ง_stovptsiv -
ไวยากรณ์สำหรับการสร้างตารางเวลาสามารถใช้ได้ดังนี้: CREATE TABLE ด้วยคำสั่ง DDL เพียงคำสั่งเดียว คุณสามารถสร้างอ็อบเจ็กต์ฐานข้อมูลที่แตกต่างกันและพารามิเตอร์ต่างๆ ได้_โต๊ะ,(ด้วยคำสั่ง DDL เพียงคำสั่งเดียว คุณสามารถสร้างอ็อบเจ็กต์ฐานข้อมูลที่แตกต่างกันและพารามิเตอร์ต่างๆ ได้_stovptsya1ชนิดข้อมูล [interchange_stovptsya] ด้วยคำสั่ง DDL เพียงคำสั่งเดียว คุณสามารถสร้างอ็อบเจ็กต์ฐานข้อมูลที่แตกต่างกันและพารามิเตอร์ต่างๆ ได้คำสั่งสร้างตารางใช้สำหรับสิ่งนี้ประเภทข้อมูล [boundary_stovptsya], [boundary_table])
หลังจากสร้างตารางว่างแล้ว ขั้นตอนตรรกะถัดไปคือการกรอกข้อมูลและอัปเดตตาราง Transact-SQL ใดที่ได้รับการกำหนดคู่คำสั่ง?.
แทรก - อัปเดต
อย่างไรก็ตาม บ่อยครั้งในช่วงท้ายของการออกแบบ จำเป็นต้องเปลี่ยนสคีมาของตารางเอง
ตัวอย่างเช่น หากคีย์หลักหรือประเภทคีย์มีการเปลี่ยนแปลง
- เพื่อหลีกเลี่ยงการลบตารางเก่าและไม่สร้างใหม่อีกครั้งโดยใช้ CREATE TABLE เพิ่มเติมพร้อมพารามิเตอร์ที่ถูกต้อง คำสั่ง ALTER TABLE จะถูกบล็อก
- โครงสร้างของโครงสร้างทั้งสามนี้สามารถดูได้ด้านล่าง
โต๊ะเติมเงิน
คุณสามารถเติมข้อมูลลงในตารางได้โดยใช้โครงสร้าง CREATE TABLE วิธีที่มีประสิทธิภาพคือการแยกตารางที่สร้างขึ้นและเติมข้อมูล โดยเฉพาะอย่างยิ่งสำหรับผู้เริ่มต้นใช้ SQL เนื่องจาก: |
ฉลาดทางสายตามากขึ้น |
จะง่ายกว่าถ้าคุณกรอกตารางทีละขั้นตอน |
หากต้องการเลือกมุมมองตารางปัจจุบัน: |
|
วีดี. |
||||
เมชคานต์ซา |
||||
เลขที่อพาร์ตเมนต์ |
||||
ที่อยู่อีเมล |
โอเล็คซิน. วี.วี.กอร์บูนอฟ ดี.ดี. [ป้องกันอีเมล]ซิโมโนวา เค.อาร์
ดอร์มิโตโตวา เค.เอส. คุณต้องขอความช่วยเหลือสร้างตาราง วันที่ของผู้คนและกรอกคำสั่ง INSERT ต่อไปนี้ วันที่ของผู้คนคำแนะนำที่มีอยู่ วันที่ของผู้คนเพิ่มหนึ่งแถวในตารางเพื่อนร่วมบ้านที่เราสร้างไว้แล้ว: วันที่ของผู้คน")
วิดัลยาโม
รุ่นก่อนหน้าตาราง DROP Table เพื่อนร่วมบ้าน;
- เรากำลังสร้างตารางสร้างตาราง housemates(housemeateID int NOT NULL CONSTRAINT primary_id PRIMARY KEY, housemateName nvarchar(30) NOT NULL, BithDate date NOT NULL; -- การแทรกข้อมูลลงในตาราง USE GO INSERT INTO ( , , , ,) VALUES (100, "Alexin V วี", "19721122", 11,"
"), (101,"กอร์บูนอฟ ดี.ดี.,"19220525",25," รุ่นก่อนหน้า"), (102," Simonova K.R. "," 19560211 ", 13,"
), (103," ดอร์มิโทวา เค.เอส.,"19770815",9," วันที่ของผู้คนและกรอกคำสั่ง INSERT ต่อไปนี้ วันที่ของผู้คนคำแนะนำที่มีอยู่ วันที่ของผู้คนเพิ่มหนึ่งแถวในตารางเพื่อนร่วมบ้านที่เราสร้างไว้แล้ว: วันที่ของผู้คน")
ในแอปพลิเคชัน มีโครงสร้าง INSERT สองบล็อกแยกกัน:
เข้าไปข้างใน วันที่ของผู้คน- สิ่งที่ระบุตารางที่มีการเพิ่มข้อมูล วันที่ของผู้คนค่านิยม วันที่ของผู้คน- การเริ่มต้นการแนะนำแถว วันที่ของผู้คน",9)
ในบล็อก VALUES การกำหนดค่าเริ่มต้นของแถวจะดำเนินการในลำดับเดียวกันกับขั้นตอนในบล็อก INTO
การเติมแถวหมายถึงค่าตรงกลางที่แขน
สิ่งสำคัญคือต้องเล่นอย่างปลอดภัยผ่านอาการโคม่าและเรียงแถวกัน
โครงสร้าง INSERT สามารถใช้ได้จนถึงบางจุดที่ยังไม่มีข้อมูลเท่านั้น มิฉะนั้นฉันจะขอความเมตตาจาก Vikonannyaอัพเดทตารางครับ
จำเป็นต้องอัปเดตตารางเนื่องจากจำเป็นต้องเปลี่ยนข้อมูลที่ป้อนลงในตารางแล้ว โทรสอบถามคำแนะนำเพิ่มเติมอัปเดต
- เช่นเดียวกับที่ INSERT ใช้งานได้กับตารางว่างเท่านั้น UPDATE จะใช้ได้กับตารางที่เติมไว้เท่านั้น วันที่ของผู้คน Yakscho จะขอที่อยู่ของคนวัยกลางคนที่ไม่อาจให้อภัยได้ เพื่อเป็นการอภัยโทษ vinikne
ให้รหัสที่น่ารังเกียจใหม่ ภาพหน้าจอทางไปรษณีย์แก่ผู้อยู่อาศัยในคูหาหมายเลขประจำตัว 103
- เช่นเดียวกับที่ INSERT ใช้งานได้กับตารางว่างเท่านั้น UPDATE จะใช้ได้กับตารางที่เติมไว้เท่านั้น วันที่ของผู้คนอัพเดทเพื่อนร่วมบ้าน SET Email = "
โดยที่ housemeateID = 103
ปิดกั้น
- ชุด
- - บล็อกการเปลี่ยนแปลงนี้
- หากจำเป็นต้องอัปเดตความหมายของเมล็ดพันธุ์จำนวนหนึ่ง คุณจะต้องประกันตัวมากเกินไปจนอาการโคม่า
", housemateName = "Rurik S.S." โดยที่ housemeateID = 103 กำลังเปลี่ยนโต๊ะ.
ในขั้นตอนต่อมาของการออกแบบหรือหลังการพัฒนาฐาน ความต้องการมักเกิดขึ้น:
โดดาติ abo vidaliti stovpets;
เปลี่ยนประเภทสถานี จดจำทั้งกลุ่มเป็นคีย์หลักและคีย์ภายนอก และลบการแลกเปลี่ยนสำหรับการดำเนินการทั้งหมดนี้ จะมีการกำหนดคำสั่งในการกำหนดใหม่
โต๊ะเอเตอร์
เพื่อเพิ่มความสมบูรณ์ คำสั่ง ALTER TABLE จะควบคู่กับส่วนคำสั่ง ADD เพิ่มส่วนเพิ่มเติมใหม่ให้กับตารางเพื่อนร่วมบ้านจากส่วนสุดท้าย:สำหรับการดำเนินการทั้งหมดนี้ จะมีการกำหนดคำสั่งในการกำหนดใหม่
แก้ไขตารางเพื่อนร่วมบ้านเพิ่ม PhoneNumber nvarchar (12) NULL;
มีความจำเป็นต้องระงับข้อเสนอจนกว่าจะดำเนินต่อไป
เปลี่ยนคอลัมน์
ตรงกลาง ALTER TABLE:
แก้ไขเพื่อนร่วมบ้านตาราง ALTER COLUMN PhoneNumber ถ่าน (25) ไม่เป็นโมฆะ;
ดูเหมือนว่าจะหยุดนิ่งโดยสิ้นเชิง
ตอนนี้เราได้เรียนรู้เกี่ยวกับประเภทของข้อมูลแล้ว ตอนนี้เราสามารถวิเคราะห์ตารางสำหรับฟอรัมของเราได้ง่ายขึ้นเรามาเอามันออกไปให้พ้นทางกันเถอะ
มาดูตารางผู้ใช้กันดีกว่า
เรามี 4 แต้ม:
Id_user - ค่าจำนวนเต็มซึ่งจะเป็นประเภท int ล้อมรอบด้วยอักขระ 10 ตัว - int (10)
name คือค่า varchar ล้อมรอบด้วยอักขระ 20 ตัว - varchar(20)
อีเมล – ชุดของค่า varchar ล้อมรอบด้วยอักขระ 50 ตัว – varchar(50)
รหัสผ่าน – ชุดของค่า varchar ล้อมรอบด้วยอักขระ 15 ตัว – varchar(15)
กรอกค่าฟิลด์ทั้งหมดแล้วจึงต้องเพิ่มประเภท NOT NULL
Id_user int (10) ไม่เป็นโมฆะ ชื่อ varchar (20) ไม่เป็นโมฆะอีเมล varchar (50) ไม่เป็นโมฆะ
รหัสผ่าน – ชุดของค่า varchar ล้อมรอบด้วยอักขระ 15 ตัว – varchar(15)
กรอกค่าฟิลด์ทั้งหมดแล้วจึงต้องเพิ่มประเภท NOT NULL
ขั้นตอนแรกตามที่คุณจำได้จากแบบจำลองแนวคิดของฐานข้อมูลของเราคือคีย์หลัก (ค่าเหล่านี้ไม่ซ้ำกันและระบุบันทึกโดยไม่ซ้ำกัน)
คุณสามารถติดตามความเป็นเอกลักษณ์ได้ด้วยตัวเองแต่มันไม่สมเหตุสมผล ซึ่งมีคุณลักษณะพิเศษใน SQL AUTO_INCREMENT
ซึ่งเมื่อเพิ่มข้อมูลลงในตารางจะแสดงค่าสูงสุดของคอลัมน์นี้ ให้ลบค่าออก 1 และเพิ่มลงในคอลัมน์
รหัสผ่าน – ชุดของค่า varchar ล้อมรอบด้วยอักขระ 15 ตัว – varchar(15)
กรอกค่าฟิลด์ทั้งหมดแล้วจึงต้องเพิ่มประเภท NOT NULL
ด้วยวิธีนี้ หมายเลขเฉพาะและประเภทแอปพลิเคชัน NOT NULL จะถูกสร้างขึ้นโดยอัตโนมัติสำหรับรายการนี้
ดังนั้น nadamo คุณลักษณะ stovptsy ที่มีคีย์หลัก:
รหัสผ่าน varchar (15) ไม่เป็นโมฆะ
ตอนนี้ตรวจสอบให้แน่ใจว่าฟิลด์ id_user เป็นคีย์หลัก
คีย์เวิร์ดใน SQL คืออะไร?
คีย์หลัก()
ชื่อของคีย์ฟิลด์ระบุไว้ที่แขน
กรุณาทำการเปลี่ยนแปลง:
Id_user int (10) AUTO_INCREMENT
);
รหัสผ่าน varchar (15) ไม่เป็นโมฆะ
คีย์หลัก (id_user)
ตอนนี้ตารางก็พร้อมแล้ว และตัวเลือกที่เหลือจะเป็นดังนี้:
สร้างผู้ใช้ตาราง ( id_user int (10) AUTO_INCREMENT,ชื่อ varchar (20) ไม่เป็นโมฆะ
อีเมล varchar (50) ไม่เป็นโมฆะ
รหัสผ่าน varchar (15) ไม่เป็นโมฆะ
คีย์หลัก (id_user)
ทีนี้มาดูตารางอื่น - หัวข้อ
คีย์หลัก (id_user)
เมื่อวัดขนาดในลักษณะเดียวกัน เราสามารถมีฟิลด์ต่อไปนี้ได้:
id_author int (10) ไม่เป็นโมฆะ
คีย์หลัก (id_topic)
นอกจากนี้ ในโมเดลฐานข้อมูลของเรา ฟิลด์ id_author ก็เป็นคีย์นอกด้วย
id_topic int (10) AUTO_INCREMENT,
topic_name varchar (100) ไม่เป็นโมฆะ
คีย์หลัก (id_topic)
คีย์ต่างประเทศ (id_author) ผู้ใช้อ้างอิง (id_user)
);
ตารางที่เหลือ – โพสต์ (โพสต์) – สูญหาย ทุกอย่างคล้ายกันที่นี่ ยกเว้นสอง:
ปุ่มภายนอก
สร้างโพสต์ในตาราง (
id_post int (10) AUTO_INCREMENT,
ข้อความไม่เป็นโมฆะ
id_author int (10) ไม่เป็นโมฆะ
id_topic int (10) ไม่เป็นโมฆะ
คีย์หลัก (id_post)
ผู้ใช้อ้างอิงคีย์ต่างประเทศ (id_author) (id_user)
);
คีย์ต่างประเทศ (id_topic) หัวข้ออ้างอิง (id_topic)
โปรดจำไว้ว่า สามารถมีคีย์รองได้หลายคีย์ในตาราง และคีย์ MySQL หลักมีได้เพียงคีย์เดียวเท่านั้น
บทเรียนที่แล้วเราได้ลบฐานข้อมูลฟอรั่มของเรา และถึงเวลาที่จะต้องสร้างมันขึ้นมาใหม่อีกครั้ง เราเปิดตัวเซิร์ฟเวอร์ MySQL (เริ่ม - โปรแกรม - MySQL - เซิร์ฟเวอร์ MySQL 5.1 - ไคลเอนต์บรรทัดคำสั่ง MySQL) ป้อนรหัสผ่าน สร้างฟอรัมฐานข้อมูล (สร้างฟอรัมฐานข้อมูล;) เลือกสำหรับวิกิ (ใช้ฟอรัม;) และสร้างของเรา สามโต๊ะ:โปรดจำไว้ว่า หนึ่งคำสั่งสามารถเขียนได้หลายแถวโดยใช้ปุ่ม Enter (MySQL จะแทรกสัญลักษณ์โดยอัตโนมัติ
แถวใหม่ ->) จากนั้นหลังจากตัวคั่น (จุดที่มีจุด) กดปุ่ม Enter ให้เปิดบรรทัดถัดไปโปรดจำไว้ว่า หากคุณทำผิด คุณสามารถดูตารางหรือฐานข้อมูลทั้งหมดได้โดยใช้ตัวดำเนินการ DROP วิธีการจัดการบรรทัดคำสั่ง
มันยากมาก นั่นเป็นเหตุผลว่าทำไม (โดยเฉพาะใน เวทีซัง:
) การเขียนในโปรแกรมแก้ไขใดๆ เช่น Notepad นั้นง่ายกว่า จากนั้นจึงคัดลอกและวางที่ส่วนท้ายสุด
ตอนนี้ตารางได้ถูกสร้างขึ้นแล้ว เข้าไปได้เลย มาทายทีมกันดีกว่า
แสดงตาราง
ฉัน ค้นหาโครงสร้างของตารางที่เหลือของเรา:
หันไปที่โต๊ะของเรากันเถอะ
ตอนนี้เราต้องป้อนข้อมูลลงในตารางของเรา บนไซต์ต่างๆ คุณมักจะป้อนข้อมูลลงในแบบฟอร์ม html จากนั้นสคริปต์ของฉัน (php, java...) จะดึงข้อมูลนี้จากแบบฟอร์มและป้อนลงในฐานข้อมูลชำระค่าสืบค้น SQL เพิ่มเติมสำหรับการป้อนข้อมูลลงในฐานข้อมูล
ยังเป็นไปไม่ได้ที่เราจะเขียนสคริปต์ใน PHP ได้ แต่ในไม่ช้าเราจะได้เรียนรู้วิธีส่งคำสั่ง SQL เพื่อป้อนข้อมูล
ซึ่งผู้ปฏิบัติงานกำลังได้รับชัยชนะ
แทรก วันที่ของผู้คน", "1111");
- ไวยากรณ์สามารถแบ่งออกเป็นสองประเภท
ตัวเลือกแรกใช้เพื่อป้อนข้อมูลในทุกฟิลด์ของตาราง:
แทรกลงในค่า table_name ("first_stack_values", "other_stuff_values", ..., "remaining_stack_values");
ลองเพิ่มค่าต่อไปนี้ลงในตารางผู้ใช้ของเรา: วันที่ของผู้คน", "2222");
แทรกลงในค่าผู้ใช้ ("1", "sergey", "
อีกทางเลือกหนึ่งคือการป้อนข้อมูลลงในช่องตารางเดียวกัน:
แทรกลงใน table_name ("table_name", "stuff_name") ค่า ("first_table_values", "other_table_values");
ในตารางผู้ใช้ของเรา จำเป็นต้องกรอกข้อมูลทุกฟิลด์ แต่ฟิลด์แรกของเรามีคีย์เวิร์ด - AUTO_INCREMENT (ดังนั้นระบบจะกรอกข้อมูลโดยอัตโนมัติ) เพื่อให้เราสามารถข้ามส่วนทั้งหมดนี้ได้:
แทรกผู้ใช้ (ชื่อ, อีเมล, รหัสผ่าน) ค่า ("valera", "
ตอนนี้เราจะเพิ่มสองสามแถวลงในตารางโพสต์ โดยจำไว้ว่าตารางนี้มีคีย์ภายนอก 2 คีย์
id_author และ id_topic ซึ่งเราจะป้อนในตารางที่เกี่ยวข้อง:
- เรามี 3 ตารางซึ่งมีข้อมูลอยู่
- อาหารกำลังจะมา - คุณสามารถดูจำนวนข้อมูลที่เก็บไว้ในตารางได้
- เราจะจัดการกับเรื่องนี้ในบทเรียนหน้า
SQL: วิธีเลือกแถวต่างๆ ตามค่าปัจจุบันของหน่วยงาน
จะเลือกผลิตภัณฑ์ที่มีราคาสูงสุดสำหรับประเภทผิวได้อย่างไร?
รหัสระดับ ผลิตภัณฑ์ขั้นต่ำ 1 x 1 2 ปี 1 3 z 1 4 a 1
คุณต้องทำซ้ำข้อมูลเดียวกันในฐานข้อมูลโดยเปลี่ยนตัวระบุผลิตภัณฑ์เป็น 1 2.3
40
รหัสระดับ ผลิตภัณฑ์ขั้นต่ำ 1 x 2 2 ปี 2 3 z 2 4 a 2
ฉันสามารถหาเงินเพื่อการศึกษาได้
INSERT INTO dbo.Levels SELECT top 4 * fROM dbo.Levels จะคัดลอกข้อมูล
ฉันสามารถคัดลอกและวางข้อมูลโดยไม่เปลี่ยนค่าผลิตภัณฑ์ได้อย่างไร
< 40) INSERT INTO dbo.Levels(`min`, product) SELECT `min`, cte.n as product fROM dbo.Levels l cross join cte where l.productId = 1;
โดยเร็วที่สุด คุณจะต้องดำเนินการอีกขั้นตอนหนึ่ง:
INSERT INTO dbo.Levels (LevelID, Min, Product) เลือก LevelID, Min, 2 จาก dbo.Levels โดยที่ Product = 1< 40) INSERT INTO dbo.Levels(levelid, `min`, product) SELECT l.levelid+(cte.n-1)*4, `min`, cte.n as product fROM dbo.Levels l cross join cte where l.productId = 1;
... ทำซ้ำแถวด้วยตัวระบุผลิตภัณฑ์อื่น
โปรดทราบว่า WHERE Product = 1 จะเป็น TOP 4 ที่น่าเชื่อถือที่สุดและต่ำกว่า
เนื่องจากคุณจะมีแถวมากกว่าสี่แถวในตาราง คุณจึงไม่สามารถรับประกันได้ว่า TOP 4 จะหมุนแถวเดียวกัน เนื่องจากคุณจะไม่เพิ่ม ORDER BY สำหรับการเลือก แต่ WHERE Product = ... จะหมุนเหมือนเดิมเสมอและ จะดำเนินการต่อไป จากนั้นคุณจะเพิ่มแถวเพิ่มเติมพร้อมรหัสให้กับผลิตภัณฑ์ 1 (คุณจะต้องดูความเป็นไปได้ในการเปลี่ยน TOP 4 เป็น TOP 5 ก่อนที่จะเพิ่มแถวเพิ่มเติม)
คุณสามารถสร้างรหัสผลิตภัณฑ์แล้วเพิ่มลงใน:
ด้วย L0 AS(เลือก 1 AS C UNION ทั้งหมดเลือก 1 AS O), -- 2 แถว L1 AS(เลือก 1 AS C จาก L0 เป็น A CROSS JOIN L0 AS B), -- 4 แถว Nums AS(SELECT ROW_NUMBER() OVER (เรียงตาม (SELECT NULL)) AS N จาก L1) เลือก lvl., lvl., num.[N] จาก dbo
เลเวล CROSS JOIN จำนวน nums