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

MySQL เป็นโอเพ่นซอร์สระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ที่ใช้ภาษาคิวรีเชิงโครงสร้าง (SQL) ห้ามใช้แท็กนี้สำหรับฐานข้อมูลอื่น ๆ เช่น SQL Server, SQLite เป็นต้นฐานข้อมูลเหล่านี้เป็นฐานข้อมูลที่แตกต่างกันซึ่งทั้งหมดใช้ภาษาของ SQL เพื่อจัดการข้อมูล

6
ฉันจะเพิ่มดัชนีลงในตาราง MySQL ได้อย่างไร
ฉันมีตาราง MySQL ที่มีขนาดใหญ่มากพร้อมข้อมูลประมาณ 150,000 แถว ขณะนี้เมื่อฉันลองและเรียกใช้ SELECT * FROM table WHERE id = '1'; รหัสทำงานได้ดีเนื่องจากฟิลด์ ID เป็นดัชนีหลัก อย่างไรก็ตามสำหรับการพัฒนาล่าสุดของโครงการฉันต้องค้นหาฐานข้อมูลตามฟิลด์อื่น ตัวอย่างเช่น: SELECT * FROM table WHERE product_id = '1'; ฟิลด์นี้ไม่ได้จัดทำดัชนีไว้ก่อนหน้านี้ อย่างไรก็ตามฉันได้เพิ่มเข้าไปแล้วดังนั้นตอนนี้ mysql จะสร้างดัชนีฟิลด์ แต่เมื่อฉันพยายามเรียกใช้แบบสอบถามข้างต้นมันจะทำงานช้ามาก คำค้นหาอธิบายเปิดเผยว่าไม่มีดัชนีสำหรับฟิลด์ product_id เมื่อฉันได้เพิ่มไปแล้วและด้วยเหตุนี้แบบสอบถามจึงใช้เวลาตั้งแต่ 20 นาทีถึง 30 นาทีในการส่งคืนแถวเดียว ผลการสำรวจอย่างสมบูรณ์ของฉันคือ: | id | select_type | table | type | possible_keys| …


8
ดัชนี MySQL ทำงานอย่างไร
ฉันสนใจจริง ๆ ว่าดัชนีของ MySQL ทำงานอย่างไรโดยเฉพาะพวกเขาจะคืนข้อมูลที่ร้องขอโดยไม่ต้องสแกนทั้งตารางได้อย่างไร ฉันรู้เรื่องนอกเรื่อง แต่ถ้ามีคนที่สามารถอธิบายสิ่งนี้กับฉันได้ในรายละเอียดฉันก็จะขอบคุณมาก
402 mysql  indexing 

30
วิธีการเลือกแถวที่ n ในตารางฐานข้อมูล SQL
ฉันสนใจที่จะเรียนรู้วิธีฐานข้อมูลแบบไม่เชื่อเรื่องพระเจ้าในการเลือกแถวที่nจากตารางฐานข้อมูล นอกจากนี้ยังเป็นที่น่าสนใจที่จะเห็นว่าสิ่งนี้สามารถทำได้โดยใช้ฟังก์ชั่นพื้นเมืองของฐานข้อมูลต่อไปนี้: เซิร์ฟเวอร์ SQL MySQL PostgreSQL SQLite คำพยากรณ์ ฉันกำลังทำสิ่งต่อไปนี้ใน SQL Server 2005 แต่ฉันสนใจที่จะเห็นแนวทางที่ไม่เชื่อเรื่องพระเจ้าของผู้อื่นมากขึ้น: WITH Ordered AS ( SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate FROM Orders) SELECT * FROM Ordered WHERE RowNumber = 1000000 เครดิตสำหรับ SQL ข้างต้น: บล็อกของ Firoz Ansari อัปเดต:ดูคำตอบของ Troels Arvinเกี่ยวกับมาตรฐาน SQL Troels คุณมีลิงค์ที่เราสามารถอ้างอิงได้ไหม?


6
ฉันจะแก้ไขคอลัมน์ MySQL เพื่ออนุญาตให้ NULL ได้อย่างไร
MySQL 5.0.45 ไวยากรณ์ในการแก้ไขตารางเพื่ออนุญาตให้คอลัมน์เป็นโมฆะคืออะไรสลับกันกับสิ่งนี้: ALTER mytable MODIFY mycolumn varchar(255) null; ฉันตีความคู่มือเป็นเพียงเรียกใช้ข้างต้นและมันจะสร้างคอลัมน์ขึ้นใหม่คราวนี้จะอนุญาตให้เป็นโมฆะ เซิร์ฟเวอร์กำลังบอกฉันว่าฉันมีข้อผิดพลาดด้านการสร้างประโยค ฉันแค่ไม่เห็นพวกเขา
396 mysql  syntax 

13
ฉันจะตรวจสอบประเภทเอ็นจิน MySQL สำหรับตารางที่ระบุได้อย่างไร
ฐานข้อมูล MySQL ของฉันมีหลายตารางโดยใช้เครื่องมือจัดเก็บข้อมูลที่แตกต่างกัน (โดยเฉพาะ myisam และ innodb) ฉันจะทราบได้อย่างไรว่าตารางใดบ้างที่ใช้เอ็นจิน
391 mysql  innodb  myisam 

