SQL server與MySQL語法的區別


  SQL server與MySQ雖然同樣是基於SQL語法的,但它們之間的差異也是不可忽略的。

本博文緣由:
  在學習《數據庫系統概論》里面使用的為SQLsever語法,與最先接觸的MySQL部分語法有些許不同。

  下面是我在做數據庫習題與到的一些差異。

1、limit語句

mysql中

SELECT age
FROM person
ORDER BY age ASC
LIMIT 3

SQL server中

SELECT TOP 3 WITH TIES *
FROM person
ORDER BY age ASC

#應用
-- 從 "Persons" 表中選取 50% 的記錄
SELECT TOP 50 PERCENT * FROM Persons

2、DATEDIFF() 函數

mysql中

#DATEDIFF() 函數返回兩個日期之間的天數
-- DATEDIFF(date1,date2)
SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate

SQL server中

#DATEDIFF() 函數返回兩個日期之間的時間
-- DATEDIFF(datepart,startdate,enddate)
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate

/*
注意:
	SQL server中的DATEDIFF() 函數
							等效於mysql中的💖TIMESTAMPDIFF() 函數
*/
-- TIMESTAMPDIFF(unit,begin,end);

3、DATE函數

mysql中

1、NOW()	返回當前的日期和時間
	-- CURDATE()	返回當前的日期
	-- CURTIME()	返回當前的時間
	
2、DATE()	提取日期或日期/時間表達式的日期部分
	-- EXTRACT(unit FROM date) 返回日期/時間按的單獨✨unit部分

3、DATE_FORMAT(date,format)	用不同的格式🎉format顯示日期/時間

4、DATEDIFF(date1,date2)	返回兩個日期之間的天數
	-- TIMESTAMPDIFF(unit,begin,end); 相當於SQL sever中的DATEDIFF() 函數
	
5、DATE_ADD()	給日期添加指定的時間間隔
   DATE_SUB()	從日期減去指定的時間間隔

SQL sever中

1、GETDATE()	返回當前日期和時間

2、DATEPART(datepart,date) 返回日期/時間的單獨✨datepart
	
3、CONVERT(data_type(length),data_to_be_converted,style)	用不同的格式🎉style顯示日期/時間

4、DATEDIFF(datepart,startdate,enddate)	返回兩個日期之間的時間

5、DATEADD()	在日期中添加或減去指定的時間間隔

4、百分比約束💖

例: 查詢課程表中的前30%的記錄。

SQL sever中

SELECT TOP 30 PERCENT * 
FROM C;

mysql中

#方式一
/*
1、利用 變量rownum創建一個空表
2、利用 @rownum:=@rownum+1讀取行數
*/
SELECT  C.* 
FROM (SELECT @rownum:=0) AS r inner join C
ON (@rownum:=@rownum+1)<=(
	select round(count(*)*0.3) 
	from C
);


#方式二
-- 先計算
SELECT ROUND(COUNT(*)*0.3) FROM C
-- 后帶入
SELECT *
FROM C
LIMIT 0,上面的計算結果;

5、like語句

例:查詢所有張,王,李,趙姓的教師信息

SQL server中

SELECT *
FROM T
WHERE name LIKE ('[張王李趙]%');

mysql中

#方式一
SELECT *
FROM T
WHERE LEFT(name,1) IN('張','王','李','趙');

#方式二
SELECT *
FROM T
WHERE `name` LIKE '李%' OR `name` LIKE '張%' OR `name` LIKE '王%' OR`name` LIKE '趙%';

拓展:外鍵約束

mysql中

/*
	* 外鍵字段必須與對應表的主鍵字段類型、長度、字符集、引擎一致
	* 外鍵字段本身要求是一個索引(創建外鍵會自動生成一個索引)
*/
#創建專業表和學生表,學生表中的專業id指向專業表id
-- [constraint`外鍵名`] foreign key(當前表字段名) references 外部表(主鍵字段)
create table t_1(
	id int primary key auto_increment,
    name varchar(50) not null unique
)charset utf8;

create table t_49(
	id int primary key auto_increment,
    name varchar(50) not null,
    c_id int,
    foreign key(c_id) references t_47(id)
    /*
    	外鍵可以不指定名字,系統會自動生成
    constraint `c_id` foreign key(c_id) references t_47(id)
    */
)charset utf8;

SQL server中

foreign key(Cid) references C(Cid) on update cascade on delete cascade


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM