JavaRush /จาวาบล็อก /Random-TH /เราวิเคราะห์ฐานข้อมูลและภาษา SQL (ตอนที่ 3) - "โครงการ Ja...
Roman Beekeeper
ระดับ

เราวิเคราะห์ฐานข้อมูลและภาษา SQL (ตอนที่ 3) - "โครงการ Java จาก A ถึง Z"

เผยแพร่ในกลุ่ม
บทความจากซีรีส์เกี่ยวกับการสร้างโปรเจ็กต์ Java (ลิงก์ไปยังเนื้อหาอื่นอยู่ท้ายสุด) เป้าหมายคือการวิเคราะห์เทคโนโลยีที่สำคัญ ผลลัพธ์คือการเขียนบอทโทรเลข "โครงการ Java จาก A ถึง Z": เราวิเคราะห์ฐานข้อมูลและภาษา SQL  ส่วนที่ 3 - 1สวัสดีท่านสุภาพสตรีและสุภาพบุรุษ เรามาพูดถึงฐานข้อมูล SQL และเรื่องอื่นๆ กันต่อ เนื้อหาในวันนี้จะประกอบด้วยทฤษฎีส่วนหนึ่งและการปฏิบัติบางส่วน ฉันขอเตือนคุณว่าครั้งที่แล้วเราคุยกันเกี่ยวกับวิธีการตั้งค่าทุกอย่าง วิธีสร้างฐานข้อมูล ตารางและรับข้อมูลจากฐานข้อมูล ถึงเวลาดูว่ามีอะไรเกิดขึ้นกับการสำรวจระยะไกลหรือไม่ ในความคิดของฉัน ครึ่งหนึ่งสามารถทำได้โดยอ้างอิงจากบทความที่แล้วเท่านั้น ปรากฎว่าในการประกอบแอปพลิเคชันอย่างเหมาะสมและทำให้ทุกอย่างสวยงามมากขึ้นหรือน้อยลงคุณต้องพูดถึงฐานข้อมูลและคุณต้องใช้เวลามากในการพูดคุยเกี่ยวกับฐานข้อมูลเหล่านั้น

ตรวจการบ้าน

"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 2ขอแสดงความนับถืออย่างสูงต่อทุกคนที่ทำภารกิจสำเร็จ ซึ่งหมายความว่าคุณเข้าใจว่ามีเพียงคุณเท่านั้นที่ต้องการสิ่งนี้และมันจะช่วยคุณเท่านั้น สำหรับผู้ที่ละเลยงานของฉัน ฉันขอเตือนคุณถึงเงื่อนไข:
  1. คุณต้องเพิ่มคีย์หลัก (PRIMARY KEY) จากฟิลด์ ID ลงในสคีมาตารางประเทศ
  2. เพิ่มประเทศอื่นลงในตารางประเทศ - มอลโดวา
  3. ตามโครงร่างของบทความก่อนหน้านี้ ให้สร้างเมืองตารางซึ่งจะมีฟิลด์ทั้งหมดที่อธิบายไว้ ชื่อฟิลด์จะเป็นดังนี้: id, ชื่อ, country_id, ประชากร
  4. เพิ่มคีย์หลักลงในตารางเมือง
  5. เพิ่มคีย์ต่างประเทศลงในตารางเมือง
ในการเริ่มต้น ให้ใช้ส่วนแรกของบทความที่แล้วและไปที่เทอร์มินัลฐานข้อมูล

การเพิ่มคีย์หลัก

คุณสามารถเพิ่มคีย์หลัก (PRIMARY KEY) ได้สองวิธี: ทันทีเมื่อสร้างตาราง หรือหลังการสร้าง โดยใช้ ALTER TABLE

คีย์หลักระหว่างการสร้างตาราง

เนื่องจากเราได้สร้างตารางแล้ว และหากไม่ลบออก เราจะไม่สามารถแสดงแนวทางนี้ภายในฐานข้อมูลนี้ได้ เราเพียงแต่สร้างฐานข้อมูลทดสอบชั่วคราวซึ่งเราจะทำทุกอย่าง มาป้อนคำสั่งต่อไปนี้:
  • สร้างฐานข้อมูลใหม่:

    $ สร้างการทดสอบฐานข้อมูล;

  • สร้างตารางโดยเพิ่มคีย์หลัก:

    $ สร้างตารางประเทศ (id INT ชื่อ VARCHAR (30) คีย์หลัก (id));

