หน้าแรก
หน้าแรก
MySQL CAST สามารถจัดการโอเวอร์โฟลว์ที่เกิดขึ้นระหว่างการประเมินนิพจน์เชิงตัวเลขได้ สมมติว่าการประเมินนิพจน์ตัวเลขทำให้เกิดการล้น MySQL จะแสดงข้อความแสดงข้อผิดพลาด ตอนนี้เพื่อจัดการกับการล้นนี้ เราสามารถเปลี่ยนค่าตัวเลขนั้นเป็น UNSIGNED ด้วยความช่วยเหลือของ CAST ตัวอย่างเช่น ในการเพิ่ม 1 ให้กับค่าสูง
ดังที่เราทราบดีว่าฟังก์ชัน BIN() จะคืนค่าสตริงไบนารีของตัวเลขของฐานทศนิยม หลังจากแปลงเป็นค่าไบนารีแล้ว ด้วยวิธีนี้ ถือว่าเหมือนกับฟังก์ชัน CONV(N,10,2) หมายความว่าเอาต์พุตของ CONV(N,10,2) จะเหมือนกับเอาต์พุตของฟังก์ชัน BIN() ในฟังก์ชัน CONV(N,10,2) N คือตัวเลขที่จะแปลง โดย 10 แทนค่าฐาน เช่น DECIMAL
เลขคณิตค่าที่แน่นอนของ MySQL สามารถจัดการกับโอเวอร์โฟลว์ที่เกิดขึ้นระหว่างการประเมินนิพจน์เชิงตัวเลขได้ เนื่องจากโอเวอร์โฟลว์เกิดขึ้นขึ้นอยู่กับช่วงของตัวถูกดำเนินการ ค่าที่ใช้ในนิพจน์ทางคณิตศาสตร์ที่เปลี่ยนเป็นประเภทข้อมูลอื่นสามารถขจัดส่วนเกินได้ ตัวอย่างเช่น หลังจากแปลงค่าสูงสุดของ BIGINT เป็น DE
ในกรณีของโหมดเข้มงวดของ SQL ที่เปิดใช้งาน การลบระหว่างค่าจำนวนเต็มซึ่งค่าใดค่าหนึ่งเป็นประเภท UNSIGNED จะสร้างผลลัพธ์ที่ไม่ได้ลงนามโดยค่าเริ่มต้น แต่ MySQL สร้างข้อผิดพลาดหากผลลัพธ์เป็นค่าลบ สามารถสังเกตได้จากตัวอย่างต่อไปนี้ − mysql> SET sql_mode = ''; Query OK, 0 rows affected (0.00 sec
ในกรณีนี้ หมายความว่าเรากำลังจัดเตรียมสตริงว่างเป็นอาร์กิวเมนต์ให้กับฟังก์ชัน ASCII() มันจะคืนค่า 0 เมื่อระบุสตริงว่าง ตัวอย่าง mysql> Select ASCII(''); +-----------+ | ASCII('') | +-----------+ | 0 | +-----------+ 1 row in set (0.00 sec)
เมื่อคอลัมน์ AUTO_INCREMENT ถึงขีดจำกัดสูงสุดของประเภทข้อมูล ความพยายามครั้งต่อๆ มาเพื่อสร้างหมายเลขลำดับจะล้มเหลว นั่นคือเหตุผลที่แนะนำให้ใช้ชนิดข้อมูลจำนวนเต็มที่มีขนาดใหญ่เพียงพอสำหรับคอลัมน์ AUTO_INCREMENT เพื่อเก็บค่าลำดับสูงสุดที่เราต้องการ ตัวอย่างเช่น หากเราจะใช้ TINYINT แล้ว AUTO_INCREMENT
ค่า MySQL AUTO_INCREMENT เริ่มต้นจาก 1 แต่เราสามารถเปลี่ยนได้ด้วยสองวิธีดังต่อไปนี้ - ด้วยความช่วยเหลือของ ALTER TABLE แบบสอบถาม เราสามารถใช้แบบสอบถาม ALTER TABLE เพื่อเปลี่ยนค่าการจ้องมองของ AUTO_INCREMENT ได้ดังนี้ - ALTER TABLE table_name AUTO_INCREMENT = value; ตัวอย่าง สมมติว่าเราได้สร้างตารา
ในกรณีนี้ ผลลัพธ์ของฟังก์ชัน ASCII() จะขึ้นอยู่กับเงื่อนไขว่าเราจะระบุ NULL เป็นสตริง หรือเพียงแค่ให้ NULL แก่ฟังก์ชันนั้น ตัวอย่างต่อไปนี้จะแสดงให้เห็นความแตกต่าง - mysql> SELECT ASCII(null); +-------------+ | ASCII(null) | +-------------+ | NULL | +-------------+ 1 ro
ในขณะที่ใช้ฟังก์ชัน ASCII() กับคำสั่ง WHERE ผลลัพธ์ที่ได้จะขึ้นอยู่กับเงื่อนไขที่ให้ไว้ใน WHERE clause ตัวอย่างเช่น สมมติว่าเรามีตารางชื่อ นักเรียน และเราต้องการรับรหัสตัวเลขที่สูงกว่า 65 ของอักขระตัวแรกของชื่อของนักเรียน แบบสอบถามสำหรับสิ่งนี้สามารถเขียนได้ดังนี้ - mysql> Select * from student;
เมื่อใช้ฟังก์ชันสตริง CHAR_LENGTH() หรือ CHARACTER_LENGTH() กับส่วนคำสั่ง WHERE ผลลัพธ์ที่ได้จะขึ้นอยู่กับเงื่อนไขที่ระบุในอนุประโยค WHERE ตัวอย่างเช่น สมมติว่าเรามีตารางชื่อ นักเรียน และเราต้องการได้เฉพาะชื่อที่มีจำนวนอักขระน้อยกว่า 6 ตัว จากนั้นเราสามารถเขียนข้อความค้นหาต่อไปนี้ - mysql> Select
CHAR_LENGTH() หรือ CHARACTER_LENGTH() ฟังก์ชันสตริงใน MySQL ใช้เพื่อดึงความยาวของสตริงที่ระบุ ฟังก์ชันนี้จะนับจำนวนอักขระอย่างง่าย ๆ และไม่สนใจว่าอักขระนั้นเป็นแบบไบต์เดี่ยวหรือแบบหลายไบต์ ตัวอย่าง mysql> Select CHAR_LENGTH('New Delhi'); +--------------------------+ | CHAR_LENGTH('New
เมื่อเราใช้ AUTO_INCREMENT ในคอลัมน์ MySQL หมายเลขลำดับจะเพิ่มขึ้นเสมอโดยเริ่มจากค่าดีฟอลต์ 1 หรือจากค่าที่เราระบุ นั่นคือเหตุผลที่ MySQL ไม่อนุญาตให้เปลี่ยนค่า AUTO_INCREMENT เป็นค่าที่น้อยกว่าหมายเลขลำดับปัจจุบัน สามารถเข้าใจได้ด้วยความช่วยเหลือของตัวอย่างต่อไปนี้ − ตัวอย่าง ในตัวอย่างนี้ สมมติว่
ในกรณีนี้ หมายความว่าเรากำลังจัดเตรียมสตริงว่างเป็นอาร์กิวเมนต์สำหรับฟังก์ชัน CHAR_LENGTH() มันจะคืนค่า 0 เมื่อระบุสตริงว่างเนื่องจากไม่มีอักขระที่จะนับโดยฟังก์ชัน CHAR_LENGTH() ตัวอย่าง mysql> Select CHAR_LENGTH(''); +-----------------+ | CHAR_LENGTH('') | +-----------------+ | 0
เมื่อเราแทรกค่า NULL ลงในคอลัมน์ AUTO_INCREMENT MySQL จะส่งคืนหมายเลขลำดับ ตัวอย่าง mysql> Create table employee(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name Varchar(10)); Query OK, 0 rows affected (0.16 sec) mysql> Insert into employee(id, Name) values(NULL, 'Gaurav'); Query OK,
ด้วยความช่วยเหลือของแบบสอบถาม MySQL ต่อไปนี้ เราสามารถตรวจสอบชุดอักขระของตารางทั้งหมดในฐานข้อมูลเฉพาะ - mysql> Select Column_name, TABLE_NAME, CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.Columns Where TABLE_SCHEMA = 'db_name'; ตัวอย่าง ตัวอย่างเช่น เคียวรีด้านล่า
ในการระบุแอตทริบิวต์ไบนารีของ CHARACTER SET สำหรับประเภทข้อมูลสตริงอักขระ MySQL จะสร้างคอลัมน์นั้นเป็นประเภทสตริงไบนารีที่ตามมา การแปลงประเภทข้อมูล CHAR, VARCHAR และ BLOB เกิดขึ้นดังนี้ - CHAR จะกลายเป็นไบนารี VARCHAR จะกลายเป็น VARBINARY TEXT จะกลายเป็น BLOB การแปลงประเภทข้างต้นจะไม่เกิดขึ้นสำหร
MySQL กำหนด NCHAR เป็นวิธีการระบุว่าคอลัมน์ CHAR ควรใช้ชุดอักขระที่กำหนดไว้ล่วงหน้า MySQL ใช้ Utf8 เป็นชุดอักขระที่กำหนดไว้ล่วงหน้า ตัวอย่าง ในตัวอย่างด้านล่าง เรากำลังสร้างตารางชื่อ Student1 ในตารางนี้ เรากำลังประกาศประเภทข้อมูลของสามคอลัมน์ที่มีรูปแบบการประกาศที่แตกต่างกันสามแบบซึ่งค่อนข้างจะเทียบ
MySQL จะกำหนดหมายเลขลำดับให้กับคอลัมน์ AUTO_INCREMENT โดยอัตโนมัติ แม้ว่าเราจะใส่ค่า NULL, 0 หรือ No Value ให้กับคอลัมน์ในตารางก็ตาม ตัวอย่าง mysql> create table test123(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name Varchar(10)); Query OK, 0 rows affected (0.15 sec) แบบสอบถามด้านบนสร้างตาราง
เราสามารถใช้คำสั่ง TRUNCATE หรือคำสั่ง DROP เพื่อลบแถวทั้งหมดออกจากตาราง นอกจากนี้ยังสามารถทำได้ด้วยความช่วยเหลือของคำสั่ง DELETE แต่ในกรณีนั้น WHERE clause ต้องระบุแถวทั้งหมดของตาราง ดังที่เราทราบแล้วว่าคำสั่ง TRUNCATE และ DELETE จะไม่ลบโครงสร้างของตาราง แต่ก็ยังดีกว่าการใช้คำสั่ง TRUNCATE มากกว่าค
ในการแทรกข้อมูลลงในตาราง MySQL เราจำเป็นต้องใช้คำสั่ง INSERT INTO เราต้องระบุค่าสำหรับคอลัมน์ทั้งหมดของตารางด้วยคำสั่ง INSERT INTO ไวยากรณ์ INSERT INTO table_name values(value1,value2,…) ตัวอย่าง สมมติว่าเรามีตารางชื่อ Student ซึ่งมีสามคอลัมน์คือ RollNo, Name และ Class จากนั้นด้วยความช่วยเหล