เมื่อเร็ว ๆ นี้ฉันได้ดำเนินการแปลง MS SQL Server เป็น MySQL ฉันได้สรุปประสบการณ์บางอย่างและแบ่งปันกับคุณ ในขณะเดียวกันก็จะมีการปรับปรุงอย่างต่อเนื่อง ฉันหวังว่าคุณจะเพิ่มมากขึ้น 1 MySQL รองรับประเภท enum และ set แต่ SQL Server ไม่รองรับ
2 MySQL ไม่รองรับประเภท nchar, nvarchar, ntext
3 คำสั่งการเพิ่มขึ้นของ MySQL คือ AUTO_INCREMENT ในขณะที่ MS SQL เป็นตัวระบุ (1,1)
4 ค่าเริ่มต้นของคำสั่งสร้างตารางของ MS SQL คือ ((0)) แต่ใน MySQL ไม่อนุญาตให้ใช้สองวงเล็บ
5 MySQL จำเป็นต้องระบุประเภทพื้นที่เก็บข้อมูลสำหรับตาราง
6 MS SQL identifier คือ [], [type] ซึ่งหมายความว่าแตกต่างจากคีย์เวิร์ด แต่ MySQL คือ ` ซึ่งเป็นสัญลักษณ์ทางด้านซ้ายของปุ่ม 1
7 MS SQL รองรับเมธอด getdate() เพื่อรับเวลาและวันที่ปัจจุบัน แต่ MySQL สามารถแบ่งออกเป็นประเภทวันที่และประเภทเวลา วันที่ปัจจุบันคือ cur_date() และเวลาที่สมบูรณ์ในปัจจุบันคือฟังก์ชัน now()
8 MS SQL ไม่รองรับคำสั่งการแทนที่เป็น แต่ใน sql20008 ล่าสุด ยังรองรับไวยากรณ์การผสานด้วย
9 MySQL รองรับการแทรกลงใน table1 set t1 = '', t2 = '' แต่ MS SQL ไม่รองรับการเขียนด้วยวิธีนี้
10 MySQL รองรับการแทรกค่า tabl1 (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1)
11 MS SQL ไม่รองรับคำสั่งจำกัด ซึ่งน่าเสียดายมาก คุณสามารถใช้ฟังก์ชัน top เพื่อแทนที่ขีดจำกัด 0,N และฟังก์ชัน row_number() over() เพื่อแทนที่ขีดจำกัด N,M
12 MySQL ต้องระบุประเภทกลไกการจัดเก็บข้อมูลสำหรับแต่ละตารางเมื่อสร้างตาราง ในขณะที่ MS SQL รองรับเพียงหนึ่งกลไกการจัดเก็บข้อมูลเท่านั้น
13 MySQL ไม่รองรับประเภท datetime ซึ่งค่าเริ่มต้นคือเวลาปัจจุบัน (MS SQL นั้นทำได้ง่าย) ใน MySQL จะใช้ประเภทการประทับเวลา
14 หากต้องการตรวจสอบว่าตารางนี้มีอยู่ใน MS SQL แล้วลบออกหรือไม่ คุณต้องดำเนินการดังนี้:
หากมีอยู่ (เลือก * จาก dbo.sysobjects โดยที่ id = object_id(N'uc_newpm') และ OBJECTPROPERTY(id,N'IsUserTable')=1) แต่ใน MySQL เฉพาะ DROP TABLE IF EXISTS cdb_forums;
แต่ใน MySQL คุณเพียงต้องการ DROP TABLE หากมีอยู่ cdb_forums;
15 MySQL รองรับจำนวนเต็มที่ไม่ได้ลงนาม จึงสามารถจัดเก็บตัวเลขสูงสุดได้เป็นสองเท่าของ MS SQL ซึ่งไม่รองรับจำนวนเต็มที่ไม่ได้ลงนาม
16 MySQL ไม่รองรับประเภท varchar(max) ที่สะดวกมากใน MS SQL ประเภทนี้สามารถใช้ได้ทั้งกับการจัดเก็บข้อมูลทั่วไปและการจัดเก็บข้อมูล Blob ใน MS SQL
17 ในการสร้างดัชนีที่ไม่ใช่คลัสเตอร์ใน MySQL คุณจะต้องระบุเป็นคีย์เมื่อสร้างตาราง ตัวอย่างเช่น: KEY displayorder (fid, displayorder) ใน MS SQL คุณต้อง:
สร้าง indexindex_uc_protectedmembers_username_appid แบบไม่คลัสเตอร์ที่ไม่ซ้ำกันบน dbo.uc_protectedmembers (ชื่อผู้ใช้ asc, appid asc)
18 ประเภทฟิลด์ข้อความ MySQL ไม่อนุญาตให้ใช้ค่าเริ่มต้น
19ความยาวฟิลด์รวมของตาราง MySQL ไม่เกิน 65XXX
20 ข้อแตกต่างอย่างผิวเผินมากคือการติดตั้ง MySQL นั้นง่ายมาก และขนาดไฟล์เพียง 110M (เวอร์ชันที่ไม่ใช่การติดตั้ง) เมื่อเปรียบเทียบกับ Microsoft ยักษ์ใหญ่ ความคืบหน้าในการติดตั้งก็ง่ายดาย...
21MySQL มีเครื่องมือการจัดการที่ดีกว่าหลายอย่าง รวมถึง MySQL_front และชุดโปรแกรมอย่างเป็นทางการ แต่เครื่องมือเหล่านี้ไม่ได้ใช้งานง่ายเหมือน SSMS นี่เป็นข้อบกพร่องใหญ่ของ MySQL
ขั้นตอนการจัดเก็บของ 22MySQL จะปรากฏเฉพาะในเวอร์ชันล่าสุดเท่านั้น และความเสถียรและประสิทธิภาพอาจไม่ดีเท่ากับ MS SQL
23 ภายใต้แรงกดดันในการโหลดเท่ากัน MySQL จะใช้ CPU และหน่วยความจำน้อยลง ในขณะที่ MS SQL นั้นกินทรัพยากรมากจริงๆ
24php มีวิธีการเชื่อมต่อกับ MySQL และ MS SQL ที่คล้ายกัน คุณจะต้องแทนที่ฟังก์ชัน MySQL ด้วย MS SQL เท่านั้น
25MySQL รองรับประเภทวันที่ เวลา และปี MS SQL รองรับเฉพาะวันที่และเวลาในปี 2008