โดยทั่วไปไม่มีอะไรซับซ้อน หลังจากประกาศตัวแปรแล้ว ส่วนต่อไปนี้PRIMARY KEY (id) จะถูกเพิ่ม โดยที่ชื่อของฟิลด์ที่จะเป็นคีย์หลักจะถูกส่งผ่านในวงเล็บ มาดูกันว่าสคีมาของตารางเปลี่ยนแปลงไปอย่างไร: $ DESC country; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 3อย่างที่คุณเห็น ค่า PRI ปรากฏในฟิลด์ คีย์สำหรับรายการรหัส

คีย์หลักหลังการสร้างตาราง

อย่างที่ผมบอกไปก่อนหน้านี้ คุณสามารถกำหนดคีย์แรกหลังจากสร้างตารางได้โดยใช้ALTER TABLE เราจะเรียกใช้ตัวอย่างนี้ใน ฐานข้อมูลเมือง ของเรา :
  • ไปที่ฐานข้อมูลของเราจากการทดสอบ:

    $USE เมือง;

  • ตรวจสอบว่าเราอยู่ในฐานข้อมูลของเราอย่างแน่นอน (ควรมีฟิลด์อื่นอยู่ที่นั่น - ประชากร) เพื่อทำสิ่งนี้เราเขียน:

    $ ประชากร DESC;

  • ทุกอย่างถูกต้อง โต๊ะเป็นของเรา มาเขียนสิ่งต่อไปนี้:

    $ เปลี่ยนประเทศตารางเพิ่มคีย์หลัก (id);

  • และตรวจสอบได้ทันทีด้วยคำสั่ง:

    $ประเทศ DESC;

"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 4อย่างที่คุณเห็นจากภาพทุกอย่างถูกต้อง ค่า PRIอยู่ในตำแหน่งที่ควรจะเป็น อย่างไรก็ตาม เราทำงานร่วมกับฐานข้อมูลทดสอบ ตอนนี้เราต้องลบมันทิ้ง: ทำไมเราต้องทำให้เซิร์ฟเวอร์เกะกะใช่ไหม? ในการดำเนินการนี้ เราใช้คำสั่งที่ค่อนข้างเป็นที่รู้จัก: $ DROP DATABASE test;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 5

เพิ่มมอลโดวา

ก่อนอื่นเราต้องตัดสินใจว่าเราจะบันทึกอะไร ID ถัดไปของเราคือ 4 ชื่อจะเป็นมอลโดวาและมีประชากร 3550900 ดังนั้นเราจึงดำเนินการคำสั่ง INSERT INTO ที่เรารู้อยู่แล้ว: $ INSERT INTO country VALUES (4, 'Moldova', 3550900); และเราตรวจสอบว่าค่านี้อยู่ในฐานข้อมูลทุกประการหรือไม่: $ SELECT * FROM country WHERE id = 4; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 6ในคำขอข้อมูล ฉันกำหนดได้ทันทีว่าจะต้องค้นหาฟิลด์ใด ดังนั้นเราจึงมีเพียงบันทึกเดียวเท่านั้น ซึ่งเป็นสิ่งที่เราต้องการ

สร้างตารางเมือง

การใช้ไดอะแกรมจากบทความแรกเกี่ยวกับฐานข้อมูล เราได้รับข้อมูลที่จำเป็นเกี่ยวกับตาราง โดยจะมีฟิลด์ดังต่อไปนี้:
  • id — ตัวระบุที่ไม่ซ้ำ
  • ชื่อ — ชื่อเมือง;
  • Country_id - รหัสต่างประเทศของประเทศ
  • ประชากร - ประชากรของเมือง
การเขียน ID ที่ไม่ซ้ำกันทุกครั้งจะค่อนข้างเครียดใช่ไหม? ฉันอยากจะฝากเรื่องนี้ไว้กับเจ้าหน้าที่MySQL และมีวิธีดังกล่าว - เพิ่มอัตโนมัติ . เราจำเป็นต้องเพิ่มสิ่งนี้ลงในฟิลด์ดิจิทัล และหากเราไม่ส่งผ่านค่าอย่างชัดเจน MySQL เองก็จะเพิ่ม ID ขึ้นหนึ่งรายการเมื่อเทียบกับอันก่อนหน้า ดังนั้นการสร้างตารางจะมีลักษณะดังนี้: $ CREATE TABLE city ( id INT AUTO_INCREMENT, ชื่อ VARCHAR(30), country_id INT, ประชากร INT, PRIMARY KEY (id)); ลองดูแผนภาพตารางเพื่อดูว่าทุกอย่างถูกต้องหรือไม่: $ DESC city; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 7ดังที่คุณเห็นจากแผนภาพตาราง เรามีคำอธิบายใหม่สำหรับฟิลด์ id - auto_increation ดังนั้นเราจึงทำทุกอย่างถูกต้อง มาตรวจสอบข้อมูลในตารางที่กำหนดค่าไว้ครบถ้วนแล้ว ในการดำเนินการนี้ เราจะดำเนินการส่วนสุดท้ายของงาน - คีย์ต่างประเทศ

เพิ่มคีย์ต่างประเทศให้กับเมือง

สำหรับคีย์ต่างประเทศ จะมีคำสั่งนี้: $ ALTER TABLE city ADD FOREIGN KEY (country_id) REFERENCES country(id); และมาตรวจสอบทันทีว่ามีอะไรผิดปกติกับสคีมาของตาราง: มันเปลี่ยนแปลงไปในหนึ่งชั่วโมงหรือไม่? $เมือง DESC; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 8

ส่วนโบนัส. การทดสอบ

ฉันลืมเพิ่มลงในงาน - กรอกข้อมูลที่อยู่ในภาพหน้าจอของส่วนแรก ฉันลืมไป ตอนนี้ฉันจะทำเอง และสำหรับผู้ที่สนใจคุณสามารถทำได้ด้วยตัวเองโดยไม่มีฉันแล้วเราจะตรวจสอบ ;) มีคาร์คอฟ, เคียฟ, มินสค์, โอเดสซา, โวโรเนซ และเราจะเพิ่มคีชีเนาด้วย แต่คราวนี้ เราจะไม่ส่ง ID เราจะข้าม: $ INSERT INTO city (ชื่อ, country_id, ประชากร) VALUES ('Kharkov', 1, 1443000), ('Kyiv', 1, 3703100), ('Minsk' , 3, 2545500), ('โอเดสซา', 1, 1017699), ('โวโรเนจ', 2, 1058261), ('คิชิเนฟ', 4, 695400); อย่างที่คุณเห็น คุณสามารถสร้างหลายรายการพร้อมกันได้โดยใช้คำสั่ง INSERT INTO เพียงคำสั่งเดียว สิ่งที่สะดวกจำไว้) และมาดูกันว่ามีอะไรอยู่ในตารางทันที: $ SELECT * FROM city; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 9AUTO_INCREMENT - ทำงานตรงตามที่เราต้องการ ไฟล์ ID ได้รับการกรอกเรียบร้อยแล้ว แม้ว่าเราจะไม่ได้ส่งก็ตาม คีย์ต่างประเทศเป็นสิ่งที่ขึ้นอยู่กับ หากต้องการตรวจสอบว่าทำงานถูกต้องหรือไม่ คุณสามารถลองเขียนคีย์ต่างประเทศที่ไม่มีอยู่ในตารางต่างประเทศได้ สมมติว่าเราตัดสินใจว่า id = 5 คือคาซัคสถาน แต่ในความเป็นจริงมันไม่อยู่ในตารางประเทศ และเพื่อตรวจสอบว่าฐานข้อมูลสาบานหรือไม่ ให้เพิ่มเมือง - Astana: $ INSERT INTO city (ชื่อ, country_id, ประชากร) VALUES ('Astana', 5, 1136156); และเราได้รับข้อผิดพลาดโดยธรรมชาติ: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 10ตอนนี้คีย์ต่างประเทศทำให้แน่ใจว่าเราไม่ได้พยายามกำหนดประเทศให้กับเมืองที่ไม่ได้อยู่ในฐานข้อมูลของเรา การบ้านส่วนนี้ถือว่าสมบูรณ์แล้ว - ส่งต่ออันใหม่ได้เลย :)

คำสั่งเลือก

