คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

การเริ่มเซิร์ฟเวอร์ mysql จากบรรทัดคำสั่งของ windows พื้นฐานการดูแลระบบ MySQL โดยใช้บรรทัดคำสั่ง การทำงานกับบรรทัดคำสั่ง

ด้านล่างนี้คือรายการคำสั่งที่มีประโยชน์และใช้บ่อยที่สุด MySQLพร้อมตัวอย่าง

mysql ที่จุดเริ่มต้นของบรรทัดหมายความว่าคำสั่งจะถูกดำเนินการหลังจากป้อน MySQL.

สัญลักษณ์ # หรือ $ ที่จุดเริ่มต้นของบรรทัดหมายความว่าคำสั่งกำลังถูกดำเนินการจากบรรทัดคำสั่ง

เพื่อตรวจสอบสถานะเซิร์ฟเวอร์ MySQLวิ่ง:

สำหรับ ฟรีBSD:

# บริการสถานะเซิร์ฟเวอร์ mysql

วี CentOS/RHEL:

# บริการสถานะ mysqld

MySQLจากคอนโซลหากเซิร์ฟเวอร์ MySQLอยู่บนโฮสต์เดียวกัน:

เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ MySQLจากคอนโซลหากเซิร์ฟเวอร์ MySQLที่อยู่บนโฮสต์ระยะไกล db1.example.com:

$ mysql -u ชื่อผู้ใช้ -p -h db1.example.com

การทำงานกับฐานข้อมูล ตาราง - การดู การลบ และการแก้ไขบันทึก คอนโซล

สร้างฐานข้อมูลบน MySQLเซิร์ฟเวอร์:

mysql สร้างฐานข้อมูล

แสดงรายการฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์ MySQL:

ใช้ MySQL ;

แสดงตารางทั้งหมดในฐานข้อมูล:

ตารางแสดง mysql;

ดูรูปแบบตารางในฐานข้อมูล:

mysql อธิบาย;

ลบฐาน:

ฐานข้อมูล mysql หล่น;

ลบตารางออกจากฐานข้อมูล:

ตารางวาง mysql ;

แสดงเนื้อหาทั้งหมดของตาราง:

MySQL เลือก * จาก ;

แสดงคอลัมน์และเนื้อหาของคอลัมน์ในตารางที่เลือก:

Mysql แสดงคอลัมน์จาก ;

แสดงแถวในตารางเฉพาะที่มี " อะไรก็ตาม ":

MySQL SELECT * จากที่ไหน = "อะไรก็ได้";

แสดงบันทึกทั้งหมดในตารางเฉพาะที่มี " Bob " และหมายเลขโทรศัพท์ " 3444444:

Mysql SELECT * จากที่ name = " Bob " และ phone_number = " 3444444 ";

แสดงรายการทั้งหมด ไม่ประกอบด้วยชื่อ " บ๊อบ " และหมายเลขโทรศัพท์ " 3444444 " เรียงตามช่อง phone_number:

Mysql SELECT * จาก WHERE name != " Bob " AND phone_number = " 3444444 " สั่งซื้อโดย phone_number;

แสดงรายการทั้งหมดที่ขึ้นต้นด้วยตัวอักษร " bob " และหมายเลขโทรศัพท์ " 3444444 " ในตารางเฉพาะ:

Mysql SELECT * จากที่ชื่อเช่น " Bob %" และ phone_number = " 3444444 ";

แสดงรายการทั้งหมดที่ขึ้นต้นด้วยตัวอักษร " bob " และหมายเลขโทรศัพท์ " 3444444 " จำกัดเฉพาะรายการที่ 1 ถึง 5:

Mysql SELECT * จากที่ ชื่อเช่น " Bob %" และ phone_number = " 3444444 " จำกัด 1.5;

การใช้นิพจน์ทั่วไป ("REGEXP BINARY") เพื่อค้นหารายการ ตัวอย่างเช่น สำหรับการค้นหาที่ไม่คำนึงถึงตัวพิมพ์ ให้ค้นหารายการทั้งหมดที่ขึ้นต้นด้วยตัวอักษร A:

Mysql SELECT * จากที่รับ RLIKE "^ a";

แสดงรายการที่ไม่ซ้ำทั้งหมด:

MySQL เลือกความแตกต่างจาก; mysql SELECT จากเรียงตาม DESC;

แสดงจำนวนแถวในตาราง:

Mysql เลือก COUNT(*) จาก ;

Mysql SELECT SUM(*) จาก ;

การลบคอลัมน์:

mysql แก้ไขคอลัมน์ดร็อปตาราง;

การเพิ่มคอลัมน์ลงในฐานข้อมูล:

ตารางแก้ไข mysql เพิ่มคอลัมน์ varchar (20);

การเปลี่ยนชื่อคอลัมน์:

mysql แก้ไขตารางเปลี่ยน varchar (50);

สร้างคอลัมน์ที่มีชื่อเฉพาะเพื่อหลีกเลี่ยงชื่อที่ซ้ำกัน:

ตารางแก้ไข mysql เพิ่มเฉพาะ ();

การปรับขนาดคอลัมน์:

mysql แก้ไขตารางแก้ไข VARCHAR (3);

การลบคอลัมน์ออกจากตาราง:

mysql แก้ไขดัชนีการวางตาราง;

Mysql โหลดข้อมูล INFILE " /tmp/filename.csv " แทนที่ INTO TABLE FIELDS TERMINATED BY , , " LINES TERMINATED BY "n" (field1,field2,field3);

ผู้ใช้เซิร์ฟเวอร์ MySQL รหัสผ่าน - การเพิ่ม การเปลี่ยนผู้ใช้และรหัสผ่าน คอนโซล

การสร้างผู้ใช้ใหม่ - เชื่อมต่อกับเซิร์ฟเวอร์ MySQLในฐานะรูท, สลับไปที่ฐานข้อมูล, เพิ่มผู้ใช้, อัพเดตสิทธิ์:

# mysql -u root -p mysql ใช้ mysql; mysql INSERT INTO user (โฮสต์, ผู้ใช้, รหัสผ่าน) VALUES("%,” ชื่อผู้ใช้ ", รหัสผ่าน (" รหัสผ่าน ")); สิทธิ์ล้างข้อมูล mysql;

เปลี่ยนรหัสผ่านผู้ใช้จากคอนโซลบนรีโมตโฮสต์ db1.example.org:

# mysqladmin -u ชื่อผู้ใช้ -h db1.example.org -p รหัสผ่าน "รหัสผ่านใหม่"

เปลี่ยนรหัสผ่านผู้ใช้จากคอนโซล MySQL- เชื่อมต่อในฐานะรูท อัปเดตรหัสผ่าน อัปเดตสิทธิ์:

# mysql -u root -p mysql ตั้งรหัสผ่านสำหรับ " ผู้ใช้ "@" ชื่อโฮสต์ " = รหัสผ่าน (" รหัสผ่านที่นี่ "); สิทธิ์ล้างข้อมูล mysql;

การกู้คืน/การเปลี่ยนรหัสผ่านเซิร์ฟเวอร์รูท MySQL- หยุด MySQL, เริ่มต้นโดยไม่มีตารางสิทธิ์, เชื่อมต่อในฐานะรูท, ตั้งรหัสผ่านใหม่, ออกและรีสตาร์ท MySQL.

# /etc/init.d/mysql หยุด # mysqld_safe -skip-grant-tables & # mysql -u root mysql ใช้ mysql; mysql อัพเดตชุดผู้ใช้รหัสผ่าน = PASSWORD (" newrootpassword ") โดยที่ User = "root"; mysql; สิทธิพิเศษฟลัช; mysql ออกจาก # /etc/init.d/mysql หยุด # /etc/init.d/mysql เริ่มต้น

ตั้งรหัสผ่านรูทหากมีรหัสผ่านรูท

# mysqladmin -u รหัสผ่านรูท รหัสผ่านใหม่

อัปเดตรหัสผ่านรูท:

# mysqladmin -u root -p oldpassword รหัสผ่านใหม่

การตั้งค่าสิทธิ์ในการเชื่อมต่อกับเซิร์ฟเวอร์จากโฮสต์ localhost ด้วยรหัสผ่าน "passwd" - การเชื่อมต่อรูทย่อย, สลับไปที่ฐานข้อมูล, การตั้งค่าสิทธิ์, การอัปเดตสิทธิ์:

# mysql -u root -p mysql ใช้ mysql; mysql ให้สิทธิ์การใช้งานบน *.* ให้กับ bob @localhost ที่ระบุโดย " passwd "; สิทธิ์ล้างข้อมูล mysql;

การตั้งค่าสิทธิ์สำหรับผู้ใช้เพื่อใช้ฐานข้อมูล - การเชื่อมต่อเป็นรูท, สลับไปยังฐานข้อมูล, การตั้งค่าสิทธิ์, การอัปเดตสิทธิ์:

# mysql -u root -p mysql ใช้ mysql; mysql INSERT INTO db (โฮสต์,Db,ผู้ใช้,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) ค่า ("%", "ชื่อฐานข้อมูล", "ชื่อผู้ใช้", "Y", "Y", "Y" ย"ย"น"); สิทธิ์ล้างข้อมูล mysql;

Mysql ให้สิทธิ์ทั้งหมดบนชื่อฐานข้อมูล .* ให้กับชื่อผู้ใช้ @localhost; สิทธิ์ล้างข้อมูล mysql;

อัพเดตข้อมูลในฐานข้อมูล:

ชุดอัปเดต Mysql Select_priv = "Y",Insert_priv = "Y",Update_priv = "Y" โดยที่ = user";

การลบแถวในตาราง:

Mysql ลบจากที่ไหน = "อะไรก็ตาม";

การอัพเดตสิทธิ์ในฐานข้อมูล:

สิทธิ์ล้างข้อมูล mysql;

การสำรองข้อมูล - การสร้างการคืนค่าฐานข้อมูล คอนโซล

สร้างสำเนาสำรอง (ดัมพ์) ของฐานข้อมูลทั้งหมดไปยังไฟล์ alldatabases.sql:

# mysqldump -u root -p รหัสผ่าน -opt ; /tmp/alldatabases.sql

สำรองหนึ่งฐานข้อมูลไปยังไฟล์databasename.sql:

# mysql dump -u ชื่อผู้ใช้ -p รหัสผ่าน - ฐานข้อมูล ชื่อฐานข้อมูล ; /tmp/databasename.sql

สำรองข้อมูลหนึ่งตารางไปยังไฟล์databasename.tablename.sql:

# mysql dump -c -u ชื่อผู้ใช้ -p รหัสผ่าน ชื่อฐานข้อมูล ชื่อตาราง ; /tmp/databasename.tablename.sql

การคืนค่าฐานข้อมูล (หรือตาราง) จากการสำรองข้อมูล:

# mysql -u ชื่อผู้ใช้ -p รหัสผ่าน ชื่อฐานข้อมูล< /tmp/databasename.sql

การสร้างตารางฐานข้อมูล คอนโซล

ตัวอักษรตัวเล็กระบุชื่อของคอลัมน์
ตัวอักษรพิมพ์ใหญ่ - ประเภทและคุณลักษณะของคอลัมน์
ใน (วงเล็บ) - ค่าของประเภทคอลัมน์

สร้างตารางตัวอย่างที่ 1:

mysql CREATE TABLE (ชื่อ VARCHAR(20), ชื่อย่อตรงกลาง VARCHAR(3), นามสกุล VARCHAR(35), ส่วนต่อท้าย VARCHAR(3), officeid VARCHAR(10), ID ผู้ใช้ VARCHAR(15), ชื่อผู้ใช้ VARCHAR(8), อีเมล VARCHAR(35) ) ), โทรศัพท์ VARCHAR(25), กลุ่ม VARCHAR(15), ประทับวันที่ DATE, ประทับเวลา TIME, pgpemail VARCHAR (255));

สร้างตารางตัวอย่างที่ 2:

Mysql สร้างตาราง (personid INT (50) ไม่ใช่ NULL AUTO_INTCREMENT คีย์หลัก, ชื่อ VARCHAR (35), ชื่อกลาง VARCHAR (50), นามสกุล VARCHAR (50) ค่าเริ่มต้น "bato");

การพัฒนาเทคโนโลยีสารสนเทศเป็นหนึ่งในกิจกรรมที่ก้าวหน้าที่สุดของมนุษย์ ดังนั้นจึงมีการลงทุนเงินจำนวนมากในพื้นที่นี้ ตั้งแต่เริ่มต้นจนถึงปัจจุบัน งานต่างๆ มากมายได้รับการแก้ไข ซึ่งอำนวยความสะดวกในชีวิตประจำวันของผู้คนจำนวนมากอย่างมาก อย่างไรก็ตาม ด้วยการพัฒนาของเทคโนโลยีทำให้เกิดปัญหาหลายประการ หนึ่งในนั้นคือ ข้อมูลที่ต้องจัดเก็บมีจำนวนมากเกินไป ฐานข้อมูลถูกออกแบบมาเพื่อแก้ไขสถานการณ์

ภาพรวมโดยย่อของระบบการจัดการฐานข้อมูล

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

มีการจำแนกประเภทบางอย่างที่กำหนดความจำเป็นในการใช้ฐานข้อมูลเฉพาะและ DBMS (ระบบการจัดการฐานข้อมูล) ที่พบบ่อยที่สุดในปัจจุบันนี้ถือได้ว่าเป็น ไคลเอนต์เซิร์ฟเวอร์เทคโนโลยีการจัดเก็บข้อมูล ซึ่งรวมถึงประเภทต่อไปนี้: Firebird, Interbase, IBM DB2, Sybase, Oracle, PostgreSQL, Linter, MySQL เราจะสนใจตัวเลือกสุดท้าย - MySQL ซึ่งคำสั่งสอดคล้องกับมาตรฐาน SQL อย่างสมบูรณ์ เทคโนโลยีนี้เป็นหนึ่งในเทคโนโลยีที่ได้รับความนิยมมากที่สุดและมักใช้ในการแก้ปัญหาการผลิตทั้งแบบประยุกต์ในท้องถิ่นและการผลิตขนาดเล็ก

ผู้บุกเบิกเทคโนโลยีไคลเอนต์-เซิร์ฟเวอร์คือ ไฟล์เซิร์ฟเวอร์ DBMS ที่สูญเสียตำแหน่งเนื่องจากข้อบกพร่องที่มีอยู่หลายประการ รวมถึงความจำเป็นในการกระจายเคอร์เนล DBMS บนคอมพิวเตอร์แต่ละเครื่องและภาระงานที่สำคัญบนเครือข่ายท้องถิ่น ส่งผลให้ต้นทุนเวลาเพิ่มขึ้น กลุ่มนี้รวมถึง Borland Paradox

เทคโนโลยีใหม่ๆ กำลังได้รับความนิยม

อย่างไรก็ตาม เมื่อไม่กี่ปีที่ผ่านมา มีเทคโนโลยีขั้นสูงปรากฏขึ้นซึ่งกำลังได้รับความนิยมและเป็นที่ต้องการในการแก้ปัญหาเล็กๆ น้อยๆ ในท้องถิ่น เรื่องนี้เป็นเรื่องเกี่ยวกับ ฝังตัวระบบการจัดการฐานข้อมูล คุณสมบัติหลักของ DBMS ที่พิจารณาคือการไม่มีส่วนของเซิร์ฟเวอร์ ตัวระบบเองเป็นไลบรารีที่ช่วยให้คุณทำงานแบบครบวงจรโดยมีข้อมูลจำนวนมากอยู่ในเครื่องคอมพิวเตอร์ วิธีนี้จะช่วยขจัดข้อเสีย ไฟล์เซิร์ฟเวอร์เงินทุนและยังเกินความเร็วอย่างมากอีกด้วย ไคลเอนต์เซิร์ฟเวอร์เทคโนโลยี

ตัวอย่าง ได้แก่ OpenEdge, SQLite, BerkeleyDB, หนึ่งในตัวแปร Firebird, Sav Zigzag, Compact, Linter รวมถึงหนึ่งในตัวแปร MySQL คำสั่งที่ไม่แตกต่างจากที่ใช้ใน DBMS ไคลเอนต์-เซิร์ฟเวอร์ อย่างไรก็ตาม ฝังตัวระบบอาจสูญเสียความเกี่ยวข้องได้ง่ายหากงานไม่อยู่ในท้องถิ่น

ข้อดีหลักของ MySQL DBMS

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

ข้อได้เปรียบหลักในตลาดรัสเซียคือความพร้อมใช้งานเนื่องจากในกรณีส่วนใหญ่ไม่มีค่าใช้จ่าย คุณสมบัติที่สองคือความเร็ว หนึ่งในระบบที่ได้รับความนิยมมากที่สุดคือ MySQL คำสั่งในนั้นดำเนินการอย่างรวดเร็วโดยมีเวลาตอบสนองขั้นต่ำ การเชื่อมต่อไคลเอนต์หลายตัวกับเซิร์ฟเวอร์ในโหมดมัลติเธรดไม่ส่งผลต่อความเร็วของการประมวลผลคำสั่งเนื่องจากการใช้กลไก InnoDB เพื่อรองรับธุรกรรมที่รวดเร็ว

การมีไดรเวอร์ ODBC ช่วยให้นักพัฒนาแก้ไขปัญหาต่างๆ ได้ง่ายขึ้น ข้อดียังรวมถึงความเป็นไปได้ในการสร้างบันทึกที่มีความยาวคงที่และผันแปรได้ แต่ฟังก์ชั่นหลักซึ่งได้รับความนิยมอย่างมากในกลุ่มโปรแกรมเมอร์คือส่วนต่อประสานกับภาษา C และ PHP ความสามารถที่ได้รับจาก MySQL ทำให้สามารถใช้ DBMS นี้กับผู้ให้บริการโฮสติ้งอินเทอร์เน็ตจำนวนมากได้

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

สิ่งที่จำเป็นในการเรียน

เมื่อมองแวบแรกอาจดูเหมือนว่าสาขานี้เป็นเรื่องยากที่จะศึกษาอย่างอิสระและต้องมีการสื่อสารกับผู้เชี่ยวชาญอย่างต่อเนื่อง อย่างไรก็ตามนี่ไม่ใช่กรณี คุณสามารถเรียนรู้สถาปัตยกรรมและฟีเจอร์ของ MySQL คำสั่งพื้นฐานของภาษาคิวรี และทุกสิ่งที่เกี่ยวข้องกับ MySQL ได้ด้วยตัวเอง โดยไม่ต้องอาศัยความช่วยเหลือจากที่ปรึกษา การทำเช่นนี้ก็เพียงพอแล้วที่จะมีความปรารถนาและความพยายามเพื่อที่จะก้าวต่อไป การพัฒนาตนเองและการศึกษาในพื้นที่นี้เท่านั้นที่จะช่วยให้คุณได้รับความรู้ใหม่ ๆ รวบรวมทักษะที่ได้รับและอาจเริ่มสร้างอาชีพและก้าวไปในทิศทางนี้

หากต้องการเรียนรู้คำสั่งพื้นฐาน ก่อนอื่นคุณต้องมีข้อมูลพร้อม ฟรีเวอร์ชันของยูทิลิตี้คอนโซล MySQL นี่คือจุดเริ่มต้นของกระบวนการเรียนรู้ คุณสามารถดาวน์โหลดได้จากเว็บไซต์ MySQL อย่างเป็นทางการ สามารถติดตั้งได้อย่างง่ายดายบนระบบปฏิบัติการใด ๆ โดยสร้างเซิร์ฟเวอร์และไคลเอนต์บนคอมพิวเตอร์เครื่องเดียวซึ่งสะดวกมาก

จากนั้นคุณจะต้องค้นหาคู่มือการฝึกอบรมที่มีข้อมูลพื้นฐานเกี่ยวกับสภาพแวดล้อม MySQL สำหรับการศึกษาขั้นพื้นฐานก็ประกอบด้วย มีข้อมูลมากมายเกี่ยวกับเรื่องนี้ อย่างไรก็ตาม การเลือกจะต้องดำเนินการอย่างจริงจัง ข้อมูลควรนำเสนออย่างมีโครงสร้างสม่ำเสมอและชัดเจน

หากคุณมีความรู้พื้นฐานเกี่ยวกับภาษาอังกฤษ คุณสามารถใช้การสนับสนุนที่มีอยู่ในคอนโซลได้ มีคำสั่งพิเศษสำหรับสิ่งนี้ ช่วยซึ่งช่วยให้เข้าใจการใช้งานยูทิลิตี้ MySQL

คำสั่งคอนโซลพื้นฐาน

ย้ายจากคุณสมบัติหลัก ความสามารถ และคุณประโยชน์ต่างๆ ได้อย่างราบรื่น เรามาถึงรายการคำสั่งพื้นฐาน ยูทิลิตี้ MySQL เริ่มแรกมีผู้ใช้เพียงคนเดียวซึ่งใช้สำหรับการศึกษาเท่านั้น นี่คือผู้ใช้ชื่อ รากรหัสผ่านที่เหมือนกับชื่อโดยสิ้นเชิง

การเปิดตัวคอนโซล MySQL ครั้งแรกและครั้งต่อๆ ไปจะต้องให้ผู้ใช้ป้อนรหัสผ่าน รากเพื่อการทำงานเพิ่มเติมกับ MySQL DBMS คำสั่งคอนโซลจะใช้งานได้หลังจากการรับรองความถูกต้องเท่านั้น

หลังจากการตรวจสอบสำเร็จ เพื่อความสะดวก คุณสามารถแสดงคำสั่งที่มีอยู่โดยใช้คำสั่งได้ ช่วย. หลังจากนั้นคำสั่งที่มีอยู่ทั้งหมดและคำอธิบายสั้น ๆ จะถูกนำเสนอบนคอนโซล

และแสดงผล

ตอนนี้คุณต้องไปยังขั้นตอนต่อไป เมื่อต้องการทำเช่นนี้ ให้เลือกฐานข้อมูลที่มีอยู่หรือสร้างฐานข้อมูลใหม่ หากต้องการเลือกฐานข้อมูลที่มีอยู่ ให้ใช้คำสั่ง use และกรอกชื่อฐานข้อมูลโดยคั่นด้วยช่องว่าง เริ่มแรกในยูทิลิตี้นี้มีเพียงหนึ่งเดียวเท่านั้นที่มีชื่อ ทดสอบ. ดังนั้นคำขอจะมีลักษณะดังนี้: ใช้ ทดสอบ.

หากต้องการสร้างฐานข้อมูลให้ใช้คำสั่ง สร้างโดยให้คำสำคัญแก่มัน ฐานข้อมูลและตั้งชื่อให้เหมาะสม โครงสร้างจะมีลักษณะดังนี้: สร้างฐานข้อมูล Name_of_database. หากต้องการทำงานกับฐานข้อมูลที่สร้างขึ้น คุณต้องเข้าถึงฐานข้อมูลโดยใช้คำสั่ง ใช้.

สภาพแวดล้อมมีฟังก์ชันที่ออกแบบมาเพื่อแสดงฐานข้อมูล ตาราง คีย์หลัก หรือความสัมพันธ์ภายนอกที่มีอยู่ และข้อมูลเอาต์พุตเกี่ยวกับฐานข้อมูลเหล่านั้นไปยังคอนโซล MySQL คำสั่งในกรณีนี้ต้องขึ้นต้นด้วยประโยคเสมอ แสดง. ตัวอย่างเช่น หากต้องการแสดงรายการฐานข้อมูลที่มีอยู่สำหรับผู้ใช้ปัจจุบัน เพียงป้อนคำค้นหาต่อไปนี้: แสดง ฐานข้อมูล. หากต้องการแสดงตาราง การเปลี่ยนวัตถุที่แสดงหลังคีย์เวิร์ดโดยการพิมพ์ก็เพียงพอแล้ว ตาราง.

คำสั่งการจัดการตาราง

ก่อนที่เราจะอธิบายเพิ่มเติม ควรย้ำอีกครั้งว่าการปฏิบัติตามมาตรฐานภาษา SQL มอบโอกาสที่ยอดเยี่ยมสำหรับนักพัฒนา โดยไม่คำนึงถึง DBMS และระบบปฏิบัติการพื้นฐาน การสืบค้นที่พัฒนาในสภาพแวดล้อมใดๆ ที่รองรับมาตรฐาน SQL จะทำงานได้สำเร็จ (หากมีฐานข้อมูลและตาราง) ในสภาพแวดล้อม MySQL คำสั่งคอนโซล Windows ไม่แตกต่างจากคำสั่งที่ใช้ในระบบปฏิบัติการอื่น

มีคำสั่งเฉพาะจำนวนหนึ่งสำหรับการทำงานกับตารางซึ่งหากแปลจากภาษาอังกฤษก็สามารถพูดได้ด้วยตนเอง เกี่ยวกับทีม สร้างถูกกล่าวถึงข้างต้น นอกจากนี้ยังสามารถใช้เพื่อเพิ่มตารางลงในฐานข้อมูลที่สร้างไว้ก่อนหน้านี้ หากต้องการลบวัตถุฐานข้อมูล ในบางตาราง ให้ใช้คำสั่ง หยดซึ่งเพิ่มชื่อของวัตถุที่จะทำลาย ตัวอย่าง: หยด ชื่อ_ ของ_ ของคุณ_ โต๊ะ.

ไวยากรณ์ของการเรียกไปยังเซิร์ฟเวอร์ฐานข้อมูลจะมีโครงสร้างที่เหมือนกันเสมอ ดังนั้นแบบสอบถามที่พัฒนาใน Windows ก็จะทำงานในคอนโซล MySQL Linux ได้สำเร็จเช่นกัน คำสั่งที่ประมวลผลโดยเซิร์ฟเวอร์โดยไม่มีข้อผิดพลาดในระบบปฏิบัติการหนึ่งไม่สามารถทำให้เกิดข้อผิดพลาดกับระบบปฏิบัติการอื่นได้

เลือกคำสั่ง

แต่คำสั่งที่สำคัญที่สุดสำหรับการทำงานกับตารางซึ่งมีไวยากรณ์ค่อนข้างง่ายคือคำสั่ง เลือก. ใช้ในการเลือกข้อมูลจากฐานข้อมูล ไวยากรณ์เริ่มต้นมีโครงสร้างดังต่อไปนี้: เลือก * จาก โต๊ะ_ ชื่อ. ด้วยการส่งแบบสอบถามไปยังเซิร์ฟเวอร์ฐานข้อมูล ลูกค้าจะต้องได้รับบันทึกทั้งหมดที่จัดเก็บไว้ในตาราง

หลายคนไม่เคยคิดเรื่องนี้ แต่เมื่อท่องอินเทอร์เน็ต คำสั่ง MySQL จะถูกนำมาใช้อย่างต่อเนื่อง การสืบค้น PHP ใช้ไวยากรณ์ของภาษา SQL เพื่อแสดงเนื้อหาของไดเร็กทอรีร้านค้าออนไลน์หรือข่าวสารบนโซเชียลเน็ตเวิร์ก แทนที่จะเป็น "*" หลังประโยค เลือกตามกฎแล้วจะมีรายการฟิลด์หลักของตารางหรือหลายตารางซึ่งข้อมูลจะต้องได้รับการประมวลผล ในกรณีที่เลือกจากหลายตาราง จะใช้ลิงก์พิเศษ เข้าร่วมซึ่งทำหน้าที่เชื่อมต่อตามลิงก์ภายนอกที่มีอยู่ อย่างไรก็ตาม เงื่อนไขนี้สามารถเปลี่ยนแปลงได้โดยการระบุฟิลด์ที่ควรทำการเชื่อมโยง

การระบุขีดจำกัดการสุ่มตัวอย่าง

บางครั้งสถานการณ์เกิดขึ้นเมื่อการตอบสนองที่ได้รับจากเซิร์ฟเวอร์ฐานข้อมูลมีข้อมูลที่ซ้ำกัน เพื่อให้แน่ใจว่าผู้ใช้จะมองเห็นเฉพาะบันทึกที่ไม่ซ้ำเท่านั้น จึงมีการใช้ส่วนคำสั่งที่แตกต่างกัน มันถูกวางไว้หน้ารายการฟิลด์ที่ร้องขอและทำหน้าที่ช่วยในการซ่อนรายการที่ซ้ำกัน

ระบบจัดการฐานข้อมูลยอดนิยม MySQLใช้กันอย่างแพร่หลายเพื่อวัตถุประสงค์ต่าง ๆ โดยส่วนใหญ่เป็นมาตรฐานโดยพฤตินัยในด้านการโฮสต์อินเทอร์เน็ต แพ็คเกจสำหรับจัดการ DBMS นี้แพร่หลายไม่น้อย - phpMyAdmin. ไม่ต้องสงสัยเลยว่านี่เป็นผลิตภัณฑ์ที่ดีและสะดวก แต่บ่อยครั้งที่ทักษะในการทำงานกับผลิตภัณฑ์นี้เข้ามาแทนที่ทักษะในการทำงานกับ DBMS โดยสิ้นเชิง ดังนั้นในบทความนี้เราจึงตัดสินใจให้ผู้อ่านคุ้นเคยกับวิธีดำเนินงานการดูแลระบบ MySQL ขั้นพื้นฐานจากบรรทัดคำสั่ง

ตามที่ผู้อ่านขาประจำของเราอาจสังเกตเห็น เราต่อต้านการใช้แผงควบคุมประเภทต่างๆ โดยผู้เริ่มต้นอย่างต่อเนื่อง ไม่ว่าพวกเขาจะสะดวกและธรรมดาแค่ไหนก็ตาม ในขณะเดียวกัน เราก็ไม่ปฏิเสธการมีอยู่ของพวกมัน และใช้มันอย่างเพลิดเพลินในกิจกรรมประจำวันของเรา

แต่มีความแตกต่างที่สำคัญอย่างหนึ่ง: ผู้เชี่ยวชาญที่รู้วิธีทำงานกับบรรทัดคำสั่งโดยใช้แผงควบคุมไม่ได้แทนที่ความสามารถในการทำงานกับผลิตภัณฑ์ แต่เพียงทำให้เขาทำงานประจำวันได้ง่ายขึ้นเท่านั้น และผู้เริ่มต้นที่เคยชินกับการดำเนินการทั้งหมดในแผงควบคุมจะตกอยู่ในอาการตื่นตระหนกอย่างเงียบ ๆ หากไม่พร้อมใช้งานเพราะตอนนี้คุณต้องป้อน "คาถา" บางอย่างลงในคอนโซลสีดำที่เข้าใจยากนี้...

ในความเป็นจริงการทำงานกับ DBMS ในระดับบรรทัดคำสั่งนั้นไม่ใช่เรื่องยากเลยและงานการดูแลระบบบางอย่างก็ทำได้ง่ายกว่าและสะดวกกว่า มาจองกันทันที โดยการบริหาร เราหมายถึงการบริหารเซิร์ฟเวอร์ DBMS ไม่ใช่ฐานข้อมูลเอง แน่นอนคุณสามารถทำงานกับพวกเขาได้จากบรรทัดคำสั่ง แต่ควรใช้เครื่องมือที่เหมาะสมกว่าสำหรับสิ่งนี้

การจัดการฐานข้อมูลและผู้ใช้ใน MySQL

หากคุณควรเริ่มเต้นรำจากเตา การทำงานร่วมกับ DBMS ควรเริ่มต้นด้วยการสร้างฐานข้อมูลและผู้ใช้ฐานข้อมูลเหล่านี้ งานมีความเรียบง่ายและสวยงามโดยเนื้อแท้ และที่สำคัญที่สุด - เรียบง่าย งานเหล่านี้แก้ไขได้จากคอนโซล ยูทิลิตี้ชื่อเดียวกันนี้ออกแบบมาเพื่อทำงานกับเซิร์ฟเวอร์ MySQL mysqlงานที่เกิดขึ้นในโหมดโต้ตอบ ดังนั้นก่อนอื่นให้เชื่อมต่อกับเซิร์ฟเวอร์:

