Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL
MySQL
  1. MySQL Query: เรียงลำดับข้อมูลแต่ล็อคชื่อเฉพาะไว้หน้าสุด ส่วนที่เหลือสุ่ม และจำกัดจำนวนแถว

    วัตถุประสงค์ ต้องการให้ชื่อเฉพาะ (เช่น Robert) อยู่แถวแรกเสมอ ส่วนรายชื่ออื่นๆ เรียงแบบสุ่ม และดึงมาเพียงจำนวนที่กำหนด (LIMIT) สร้างตารางและข้อมูลทดสอบ mysql> CREATE TABLE DemoTable1426 ( FirstName VARCHAR(20) ); mysql> INSERT INTO DemoTable1426 VALUES (John); mysql> INSERT INTO DemoT

  2. จำลอง LIMIT ของ MySQL ใน Microsoft Access ด้วย TOP

    ภาพรวม Microsoft Access (Jet/ACE SQL) ไม่มีคำสั่ง LIMIT ใช้ TOP แทน วางหลัง SELECT เปรียบเทียบ DatabaseSyntaxตัวอย่าง MySQLLIMIT nSELECT * FROM t LIMIT 5 AccessTOP nSELECT TOP 5 * FROM t SQL ServerTOP nSELECT TOP 5 * FROM t Oracle (12c+)FETCH FIRST n ROWSSELECT * FROM t FETCH FIRST 5 ROWS ONLY Pos

  3. ตัดแถวที่มีค่าซ้ำในคอลัมน์หนึ่งเมื่อคอลัมน์อีกคอลัมน์มีค่าเฉพาะใน MySQL

    ปัญหา มีตารางที่ StudentId ซ้ำได้ แต่ต้องการ: หาก StudentId นั้นมีแถวที่ StudentMarks = 89 ให้ ตัดทิ้งทั้งหมด ของ StudentId นั้น (รวมแถวอื่นของ Id เดียวกัน) วิธีแก้: ใช้ Subquery กับ NOT IN SELECT * FROM DemoTable1427 WHERE StudentId NOT IN ( SELECT DISTINCT StudentId FROM DemoTable1427

  4. MySQL: ปิดบังข้อมูล (Masking) ด้วย CONCAT และ REPEAT

    Data Masking: ซ่อนข้อมูล nhạy cảmด้วย CONCAT + SUBSTR + REPEAT แสดงแค่ 5 ตัวอักษรแรก แล้วทับส่วนที่เหลือด้วย # (hash) โดยใช้ REPEAT(#, length - 5) สร้างตารางและข้อมูล insert into DemoTable1410 values(David_5647383); ข้อมูลต้นฉบับ +---------------+ | Password | +---------------+ | John1234567

  5. MySQL: ค้นหาค่าในชุดค่าคั่นคอมมาที่เก็บในตัวแปรด้วย FIND_IN_SET

    การใช้ FIND_IN_SET() ค้นหาค่าในรายการคั่นคอมมาที่เก็บใน User Variable FIND_IN_SET(str, strlist) คืนตำแหน่ง (1-based) ของ str ใน strlist (คั่นคอมมา) คืน 0 หากไม่พบ ใช้ได้กับคอลัมน์หรือตัวแปร สร้างตารางและข้อมูล insert into DemoTable1411 values(60); ตั้งค่า User Variable set @setOfValues := 70,50,

  6. MySQL: ตรวจสอบแถวที่มีคำ 2 คำพอดีด้วย REGEXP

    การใช้ Regular Expression (REGEXP) ตรวจสอบสตริงที่มี 2 คำคั่น Space Pattern ^[^ ]+[ ]+[^ ]+$ จับคู่สตริงที่: เริ่มต้นด้วย non-space 1+ ตัว → space 1+ ตัว → non-space 1+ ตัว → จบสตริง (พอดี 2 คำ) สร้างตารางและข้อมูล insert into DemoTable1412 values(Chris James Robert); ข้อมูลทั้งหมด +-------------

  7. MySQL: วิธีเร็วที่สุดค้นหา วันที่จากคอลัมน์ DATETIME ด้วย BETWEEN

    การค้นหา Date Range ใน DATETIME ด้วย BETWEEN (เร็วและอ่านง่าย) ใช้ BETWEEN กรองช่วงวันที่/เวลา — ใช้ Index ได้ (SARGable) และรวมค่าขอบเขต (inclusive) สร้างตารางและข้อมูล insert into DemoTable1413 values(Carol, 2019-09-28 12:06:10); ข้อมูลทั้งหมด +--------------+---------------------+ | EmployeeNa

  8. MySQL: หาหนังสือราคาต่ำสุด (MIN) หลายเล่มที่มีราคาเท่ากัน

    การเลือกหลายแถวที่มีค่าต่ำสุด (MIN) เท่ากันด้วย Subquery ใช้ Subquery หา MIN(BookPrice) ก่อน แล้วกรองแถวที่มีราคาเท่ากับค่านั้น — ได้ทุกเล่มที่ร่วมกันเป็นราคาต่ำสุด สร้างตารางและข้อมูล insert into DemoTable1414 values(Java in Depth, 360); ข้อมูลทั้งหมด +----------------------+-----------+ | BookT

  9. MySQL: รวมค่า (SUM) ตามเดือนด้วย EXTRACT(MONTH FROM date)

    การรวมค่า (Aggregate) ตามเดือนด้วย EXTRACT() และ GROUP BY ใช้ EXTRACT(MONTH FROM date_column) ดึงเดือน (1-12) จากวันที่ แล้ว GROUP BY เดือน เพื่อรวมค่า (SUM, COUNT, AVG) ต่อเดือน — ไม่สนใจปี สร้างตารางและข้อมูล insert into DemoTable1415 values(2019-01-14, 100); ข้อมูลทั้งหมด +--------------------

  10. MySQL: ดึง Substring จากสตริงคั่น Slash ด้วย SUBSTRING_INDEX

    การใช้ SUBSTRING_INDEX() แยกส่วนสตริงที่คั่นด้วย Delimiter (Slash) SUBSTRING_INDEX(str, delim, count) คืนค่าสตริงก่อน delimiter ตัวที่ count 0) หรือหลัง delimiter ตัวที่ |count| (ถ้า count < 0) สร้างตารางและข้อมูล insert into DemoTable1416 values(400/David/Miller); ข้อมูลทั้งหมด +----------------

  11. MySQL: เรียงวันที่และดึงแถวที่ 2 ด้วย LIMIT OFFSET

    การเรียงลำดับวันที่และดึงแถวที่ N (Offset) ด้วย LIMIT ใช้ ORDER BY เรียงวันที่ แล้ว LIMIT offset, count ดึงแถวที่ต้องการ (offset เริ่มที่ 0) สร้างตารางและข้อมูล insert into DemoTable1417(CustomerName, ShippingDate) values(Sam, 2019-08-29); ข้อมูลก่อนเรียง +------------+--------------+------------

  12. MySQL: ใช้ LEFT() ดึงข้อความก่อนเครื่องหมายทับ (/)

    การใช้ LEFT() ดึงส่วนหน้าของสตริงก่อนเครื่องหมายทับ (Slash) LEFT(str, len) คืนค่า len ตัวอักษรแรกของสตริง ใช้ได้เมื่อตำแหน่ง slash คงที่ (Fixed position) สร้างตารางและข้อมูล insert into DemoTable1418 values(EMP-2345/Mike); ข้อมูลทั้งหมด +----------------+ | EmployeeCode | +----------------+ | E

  13. MySQL: แปลงเวลา HH:MM:SS เป็น HH:MM ด้วย TIME_FORMAT

    การจัดรูปแบบ TIME ให้แสดงแค่ ชั่วโมง:นาที (HH:MM) ด้วย TIME_FORMAT TIME_FORMAT(time, format) ใช้จัดรูปแบบค่า TIME/ DATETIME ให้แสดงตาม format string ที่กำหนด สร้างตารางและข้อมูล insert into DemoTable1419 values(09:59:34); ข้อมูลต้นฉบับ +-------------+ | ArrivalTime | +-------------+ | 12:30:45

  14. MySQL: Backticks ใน SET clause ของ UPDATE ใช้ได้ถ้าเขียนถูกต้อง

    การใช้ Backticks (`) ใน SET clause ของ UPDATE ให้ถูกต้อง Backticks ใช้ escape identifier (ชื่อตาราง, คอลัมน์) ที่เป็น reserved word หรือมี special characters ใน SET clause ต้องระบุ table.column ให้ครบ ไวยากรณ์ที่ถูกต้อง UPDATE `table_name` SET `table_name`.`column_name` = new_value WHERE conditio

  15. MySQL: แสดง SUBSTRING หากสตริงสั้นกว่าที่กำหนด ไม่งั้นแสดงข้อความกำหนดเอง

    เงื่อนไขแสดงผลแบบมีเงื่อนไข: SUBSTRING หากสั้นกว่า N ตัวอักษร, ไม่งั้น Custom Message ใช้ CASE WHEN ร่วมกับ CHAR_LENGTH() และ SUBSTRING() เพื่อควบคุมการแสดงผลตามความยาวสตริง สร้างตารางและข้อมูล insert into DemoTable1402 values(Carol Taylor); ข้อมูลและความยาว +--------------+---------------+ | Emp

  16. MySQL: เรียงลำดับวันที่ด้วย ORDER BY (ไม่สามารถ UPDATE ... ORDER BY ได้)

    การเรียงลำดับวันที่ใน MySQL: ใช้ SELECT ... ORDER BY ไม่ใช่ UPDATE ... ORDER BY MySQL ไม่รองรับ UPDATE ... ORDER BY (ต่างจากบาง DB) หากต้องการ อัปเดตตามลำดับ ต้องใช้เทคนิคอื่น แต่สำหรับการแสดงผลแค่เรียง ใช้ SELECT ... ORDER BY สร้างตารางและข้อมูล insert into DemoTable1403 values(2017-12-01); ข้อม

  17. MySQL: แปลง IP Address จาก VARCHAR เป็น INTEGER ด้วย INET_ATON

    การแปลง IPv4 Address ระหว่างสตริงและตัวเลขด้วย INET_ATON / INET_NTOA MySQL มีฟังก์ชัน built-in สำหรับแปลง IP address (IPv4) ระหว่างรูปแบบ dotted-quad string และ unsigned integer 32-bit สร้างตารางและข้อมูล insert into DemoTable1404 values(224.0.0.0); ข้อมูลต้นฉบับ +----------------+ | IpAddress

  18. MySQL: แสดงชื่อเดือนและปีจากคอลัมน์ DATETIME ด้วย DATE_FORMAT

    การแปลง DATETIME ให้แสดงชื่อเดือนและปีด้วย DATE_FORMAT ใช้ DATE_FORMAT(date, format) กำหนดรูปแบบการแสดงผลวันที่/เวลา %M = ชื่อเดือนเต็ม, %Y = ปี 4 หลัก สร้างตารางและข้อมูล insert into DemoTable1619 values(2019-12-31); ข้อมูลในตาราง +---------------------+ | ArrivalTime | +----------------

  19. MySQL: อัปเดตลบทุกช่องว่างนำหน้า/ท้ายด้วย TRIM()

    การลบช่องว่าง (Whitespace) นำหน้าและท้ายสตริงในทุกแถวด้วย TRIM() ใช้ TRIM() ในคำสั่ง UPDATE เพื่อลบช่องว่าง leading/trailing ออกจากคอลัมน์ VARCHAR/TEXT สร้างตารางและข้อมูล (มีช่องว่าง) insert into DemoTable1405 values( Carol , Taylor ); ข้อมูลก่อน TRIM +------------------+----------------+ | Fi

  20. MySQL: ใช้ Expression เต็มรูปแบบใน WHERE Clause

    การใช้ Expression (นิพจน์) เต็มรูปแบบใน WHERE Clause ของ MySQL MySQL อนุญาตให้ใช้ expression (การคำนวณ/ฟังก์ชัน) ใน WHERE clause ได้โดยตรง — ไม่ต้องคำนวณไว้ใน SELECT หรือ subquery ก่อน สร้างตารางและข้อมูล insert into DemoTable1406 values(30); ข้อมูลทั้งหมด +-------+ | Value | +-------+ | 10 |

Total 4564 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:45/229  20-คอมพิวเตอร์/Page Goto:1 39 40 41 42 43 44 45 46 47 48 49 50 51