ทุกอย่างดูไม่น่ากลัวอีกต่อไปใช่ไหม? ฉันอยากจะทราบอีกครั้งว่าสำหรับนักพัฒนา Java ความรู้เกี่ยวกับฐานข้อมูลเป็นสิ่งจำเป็น หากไม่มีฐานข้อมูลคุณจะไม่สามารถไปไหนได้ ใช่ ฉันต้องการเริ่มเขียนใบสมัครแล้ว ฉันเห็นด้วย แต่มันจำเป็น ดังนั้นเราจะทำเช่นนี้ต่อไป การใช้คำสั่ง SELECT เราดึงข้อมูลจากฐานข้อมูล นั่นคือนี่คือการดำเนินการ DML ทั่วไป (คุณลืมไปแล้วว่ามันคืออะไร...))) อ่านบทความซ้ำก่อน) ประโยชน์ของฐานข้อมูลเชิงสัมพันธ์คืออะไร? มีฟังก์ชันการทำงานที่ยอดเยี่ยมสำหรับการรวบรวมและเรียกข้อมูล นี่คือสิ่งที่คำสั่ง SELECT ใช้สำหรับ ดูเหมือนว่าจะไม่มีอะไรซับซ้อนเกี่ยวกับเรื่องนี้ใช่ไหม? แต่ปรากฎว่ายังมีอะไรที่ต้องเข้าใจอีกมาก) สิ่งสำคัญสำหรับเราคือการเข้าใจพื้นฐานที่เราต่อยอดได้ แบบสอบถามที่ง่ายที่สุดด้วยคำสั่ง SELECT คือการเลือกข้อมูลทั้งหมดจากตารางเดียว ฉันชอบคำอธิบายจากวิกิมากเกี่ยวกับลำดับที่ตัวดำเนินการควรเรียงลำดับในการสืบค้น SELECT ดังนั้นฉันจะคัดลอกมันอย่างโจ่งแจ้งที่นี่:
SELECT
  [DISTINCT | DISTINCTROW | ALL]
  select_expression,...
FROM table_references
[WHERE where_definition]
[GROUP BY {unsigned_integer | col_name | formula}]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]
ที่นี่คุณจะเห็นว่าคุณไม่สามารถใส่ตัวดำเนินการ GROUP BY ก่อนแล้วจึงใส่ตัวดำเนินการ WHERE สิ่งนี้จะต้องถูกจดจำเพื่อที่ภายหลังจะได้ไม่รู้สึกขุ่นเคืองกับข้อผิดพลาดที่ไม่ชัดเจนว่ามาจากไหน $SELECT * จากเมือง; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 11แต่การขูดข้อมูลทั้งหมดออกไปนั้นไม่ใช่เรื่องสนุกสำหรับเราอย่างชัดเจน สิ่งนี้จะเหมือนกันทุกประการหากเราต้องการตอกตะปูด้วยกล้องจุลทรรศน์[1] , [2] . เนื่องจากฐานข้อมูลดำเนินการกรอง การเรียงลำดับ และการรวมกลุ่มได้เร็วกว่าโค้ด Java มาก จึงควรปล่อยเรื่องนี้ไว้กับฐานข้อมูลจะดีกว่า ดังนั้นการทำให้งานซับซ้อนขึ้นเราจะเปิดฟังก์ชันใหม่

พารามิเตอร์ที่ไหน