MySQL -u รูต -p

โดยที่สวิตช์ -u ระบุชื่อผู้ใช้ และ -p หมายถึงการตรวจสอบรหัสผ่าน ไวยากรณ์คำสั่งอนุญาตให้คุณระบุรหัสผ่านโดยพิมพ์รหัสผ่านโดยไม่ต้องเว้นวรรคทันทีหลังคีย์ แต่ในกรณีนี้ จะถูกบันทึกไว้ในประวัติคำสั่ง ซึ่งก็คือ ไม่ค่อยดีนักดังนั้นจึงควรป้อนรหัสผ่านแบบโต้ตอบจะดีกว่า หลังจากดำเนินการคำสั่งนี้ เราจะพบว่าตัวเองอยู่ในสภาพแวดล้อม MySQL ตามที่ระบุโดยพรอมต์บรรทัดคำสั่งที่เปลี่ยนแปลง

การทำงานในสภาพแวดล้อมนี้มีลักษณะเฉพาะของตัวเอง: แต่ละคำสั่งจะต้องลงท้ายด้วยสัญลักษณ์ ; หรือ \กซึ่งเขียนไว้ในบรรทัดแรกของคำทักทาย การออกจากโหมดนี้ดำเนินการโดยคำสั่ง:

ทันทีเกี่ยวกับข้อผิดพลาดทั่วไปอย่างหนึ่ง: พวกเขาลืมใส่อัฒภาคที่ท้ายคำสั่ง จะทำอย่างไร? ไม่เป็นไร แค่กำจัดอักขระที่หายไปในบรรทัดถัดไปให้หมด

ขั้นแรก มาดูรายการฐานกันก่อน:

แสดงฐานข้อมูล

อย่างที่พวกเขาพูดโดยไม่ต้องกังวลใจอีกต่อไป แต่สำหรับงานธุรการส่วนใหญ่ก็เพียงพอแล้ว:

การค้นหารายชื่อผู้ใช้นั้นยากขึ้นเล็กน้อย โดยจะถูกจัดเก็บเป็นตารางฐานบริการ mysqlดังนั้นเราจึงเขียนแบบสอบถามเล็กๆ น้อยๆ:

เลือกผู้ใช้,โฮสต์จาก mysql.user;

ทีม เลือกเลือกคอลัมน์ที่ระบุ ผู้ใช้โฮสต์ตัวเลือกจากจะระบุตำแหน่งที่เราเลือก ได้แก่ จากตารางผู้ใช้ของฐานข้อมูล mysql.

คอลัมน์แรกระบุผู้ใช้คอลัมน์ที่สอง - โฮสต์ที่ผู้ใช้รายนี้ได้รับอนุญาตให้เชื่อมต่อ % - ย่อมาจากค่าใดๆ โปรดทราบว่าหาก อีวานอฟมีในการตั้งค่า โลคัลโฮสต์จากนั้นเมื่อเชื่อมต่อเข้ากับ mysqlตามที่อยู่ 127.0.0.1 เขาจะไม่สามารถเข้าถึงได้ สิ่งนี้จะต้องนำมาพิจารณาเมื่อคุณระบุข้อมูลการเชื่อมต่อกับเซิร์ฟเวอร์ DBMS ในแอปพลิเคชันของคุณ

คุณสามารถดูเจ้าของฐานข้อมูลได้ด้วยแบบสอบถามต่อไปนี้:

เลือกโฮสต์, db, ผู้ใช้จาก mysql.db;

ไม่จำเป็นต้องมีความคิดเห็นพิเศษที่นี่ ตัวอย่างเช่น, อีวานอฟมีสิทธิฐานที่มีคำนำหน้า อิวานอฟ_เมื่อเชื่อมต่อผ่าน โลคัลโฮสต์และ andrey ไปยังฐานที่มีคำนำหน้า อันเดรย์_บนโฮสต์ใดก็ได้ คุณสามารถดูสิทธิ์ของผู้ใช้ได้ด้วยคำสั่ง:

แสดงทุนสำหรับ "ivanov"@"localhost";

ชื่อผู้ใช้และโฮสต์รวมอยู่ในเครื่องหมายคำพูดเดี่ยว

บรรทัดแรกบอกว่าผู้ใช้ที่ระบุไม่มีสิทธิ์ ( การใช้งาน) ไปยังโต๊ะใดๆ ของฐานใดๆ ( *.* ) บรรทัดที่สองบอกเกี่ยวกับสิทธิ์พื้นฐานทั้งหมดสำหรับตารางทั้งหมดของฐานข้อมูลทั้งหมดที่มีคำนำหน้า อิวานอฟ_.

การวิเคราะห์โดยละเอียดเกี่ยวกับระบบสิทธิ์ MySQL นั้นอยู่นอกเหนือขอบเขตของบทความนี้ สมมติว่า ส่วนตัวทั้งหมดให้สิทธิ์แก่ผู้ใช้ในฐานข้อมูลของตน แต่ไม่อนุญาตให้คุณจัดการสิทธิ์การเข้าถึงสำหรับผู้ใช้รายอื่น สำหรับสิ่งนี้ จะใช้ชุดสิทธิ์ ส่วนตัวทั้งหมดด้วยตัวเลือกการให้ทุนซึ่งมีค่าเริ่มต้น ราก. สำหรับผู้ใช้ทั่วไป ชุดของสิทธิ์ดังกล่าวจะซ้ำซ้อน

มาลองสร้างผู้ใช้ใหม่:

สร้างผู้ใช้ "petrov"@"localhost" ระบุด้วย "รหัสผ่าน";

ไวยากรณ์ของคำสั่งนั้นเรียบง่าย เราระบุชื่อผู้ใช้และชื่อโฮสต์ รวมถึงข้อมูลประจำตัวในรูปแบบของรหัสผ่าน ค่าที่ส่งผ่านทั้งหมดจะรวมอยู่ในเครื่องหมายคำพูดเดี่ยว หลังจากสร้างผู้ใช้แล้ว คุณต้องตั้งค่าสิทธิ์ของเขา ซึ่งทำได้โดยคำสั่ง ยินยอม. ประการแรก เราจะกีดกันเขาจากสิทธิพิเศษในฐานของผู้อื่นอย่างชัดเจน:

ให้สิทธิ์การใช้งานบน *.* แก่ "petrov"@"localhost";

จากนั้นเราสามารถกำหนดสิทธิ์ตามดุลยพินิจของเรา เช่น การออกสิทธิ์เต็มรูปแบบในฐานข้อมูลด้วยเทมเพลตชื่อ เปตรอฟ_:

ให้สิทธิพิเศษทั้งหมดบน `petrov\_%`.* แก่ "petrov"@"localhost";