17
อัพเดทหลายครั้งใน MySQL
ฉันรู้ว่าคุณสามารถแทรกหลายแถวพร้อมกันมีวิธีอัปเดตหลายแถวพร้อมกัน (เช่นเดียวกับในแบบสอบถามเดียว) ใน MySQL หรือไม่ แก้ไข: ตัวอย่างเช่นฉันมีดังต่อไปนี้ Name id Col1 Col2 Row1 1 6 1 Row2 2 2 3 Row3 3 9 5 Row4 4 16 8 ฉันต้องการรวมการอัปเดตต่อไปนี้ทั้งหมดไว้ในแบบสอบถามเดียว UPDATE table SET Col1 = 1 WHERE id = 1; UPDATE table SET Col1 = 2 WHERE id = 2; UPDATE table …
388 mysql  sql  sql-update 

13
ใช้ LIMIT ภายใน GROUP BY เพื่อรับผลลัพธ์ N รายการต่อกลุ่มหรือไม่
แบบสอบถามต่อไปนี้: SELECT year, id, rate FROM h WHERE year BETWEEN 2000 AND 2009 AND id IN (SELECT rid FROM table2) GROUP BY id, year ORDER BY id, rate DESC อัตราผลตอบแทน: year id rate 2006 p01 8 2003 p01 7.4 2008 p01 6.8 2001 p01 5.9 2007 p01 5.3 2009 p01 …

3
ข้อผิดพลาด“ ทุกตารางที่ได้รับจะต้องมีนามแฝงของตัวเอง” ใน MySQL คืออะไร
ฉันใช้แบบสอบถามนี้ใน MySQL SELECT ID FROM ( SELECT ID, msisdn FROM ( SELECT * FROM TT2 ) ); และมันทำให้เกิดข้อผิดพลาดนี้: ทุกตารางที่ได้รับจะต้องมีนามแฝงของตัวเอง อะไรเป็นสาเหตุของข้อผิดพลาดนี้?

7
จะประกาศตัวแปรใน MySQL ได้อย่างไร?
วิธีการประกาศตัวแปรใน MySQL เพื่อให้แบบสอบถามที่สองของฉันสามารถใช้งานได้อย่างไร ฉันต้องการเขียนสิ่งที่ชอบ: SET start = 1; SET finish = 10; SELECT * FROM places WHERE place BETWEEN start AND finish;
386 mysql  sql 

30
ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ภายในผ่านซ็อกเก็ต '/var/mysql/mysql.sock' (38)
ฉันประสบปัญหาใหญ่ในการพยายามเชื่อมต่อกับ mysql เมื่อฉันวิ่ง: /usr/local/mysql/bin/mysql start ฉันมีข้อผิดพลาดดังต่อไปนี้: Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38) ฉันมีmysql.sockภายใต้/var/mysqlไดเรกทอรี ใน/etc/my.cnfฉันมี: [client] port=3306 socket=/var/mysql/mysql.sock [mysqld] port=3306 socket=/var/mysql/mysql.sock key_buffer_size=16M max_allowed_packet=8M และใน/etc/php.iniฉันมี: ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. mysql.default_socket = /var/mysql/mysql.sock ฉันรีสตาร์ท apache โดยใช้ sudo …
385 mysql 

15
MySQL: แทรกบันทึกหากไม่มีอยู่ในตาราง
ฉันพยายามที่จะดำเนินการค้นหาต่อไปนี้: INSERT INTO table_listnames (name, address, tele) VALUES ('Rupert', 'Somewhere', '022') WHERE NOT EXISTS ( SELECT name FROM table_listnames WHERE name='value' ); แต่นี่กลับข้อผิดพลาด โดยทั่วไปฉันไม่ต้องการที่จะแทรกบันทึกถ้าเขตข้อมูล 'ชื่อ' ของบันทึกที่มีอยู่แล้วในบันทึกอื่น - วิธีการตรวจสอบว่าชื่อใหม่ไม่ซ้ำกัน?
384 mysql 

15
ข้อผิดพลาด 1698 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost'
ฉันกำลังตั้งค่าเซิร์ฟเวอร์ใหม่และพบปัญหานี้ต่อไป เมื่อฉันพยายามเข้าสู่ฐานข้อมูล MySQL ด้วยผู้ใช้รูทฉันได้รับข้อผิดพลาด: ข้อผิดพลาด 1698 (28000): การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ 'root' @ 'localhost' ไม่สำคัญว่าฉันจะเชื่อมต่อผ่านเทอร์มินัล (SSH) ผ่าน PHPMyAdmin หรือไคลเอนต์ MySQL เช่น Navicat พวกเขาทั้งหมดล้มเหลว ฉันดูในตาราง mysql.user และรับสิ่งต่อไปนี้: +------------------+-------------------+ | user | host | +------------------+-------------------+ | root | % | | root | 127.0.0.1 | | amavisd | localhost | | debian-sys-maint | localhost | …
382 mysql  iredmail 

11
คุณไม่สามารถระบุตารางเป้าหมายสำหรับการอัปเดตในข้อ FROM
ฉันมีตาราง MySQL ง่าย ๆ : CREATE TABLE IF NOT EXISTS `pers` ( `persID` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(35) NOT NULL, `gehalt` int(11) NOT NULL, `chefID` int(11) DEFAULT NULL, PRIMARY KEY (`persID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; INSERT INTO `pers` (`persID`, `name`, `gehalt`, `chefID`) VALUES (1, 'blb', 1000, 3), …

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