หากต้องการกรองส่วนที่เลือกจะ ใช้คำ WHERE สิ่งนี้ควรตีความดังนี้: SELECT * FROM tablename (เลือกฟิลด์ทั้งหมดจากชื่อตารางของตาราง) WHERE talbe_row = 1 (โดยที่ในบันทึก ฟิลด์ table_row เท่ากับ 1) สิ่งสำคัญคือต้องทราบว่าลำดับของคำหลักในแบบสอบถามเป็นสิ่งสำคัญ คุณไม่สามารถเขียน WHERE a =1 FROM table_name SELECT *. สำหรับภาษารัสเซียถือว่าใช้ได้ และสำหรับบางคนอาจดูไม่แย่นัก แต่สำหรับ SQL นี่ถือว่ายอมรับไม่ได้ เราเขียนแบบสอบถามต่อไปนี้: $ SELECT * FROM city WHERE Country_id = 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 12และเราเลือกเมืองในยูเครน ไม่เลวใช่มั้ย? จะเป็นอย่างไรถ้าเราไม่เพียงต้องการภาษายูเครนเท่านั้น แต่ยังต้องการชาวเบลารุสด้วย? เพื่อจุดประสงค์นี้ เราสามารถแสดงรายการชุดของค่าที่ฟิลด์สามารถใช้ได้: $SELECT * FROM city WHERE country_id IN(1, 3); "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 13และเรามีเมืองต่างๆ จากสองประเทศคอยตอบรับอยู่แล้ว จะเกิดอะไรขึ้นหากมีหลายเงื่อนไขที่ต้องกรอง สมมติว่าเราต้องการเมืองที่มีประชากรมากกว่าสองล้านคน? หากต้องการทำสิ่งนี้ ให้ใช้คำว่า ORและAND : $ SELECT * FROM city WHERE Country_id IN (1, 3) AND ประชากร > 2000000; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 14เยี่ยมมาก แต่จะเกิดอะไรขึ้นถ้าเราจำเป็นต้องเพิ่มเงื่อนไขอีกหนึ่งข้อ - เพื่อค้นหาชื่อผ่านนิพจน์ทั่วไป (ฉันจะไม่อธิบายนิพจน์ทั่วไปที่นี่: นี่คือคนที่ ทำสิ่งนี้ "สั้น ๆ" ใน 4 ส่วน )? ตัวอย่างเช่น เราจำวิธีสะกดเมืองได้ แต่ไม่ทั้งหมด... ในการดำเนินการนี้ คุณสามารถเพิ่มคีย์เวิร์ด LIKEลงในนิพจน์การกรองได้: $ SELECT * FROM city WHERE country_id IN (1, 3) AND allowance > 2000000 OR ชื่อ LIKE “%hark%”; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 15และด้วยวิธีนี้ เราก็ได้คาร์คอฟด้วย เป็นผลให้เราสามารถพูดได้ว่าการค้นหาของเราดีมาก แต่ฉันไม่ต้องการเรียงลำดับตาม ID แต่เรียงตามประชากร แต่อย่างไร? ใช่ ง่ายมาก...

เรียงตามพารามิเตอร์

เมื่อใช้ ORDER BY เราสามารถจัดเรียงบันทึกที่เราได้รับตามฟิลด์เฉพาะได้ มันเรียงลำดับทั้งตัวเลขและสตริง มาขยายแบบสอบถามก่อนหน้านี้ จัดเรียงตามประชากร โดยเพิ่ม ORDER BY ประชากร: $ SELECT * FROM city WHERE Country_id IN (1, 3) AND ประชากร > 2000000 หรือชื่อ LIKE “%hark%” ORDER BY ประชากร; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 16ดังที่เราเห็นการเรียงลำดับเกิดขึ้นตามลำดับธรรมชาตินั่นคือจากน้อยไปหามาก ถ้าเราต้องการสิ่งที่ตรงกันข้ามล่ะ? ในการดำเนินการนี้ คุณต้องเพิ่มคำว่า DESC: $ SELECT * FROM city WHERE Country_id IN (1, 3) AND ประชากร > 2000000 หรือชื่อ LIKE “%hark%” เรียงตามประชากร DESC; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 17ตอนนี้การเรียงลำดับจะขึ้นอยู่กับการลดจำนวนประชากร และฐานข้อมูลทำสิ่งนี้ได้อย่างรวดเร็ว: ไม่มีCollections.sort ที่ สามารถเปรียบเทียบได้ ตอนนี้ให้เรียงลำดับตามแถวตามชื่อในลำดับย้อนกลับ: $ SELECT * FROM city WHERE Country_id IN (1, 3) AND ประชากร > 2000000 หรือชื่อ LIKE “%hark%” เรียงตามชื่อ DESC;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 18

จัดกลุ่มตามพารามิเตอร์