โปรดทราบว่าเทมเพลตควรมีสัญลักษณ์ล้อมรอบ แรงโน้มถ่วง (` ) ซึ่งอยู่บนกุญแจด้วยตัวอักษรรัสเซีย Y

คุณสามารถให้สิทธิ์แก่ฐานข้อมูลแยกต่างหากได้ดังนี้:

ให้สิทธิพิเศษทั้งหมดบน andrey_drupal8.* ให้กับ "petrov"@"localhost";

ในการเลือกสิทธิ์ จะใช้คำสั่ง REVOKE ซึ่งมีไวยากรณ์คล้ายกันเท่านั้น ถึง (ถึงผู้ซึ่ง) เราแทนที่ด้วย จาก (WHO). ตัวอย่างเช่น:

เพิกถอนสิทธิ์ทั้งหมดบน andrey_drupal8.* จาก "petrov"@"localhost";

เพื่อให้เซิร์ฟเวอร์ MySQL ใช้สิทธิ์ คุณต้องบังคับให้เซิร์ฟเวอร์โหลดแคชสิทธิ์ใหม่ด้วยคำสั่ง:

สิทธิพิเศษฟลัช;

คุณอาจต้องเปลี่ยนรหัสผ่านของผู้ใช้:

ตั้งรหัสผ่านสำหรับ "petrov"@"localhost" = รหัสผ่าน("รหัสผ่านใหม่");

เปลี่ยนชื่อ และการเปลี่ยนชื่อไม่จำเป็นต้องหมายถึงการเปลี่ยนชื่อผู้ใช้ คุณสามารถเปลี่ยนทั้งชื่อและโฮสต์ในชุดค่าผสมใดก็ได้:

เปลี่ยนชื่อผู้ใช้ "petrov"@"localhost" เป็น "petr"@"127.0.0.1";

และสุดท้าย ลบบัญชี:

วางผู้ใช้ "petr"@"127.0.0.1";

ในกรณีที่ง่ายที่สุด เรามาย้ายจากผู้ใช้ไปยังฐานข้อมูลเพื่อสร้างฐานข้อมูลใหม่คำสั่งก็เพียงพอแล้ว:

สร้างฐานข้อมูล petrov_newdb;

สิ่งนี้จะสร้างฐานข้อมูลด้วยเพจรหัสและชุดอักขระเริ่มต้น หากเซิร์ฟเวอร์ DBMS ไม่ได้กำหนดค่าแยกต่างหาก การเข้ารหัสนี้ก็น่าจะเป็นเช่นนั้น latin1_swedish_ciซึ่งในบางกรณีอาจทำให้เกิดปัญหาได้หากไม่ใช่ตอนนี้และในอนาคต ดังนั้น การระบุการเข้ารหัสอย่างชัดเจนเมื่อสร้างฐานข้อมูลจึงเป็นแนวปฏิบัติที่ดี สำหรับ UTF-8 มันจะเป็นดังนี้:

สร้างฐานข้อมูล petrov_newdb ชุดอักขระเริ่มต้น utf8 เปรียบเทียบ utf8_general_ci;

สำหรับ Windows-1251:

สร้างฐานข้อมูล petrov_newdb ชุดอักขระเริ่มต้น cp1251 เปรียบเทียบ cp1251_general_ci;

หากต้องการถอดฐานออก ให้ใช้:

วางฐานข้อมูล petrov_newdb;

การตรวจสอบ เพิ่มประสิทธิภาพ แก้ไขข้อผิดพลาดฐานข้อมูล MySQL

เนื่องจาก MySQL ทำงานอย่างแข็งขัน ฐานข้อมูลจึงอาจกระจัดกระจายและมีข้อผิดพลาดในข้อมูลตารางได้ เราไม่ได้พูดถึงความล้มเหลวร้ายแรงในตอนนี้ สถานการณ์ดังกล่าวควรได้รับการพิจารณาเป็นรายบุคคล แต่เกี่ยวกับข้อผิดพลาดที่ง่ายที่สุดที่กำจัดได้สำเร็จด้วยวิธี DBMS เอง หากต้องการตรวจสอบ ซ่อมแซม และเพิ่มประสิทธิภาพ จะสะดวกในการใช้ยูทิลิตี้ mysqlcheck

เพื่อตรวจสอบฐานข้อมูลทำงานที่ไหน andrey_drupal8- ชื่อฐาน:

mysqlcheck -u root -p --check andrey_drupal8

สามารถตรวจสอบฐานข้อมูลทั้งหมดได้ในคราวเดียวด้วยคำสั่ง:

mysqlcheck -u root -p --check -- ฐานข้อมูลทั้งหมด

และเนื่องจากเอาต์พุตทั้งหมดมักจะไม่พอดีกับหน้าจอ จึงสมเหตุสมผลที่จะเปลี่ยนเส้นทางไปยังคำสั่ง น้อย:

mysqlcheck -u root -p --check -- ฐานข้อมูลทั้งหมด | น้อย

โปรดทราบว่า น้อยช่วยให้คุณสามารถเลื่อนเอาต์พุตทั้งขึ้นและลงโดยใช้ลูกศร กด เพื่อออก ถาม.

หากพบข้อผิดพลาดในฐานข้อมูลใด ๆ ควรพยายามแก้ไขโดยระบุ:

mysqlcheck -u root -p --ซ่อมแซมอัตโนมัติ andrey_drupal8

สำหรับการเพิ่มประสิทธิภาพ ให้ใช้คีย์ - -เพิ่มประสิทธิภาพคุณสามารถเพิ่มประสิทธิภาพฐานข้อมูลแยกต่างหากหรือหลายฐานข้อมูลได้ โดยให้แสดงรายการไว้หลังคีย์ --ฐานข้อมูล:

mysqlcheck -u root -p -- ปรับให้เหมาะสม -- ฐานข้อมูล andrey_drupal8 petrov_newdb

และทั้งหมดในคราวเดียว:

mysqlcheck -u root -p --optimize --all-databases

การขนถ่ายและโหลดดัมพ์ฐานข้อมูล MySQL

งานทั่วไปอีกประการหนึ่งในการดูแลระบบ DBMS คือการดัมพ์ฐานข้อมูลที่ใช้ทั้งสำหรับการสำรองข้อมูลและการถ่ายโอนหรือสร้างสำเนา หากการสำรองข้อมูลเป็นกระบวนการอัตโนมัติ คุณจะต้องสร้างสำเนาเพื่อถ่ายโอนไปยังเซิร์ฟเวอร์อื่นหรือก่อนที่จะมีการแทรกแซงที่สำคัญในโครงสร้างฐานข้อมูลด้วยตนเอง

และเมื่อพูดถึงฐานขนาดใหญ่แล้วนี่ครับ phpMyAdminตัวช่วยที่ไม่ดี เนื่องจากข้อจำกัดด้านเวลาดำเนินการของสคริปต์ ขนาดของไฟล์ที่อัพโหลด หน่วยความจำที่มีอยู่ ฯลฯ และหากคุณยังสามารถอัปโหลดดัมพ์ขนาดใหญ่ได้ คุณอาจไม่สามารถอัปโหลดกลับได้

เริ่มต้นด้วยการสร้างดัมพ์เพื่อใช้ยูทิลิตีเพื่อจุดประสงค์เหล่านี้ mysqldumpซึ่งมีไวยากรณ์เหมือนกับ ตรวจสอบ mysql. หากต้องการดัมพ์ข้อมูล ให้ใช้คำสั่ง:

mysqldump -u root -p andrey_drupal8 > ~/drupal8.sql

หากต้องการยกเลิกการโหลดฐานข้อมูลหลายรายการพร้อมกัน ให้ใช้คีย์ --ฐานข้อมูลหรือ --ฐานข้อมูลทั้งหมดเพื่อสร้างดัมพ์ของฐานข้อมูลทั้งหมดพร้อมกัน ผลลัพธ์ของคำสั่งควรถูกส่งไปยังไฟล์และระบุตำแหน่งของไฟล์ ในกรณีของเราคือไฟล์ drupal8.sqlในโฮมไดเร็กตอรี่ คุณยังสามารถไพพ์เอาต์พุตไปยัง Archiver และรับไฟล์เก็บถาวรได้ทันที:

mysqldump -u root -p andrey_drupal8 | gzip > ~/drupal8.sql.gz

โดยทั่วไป เราไม่แนะนำให้ใช้ดัมพ์เดียวสำหรับหลายฐานข้อมูลพร้อมกัน ตัวเลือกที่ดีที่สุดคือมีดัมพ์ของคุณเองสำหรับแต่ละฐานข้อมูล ในเวลาเดียวกันโดยใช้คีย์ --ฐานข้อมูลทั้งหมดเหมาะสมในกรณีที่คุณต้องการสำรองข้อมูลเซิร์ฟเวอร์ทั้งหมดอย่างรวดเร็ว เช่น เมื่ออัปเดตหรือติดตั้ง DBMS ใหม่ เพื่อให้คุณสามารถกู้คืนข้อมูลได้อย่างรวดเร็วหากมีสิ่งผิดปกติเกิดขึ้น

ในการกู้คืนฐานข้อมูล คุณต้องส่งดัมพ์ไปยังอินพุตของยูทิลิตี้ mysql สำหรับดัมพ์เดี่ยว คุณควรระบุฐานข้อมูลปลายทางเสมอ เช่น:

Mysql -u root -p andrey_drupal8< ~/drupal8.sql

ปลายทางไม่จำเป็นต้องเป็นฐานต้นทาง แต่โปรดทราบว่าหากมีฐานอยู่แล้ว เนื้อหาทั้งหมดจะถูกแทนที่ด้วยเนื้อหาของดัมพ์

สำหรับดัมพ์ที่มีมากกว่าหนึ่งฐานข้อมูล เพียงระบุ:

MySQL -u รูต -p< ~/all.sql

ในกรณีนี้ แต่ละฐานข้อมูลจะถูกโหลดลงในแหล่งที่มา หากไม่มีฐานข้อมูลต้นทาง ก็จะถูกสร้างขึ้น

อย่างที่คุณเห็น การสร้างและกู้คืนดัมพ์โดยใช้บรรทัดคำสั่งเกิดขึ้นในบรรทัดเดียวและง่ายกว่าและเร็วกว่าการใช้ phpMyAdmin หรือเครื่องมือที่คล้ายกันมาก

การกู้คืนรหัสผ่านรูท MySQL ที่ถูกลืม

อีกหนึ่งงานที่ได้รับความนิยมมาก สมมติว่าเป็นไปไม่ได้ที่จะกู้คืนรหัสผ่านของ MySQL superuser เช่นเดียวกับผู้ใช้รายอื่น แต่คุณสามารถเปลี่ยนได้ เมื่อต้องการทำเช่นนี้ คุณต้องมีสิทธิ์ของ superuser ของระบบปฏิบัติการ ขั้นแรก ให้หยุดบริการ DBMS:

บริการ mysql หยุด

จากนั้นเราจะเริ่มมันในเซฟโหมดโดยข้ามตารางสิทธิ์:

mysqld_safe -- ข้ามการให้สิทธิ์ตาราง &

โปรดทราบว่าหลังจากดำเนินการคำสั่งนี้ พรอมต์บรรทัดคำสั่งจะหายไป จะมีเคอร์เซอร์กะพริบหนึ่งตัว เราเขียนตรงนั้น:

MySQL -u รูต

และเข้าสู่สภาพแวดล้อม mysql ในฐานะรูทโดยไม่ต้องป้อนรหัสผ่าน

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

อัปเดตรหัสผ่านที่ตั้ง mysql.user = รหัสผ่าน ("รหัสผ่านใหม่") โดยที่ user="root";

สำคัญ!ใน MySQL เวอร์ชันใหม่แทนที่จะเป็นคอลัมน์ รหัสผ่านตาราง ผู้ใช้มีการใช้คอลัมน์ การรับรองความถูกต้อง_สตริงดังนั้นแทนที่จะเป็น ตั้งรหัสผ่านควรระบุ ตั้งค่าการตรวจสอบสิทธิ์_สตริง.

คำขอนี้จะตั้งรหัสผ่านใหม่ รหัสผ่านใหม่สำหรับทุกแถวในคอลัมน์ ผู้ใช้ซึ่งมีอยู่ในรายการ ราก.

อัปเดตแคชสิทธิ์:

สิทธิพิเศษฟลัช;

ออกจากโหมดกันเถอะ:

หยุดบริการและเริ่มต้นตามปกติ:

บริการ mysql หยุด
บริการ mysql เริ่มต้น

เราหวังว่าหลังจากอ่านบทความนี้ คุณจะได้รับทักษะพื้นฐานในการทำงานกับ MySQL จากบรรทัดคำสั่ง และจะรู้สึกมั่นใจได้แม้ในขณะที่ phpMyAdmin ไม่พร้อมใช้งาน และอาจชื่นชมความสะดวกสบายของคำสั่งคอนโซลและไปที่แผงควบคุม น้อยลงเรื่อยๆ โดยเลือกที่จะจัดการเซิร์ฟเวอร์โดยตรง

  • แท็ก:

กรุณาเปิดใช้งาน JavaScript เพื่อดู

ยูทิลิตีบรรทัดคำสั่ง mysql เป็น wrapper SQL แบบธรรมดา (พร้อมความสามารถของไลบรารี readline ของโครงการ GNU) รองรับโหมดโต้ตอบและแบบไม่โต้ตอบ ในโหมดโต้ตอบ ผลลัพธ์ของการสืบค้นจะแสดงในรูปแบบ ASCII เมื่อใช้ในโหมดที่ไม่โต้ตอบ (เช่น เป็นตัวกรอง) ผลลัพธ์จะแสดงในรูปแบบข้อความโดยมีอักขระแท็บเป็นตัวคั่น (รูปแบบเอาต์พุตสามารถเปลี่ยนแปลงได้โดยใช้ตัวเลือกบรรทัดคำสั่ง) สคริปต์สามารถรันได้ดังแสดงด้านล่าง:

เชลล์ > ฐานข้อมูล mysql output.tab

หากคุณประสบปัญหาเนื่องจากหน่วยความจำไม่เพียงพอในไคลเอนต์ ให้ใช้ตัวเลือก --quick! สิ่งนี้จะทำให้ mysql ใช้ฟังก์ชัน mysql_use_result() แทนฟังก์ชัน mysql_store_result() เพื่อรับผลลัพธ์การดึงข้อมูล

การใช้ mysql เป็นเรื่องง่ายมาก เรียกใช้ฐานข้อมูล mysql หรือ mysql --user=user_name --password=ฐานข้อมูล your_password พิมพ์คำสั่ง SQL โดยตรงบนบรรทัดคำสั่ง โดยลงท้ายด้วยอักขระตัวใดตัวหนึ่งต่อไปนี้: `;" , `\g" หรือ `\G" จากนั้นกดปุ่ม ``Enter"'

ยูทิลิตี้บรรทัดคำสั่ง mysql รองรับตัวเลือกต่อไปนี้:

Help แสดงข้อมูลช่วยเหลือเกี่ยวกับการใช้โปรแกรมและออกจากโปรแกรม -A, --no-auto-rehash ปิดใช้งานการแฮชอัตโนมัติอีกครั้ง ควรใช้การแฮชใหม่เพื่อรับแฮชของตารางและฟิลด์ ทำให้ mysql เริ่มต้นเร็วขึ้น --prompt=... ตั้งค่าพรอมต์คำสั่งในรูปแบบที่ระบุ -b, --no-beep ปิดเสียงบี๊บแสดงข้อผิดพลาด -B, --batch เอาต์พุตแบทช์พร้อมตัวคั่นแท็บ แต่ละบรรทัดขึ้นบรรทัดใหม่ ไม่ได้ใช้ไฟล์ประวัติ --Character-sets-dir=... ไดเร็กทอรีที่มีชุดอักขระอยู่ -C, --compress ใช้การบีบอัดข้อมูลโปรโตคอลเซิร์ฟเวอร์/ไคลเอ็นต์ -#, --debug[=...] บันทึกการแก้ไขข้อบกพร่อง ค่าเริ่มต้นคือ "d:t:o,/tmp/mysql.trace" -D, --database=... ชื่อของฐานข้อมูลที่จะใช้ ส่วนใหญ่ใช้ในไฟล์กำหนดค่า `my.cnf" --default-Character-set=... ตั้งค่าชุดอักขระเริ่มต้น -e, --execute=... --batch) -E, --vertical Print ผลลัพธ์การสืบค้น (สตริง) ในแนวตั้งคุณสามารถสร้างเอาต์พุตเช่นนี้ได้โดยไม่ต้องใช้ตัวเลือกนี้โดยการสิ้นสุดคำสั่งด้วยอักขระ \G -f, --force ดำเนินการประมวลผลต่อไปแม้ว่าจะพบข้อผิดพลาด SQL -g, --no-named-commands ปิดคำสั่งที่มีชื่อ ใช้เฉพาะคำสั่ง \* หรือใช้คำสั่งที่มีชื่อเฉพาะที่จุดเริ่มต้นของบรรทัดที่ลงท้ายด้วย `;" . ตั้งแต่เวอร์ชัน 10.9 ไคลเอนต์เริ่มต้นด้วยตัวเลือกนี้ รวมอยู่ด้วย ค่าเริ่มต้น! ด้วยตัวเลือก -g คำสั่งแบบยาวยังคงใช้งานได้ตั้งแต่บรรทัดแรก -G, --enable-named-commands เปิดใช้งานคำสั่งที่มีชื่อ อนุญาตให้ใช้คำสั่งแบบยาวได้ เช่นเดียวกับคำสั่งแบบย่อ เช่น \* -i, --ignore-space ละเว้นช่องว่างหลังชื่อฟังก์ชัน -h, --host=... เชื่อมต่อกับฐานข้อมูลบนโฮสต์ที่ระบุ -H, --html พิมพ์เอาต์พุตเป็น HTML -L, --skip-line-number ข้ามหมายเลขบรรทัดเพื่อดูข้อผิดพลาด มีประโยชน์สำหรับการเปรียบเทียบไฟล์ผลลัพธ์ที่มีข้อความแสดงข้อผิดพลาด --no-pager ปิดการใช้งานเพจเจอร์และเขียนผลลัพธ์ไปที่ stdout (บน Unix) ดูเพิ่มเติมที่คำสั่ง \h (วิธีใช้ออนไลน์) --no-tee ล็อคไฟล์เอาต์พุต ดูเพิ่มเติมที่คำสั่ง \h (วิธีใช้ออนไลน์) -n, --unbuffered ล้างบัฟเฟอร์หลังจากการร้องขอแต่ละครั้ง -N, --skip-column-names ข้ามชื่อคอลัมน์ในผลลัพธ์ -O, --set-variable var=option ตั้งค่าของตัวแปร รายการตัวแปรที่ใช้จะแสดงผ่าน --help -o, --one-database อัพเดตเฉพาะฐานข้อมูลเริ่มต้นเท่านั้น ช่วยให้คุณสามารถข้ามการอัพเดตฐานข้อมูลอื่นๆ ในบันทึกการอัพเดตได้ --pager[=...] ตั้งค่าชนิดข้อมูลเอาต์พุต โดยดีฟอลต์ นี่คือตัวแปรสภาพแวดล้อม PAGER ค่าที่เป็นไปได้คือน้อยกว่า, มากกว่า, cat [> ชื่อไฟล์] ฯลฯ ดูเพิ่มเติมที่คำสั่ง \h (วิธีใช้ออนไลน์) ตัวเลือกนี้ใช้ไม่ได้ในโหมดแบทช์ เพจเจอร์ทำงานภายใต้ Unix เท่านั้น -p, --password[=...] รหัสผ่านที่ใช้เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล หากไม่ได้ระบุรหัสผ่านในบรรทัดคำสั่ง ระบบจะขอรหัสผ่านจากผู้ใช้ เมื่อใช้รูปแบบสั้น -p อย่าเว้นช่องว่างระหว่างพารามิเตอร์และค่ารหัสผ่าน -P --port=... หมายเลขพอร์ต TCP/IP ที่จะใช้สำหรับการเชื่อมต่อ -q, --quick อย่าแคชผลลัพธ์ ส่งออกทีละบรรทัดเมื่อมาจากเซิร์ฟเวอร์ ซึ่งอาจทำให้เซิร์ฟเวอร์ช้าลงหากเอาต์พุตหยุดชั่วคราว ไม่ได้ใช้ไฟล์ประวัติ -r, --raw แสดงค่าคอลัมน์โดยไม่มีการเปลี่ยนแปลงใดๆ ใช้กับ --batch -s, --silent โหมดเงียบ แสดงเฉพาะข้อความแสดงข้อผิดพลาด -S --socket=... ไฟล์ซ็อกเก็ตที่ใช้สำหรับการเชื่อมต่อ -t --table แสดงผลลัพธ์ในรูปแบบตาราง ตั้งค่าเริ่มต้นสำหรับโหมดที่ไม่ใช่แบตช์ -T, --debug-info พิมพ์ข้อมูลการดีบักบางส่วนเมื่อโปรแกรมออก --tee=... แนบบางสิ่งเข้ากับไฟล์เอาต์พุต ดูเพิ่มเติมที่คำสั่ง \h (วิธีใช้ออนไลน์) ตัวเลือกนี้ใช้ไม่ได้ในโหมดแบทช์ -u, --user=# ชื่อผู้ใช้ MySQL หากผู้ใช้รายนี้ไม่ได้ใช้งานอยู่ในปัจจุบัน -U, --safe-updates[=#], --i-am-a-dummy[=#] อนุญาตเฉพาะการดำเนินการ UPDATE และ DELETE โดยใช้คีย์เท่านั้น ดูด้านล่างสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่านี้ คุณสามารถรีเซ็ตตัวเลือกนี้ได้โดยตั้งค่าอาร์กิวเมนต์ --safe-updates=0 ในไฟล์กำหนดค่า `my.cnf' -v, --verbose โหมดเอาต์พุต verbose เพิ่มเติม (-v -v -v ให้รูปแบบเอาต์พุตตาราง) - V , --version แสดงข้อมูลเวอร์ชันและออกจากโปรแกรม -w, --wait หากการเชื่อมต่อกับเซิร์ฟเวอร์หลุด ให้รอแล้วลองกู้คืนแทนการยกเลิก

คุณยังสามารถตั้งค่าตัวแปรต่อไปนี้ผ่านตัวเลือกบรรทัดคำสั่ง -O หรือ --set-variable:

หากคุณพิมพ์ help บนบรรทัดคำสั่ง โปรแกรม mysql จะแสดงรายการคำสั่งที่รองรับ:

Mysql> help MySQL Commands help (\h) แสดงข้อความที่กำหนด ? (\h) คำพ้องความหมายเพื่อขอความช่วยเหลือ clear (\c) คำสั่งเคลียร์ เชื่อมต่อ (\r) เชื่อมต่อกับเซิร์ฟเวอร์อีกครั้ง อาร์กิวเมนต์เพิ่มเติมคือ db และโฮสต์ แก้ไข (\e) แก้ไขคำสั่งปัจจุบันด้วย $EDITOR อัตตา (\G) ส่งคำสั่ง MySQL ปัจจุบันไปยังเซิร์ฟเวอร์และแสดงผลในแนวตั้ง exit (\q) ออกจากโปรแกรม เหมือนกับเลิกเลย go (\g) ส่งคำสั่ง MySQL ปัจจุบันไปยังเซิร์ฟเวอร์ nopager (\n) บล็อกเพจเจอร์ พิมพ์ไปที่ stdout notee (\t) อย่าเพิ่มรายการลงในไฟล์เอาท์พุต เพจเจอร์ (\P) ตั้งค่า PAGER แสดงผลลัพธ์การค้นหาผ่าน PAGER พิมพ์ (\p) พิมพ์คำสั่งปัจจุบัน prompt (\R) เปลี่ยนรูปแบบ prompt สำหรับคำสั่ง mysql exit (\q) ออกจากโปรแกรม rehash (\#) คืนค่าตารางแฮช แหล่งที่มา (\.) เรียกใช้งานไฟล์สคริปต์ SQL ระบุชื่อไฟล์เป็นอาร์กิวเมนต์ สถานะ (\s) รับข้อมูลสถานะเซิร์ฟเวอร์ tee (\T) ตั้งค่าตัวเลือก outfile ผนวกบางสิ่งเข้ากับไฟล์เอาต์พุตที่กำหนด ใช้ (\u) ใช้ฐานข้อมูลอื่น ระบุชื่อฐานข้อมูลเป็นอาร์กิวเมนต์

คำสั่งเพจเจอร์ทำงานบน Unix เท่านั้น

ผลลัพธ์ของสิ่งนี้คือ:

  • ไม่อนุญาตให้ดำเนินการคำสั่ง UPDATE หรือ DELETE เว้นแต่จะระบุข้อจำกัดที่สำคัญไว้ในส่วนคำสั่ง WHERE อย่างไรก็ตาม คุณสามารถบังคับให้ดำเนินการคำสั่ง UPDATE / DELETE ได้โดยใช้คำสั่ง LIMIT: UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
  • ผลลัพธ์ขนาดใหญ่ทั้งหมดจำกัดไว้ที่ #select_limit# บรรทัด
  • SELECT ที่อาจต้องใช้ชุดค่าผสมแถวมากกว่า #max_join_size# ในการดำเนินการจะถูกยกเลิก

เคล็ดลับที่เป็นประโยชน์สำหรับการใช้ไคลเอนต์ mysql:

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

Mysql> SELECT * FROM mails WHERE LENGTH(txt) sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith เขียนว่า: Thimble> สวัสดี ฉันคิดว่านี่เป็นความคิดที่ดี มีใครคุ้นเคยกับ UTF-8 Thimble> หรือ Unicode บ้างไหม? มิฉะนั้น ฉันจะใส่สิ่งนี้ลงในรายการสิ่งที่ต้องทำของฉันและดูว่า Thimble> เกิดอะไรขึ้น ใช่ โปรดทำเช่นนั้น ขอแสดงความนับถือ ไฟล์ Monty: inbox-jani-1 hash: 190402944 1 แถวในชุด (0.09 วินาที)

  • คุณสามารถใช้ตัวเลือกคำสั่ง tee เพื่อเข้าสู่ระบบ สามารถรันด้วยตัวเลือก --tee=... ไปยัง mysql หรือโต้ตอบจากบรรทัดคำสั่งด้วยคำสั่ง tee ข้อมูลทั้งหมดที่แสดงบนหน้าจอจะถูกเพิ่มไปยังไฟล์ที่ระบุด้วย สิ่งนี้มีประโยชน์มากสำหรับวัตถุประสงค์ในการดีบักโปรแกรม ยูทิลิตีทีสามารถบล็อกได้จากบรรทัดคำสั่งด้วยคำสั่ง notee การรันคำสั่ง tee อีกครั้งจะเป็นการเปิดใช้งานการบันทึกอีกครั้ง หากไม่ได้ระบุพารามิเตอร์สำหรับคำสั่ง tee ไฟล์ก่อนหน้าจะถูกนำมาใช้ โปรดทราบว่าคำสั่ง tee จะเขียนผลลัพธ์ลงในไฟล์หลังจากแต่ละคำสั่งดำเนินการ ก่อนที่พร้อมท์คำสั่งจะปรากฏขึ้นสำหรับคำสั่งถัดไป
  • ตัวเลือก --pager[=...] ทำให้สามารถดูหรือค้นหาผลลัพธ์แบบโต้ตอบกับโปรแกรม Unix less , more หรือคล้ายกันได้ หากคุณไม่ได้ระบุอาร์กิวเมนต์อย่างชัดเจนในพารามิเตอร์นี้ ไคลเอ็นต์ mysql จะค้นหาตัวแปรสภาพแวดล้อม PAGER และตั้งค่าเป็น pager โปรแกรมเพจเจอร์ยังสามารถสตาร์ทจากบรรทัดรับคำสั่งแบบโต้ตอบด้วยคำสั่งเพจเจอร์ และหยุดด้วยคำสั่ง nopager คำสั่งสามารถรับอาร์กิวเมนต์ซึ่งเป็นทางเลือก เพจเจอร์จะถูกตั้งค่าเป็นค่าของอาร์กิวเมนต์นี้ คำสั่งเพจเจอร์ยังสามารถเรียกโดยไม่มีอาร์กิวเมนต์ได้ แต่ต้องใช้ตัวเลือก --pager หรือการตั้งค่าเริ่มต้นที่เหมาะสมของ stdout คำสั่งเพจเจอร์ใช้งานได้บน Unix เท่านั้น เนื่องจากใช้ฟังก์ชัน popen() ซึ่งไม่มีใน Windows บน Windows คุณสามารถใช้ตัวเลือกทีแทนได้ แม้ว่าในบางสถานการณ์จะสะดวกน้อยกว่าการใช้คำสั่งเพจเจอร์ก็ตาม
  • เคล็ดลับเล็กๆ น้อยๆ เกี่ยวกับคำสั่งเพจเจอร์: สามารถใช้เพื่อเขียนลงในไฟล์ได้: mysql> pager cat > /tmp/log.txt และผลลัพธ์จะถูกส่งไปยังไฟล์เท่านั้น โปรแกรมที่ถูกเรียกโดยคำสั่งเพจเจอร์สามารถยอมรับอ็อพชันที่ถูกต้องได้: mysql> pager less -n -i -S ให้ความสนใจเป็นพิเศษกับอ็อพชัน -S ในตัวอย่างข้างต้น จะมีประโยชน์มากเมื่อดูผลลัพธ์ ลองใช้เอาต์พุตแนวนอน (สิ้นสุดคำสั่งด้วย "\g" หรือ ";") และเอาต์พุตแนวตั้ง (ที่ท้ายคำสั่งด้วย "\G") ผลลัพธ์เอาต์พุตที่ยุ่งยากมากบางครั้งอาจอ่านจากหน้าจอได้ยาก ในกรณีนี้ คำสั่งที่น้อยกว่าด้วยตัวเลือก -S จะทำให้คุณสามารถดูผลลัพธ์แบบโต้ตอบจากซ้ายไปขวา ในขณะที่บรรทัดที่มีความยาวยาวกว่าความกว้างของหน้าจอ ปรากฏขึ้น ผลลัพธ์จะดำเนินต่อไปในบรรทัดใหม่ ข้อมูลเอาต์พุตในกรณีดังกล่าวสามารถอ่านได้มากขึ้น เมื่อเรียกใช้คำสั่ง less แบบโต้ตอบด้วยตัวเลือก "-S" คุณสามารถสลับโหมดการทำงาน (เปิด/ปิดใช้งาน) จากบรรทัดคำสั่งได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Less โปรดดูคำอธิบายของคำสั่ง "h"
  • โดยสรุป เราทราบ (หากคุณยังไม่เข้าใจสิ่งนี้จากตัวอย่างก่อนหน้านี้) ว่ามันเป็นไปได้ที่จะรวมวิธีการประมวลผลผลลัพธ์ที่ซับซ้อนมากเข้าด้วยกัน ดังนั้น ในตัวอย่างต่อไปนี้ ผลลัพธ์จะถูกส่งไปยังไดเร็กทอรีที่แตกต่างกันสองไดเร็กทอรีที่ติดตั้งบนฮาร์ดไดรฟ์สองตัวภายใต้ /dr1 และ /dr2 แต่ยังสามารถดูผลลัพธ์ได้บนหน้าจอด้วยคำสั่ง less: mysql> pager cat | ที /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | น้อยกว่า -n -i -S
  • ฟังก์ชั่นข้างต้นสามารถนำมารวมกันได้: ด้วยการรัน tee และการตั้งค่าเพจเจอร์เป็น less คุณสามารถดูผลลัพธ์ด้วยคำสั่ง less Unix ในขณะที่เขียนลงไฟล์ไปพร้อมๆ กัน ความแตกต่างระหว่าง tee ยูทิลิตี้ Unix ที่ใช้โดยโปรแกรมเพจเจอร์และคำสั่ง tee ในตัวในไคลเอนต์ mysql ก็คือคำสั่ง tee ในตัวทำงานได้แม้ว่ายูทิลิตี้ tee จะไม่พร้อมใช้งานบน Unix ก็ตาม tee บิวด์อินยังบันทึกทุกอย่างที่แสดงบนหน้าจอ ในขณะที่ยูทิลิตี้ Unix tee ที่ใช้กับเพจเจอร์ไม่ได้ทำอะไรมากนัก สุดท้ายแต่ไม่ท้ายสุด คำสั่ง tee แบบโต้ตอบจะสะดวกกว่าสำหรับการสลับโหมดเปิด/ปิดการทำงาน หากคุณจำเป็นต้องปิดใช้งานคุณสมบัตินี้ในบางครั้งเมื่อเขียนลงไฟล์

คุณสามารถเปลี่ยนรูปแบบพรอมต์บนบรรทัดคำสั่งไคลเอนต์ mysql

มีตัวเลือกพร้อมท์ต่อไปนี้:

ตัวเลือก คำอธิบาย
\vเวอร์ชัน mysql
\dชื่อของฐานข้อมูลที่จะใช้
\ชมชื่อโฮสต์ที่จะเชื่อมต่อ
\พีหมายเลขพอร์ตที่ใช้เชื่อมต่อ
\ยูชื่อผู้ใช้
\ยูที่อยู่แบบเต็มชื่อผู้ใช้@โฮสต์
\\ แบ็กสแลช `\"
\nอักขระขึ้นบรรทัดใหม่
\tแท็บหยุด
\ ช่องว่าง
\_ ช่องว่างที่มีขีดล่าง
\อาร์เขตเวลาทางการทหาร (0-23)
\rเวลาตามโซนเวลามาตรฐาน (1-12)
\mนาที
\yสองหลักของปี
\วายสี่หลักของปี
\Dรูปแบบวันที่เต็ม
\sวินาที
\wวันในสัปดาห์ในรูปแบบตัวอักษรสามตัว (จันทร์ อังคาร ...)
\พีเช้า/บ่าย (เช้า/บ่าย)
\oเดือนในรูปแบบตัวเลข
\โอเดือนในรูปแบบตัวอักษรสามตัว (ม.ค., ก.พ., ...)
\คตัวนับที่นับจำนวนคำสั่งที่ป้อน

`\" ตามด้วยตัวอักษรอื่นๆ เพียงเติมตัวอักษรนั้นให้สมบูรณ์

คุณสามารถตั้งค่าตัวเลือกพรอมต์ได้ด้วยวิธีต่อไปนี้:

ในตัวแปรสภาพแวดล้อมคุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม MYSQL_PS1 สำหรับสตริงพร้อมท์ได้ ตัวอย่างเช่น: เชลล์> ส่งออก MYSQL_PS1="(\u@\h) [\d]> " `my.cnf' `.my.cnf"คุณสามารถตั้งค่าตัวเลือกพรอมต์ในไฟล์การกำหนดค่า MySQL ใดก็ได้ภายใต้กลุ่ม mysql ตัวอย่างเช่น: prompt=(\u@\h) [\d]>\_ บนบรรทัดคำสั่งคุณสามารถตั้งค่าตัวเลือก --prompt ได้จากบรรทัดคำสั่ง mysql ตัวอย่างเช่น: เชลล์> mysql --prompt="(\u@\h) [\d]> " (user@host) > เชิงโต้ตอบคุณยังสามารถใช้คำสั่งพร้อมท์ (หรือ \R) เพื่อเปลี่ยนการตั้งค่าพร้อมท์แบบโต้ตอบได้ ตัวอย่างเช่น: mysql> prompt (\u@\h) [\d]>\_ PROMPT ตั้งค่าเป็น "(\u@\h) [\d]>\_" (user@host) > (user@host) > prompt กลับสู่การตั้งค่า PROMPT ดั้งเดิม (ค่าเริ่มต้น) ในยูทิลิตี้ mysql> mysql>

การเริ่มต้นและหยุดเซิร์ฟเวอร์ MySQL จาก Command Line

คุณสามารถเริ่มเซิร์ฟเวอร์ MySQL ด้วยตนเองได้ด้วยวิธีใดวิธีหนึ่งจากสองวิธี:

ดับเบิลคลิกไฟล์ mysqld-nt.exe ที่อยู่ในไดเร็กทอรีย่อย bin ของไดเร็กทอรีที่ติดตั้ง MySQL

เปิดหน้าต่างพรอมต์คำสั่งของ Windows เมื่อต้องการทำสิ่งนี้ ให้คลิกปุ่ม Start เลือกรายการ Run ในเมนู ในหน้าต่าง Run the program ที่ปรากฏขึ้น ในช่อง Open ให้พิมพ์ cmd แล้วคลิกปุ่ม OK หน้าต่างบรรทัดคำสั่งจะปรากฏขึ้นบนหน้าจอ (รูปที่ 1.25)

ข้าว. 1.25.หน้าต่างบรรทัดคำสั่ง


ที่พรอมต์คำสั่ง ให้ป้อนคำสั่ง

mysqld-nt

และกดปุ่ม Enter เซิร์ฟเวอร์ MySQL จะเริ่มทำงาน

หากเมื่อตั้งค่าเซิร์ฟเวอร์เส้นทางไปยังไดเร็กทอรีย่อย bin ไม่ได้ถูกเพิ่มเข้ากับค่าของตัวแปรระบบ Path ดังนั้นในการเริ่มเซิร์ฟเวอร์คุณจะต้องป้อนไม่เพียงแต่ชื่อไฟล์เท่านั้น แต่ยังรวมถึงเส้นทางแบบเต็มด้วยด้วย ตัวอย่าง:

C:\Program Files\MySQL\MySQL เซิร์ฟเวอร์ 5.0\bin\mysqld-nt

หากคุณต้องการดูข้อความวินิจฉัยเซิร์ฟเวอร์จากหน้าต่างพร้อมท์คำสั่ง แทน mysqld-nt ให้พิมพ์

mysqld-nt --console

ความสนใจ!

หากคุณไม่ได้ระบุรหัสผ่านรูทเมื่อตั้งค่าเซิร์ฟเวอร์ MySQL คุณต้องตั้งรหัสผ่านในครั้งแรกที่คุณเริ่มเซิร์ฟเวอร์ (ไม่เช่นนั้นใคร ๆ ก็สามารถจัดการเซิร์ฟเวอร์ในฐานะรูทได้โดยไม่ต้องใช้รหัสผ่าน)

หากต้องการตั้งรหัสผ่านรูท ให้เปิดหน้าต่างพรอมต์คำสั่งใหม่แล้วป้อนคำสั่งต่อไปนี้:

mysqladmin -u รหัสผ่านรูท<пароль>

(หรือ C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u รหัสผ่านรูท<пароль>หากไม่ได้เพิ่มพาธไปยังไดเร็กทอรีย่อย bin ให้กับค่าของตัวแปรระบบ Path เมื่อกำหนดค่าเซิร์ฟเวอร์) และกดปุ่ม Enter

ในอนาคต หากคุณต้องการเปลี่ยนรหัสผ่านของผู้ใช้รูท ให้รันคำสั่งเดียวกันโดยใช้ตัวเลือก -p เท่านั้น:

mysqladmin -u root -p รหัสผ่าน<новый пароль>

เมื่อข้อความแจ้งให้ป้อนรหัสผ่านปรากฏขึ้น ให้ป้อนรหัสผ่านเก่าแล้วกดปุ่ม Enter

สุดท้าย หากคุณต้องการหยุดเซิร์ฟเวอร์ MySQL ให้รันคำสั่ง

mysqladmin -u root -p ปิดระบบ

และที่พรอมต์ป้อนรหัสผ่าน ให้ป้อนรหัสผ่านสำหรับผู้ใช้รูท กดปุ่ม Enter เซิร์ฟเวอร์ MySQL จะหยุดทำงาน

คุณยังสามารถใช้ยูทิลิตี้ MySQL Administrator แบบกราฟิกเพื่อเริ่มและหยุดเซิร์ฟเวอร์ MySQL

การเริ่มต้นและหยุดเซิร์ฟเวอร์ MySQL โดยใช้ผู้ดูแลระบบ MySQL

หากต้องการเริ่มเซิร์ฟเวอร์ MySQL โดยใช้ยูทิลิตี้ผู้ดูแลระบบ MySQL แบบกราฟิก ให้ทำตามขั้นตอนเหล่านี้

1. เปิดโปรแกรม MySQL Administrator (Start → All Programs → MySQL → MySQL Administrator) หน้าต่างการเชื่อมต่อเซิร์ฟเวอร์จะปรากฏขึ้นบนหน้าจอ (รูปที่ 1.26)

ข้าว. 1.26.


2. กดปุ่ม Ctrl ค้างไว้แล้วคลิกปุ่มข้ามที่ปรากฏที่มุมขวาล่างของหน้าต่างแทนปุ่มยกเลิก หน้าต่างผู้ดูแลระบบ MySQL หลักจะปรากฏบนหน้าจอ (รูปที่ 1.27)

ข้าว. 1.27.หน้าต่างหลักของผู้ดูแลระบบ MySQL


4. หากเซิร์ฟเวอร์ MySQL ไม่ได้กำหนดค่าเป็นบริการ Windows ปุ่มเริ่มบริการที่อยู่ในบานหน้าต่างด้านขวาของหน้าต่างจะไม่พร้อมใช้งาน คุณต้องทำตามขั้นตอนเบื้องต้นดังต่อไปนี้:

1) ไปที่แท็บกำหนดค่าบริการ ค้นหาปุ่มติดตั้งบริการใหม่ที่ด้านล่างของแท็บแล้วคลิก

2) ในกล่องโต้ตอบที่ปรากฏขึ้นให้ระบุชื่อของบริการแล้วคลิกปุ่มตกลง

