คำถามติดแท็ก mysql

MySQL ทุกรุ่น (ไม่ใช่ Microsoft SQL Server) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น mysql-5.7 หากเกี่ยวข้องกับคำถาม

7
ฉันจะบังคับให้หนึ่งระเบียนมีค่าจริงสำหรับคอลัมน์บูลีนและค่าอื่น ๆ ทั้งหมดเป็นค่าเท็จได้อย่างไร
ฉันต้องการบังคับใช้ว่ามีเพียงระเบียนเดียวในตารางที่ถือว่าเป็นค่า "เริ่มต้น" สำหรับคิวรีหรือมุมมองอื่นที่อาจเข้าถึงตารางนั้น โดยพื้นฐานแล้วฉันต้องการรับประกันว่าแบบสอบถามนี้จะส่งคืนแถวเดียวเสมอ: SELECT ID, Zip FROM PostalCodes WHERE isDefault=True ฉันจะทำเช่นนั้นใน SQL ได้อย่างไร

1
mysqldump ดัชนีการส่งออกเป็นค่าเริ่มต้นหรือไม่
ผมเล่นไปรอบ ๆ เล็ก ๆ น้อย ๆ ที่มี mysqldump และผมสงสัยว่าถ้ามันไม่ดัชนีการส่งออก ( FULLTEXT, INDEX, ... ) โดยค่าเริ่มต้น ฉันอ่านมันและฉันพบตัวเลือกนี้ : --disable-keys, -K ซึ่งแสดงว่ามันส่งออกดัชนีจริง ๆ หรือไม่ แต่ฉันไม่ต้องการที่จะเชื่อใจการตีความของฉันและฉันต้องการให้แน่ใจว่าฉันเข้าใจถูก (หรือผิด ;-)) มีใครยืนยันได้บ้าง

3
ฉันจะรีเซ็ตตาราง mysql โดยอัตโนมัติเพิ่มขึ้นเป็น 1 ใน phpMyAdmin ได้อย่างไร
ฉันรู้ว่าใน MySQL ที่บรรทัดคำสั่งฉันสามารถรีเซ็ตเขตข้อมูลที่เพิ่มขึ้นอัตโนมัติของตารางเป็น 1 ด้วยสิ่งนี้: ALTER TABLE tablename AUTO_INCREMENT = 1 ฉันอยากรู้ว่ามีวิธีการทำเช่นนี้จากภายใน phpMyAdmin มีบางอย่างเช่นกล่องกาเครื่องหมายเพื่อรีเซ็ตการเพิ่มอัตโนมัติหรืออย่างอื่นตามบรรทัดเหล่านั้นหรือไม่ ไม่ใช่ว่ามีอะไรผิดปกติกับแนวทางบรรทัดคำสั่ง อีกหนึ่งสิ่งที่อยากรู้อยากเห็นที่ฉันคิด ... ขอขอบคุณล่วงหน้า!

1
MySQL นับแถวจากตารางอื่นสำหรับแต่ละระเบียนในตาราง
SELECT student.StudentID, student.`Name`, COUNT(attendance.AttendanceID) AS Total FROM student LEFT JOIN attendance ON student.StudentID = attendance.StudentID ฉันกำลังพยายามนับแถวสุดท้าย แต่แทนที่จะนับผลลัพธ์ทั้งหมดและส่งกลับผลลัพธ์เดียว ฉันได้รับสิ่งที่ต้องการ เนื่องจากมีหลายระเบียนเนื่องจากมีสองรายการใน ID ผู้เข้าร่วมสำหรับ K1052280 ฉันต้องการนับและส่งคืนหมายเลข สิ่งที่ต้องการ
20 mysql  select  count 