ใช้เพื่อจัดกลุ่มบันทึกตามฟิลด์เฉพาะ โดยปกติจำเป็นต้องใช้ฟังก์ชันรวม... ฟังก์ชันรวมคืออะไร)) เหมาะสมที่จะจัดกลุ่มตามบางฟิลด์หากเหมือนกันสำหรับเรกคอร์ดที่ต่างกัน ลองดูว่านี่หมายถึงอะไรโดยใช้ตัวอย่างของเรา สมมติว่าเมืองต่างๆ มีรหัสต่างประเทศ - รหัสประเทศ ดังนั้น ID จะเหมือนกันสำหรับเมืองที่มาจากประเทศเดียวกัน ดังนั้น คุณสามารถถ่ายและจัดกลุ่มบันทึกตาม: $ SELECT Country_id, COUNT(*) FROM city GROUP BY Country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 19แต่หากไม่มีฟังก์ชันการรวมกลุ่ม มันดูขาดความดแจ่มใสเล็กน้อย คุณต้องยอมรับ ดังนั้น เรามาดูฟังก์ชันทั่วไปบางส่วนกัน:
  • COUNT - จำนวนระเบียนที่สามารถใช้ได้โดยไม่ต้องจัดกลุ่ม ใช้เป็นCOUNT(* ) ในกรณีที่จัดกลุ่มตามบางฟิลด์ - COUNT(groupped_field);
  • MAX - ค้นหาค่าสูงสุดสำหรับฟิลด์เฉพาะ
  • MIN - ค้นหาค่าต่ำสุดสำหรับฟิลด์เฉพาะ
  • SUM - ค้นหาผลรวมของฟิลด์เฉพาะ
  • AVG - ค้นหาค่าเฉลี่ย
โดยทั่วไป สามารถใช้ฟังก์ชันเหล่านี้ได้โดยไม่ต้องจัดกลุ่ม จากนั้นจะแสดงเพียงฟิลด์เดียวเท่านั้น มาลองใช้กับประชากรในเมืองของเรา: $ SELECT COUNT(*) FROM city; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 20สิ่งที่พวกเขาขอคือสิ่งที่พวกเขาได้รับ เพียงจำนวนบันทึก บางครั้งสิ่งนี้ก็มีประโยชน์ เช่น หากเราต้องการทราบจำนวนบทความของผู้เขียนคนใดคนหนึ่ง ไม่จำเป็นต้องดึงพวกมันออกจากฐานข้อมูลและนับพวกมัน คุณสามารถใช้ COUNT() ได้ง่ายๆ $ SELECT AVG(ประชากร) จากเมือง; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 21$ SELECT MIN(ประชากร) จากเมือง; และนี่คือจุดที่การจัดกลุ่มมีผลบังคับใช้ ตัวอย่างเช่น ภารกิจคือการได้เมืองที่เล็กที่สุดในประเทศ รู้อยู่แล้วว่าต้องทำอย่างไร? ลองด้วยตัวเองแล้วดู: $ SELECT Country_id as Country, MIN(population) FROM city WHERE GROUP BY Country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 3 - 22จนถึงตอนนี้เราเห็นเพียงหมายเลขประจำตัวของประเทศเท่านั้น แต่ก็ไม่สำคัญ ครั้งต่อไปเราจะทำทุกอย่าง ได้ผลแล้วและเราก็ได้สิ่งที่ต้องการ - เมืองที่เล็กที่สุดในประเทศที่มี ID = 1 ฟังก์ชั่นที่เหลือจะเหมือนเดิม สิ่งสำคัญคือต้องทราบว่าการกวาดล้างฟิลด์ทั้งหมดผ่าน * เมื่อใช้การจัดกลุ่มและการรวมกลุ่มจะไม่ทำงาน! คิดถึงจังเลย ;)

การบ้าน

จากผลลัพธ์ของบทความที่แล้วชัดเจนว่าทำการบ้านเสร็จแล้วมาทำต่อ)) ใช่ทุกคนที่ทำการบ้านจะยังคงใส่เครื่องหมาย "+" ในความคิดเห็นต่อไป เป็นสิ่งสำคัญสำหรับฉันที่หัวข้อการบ้านน่าสนใจสำหรับคุณ เพื่อที่ฉันจะได้ทำต่อไปในอนาคต ใช่ ฉันอ่านความคิดเห็นของคุณเป็นประจำ แน่นอนว่าฉันตอบไม่บ่อยนัก ฉันเห็นว่าพวกเขาขอให้ระบุปัญหา SQL ที่ยากขึ้น จะไม่มีปัญหาที่น่าสนใจจนกว่าเราจะเรียนรู้การเข้าร่วม ดังนั้นจึงมีปัญหาที่ฉันต้องการสำหรับเนื้อหาเพิ่มเติม