3) ในฟิลด์ Config Filename ป้อนเส้นทางไปยังไฟล์การกำหนดค่า my.ini (รูปที่ 1.28) เช่น C: \ Program Files \ MySQL \ MySQL Server 5.0 \ my.ini สีตัวอักษรสีแดงหมายความว่าไม่พบไฟล์ หากสีเปลี่ยนเป็นปกติแสดงว่าเส้นทางนั้นถูกต้อง

4) ในฟิลด์ Path to binary ให้ป้อนพาธไปยังไฟล์ mysqld-nt.exe เช่น C: \Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt;

6) กลับไปที่แท็บเริ่ม/หยุดบริการ

ข้าว. 1.28.กำหนดค่าแท็บบริการ 5 คลิกปุ่มเริ่มบริการ เซิร์ฟเวอร์ MySQL จะเริ่มทำงาน


ความสนใจ!

หากคุณไม่ได้ระบุรหัสผ่านรูทเมื่อตั้งค่าเซิร์ฟเวอร์ MySQL คุณต้องตั้งค่าในครั้งแรกที่คุณเริ่มเซิร์ฟเวอร์ (ไม่เช่นนั้นใคร ๆ ก็สามารถจัดการเซิร์ฟเวอร์เป็นรูทได้โดยไม่ต้องใช้รหัสผ่าน) ในเวอร์ชันปัจจุบันของผู้ดูแลระบบ MySQL การตั้งค่ารหัสผ่านรูทไม่พร้อมใช้งาน และคุณต้องใช้ยูทิลิตีบรรทัดคำสั่ง mysqladmin เพื่อดำเนินการนี้ (ดูที่การเริ่มและการหยุดเซิร์ฟเวอร์ MySQL จากส่วนย่อยบรรทัดคำสั่ง)

หากต้องการหยุดเซิร์ฟเวอร์ MySQL โดยใช้ MySQL Administrator ให้ทำตามขั้นตอนเหล่านี้

1. เปิดโปรแกรม MySQL Administrator (Start → All Programs → MySQL → MySQL Administrator) หน้าต่างการเชื่อมต่อเซิร์ฟเวอร์จะปรากฏขึ้นบนหน้าจอ (ดูรูปที่ 1.26)

โฮสต์เซิร์ฟเวอร์ (ชื่อโฮสต์) - ค่าของ localhost (คอมพิวเตอร์ท้องถิ่น)

พอร์ต (พอร์ต) - หมายเลขพอร์ตที่เลือกเมื่อกำหนดค่าเซิร์ฟเวอร์ (ค่าเริ่มต้น - 3306)

Usename (ชื่อผู้ใช้) - ค่าของ root;

รหัสผ่าน - รหัสผ่านของผู้ใช้รูท คลิกปุ่มตกลง

3. ในหน้าต่างหลักของผู้ดูแลระบบ MySQL ในบานหน้าต่างด้านซ้าย คลิก การควบคุมบริการ

4. ในบานหน้าต่างด้านขวาของหน้าต่าง ให้คลิกปุ่มหยุดบริการ เซิร์ฟเวอร์ MySQL จะหยุดทำงาน

ในส่วนย่อยถัดไป คุณจะได้เรียนรู้วิธีเริ่มต้นเซิร์ฟเวอร์ MySQL โดยใช้เครื่องมือการดูแลระบบ Windows

การเริ่มต้นและหยุดเซิร์ฟเวอร์ MySQL จากแผงควบคุม

หากเซิร์ฟเวอร์ MySQL ได้รับการกำหนดค่าเป็นบริการ Windows โดยใช้วิซาร์ดการตั้งค่า (ดูหัวข้อย่อย "การกำหนดค่าเซิร์ฟเวอร์ MySQL") หรือใช้ยูทิลิตี้ผู้ดูแลระบบ MySQL (ดูหัวข้อย่อย "การเริ่มต้นและการหยุดเซิร์ฟเวอร์ MySQL โดยใช้ผู้ดูแลระบบ MySQL") ให้เริ่มและหยุดการทำงาน คุณ สามารถใช้ส่วนประกอบบริการในแผงควบคุมได้

หากต้องการเรียกใช้ส่วนประกอบ Services ให้คลิกปุ่ม Start เลือก Control Panel จากเมนู จากนั้นดับเบิลคลิกที่ไอคอน Administrative Tools ใน Control Panel และสุดท้ายดับเบิลคลิกที่ไอคอน Services ในหน้าต่าง Administrative Tools หน้าต่างบริการจะปรากฏบนหน้าจอ (รูปที่ 1.29) พร้อมรายการบริการในพื้นที่ทั้งหมด

ข้าว. 1.29.บริการ MySQL ในแผงควบคุม


ในหน้าต่างบริการ ให้คลิกที่ชื่อของบริการ MySQL (ชื่อจะถูกกำหนดเมื่อมีการสร้างบริการในตัวช่วยสร้างการกำหนดค่าหรือในผู้ดูแลระบบ MySQL) จากนั้นคลิกลิงก์ที่เหมาะสมใต้ชื่อบริการ: เริ่มบริการ หยุดบริการ หรือเริ่มบริการใหม่

เมื่อเซิร์ฟเวอร์ MySQL ทำงาน คุณสามารถเชื่อมต่อได้ ส่วนย่อยต่อไปนี้จะแสดงวิธีการทำเช่นนี้

การเชื่อมต่อกับเซิร์ฟเวอร์จากบรรทัดคำสั่ง

หากต้องการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL จากบรรทัดคำสั่ง ให้ทำตามขั้นตอนเหล่านี้

1. เปิดหน้าต่างพรอมต์คำสั่งของ Windows เมื่อต้องการทำสิ่งนี้ ให้คลิกปุ่ม Start เลือกรายการ Run ในเมนู ในหน้าต่าง Run the program ที่ปรากฏขึ้น ให้พิมพ์ cmd ในช่อง Open แล้วคลิกปุ่ม OK

2. บนบรรทัดคำสั่ง (ดูรูป 1.25) ให้ป้อนคำสั่ง

mysql-h<Имя компьютера>-ยู<Имя пользователя>-พี

(ที่ไหน<Имя компьютера>คือชื่อของคอมพิวเตอร์ที่เซิร์ฟเวอร์ทำงานอยู่) และกดปุ่ม Enter เมื่อข้อความแจ้งให้ป้อนรหัสผ่านปรากฏขึ้น ให้ป้อนรหัสผ่านของผู้ใช้

หากคุณต้องการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ที่ทำงานบนคอมพิวเตอร์เครื่องเดียวกัน คุณสามารถละชื่อคอมพิวเตอร์ (localhost) ไว้ได้ เช่น

mysql -u รูต -p

หลังจากเชื่อมต่อกับเซิร์ฟเวอร์แล้ว command prompt จะเปลี่ยนเป็น mysql> (รูปที่ 1.30) ตอนนี้คุณสามารถเริ่มทำงานกับฐานข้อมูลได้แล้ว: เพิ่มตาราง, ป้อนและสืบค้นข้อมูล, ลงทะเบียนผู้ใช้ใหม่ ฯลฯ

ข้าว. 1.30.การเชื่อมต่อกับเซิร์ฟเวอร์ MySQL จาก Command Line


หากต้องการยกเลิกการเชื่อมต่อจากเซิร์ฟเวอร์ เพียงพิมพ์คำสั่งที่บรรทัดคำสั่ง

และกดปุ่ม Enter

อีกทางเลือกหนึ่งในการเชื่อมต่อกับเซิร์ฟเวอร์ MySQL นั้นมีให้โดยยูทิลิตี้ MySQL Query Browser แบบกราฟิก

การเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ MySQL Query Browser

ยูทิลิตี้ MySQL Query Browser เป็นอินเทอร์เฟซสำหรับการสร้าง แก้ไข และดำเนินการคำสั่ง SQL สะดวกกว่าบรรทัดคำสั่ง หากคุณตัดสินใจที่จะใช้เบราว์เซอร์ MySQL Query เพื่อทำงานกับฐานข้อมูล ให้ทำตามขั้นตอนเหล่านี้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์

1. เปิดโปรแกรม MySQL Query Browser (Start → All Programs → MySQL → MySQL Query Browser) หน้าต่างการเชื่อมต่อเซิร์ฟเวอร์จะปรากฏขึ้นบนหน้าจอ (รูปที่ 1.31)

ข้าว. 1.31.หน้าต่างการเชื่อมต่อเซิร์ฟเวอร์ MySQL


2. ในฟิลด์ของหน้าต่างการเชื่อมต่อเซิร์ฟเวอร์ ให้ป้อนพารามิเตอร์การเชื่อมต่อ:

โฮสต์เซิร์ฟเวอร์ (ชื่อโฮสต์) - ชื่อของคอมพิวเตอร์ที่เซิร์ฟเวอร์ MySQL ใช้งานอยู่

พอร์ต (พอร์ต) - หมายเลขพอร์ตที่เลือกเมื่อกำหนดค่าเซิร์ฟเวอร์ (ค่าเริ่มต้น - 330 6)

ชื่อผู้ใช้ - ชื่อผู้ใช้;

รหัสผ่าน - รหัสผ่านผู้ใช้;

สคีมาเริ่มต้น - ชื่อของฐานข้อมูลที่คุณจะใช้งาน (อาจเป็นฐานข้อมูลที่มีอยู่หรือฐานข้อมูลใหม่ก็ได้)

3. กดปุ่ม OK หากคุณป้อนชื่อสำหรับฐานข้อมูลใหม่ ในกล่องโต้ตอบที่ปรากฏขึ้น ให้คลิกปุ่มใช่เพื่อสร้างฐานข้อมูลนี้

หลังจากเชื่อมต่อกับเซิร์ฟเวอร์แล้ว หน้าต่างหลักของ MySQL Query Browser จะปรากฏขึ้นบนหน้าจอ (รูปที่ 1.32) ในนั้น คุณสามารถดำเนินการใดๆ กับฐานข้อมูลได้: เพิ่มตาราง, ป้อนและสืบค้นข้อมูล, ลงทะเบียนผู้ใช้ใหม่ ฯลฯ

ข้าว. 1.32.หน้าต่างหลักของเบราว์เซอร์ MySQL Query


ความสนใจ!

แบบอักษรเริ่มต้นที่ใช้โดยเบราว์เซอร์ MySQL Query เพื่อแสดงคำสั่ง SQL ไม่รองรับอักขระภาษารัสเซีย หากต้องการป้อนตัวอักษรภาษารัสเซียในข้อความค้นหา คุณต้องเลือกแบบอักษรอื่น (เช่น Arial หรือ Book Antiqua) ในการดำเนินการนี้ ในหน้าต่างหลักของเบราว์เซอร์ MySQL Query ให้เปิดเมนูเครื่องมือแล้วเลือกตัวเลือก ในหน้าต่างตัวเลือกที่ปรากฏขึ้น ในบานหน้าต่างด้านซ้าย ให้คลิกตัวเลือกทั่วไป และในบานหน้าต่างด้านขวา ในช่องแบบอักษรโค้ด ให้เลือกแบบอักษรที่ต้องการจากรายการ คลิกปุ่มใช้

หากต้องการยกเลิกการเชื่อมต่อจากเซิร์ฟเวอร์ เพียงปิดหน้าต่างเบราว์เซอร์ MySQL Query

นี่คือจุดที่เราสิ้นสุดความคุ้นเคยกับ MySQL และดำเนินการสรุปต่อ

1.6. สรุป

บทนี้ครอบคลุมถึง MySQL DBMS และยูทิลิตี้กราฟิก MySQL Administrator และ MySQL Query Browser คุณเชี่ยวชาญขั้นตอนที่ค่อนข้างซับซ้อนในการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ MySQL ได้เรียนรู้วิธีจัดการเซิร์ฟเวอร์และเชื่อมต่อกับเซิร์ฟเวอร์แล้ว คุณยังได้เรียนรู้ว่าฐานข้อมูลเชิงสัมพันธ์ทำงานอย่างไร และวิธีออกแบบฐานข้อมูลของคุณเอง

ดังนั้นขั้นตอนต่อไปคือการสร้างฐานข้อมูลใน MySQL นี่เป็นหัวข้อของบทที่สอง โดยจะบอกวิธีสร้างตาราง ป้อนข้อมูล และค้นหาข้อมูลที่คุณต้องการในฐานข้อมูล

บทที่ 2
การจัดการฐานข้อมูลด้วย SQL

ในบทนี้ คุณจะได้เรียนรู้วิธีทำงานกับข้อมูลใน MySQL วิธีกำหนดโครงสร้างของข้อมูล และวิธีการเพิ่ม แก้ไข และลบข้อมูล การดำเนินการเหล่านี้ดำเนินการโดย SQL ซึ่งเป็น Universal Structured Query Language ซึ่งเป็นเครื่องมือการเข้าถึงมาตรฐานสำหรับฐานข้อมูลเชิงสัมพันธ์

คุณสามารถใช้แอปพลิเคชันไคลเอ็นต์เซิร์ฟเวอร์ MySQL ใดก็ได้เพื่อรันคำสั่ง SQL บทนี้จะไม่ครอบคลุมถึงแอปพลิเคชันของบุคคลที่สาม คุณจะได้รู้จักกับแอปพลิเคชันที่สร้างโดย MySQL AB เท่านั้น: ยูทิลิตี้บรรทัดคำสั่ง mysql และยูทิลิตี้ MySQL Query Browser แบบกราฟิก

การดำเนินการทั้งหมดพร้อมข้อมูลมีอยู่ในยูทิลิตี้ทั้งสอง สะดวกในการทำงานกับฐานข้อมูลใน MySQL Query Browser: มีการนำเสนอส่วนประกอบต่างๆ อย่างชัดเจน คุณสามารถแก้ไขข้อมูลได้โดยตรง (โดยไม่ต้องใช้คำสั่ง SQL UPDATE) ทำงานกับแบบสอบถาม เช่น สร้างโดยใช้เครื่องมือพิเศษ (คุณทำ ไม่จำเป็นต้องป้อนชื่อตารางและคอลัมน์ด้วยตนเอง ) บันทึกข้อความค้นหาในไฟล์ ส่งออกผลลัพธ์ข้อความค้นหา และอื่นๆ คุณสามารถเรียนรู้เกี่ยวกับคุณสมบัติทั้งหมดของ MySQL Query Browser ได้โดยอ้างอิงจากเอกสารภาษารัสเซีย ซึ่งสามารถพบได้ที่ http://dev.mysql.com/doc/query-browser/en/index.html

ขั้นแรก คุณจะได้เรียนรู้วิธีดำเนินการคำสั่ง SQL ในเบราว์เซอร์ MySQL Query Browser และบนบรรทัดคำสั่ง และต่อไปนี้จะครอบคลุมเฉพาะไวยากรณ์ของคำสั่ง SQL เท่านั้น

2.1. การดำเนินการคำสั่ง SQL

ก่อนที่จะดำเนินการคำสั่ง SQL คุณต้องเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ที่ทำงานอยู่ (ดูบทที่ 1 สำหรับวิธีการดำเนินการนี้) ในส่วนนี้ คุณจะได้เรียนรู้วิธีสร้างคำสั่ง SQL และส่งคำสั่งไปยังเซิร์ฟเวอร์เพื่อดำเนินการ

หากคุณใช้บรรทัดคำสั่งเพื่อดำเนินการคำสั่ง SQL เราจะป้อนข้อความในหน้าต่างบรรทัดคำสั่งแล้วกดปุ่ม Enter เพื่อส่งคำสั่งไปยังเซิร์ฟเวอร์ เพื่อหลีกเลี่ยงปัญหาในการเข้ารหัสข้อมูลภาษารัสเซีย ก่อนที่จะทำงานกับข้อมูล ให้รันคำสั่งก่อน

ตั้งชื่อ cp866;

ผลลัพธ์ของการดำเนินการคำสั่งนี้แสดงไว้ในรูปที่ 1 2.1.

ข้าว. 2.1.การตั้งค่าการเข้ารหัสบนบรรทัดคำสั่ง


คำสั่ง SET NAMES จะต้องทำซ้ำเมื่อใด ทุกคนการเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้บรรทัดคำสั่ง คำสั่งนี้จะบอกเซิร์ฟเวอร์ว่าแอปพลิเคชันไคลเอนต์นี้ (ยูทิลิตี้ mysql) ใช้การเข้ารหัส CP-866 (นี่คือการเข้ารหัสบรรทัดคำสั่งของ Windows) และเซิร์ฟเวอร์จะทำการแปลงการเข้ารหัสโดยอัตโนมัติเมื่อสื่อสารกับแอปพลิเคชันไคลเอนต์

หลังจากเปลี่ยนการเข้ารหัส คุณสามารถป้อนคำสั่ง SQL บนบรรทัดคำสั่งได้ ข้อความเกี่ยวกับผลลัพธ์ของการดำเนินการคำสั่งตลอดจนข้อมูลที่ร้องขอจะแสดงโดยตรงในหน้าต่างบรรทัดคำสั่ง (รูปที่ 2.2)

ข้าว. 2.2.การดำเนินการค้นหา SQL บนบรรทัดคำสั่ง


ยูทิลิตี้ mysql ยังช่วยให้คุณป้อนคำสั่งหลายบรรทัดได้ (ในรูปที่ 2.3 คำสั่ง SHOW DATABASES จะถูกป้อนด้วยวิธีนี้) หากไม่ได้ป้อนเครื่องหมายอัฒภาค - สัญลักษณ์ของการสิ้นสุดคำสั่งจากนั้นเมื่อคุณกดปุ่ม Enter ยูทิลิตี้จะไม่ส่งคำสั่งไปยังเซิร์ฟเวอร์ แต่เสนอให้ป้อนคำสั่งต่อไป หากคุณต้องการยกเลิกคำสั่งหลายบรรทัด ให้พิมพ์ \c (รูปที่ 2.3)

ข้าว. 2.3.คำสั่งหลายบรรทัด


หากคุณใช้ MySQL Query Browser คุณไม่จำเป็นต้องตั้งค่าการเข้ารหัส - โปรแกรมนี้ทำงานในการเข้ารหัส UTF-8 และรายงานสิ่งนี้ไปยังเซิร์ฟเวอร์เอง อย่างไรก็ตามใน MySQL Query Browser มีปัญหาในการแสดงตัวอักษรรัสเซียในพื้นที่สืบค้น (พื้นที่ที่ป้อนข้อความของคำสั่ง SQL รูปที่ 2.4) วิธีแก้ไขปัญหานี้คือการเปลี่ยนแบบอักษรที่ใช้ในพื้นที่สืบค้น (ดูวิธีการดำเนินการนี้ในตอนท้ายของบทที่แล้ว) เปลี่ยนแบบอักษรครั้งเดียวก็เพียงพอแล้ว

ข้าว. 2.4.ดำเนินการสืบค้น SQL ใน MySQL Query Browser


ในพื้นที่สืบค้น คุณสามารถป้อนคำสั่ง SQL หลายคำสั่งพร้อมกันได้ ดังแสดงในรูปที่ 1 2.4. คำสั่งปัจจุบัน (เคอร์เซอร์อยู่บนบรรทัดใดบรรทัดหนึ่ง) จะถูกเน้นด้วยสีพื้นหลังสีขาว คำสั่งที่เหลือจะแสดงบนพื้นหลังสีเทาอ่อน หากต้องการดำเนินการคำสั่งปัจจุบัน คุณสามารถกดปุ่ม Execute ที่อยู่ทางด้านขวาของพื้นที่สืบค้น หรือกดคีย์ผสม Ctrl+Enter หลังจากดำเนินการคำสั่งแล้ว ข้อมูลที่ร้องขอจะแสดงในพื้นที่ผลลัพธ์ และข้อความเกี่ยวกับผลลัพธ์ของคำสั่งจะแสดงที่ด้านล่างของพื้นที่นี้

ตอนนี้คุณได้เรียนรู้วิธีป้อนคำสั่ง SQL แล้ว มาเริ่มจัดการข้อมูลโดยใช้คำสั่งเหล่านี้กันดีกว่า ก่อนอื่นเราจะดูคำสั่งที่ออกแบบมาเพื่อทำงานกับฐานข้อมูลโดยรวม

2.2. การสร้างฐานข้อมูล

ในส่วนนี้ คุณจะได้เรียนรู้วิธีสร้างและลบฐานข้อมูล เปลี่ยนการเข้ารหัสเริ่มต้น เลือกฐานข้อมูลปัจจุบัน และดูรายการฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์ MySQL ที่กำหนด

หากต้องการสร้างฐานข้อมูล ให้รันคำสั่ง

สร้างฐานข้อมูล<Имя базы данных>;

เช่น คำสั่ง

สร้างฝ่ายขายฐานข้อมูล

สร้างฐานข้อมูลชื่อ SalesDept

หากด้วยเหตุผลบางอย่างคุณต้องตั้งค่าการเข้ารหัสเริ่มต้นสำหรับฐานข้อมูลใหม่ที่แตกต่างจากการเข้ารหัสที่ระบุเมื่อตั้งค่า MySQL จากนั้นเมื่อสร้างฐานข้อมูลคุณสามารถระบุการเข้ารหัสที่ต้องการ (ชุดอักขระ) และ / หรือกฎสำหรับการเปรียบเทียบ ( การเรียงลำดับ) ค่าอักขระ:

สร้างฐานข้อมูล<Имя базы данных>

ชุดตัวอักษร<Имя кодировки>

จัดเรียง<Имя правила сравнения>;

ตัวอย่างเช่น หากคุณนำเข้าข้อมูลไปยังฐานข้อมูลใหม่ที่อยู่ในการเข้ารหัส CP-1251 เราจะระบุการเข้ารหัสนี้เมื่อสร้างฐานข้อมูลในลักษณะนี้:

สร้างฐานข้อมูลฝ่ายขาย

ชุดตัวละคร cp1251 COLLATE cp1251_general_ci;

คำแนะนำ

หากต้องการดูรายการการเข้ารหัสที่ใช้ใน MySQL ให้รันคำสั่ง SHOW CHARACTER SET และหากต้องการดูรายการกฎสำหรับการเปรียบเทียบค่าอักขระ ให้ใช้คำสั่ง SHOW COLLATION; ในกรณีนี้ คุณสามารถใช้ตัวดำเนินการ LIKE ได้ ตัวอย่างเช่น หากต้องการดูกฎการเปรียบเทียบทั้งหมดสำหรับการเข้ารหัส CP-1251 ให้ดำเนินการคำสั่ง SHOW COLLATION LIKE %1251%; การลงท้ายด้วย "_ci" (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ในชื่อของกฎการเปรียบเทียบหมายความว่าการเปรียบเทียบและการเรียงลำดับไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ ส่วนท้าย "_cs" (คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) - คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ส่วนท้าย "_bin" (ไบนารี) - การเปรียบเทียบ และการเรียงลำดับจะดำเนินการโดยใช้รหัสอักขระตัวเลข สำหรับกฎการเปรียบเทียบส่วนใหญ่ คุณสามารถดูคำอธิบาย (นั่นคือ ลำดับอักขระที่จะเรียงลำดับค่าข้อความ) ได้ที่ http://www.collation-charts.org/mysql60/

การเข้ารหัสที่ระบุเมื่อสร้างฐานข้อมูลจะถูกใช้เป็นค่าเริ่มต้นสำหรับตารางในฐานข้อมูลนั้น แต่คุณสามารถระบุการเข้ารหัสอื่นได้เช่นกัน

คุณสามารถเปลี่ยนการเข้ารหัสและ/หรือกฎสำหรับการเปรียบเทียบค่าอักขระสำหรับฐานข้อมูลโดยใช้คำสั่ง

แก้ไขฐานข้อมูล<Имя базы данных>

ชุดตัวอักษร<Имя кодировки>

จัดเรียง<Имя правила сравнения>;

ในเวลาเดียวกัน การเข้ารหัสที่ใช้ในตารางฐานข้อมูลที่มีอยู่แล้วจะยังคงเหมือนเดิม เฉพาะการเข้ารหัสเริ่มต้นสำหรับตารางที่สร้างขึ้นใหม่เท่านั้นที่เปลี่ยนแปลง

หากต้องการลบฐานข้อมูลที่ไม่จำเป็นหรือสร้างขึ้นอย่างผิดพลาด ให้รันคำสั่ง

วางฐานข้อมูล<Имя базы данных>;

ความสนใจ!

การลบฐานข้อมูลเป็นการดำเนินการที่ละเอียดอ่อนมาก เนื่องจากจะเป็นการลบตารางทั้งหมดในฐานข้อมูลนั้นและข้อมูลที่จัดเก็บไว้ในตารางด้วย ขอแนะนำให้สำรองฐานข้อมูลก่อนที่จะลบ

คุณสามารถเลือกฐานข้อมูลใดฐานข้อมูลหนึ่งที่สร้างขึ้นบนเซิร์ฟเวอร์ MySQL นี้เป็นฐานข้อมูลปัจจุบันได้โดยใช้คำสั่ง

ใช้<Имя базы данных>;

ตัวอย่างเช่น,:

ฝ่ายขายของสหรัฐอเมริกา;

จากนั้นคุณสามารถดำเนินการกับตารางในฐานข้อมูลนั้นได้โดยไม่ต้องนำหน้าชื่อตารางด้วยชื่อฐานข้อมูล ตัวอย่างเช่น ในการเข้าถึงตารางลูกค้าในฐานข้อมูล SalesDept คุณสามารถเขียนลูกค้าแทน SalesDept.Customers ได้ โดยการระบุฐานข้อมูลปัจจุบันคุณยังสามารถเข้าถึงตารางในฐานข้อมูลอื่นได้ แต่จำเป็นต้องใช้ชื่อฐานข้อมูลเป็นคำนำหน้า การเลือกฐานข้อมูลปัจจุบันจะยังคงอยู่จนกว่าจะตัดการเชื่อมต่อจากเซิร์ฟเวอร์หรือจนกว่าจะเลือกฐานข้อมูลปัจจุบันอื่น

หากต้องการดูรายการฐานข้อมูลทั้งหมดที่มีอยู่ในเซิร์ฟเวอร์ MySQL ให้รันคำสั่ง

แสดงฐานข้อมูล;

แม้ว่าคุณจะยังไม่ได้สร้างฐานข้อมูลใดๆ ก็ตาม คุณจะเห็นฐานข้อมูลระบบสามฐานข้อมูลในรายการผลลัพธ์

INFORMATION_SCHEMA - ฐานข้อมูลที่คุณสามารถรับข้อมูลเกี่ยวกับฐานข้อมูลอื่น ๆ ทั้งหมดเกี่ยวกับโครงสร้างข้อมูลในนั้นและเกี่ยวกับวัตถุทุกประเภท: ตาราง, คอลัมน์, คีย์หลักและคีย์ต่างประเทศ, สิทธิ์การเข้าถึง, ขั้นตอนการจัดเก็บ, การเข้ารหัส ฯลฯ ฐานข้อมูลนี้ พร้อมใช้งานแบบอ่านอย่างเดียวและเสมือน ซึ่งหมายความว่าไม่ได้จัดเก็บเป็นไดเร็กทอรีบนดิสก์ ข้อมูลทั้งหมดที่ร้องขอจากฐานข้อมูลนี้ได้รับการจัดเตรียมแบบไดนามิกโดยเซิร์ฟเวอร์ MySQL

Mysql เป็นฐานข้อมูลส่วนหลังที่ใช้โดยเซิร์ฟเวอร์ MySQL จัดเก็บข้อมูลเกี่ยวกับผู้ใช้ที่ลงทะเบียนและสิทธิ์การเข้าถึง ข้อมูลอ้างอิง ฯลฯ

Test เป็นฐานข้อมูลเปล่าที่สามารถใช้เพื่อ "ทดสอบปากกา" หรือลบออกก็ได้

ดังนั้น คุณจึงเชี่ยวชาญการดำเนินการพื้นฐานที่ดำเนินการกับฐานข้อมูลโดยรวมแล้ว: สร้างฐานข้อมูล (สร้าง), แก้ไขฐานข้อมูล (เปลี่ยนแปลง), วางฐานข้อมูล (ลบ), ใช้ (เลือกฐานข้อมูลปัจจุบัน) และแสดงฐานข้อมูล (ดูรายการฐานข้อมูล ) คำสั่ง ต่อไป เราจะดูที่การดำเนินการของตาราง ในกรณีนี้ เราจะถือว่าคุณได้เลือกฐานข้อมูลเป็นฐานข้อมูลปัจจุบันและกำลังทำงานกับตารางของฐานข้อมูลนั้น

2.3. การทำงานกับตาราง

ในส่วนนี้ คุณจะได้เรียนรู้วิธีสร้าง แก้ไข และลบตาราง รวมถึงวิธีดูข้อมูลเกี่ยวกับตารางและรายการตารางทั้งหมดในฐานข้อมูลปัจจุบัน เริ่มต้นด้วยคำสั่งที่ซับซ้อนที่สุด - การสร้างตาราง

สร้างตาราง

หากต้องการสร้างตาราง ให้รันคำสั่งที่แสดงในรายการ 2.1

รายการ 2.1.คำสั่งสร้างตาราง

สร้างตาราง<Имя таблицы>

(<Имя столбца 1> <Тип столбца 1> [<Свойства столбца 1>],

<Имя столбца 2> <Тип столбца 2> [<Свойства столбца 2>],

[<Информация о ключевых столбцах и индексах>])

[<Опциональные свойства таблицы>];


อย่างที่คุณเห็น คำสั่ง create table สามารถรวมพารามิเตอร์ได้หลายตัว แต่หลายพารามิเตอร์เป็นทางเลือก (ในรายการ 2.1 พารามิเตอร์ดังกล่าวจะอยู่ในวงเล็บเหลี่ยม) ในความเป็นจริงในการสร้างตารางก็เพียงพอที่จะระบุชื่อรวมถึงชื่อและประเภทของคอลัมน์ทั้งหมด พารามิเตอร์ที่เหลือจะถูกใช้ตามความจำเป็น

ขั้นแรก มาดูตัวอย่างบางส่วนที่จะช่วยให้คุณเชี่ยวชาญคำสั่ง CREATE TABLE และทันทีโดยไม่ต้องศึกษาพารามิเตอร์มากมาย ให้เริ่มสร้างตารางของคุณเอง (ในโครงสร้างแบบง่าย) ทันที

สมมติว่าเรากำลังสร้างฐานข้อมูลที่เราออกแบบในบทที่ 1 โดยใช้คำสั่งในส่วนก่อนหน้า เราได้สร้างฐานข้อมูล SalesDept ที่ว่างเปล่า และเลือกให้เป็นฐานข้อมูลปัจจุบันของเรา ตอนนี้เรามาสร้างตารางสามตาราง: ลูกค้า (ลูกค้า) ผลิตภัณฑ์ (สินค้า) และคำสั่งซื้อ (คำสั่งซื้อ) รายการ 2.2 แสดงคำสั่งในการสร้างตารางลูกค้า

รายการ 2.2.คำสั่งสร้างตารางลูกค้า

สร้างตารางลูกค้า

(รหัสซีเรียล

ชื่อ วาร์ชาร์ (100)

โทรศัพท์VARCHAR(20),

ที่อยู่ วาร์ชาร์ (150)

เรตติ้ง INT,

คีย์หลัก (id))


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

Id – ตัวระบุบันทึก คุณได้กำหนดประเภท SERIAL ให้กับคอลัมน์นี้ ซึ่งช่วยให้คุณสามารถกำหนดหมายเลขแถวของตารางได้โดยอัตโนมัติ คำหลัก SERIAL ย่อมาจาก BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE ซึ่งหมายความว่าสามารถป้อนตัวเลขบวก (UNSIGNED) จำนวนเต็มขนาดใหญ่ (BIGINT) ลงในคอลัมน์ได้ ในขณะที่ค่าว่างและค่าที่ซ้ำกัน (NOT NULL UNIQUE) จะถูกควบคุมโดยอัตโนมัติ หากคุณไม่ได้ระบุค่าสำหรับคอลัมน์นี้เมื่อเพิ่มแถวลงในตาราง โปรแกรม MySQL จะเพิ่มหมายเลขซีเรียลถัดไป (AUTO_INCREMENT) ลงในคอลัมน์นี้

บันทึก

NULL เป็นค่าคงที่ที่บ่งชี้ว่าไม่มีค่า หากคอลัมน์มีค่า NULL จะถือว่าไม่มีค่าที่กำหนดไว้สำหรับคอลัมน์นั้น (ซึ่งเป็นสาเหตุที่เราเรียก NULL ว่าเป็นค่าที่ไม่ได้กำหนดด้วย) ไม่ควรสับสน NULL กับสตริงว่าง ("") หรือตัวเลข 0 ค่า NULL ได้รับการจัดการในลักษณะพิเศษ: ฟังก์ชันและตัวดำเนินการส่วนใหญ่จะส่งคืน NULL หากอาร์กิวเมนต์ตัวใดตัวหนึ่งเป็น NULL ตัวอย่างเช่น ผลลัพธ์ของการเปรียบเทียบ 1 = 1 เป็น TRUE และผลลัพธ์ของการเปรียบเทียบ NULL = NULL เป็นค่าที่ไม่ได้กำหนด (NULL) ซึ่งหมายความว่าค่าที่ไม่ได้กำหนดสองค่าจะไม่ถือว่าเท่ากัน

น้ำคือชื่อลูกค้า โทรศัพท์คือหมายเลขโทรศัพท์ และที่อยู่คือที่อยู่ คุณได้กำหนดคอลัมน์เหล่านี้ให้เป็นประเภท VARCHAR เนื่องจากคอลัมน์เหล่านี้จะมีค่าอักขระ วงเล็บปีกการะบุจำนวนอักขระสูงสุดที่อนุญาตในค่าคอลัมน์

ประการที่สาม คุณระบุว่าคอลัมน์ id จะเป็นคีย์หลักของตารางโดยรวมคำจำกัดความของ PRIMARY KEY (id) ไว้ในคำสั่งสร้างตาราง

ประการที่สี่ คุณได้กำหนดพารามิเตอร์ทางเลือกสองตัวให้กับตารางนี้ พารามิเตอร์ ENGINE ระบุประเภทของตาราง คุณได้กำหนดประเภท InnoDB ให้กับตารางลูกค้า เนื่องจากมีเพียงประเภทนี้เท่านั้นที่รับประกันความสมบูรณ์ของความสัมพันธ์ระหว่างตาราง (สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทตาราง โปรดดูย่อหน้า “คุณสมบัติของตารางเพิ่มเติม”) พารามิเตอร์ CHARACTER SET ระบุการเข้ารหัสเริ่มต้นสำหรับข้อมูลในตาราง เนื่องจากคุณไม่ได้ตั้งค่าการเข้ารหัสแยกต่างหากสำหรับคอลัมน์ชื่อ โทรศัพท์ และที่อยู่ ข้อมูลในคอลัมน์เหล่านั้นจะถูกจัดเก็บไว้ในการเข้ารหัส UTF-8 ซึ่งเป็นการเข้ารหัสเริ่มต้นสำหรับตารางลูกค้า

ตัวอย่างถัดไปที่เราจะดูคือคำสั่งการสร้างตารางผลิตภัณฑ์ที่แสดงในรายการ 2.3

รายการ 2.3.คำสั่งสร้างตารางผลิตภัณฑ์

สร้างผลิตภัณฑ์ตาราง

(รหัสซีเรียล

คำอธิบาย VARCHAR(100)

รายละเอียดข้อความ,

ราคาทศนิยม(8,2)

คีย์หลัก (id))

เครื่องยนต์ InnoDB ชุดอักขระ utf8;


คำสั่งนี้คล้ายกับคำสั่งในการสร้างตารางลูกค้ามากและแตกต่างเฉพาะในชื่อของตารางและชุดคอลัมน์เท่านั้น คอลัมน์ id (หมายเลขผลิตภัณฑ์) และคำอธิบาย (ชื่อผลิตภัณฑ์) ของตารางผลิตภัณฑ์มีประเภทที่เราทราบอยู่แล้ว คอลัมน์รายละเอียด (คำอธิบาย) เป็นประเภท TEXT ประเภทนี้สะดวกในการใช้งานแทนประเภท VARCHAR หากคอลัมน์มีค่ายาว: ความยาวรวมของค่าของคอลัมน์ VARCHAR ทั้งหมดถูกจำกัดไว้ที่ 65,535 ไบต์สำหรับแต่ละตาราง และไม่มีการจำกัดความยาวรวมของ คอลัมน์ข้อความ ข้อเสียของประเภท TEXT คือไม่สามารถรวมคอลัมน์ดังกล่าวในคีย์ภายนอกของตารางได้ นั่นคือ เพื่อสร้างความสัมพันธ์ระหว่างตารางตามคอลัมน์เหล่านี้

คอลัมน์ราคาเป็นประเภท DECIMAL ซึ่งมีไว้สำหรับจัดเก็บจำนวนเงินและค่าอื่น ๆ ซึ่งเป็นสิ่งสำคัญเพื่อหลีกเลี่ยงข้อผิดพลาดในการปัดเศษ ในวงเล็บเราระบุตัวเลขสองตัว: อันแรกกำหนดจำนวนหลักสูงสุดในค่าคอลัมน์ส่วนที่สอง - จำนวนหลักสูงสุดหลังตัวคั่นทศนิยม กล่าวอีกนัยหนึ่ง ราคาของผลิตภัณฑ์สามารถมีตัวเลขได้สูงสุดหกหลักในส่วนจำนวนเต็ม (6 = 8–2) และไม่เกินสองหลักในส่วนที่เป็นเศษส่วน

และสุดท้ายตัวอย่างสุดท้ายคือคำสั่งให้สร้างตาราง Order ดังแสดงใน Listing 2.4

รายการ 2.4.คำสั่งสร้างตารางคำสั่ง

สร้างคำสั่งตาราง

(รหัสซีเรียล

วันที่วันที่,

product_id BIGINT ไม่ได้ลงนามไม่เป็นโมฆะ

จำนวน INT ที่ไม่ได้ลงนาม,

จำนวนทศนิยม (10,2)

customer_id BIGINT ไม่ได้ลงนาม,

คีย์หลัก (รหัส)

รหัสต่างประเทศ (product_id) ข้อมูลอ้างอิง ผลิตภัณฑ์ (id)

เมื่อลบข้อ จำกัด ในการอัปเดต CASCADE

รหัสต่างประเทศ (customer_id) ข้อมูลอ้างอิง ลูกค้า (id)

เมื่อลบข้อจำกัดในการอัปเดต CASCADE)

เครื่องยนต์ InnoDB ชุดอักขระ utf8;


คุณลักษณะของตารางคำสั่งซื้อคือการมีคีย์นอก: คอลัมน์ product_id (ผลิตภัณฑ์) มีหมายเลขผลิตภัณฑ์จากตารางผลิตภัณฑ์ และคอลัมน์ customer_id (ลูกค้า) มีหมายเลขลูกค้าจากตารางลูกค้า (ดูตารางที่ 1.2 ในบทที่ 1). เนื่องจากหมายเลขผลิตภัณฑ์และลูกค้าเป็นจำนวนเต็มบวกจำนวนมาก เราจึงกำหนดคอลัมน์ product_id และ customer_id เป็นประเภท BIGINT UNSIGNED

ต่อไป เพื่อให้แน่ใจว่าความสมบูรณ์ของความสัมพันธ์ได้รับการบำรุงรักษาโดยอัตโนมัติ (เราได้พูดถึงความสมบูรณ์ในบทที่ 1) เราได้แจ้งโปรแกรม MySQL ว่าคีย์หลักใดที่แต่ละคีย์ต่างประเทศสอดคล้องกัน ตัวอย่างเช่น โครงสร้าง FOREIGN KEY (customer_id) REFERENCES Customers (id) หมายความว่าคอลัมน์ customer_id สามารถมีได้เฉพาะค่าจากคอลัมน์ id ของตารางลูกค้าและค่า NULL และค่าอื่น ๆ เป็นสิ่งต้องห้าม สำหรับคอลัมน์ product_id เราได้ตั้งค่าข้อจำกัดที่คล้ายกันและกำหนดคุณสมบัติ NOT NULL ให้กับคอลัมน์นี้เพื่อป้องกันการลงทะเบียนคำสั่งซื้อกับสินค้าที่ไม่ได้กำหนด นอกจากนี้ เราได้ระบุกฎสำหรับการรักษาความสมบูรณ์ของแต่ละลิงก์ (เรายังพิจารณากฎเหล่านั้นในบทที่ 1 ด้วย) กฎ ON DELETE RESTRICT หมายความว่าคุณไม่สามารถลบบันทึกลูกค้าได้หากลูกค้ารายนั้นมีคำสั่งซื้อที่ลงทะเบียนไว้ และคุณไม่สามารถลบบันทึกผลิตภัณฑ์ได้หากมีผู้สั่งซื้อผลิตภัณฑ์นั้น กฎ ON UPDATE CASCADE หมายความว่าเมื่อหมายเลขลูกค้าในตารางลูกค้าหรือหมายเลขรายการในตารางผลิตภัณฑ์เปลี่ยนแปลงไป การเปลี่ยนแปลงที่สอดคล้องกันจะเกิดขึ้นกับตารางคำสั่งซื้อ

บันทึก

โปรดทราบว่าเราสร้างตารางใบสั่งซื้อเป็นลำดับสุดท้าย เนื่องจากต้องสร้างคีย์หลักในตารางลูกค้าและผลิตภัณฑ์ก่อนคีย์นอกที่อ้างอิงถึงตารางใบสั่งซื้อ อย่างไรก็ตาม มันเป็นไปได้ที่จะสร้างตารางที่ไม่มีคีย์ภายนอกในลำดับใดๆ จากนั้นเพิ่มคีย์ต่างประเทศโดยใช้คำสั่ง ALTER TABLE ซึ่งเราจะกล่าวถึงในส่วนย่อย "การเปลี่ยนโครงสร้างตาราง"

ในตัวอย่างของเรา เราได้พิจารณาเพียงบางส่วนของพารามิเตอร์ของคำสั่งเพื่อสร้างตาราง ตอนนี้เราจะแสดงรายการพารามิเตอร์หลักทั้งหมดที่คุณอาจต้องการเมื่อสร้างตาราง ประเภทข้อมูล MySQL เกี่ยวข้องกับประเภทคอลัมน์ คุณสมบัติคอลัมน์เกี่ยวข้องกับการตั้งค่าคอลัมน์หลัก และสุดท้าย คอลัมน์หลักและดัชนีเกี่ยวข้องกับคุณสมบัติตารางเสริม

ประเภทข้อมูลใน MySQL

ดังที่คุณทราบแล้วว่า เมื่อคุณสร้างตาราง คุณจะต้องระบุประเภทข้อมูลสำหรับแต่ละคอลัมน์ MySQL มีข้อมูลหลายประเภทสำหรับจัดเก็บตัวเลข วันที่/เวลา และสตริงอักขระ (ข้อความ) นอกจากนี้ยังมีประเภทข้อมูลสำหรับจัดเก็บวัตถุเชิงพื้นที่ (เชิงพื้นที่) ซึ่งจะไม่ได้รับการพิจารณาในหนังสือเล่มนี้

พิจารณาประเภทข้อมูลที่เป็นตัวเลข

นิดหน่อย[(<Количествобитов>)].

หมายเลขบิตที่มีจำนวนบิตที่ระบุ หากไม่ได้ระบุจำนวนบิต ตัวเลขจะประกอบด้วยหนึ่งบิต

จำนวนเต็มในช่วง -128 ถึง 127 หรือ (หากระบุคุณสมบัติ UNSIGNED) 0 ถึง 255

บูลหรือบูลีน

มีความหมายเหมือนกันกับประเภทข้อมูล TINYINT(1) (ตัวเลขในวงเล็บคือจำนวนหลักที่จะแสดง ดูหมายเหตุด้านล่าง) ในกรณีนี้ ค่าที่ไม่ใช่ศูนย์ถือเป็นจริง (TRUE) ศูนย์ - เป็นเท็จ (FALSE)

จำนวนเต็มในช่วง -32768 ถึง 32767 หรือ (หากระบุคุณสมบัติ UNSIGNED) 0 ถึง 65535

จำนวนเต็มในช่วง -8388608 ถึง 8388607 หรือ (หากระบุคุณสมบัติ UNSIGNED) 0 ถึง 16777215

INT หรือจำนวนเต็ม

จำนวนเต็มในช่วง -2147483648 ถึง 2147483647 หรือ (หากระบุคุณสมบัติ UNSIGNED) 0 ถึง 4294967295

จำนวนเต็มในช่วง -9 223 372 036 854 775 808 ถึง 9 223 372 036 854 775 807 หรือ (หากระบุคุณสมบัติ UNSIGNED) 0 ถึง 18 446 744 073 70 9 551 615

ตรงกันกับ BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE (จำนวนเต็มขนาดใหญ่ที่ไม่ได้ลงนามซึ่งยอมรับค่าที่ไม่ซ้ำกันที่เพิ่มขึ้นโดยอัตโนมัติ ไม่อนุญาตให้ใช้ค่า NULL) ใช้เพื่อสร้างค่าที่ไม่ซ้ำในคอลัมน์คีย์หลักโดยอัตโนมัติ คุณจะพบคำอธิบายของคุณสมบัติ UNSIGNED และ AUTO_INCREMENT ในส่วนย่อยนี้ และของคุณสมบัติ NOT NULL และ UNIQUE ในย่อหน้า "คุณสมบัติของคอลัมน์"

บันทึก

สำหรับประเภทข้อมูลจำนวนเต็มทั้งหมด ยกเว้น BOOL (BOOLEAN) และ SERIAL คุณสามารถระบุจำนวนหลักที่แสดงในวงเล็บซึ่งใช้ร่วมกับพารามิเตอร์ ZEROFILL: หากตัวเลขมีหลักน้อยกว่า ก็จะมีการเสริมจากด้านซ้ายด้วย ศูนย์เมื่อส่งออก ตัวอย่างเช่น หากคอลัมน์ตารางถูกกำหนดเป็น INT(5) ZEROFILL ค่า "1234567" และ "12345" จะแสดงตามที่เป็นอยู่ และค่า "123" จะแสดงเป็น "00123" สำหรับประเภทข้อมูล BIT ขนาดของตัวเลขซึ่งก็คือจำนวนบิตสูงสุดที่เก็บไว้จะถูกระบุในวงเล็บ