2
วิธีการสร้างลำดับใน mysql
พิจารณาตารางนี้ใน mysql create table numbers (number int); insert into numbers values (3), (2), (9); select * from numbers; +--------+ | number | +--------+ | 3 | | 2 | | 9 | +--------+ มีแบบสอบถามง่ายๆในการสร้างตารางที่มีคอลัมน์ต่อไปนี้ ตัวเลขตั้งแต่ 1 ถึง 10 1 ถ้าหมายเลขอยู่ในหมายเลขตารางและ 0 เป็นอย่างอื่น ฉันเดาว่าคุณต้องสร้างลำดับของตัวเลขเพื่อที่จะทำสิ่งนี้ ถ้าเป็นไปได้ฉันต้องการสร้างลำดับดังกล่าวโดยไม่เก็บไว้ในฐานข้อมูล คำถามที่เกี่ยวข้อง: มีแบบสอบถามแบบใช้เลือกข้อมูลที่สร้างลำดับของตัวเลขตั้งแต่ 1 ถึง 10 (หรือ …
19 mysql  sequence 

2
MySQL แคชแบบสอบถามหรือไม่
ฉันกำลังเชื่อมต่อฐานข้อมูล MySQL กับPHP Data Objects (PDO) และดำเนินการสืบค้น SQL ที่กว้างขวาง โดยปกติจะใช้เวลาประมาณ 1,500 ms; ฉันยังต้องเพิ่มประสิทธิภาพ เมื่อฉันรันสคริปต์ PHP สองครั้งโดยมีช่วงเวลาสั้น ๆ ระหว่างการสืบค้นจะใช้เวลาประมาณ 90 ms เท่านั้น แบบสอบถามอยู่ในทั้งสองกรณีเดียวกัน เมื่อฉันเรียกใช้สคริปต์ด้วยแบบสอบถามเดียวกันหลังจากเวลาอีกครั้งมันใช้เวลา 1500 ms อีกครั้ง ทำไมถึงเป็นอย่างนั้น? แคชฐานข้อมูลอัตโนมัติหรือไม่ มีบางครั้งที่ฐานข้อมูลบันทึกแคชแล้วลบออกโดยอัตโนมัติหรือไม่ ฉันคิดว่าผลลัพธ์ไม่สามารถแคชได้โดย PHP เพราะสิ่งนี้เกิดขึ้นในสองกระทู้ ฉันไม่คิดว่า PHP จะแคชผลลัพธ์เพราะไม่ทราบว่าฐานข้อมูลมีการเปลี่ยนแปลงหรือไม่ ฉันมีสคริปต์ทำงานทุกนาทีเพื่อแทรกแถวใหม่ไปยังฐานข้อมูล นี่อาจเป็นเหตุผลที่ใช้เวลา 1500 ms อีกครั้งหลังจากผ่านไประยะหนึ่ง แคชจะถูกลบเนื่องจากตารางที่เกี่ยวข้องไม่เหมือนเดิมอีกต่อไป
19 mysql 

11
วิธีค้นหาฐานข้อมูล MySQL ทั้งหมดสำหรับสตริงที่ต้องการ
เป็นไปได้หรือไม่ที่จะค้นหาตารางฐานข้อมูลทั้งหมด (แถวและคอลัมน์) เพื่อค้นหาสตริงเฉพาะ ฉันมีฐานข้อมูลชื่อ A ที่มีตารางประมาณ 35 ตารางฉันจำเป็นต้องค้นหาสตริงที่ชื่อ "hello" และฉันไม่รู้ว่าบันทึกสตริงนี้ในตารางใดได้หรือไม่ ใช้งาน MySQL ฉันเป็นผู้ดูแลระบบลินุกซ์และฉันไม่คุ้นเคยกับฐานข้อมูลมันจะเป็นประโยชน์จริง ๆ ถ้าคุณสามารถอธิบายแบบสอบถามด้วย
19 mysql 

3
แนะนำให้ใช้ innodb_file_per_table หรือไม่
เรามีแอปพลิเคชั่นที่หนึ่งในตารางจะเติบโตเป็นล้านบรรทัด แต่ที่เหลือจะต่ำกว่าหนึ่งล้าน ดังนั้นอะไรคือคำแนะนำที่เราควรจะไปกับ innodb_file_per_table หรือปล่อยให้เป็น. ibd เดียว? ฉันอ่านบางบทความบอกว่าไม่ไปกับมันเพราะคุณต้องการการเข้าถึงดิสก์เพิ่มเติมเมื่อมีการเข้าร่วมที่จะดำเนินการ? เราจะได้เข้าร่วมระหว่างตารางนี้และอื่น ๆ เพื่อการสร้างรายงาน
19 mysql  innodb 

3
ทำไม InnoDB ถึงไม่เก็บจำนวนแถว?
ทุกคนรู้ว่าในตารางที่ใช้ InnoDB เป็นเอ็นจินแบบสอบถามSELECT COUNT(*) FROM mytableจะไม่แม่นยำและช้ามากโดยเฉพาะเมื่อตารางมีขนาดใหญ่ขึ้นและมีการแทรก / ลบแถวอย่างต่อเนื่องในขณะที่ดำเนินการค้นหา ดังที่ฉันเข้าใจแล้ว InnoDB ไม่ได้จัดเก็บจำนวนแถวในตัวแปรภายในซึ่งเป็นสาเหตุของปัญหานี้ คำถามของฉันคือ: ทำไมจึงเป็นเช่นนี้? การเก็บข้อมูลดังกล่าวเป็นเรื่องยากไหม มันเป็นข้อมูลสำคัญที่ต้องรู้ในหลาย ๆ สถานการณ์ ความยากลำบากเพียงอย่างเดียวที่ฉันเห็นว่าการนับภายในนั้นจะถูกนำไปใช้คือเมื่อมีการทำธุรกรรมที่เกี่ยวข้อง: ถ้าการทำธุรกรรมนั้นไม่มีข้อผูกมัดคุณนับจำนวนแถวที่แทรกโดยมันหรือไม่? PS: ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับ DBs ฉันเป็นแค่คนที่มี MySQL เป็นงานอดิเรกง่ายๆ ดังนั้นถ้าฉันถามอะไรที่โง่ ๆ
19 mysql  innodb  count 

2
MySQL VARCHAR และ TEXT แตกต่างกันอย่างไร?
หลังจากเวอร์ชัน 5.0.3 (ซึ่งอนุญาตให้ VARCHAR เป็น 65,535 ไบต์และหยุดการตัดทอนช่องว่างต่อท้าย) มีความแตกต่างที่สำคัญระหว่างสองประเภทข้อมูลหรือไม่ ฉันกำลังอ่านรายการความแตกต่างและโน้ตสองข้อเท่านั้นคือ: สำหรับดัชนีในคอลัมน์ BLOB และ TEXT คุณต้องระบุความยาวส่วนนำหน้าดัชนี สำหรับ CHAR และ VARCHAR ความยาวของคำนำหน้าเป็นทางเลือก ดูหัวข้อ 7.5.1“ ดัชนีคอลัมน์” และ คอลัมน์ BLOB และ TEXT ไม่สามารถมีค่าเริ่มต้นได้ ดังนั้นเนื่องจากข้อ จำกัด สองข้อนี้ในประเภทข้อมูล TEXT ทำไมคุณถึงใช้มากกว่า varchar (65535) มีผลการดำเนินงานที่แตกต่างกันอย่างใดอย่างหนึ่ง?

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

1
เป็นไปได้ไหมที่จะเปลี่ยนรายการ ENUM ()
ฉันไม่แน่ใจว่าการเปลี่ยนรายการ ENUM () เป็นไปไม่ได้ดังนั้นฉันจึงทำการทดสอบ ใน MySQL v5.1.58 ฉันได้ทำการทดสอบตาราง InnoDB ที่มีหนึ่งฟิลด์ที่เรียกว่า 'บูล' ของประเภท ENUM ('ใช่', 'ไม่') จากนั้นฉันก็ประหาร ... ALTER TABLE `test` CHANGE `bool` `bool` ENUM( 'yes', 'no', 'maybe' ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ... และมันก็ใช้งานได้ ฉันทำอะไรผิดหรือเปล่า? มันขึ้นอยู่กับเครื่องยนต์ db หรือไม่? ทำไมทุกคนบอกว่าไม่สามารถเปลี่ยนรายการ ENUM () เช่น. ที่นี่http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/ที่นี่
19 mysql  innodb 

2
MySQL - varchar ความยาวและประสิทธิภาพ
VARCHARขนาดที่ประกาศออกมาเหมาะสมกับประสิทธิภาพหรือไม่? มีความแตกต่าง (ความเร็ว) ระหว่างVARCHAR(50)และVARCHAR(255)? หรือการกำหนดความยาวคือข้อ จำกัด ด้านตรรกะ / การออกแบบ?

3
วิธีที่ดีที่สุดในการสร้างมุมมองที่ปรากฏใน MySQL
ฉันใช้ MySQL 5.6 ฉันไม่สามารถสร้างมุมมองที่เป็นตัวเป็นตนเหมือนที่ทำได้ใน Oracle ฉันเห็นโซลูชันหนึ่งหรือสองอย่างเช่น Flexview ใครช่วยบอกวิธีที่ดีที่สุดในการสร้างมุมมองที่เป็นรูปธรรมใน MySQL (รีเฟรชอัตโนมัติเช่นเดียวกับใน Oracle) ด้วยความซับซ้อนขั้นต่ำได้หรือไม่

5
mysqldump Error 2013
ฉันมีฐานข้อมูลติดตั้งไว้แล้วและฉันต้องการสำรองข้อมูลใน mysql ปัญหาmysqldumpล้มเหลวในการส่งออกตาราง 'maia_mail' # mysqldump -u root -p maia > maia.sql mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15 มันทำงานน้อยกว่า 30 วินาทีและได้รับข้อผิดพลาดตามข้างต้น ขนาดรวมของฐานข้อมูลคือ 1.3GB โดยมีตาราง maia_mail เป็น 1.0GB ในmy.cnfชุดนี้มี: [mysqld] max_allowed_packet = 1300M [mysqldump] max_allowed_packet = 1300M โปรดแนะนำหรือให้คำแนะนำเกี่ยวกับวิธีการถ่ายโอนฐานข้อมูลหรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.