งาน:

    ทำความเข้าใจกับ ตัวดำเนินการHAVINGและเขียนแบบสอบถามตัวอย่างสำหรับตารางจากตัวอย่างของเรา หากคุณต้องการเพิ่มช่องบางช่องหรือค่าอื่นๆ เพื่อให้ชัดเจนยิ่งขึ้น ให้เพิ่มช่องเหล่านั้น หากใครต้องการ เขียนวิธีแก้ปัญหาตัวอย่างของคุณในความคิดเห็น ด้วยวิธีนี้ ฉันสามารถตรวจสอบได้ด้วยหากฉันมีเวลา
  1. ติดตั้ง MySQL Workbench เพื่อทำงานกับฐานข้อมูลผ่าน UI ฉันคิดว่าเราฝึกฝนการทำงานจากคอนโซลมามากพอแล้ว เชื่อมต่อกับฐานข้อมูล หากคุณใช้อย่างอื่นเพื่อทำงานกับฐานข้อมูล คุณสามารถข้ามงานนี้ได้เลย ฉันจะใช้เฉพาะ MySQL Workbench เท่านั้น
  2. เขียนคำขอเพื่อรับโดยใช้ข้อมูลของเรา:
    1. ประเทศที่เล็กที่สุด/มีประชากรมากที่สุด
    2. จำนวนประชากรโดยเฉลี่ยในประเทศ
    3. จำนวนประชากรโดยเฉลี่ยในประเทศที่ชื่อลงท้ายด้วย "a";
    4. จำนวนประเทศที่มีประชากรมากกว่าสี่ล้านคน
    5. จัดเรียงประเทศโดยการลดจำนวนประชากร
    6. จัดเรียงประเทศตามชื่อตามลำดับธรรมชาติ

บทสรุป

วันนี้เราพูดคุยรายละเอียดการบ้านจากบทเรียนที่แล้ว นอกจากนี้ผมยังถือว่าเรื่องนี้สำคัญทั้งสำหรับผู้ที่ไม่ได้ทำและสำหรับผู้ที่ไม่ได้ทำ สำหรับแบบแรก นี่เป็นโอกาสที่จะค้นหาคำตอบ และสำหรับแบบหลัง เพื่อเปรียบเทียบกับผลลัพธ์ของคุณ สมัครสมาชิกบัญชี GitHub ของฉันเพื่อรับทราบข้อมูลอัปเดตเกี่ยวกับการเปลี่ยนแปลงของโครงการ ฉันจะรักษาฐานโค้ดทั้งหมดไว้ที่นั่น ทุกอย่างจะเกิดขึ้นในองค์กรนี้ ต่อไป เราจะพูดถึงคำสั่ง SELECT เขาคือคนที่สำคัญที่สุดสำหรับเรา การร้องขอข้อมูลทั้งหมดจะต้องดำเนินการผ่านมัน และเราต้องเข้าใจมัน สิ่งที่สำคัญที่สุดคือการจำลำดับในการเพิ่มพารามิเตอร์ (WHERE, ORDER BY, GROUP BY และอื่นๆ) ใช่ ฉันไม่ได้บอกทุกอย่างที่เป็นไปได้ แต่ฉันไม่ได้ตั้งเป้าหมายเช่นนี้ให้กับตัวเอง ใช่ ฉันรู้ว่าคุณมีความกระตือรือร้นที่จะเขียนใบสมัครอยู่แล้ว อดทนไว้ นี่คือทั้งหมดที่คุณต้องการ ทั้งสำหรับโครงการและเพื่อการเติบโตทางอาชีพของคุณ ขณะที่คุณรอ ตรวจสอบให้แน่ใจว่า Git นั้นคุ้นเคยกับคุณแล้ว ฉันจะใช้มันเป็นค่าเริ่มต้นในฐานะเครื่องมือที่รู้จักกันดี ขอบคุณทุกคนที่อ่าน ในบทความถัดไป เราจะพูดถึงการเชื่อมต่อฐานข้อมูลและการเข้าร่วม นั่นคือสิ่งที่งานเจ๋ง ๆ จะเป็น))

รายการเนื้อหาทั้งหมดในซีรีส์นี้อยู่ที่ตอนต้นของบทความนี้

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION