MySql 和Server Sql的差異


MySql Server Sql的差異

1、自增長列的插入:
SQLServer中可以不為自動增長列插入值,
MySQL中需要為自動增長列插入值。

2、獲取當前時間函數
SQLServer寫法:getdate()
MySQL寫法:now()

3、從數據庫定位到表。
Sqlserver寫法:庫名.dbo.表名 ;或者:庫名..表名 
 (注:中間使用兩個點)
select password from Info.dbo.users where userName='boss'
或者
select password from Info..users where userName='boss'
mysql寫法:庫名.表名
select password from Info.users where userName='boss'

4、判斷是否存在某個數據庫,若存在,則刪除
Sqlserver寫法:
IF DB_ID('users') IS NOT NULL
DROP DATABASE users
Mysql寫法:
Drop DATABASEif exists
 users

拓展:若sqlserver數據庫正在使用中,刪除之前,先要把數據庫變成單一用戶,再刪除
ALTER DATABASE users SET SINGLE_USER with ROLLBACK IMMEDIATE IF DB_ID('users') IS NOT NULL DROP DATABASE users

另附:判斷某數據庫中是否存在某張表,若存在,則刪除
Sqlserver寫法:
if exists(select * from sysobjects where name ='Users_test')
drop table Users_test
Mysql寫法:
DROP TABLE IF EXISTS
 Users_test

5、主鍵存在,則更新,不存在,則插入
Mysql寫法:    
INSERT into users (userID,userName,password) VALUES (1,’jmj’,’123’) ON DUPLICATE KEY UPDATE  userName
 ='jmj', password =123

Sqlserver沒有mysql這樣的關鍵字,只能組合sql語句來實現操作:
if not exists (select userID from users where userID= 1)insert into users (userID,userName,password) values(1,’jmj’,’123’) else update users set userName
 = ’jmj’, password=’123’ where userID = 1

(關於On duplicate key update的兩篇文章,推薦給大家!
可遇不可求的QuestionSQLServerINSERT ON DUPLICATE KEY UPDATE語法篇
MySql避免重復插入記錄方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

6、符號的使用
mysql對參數可以使用單引號,也可以使用雙引號,對字段名和表明可以使用反引號。
sqlserver只能使用單引號,且不能使用反引號。
Mysql寫法:
Select 
`password` from Users where userName='boss' or username=”jmj”
Sqlserver寫法:
Select 
password from Users where userName='boss' or username=’jmj’
 
7、取出查詢結果中的第一條數據或者前幾條記錄(取前幾條記錄只需要修改對應的數字即可),分頁也是使用這個關鍵字:
SQLServer寫法:
select top 1 password from users where userName='boss'  
MySQL寫法:
select password from users where userName='111'limit 0,1
 它可以規定范圍 limit a,b——范圍a-b
8、查詢所有庫 
SQLServer寫法:
select * from [master]..[SysDatabases];
MySQL寫法:
SHOW DATABASES;

9、查詢指定庫中的所有表
SQLServer寫法:
select *from 庫名.dbo.[SysObjects]
 where[type]='U';
(注:若想知道[type]='U'代表什么意思,請點擊http://blog.csdn.net/winddai/article/details/5815138
MySQL寫法:
SHOW TABLES

10、某些關鍵詞的使用
10.1截取字符串
SQLServer只能使用SUBSTRING關鍵詞來截取字符串。
MySQL可以使用SUBSTRINGSUBSTR截取字符串
10.2取得字符串的長度

SQLServer只能使用Len關鍵詞取得字符串的長度。
MySQL可以使用Length取得字符串的長度。


11、相同點


deleteselectinsertdrop(刪除數據庫:drop database 庫名),updatecreate(創建數據庫:create
 database 庫名)語句一樣。

MySQLSQLServer的語法區別

 

1.MySQL支持enum,set類型,SQL Server不支持

 

 

2.MySQL不支持nchar,nvarchar,ntext類型

 

 

3.MySQL的遞增語句是AUTO_INCREMENT,而MS SQLidentity(1,1)

 

 

4.MS SQL默認到處表創建語句的默認值表示是((0)),而在MySQL里面是不允許帶兩括號的

 

 

5.MySQL需要為表指定存儲類型

 

 

6.MS SQL識別符是[],[type]表示他區別於關鍵字,但是MySQL卻是 `,也就是按鍵1左邊的那個符號

 

 

7.MS SQL支持getdate()方法獲取當前時間日期,但是MySQL里面可以分日期類型和時間類型,獲取當前日期是current_date (),當前完整時間是 now()函數

 

 

8.MS SQL不支持replace into 語句,但是在最新的sql20008里面,也支持merge語法

 

 

9.MySQL支持insert into table1 set t1 = „‟, t2 = „‟ ,但是MS SQL不支持這樣寫

 

 

10.MySQL支持insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1)

 

 

11.MySQL在創建表時要為每個表指定一個存儲引擎類型,而MS SQL只支持一種存儲引擎

 

 

12.MySQL不支持默認值為當前時間的datetime類型(MS SQL很容易做到),在MySQL里面 是用timestamp類型

 

 

13.My SQL里面檢查是否有這個表再刪除,需要這樣:if exists (select * from dbo.sysobjects where id = object_id(Nuc_newpm) and OBJECTPROPERTY(id,NIsUserTable)=1) 但是在MySQL里面只需要 DROP TABLE IF EXISTS cdb_forums;

 

 

14.MySQL支持無符號型的整數,那么比不支持無符號型的MS SQL就能多出一倍的最大數 存儲

 

 

15.MySQL不支持在MS SQL里面使用非常方便的varchar(max)類型,這個類型在MS SQL里 面既可做一般數據存儲,也可以做blob數據存儲

 

 

16.MySQL創建非聚集索引只需要在創建表的時候指定為key就行,比如:KEY displayorder (fid,displayorder) MS SQL里面必須要:create unique nonclustered index index_uc_protectedmembers_username_appid on dbo.uc_protectedmembers (username asc,appid asc)

 

 

17.MySQL text字段類型不允許有默認值

 

 

18.MySQL的一個表的總共字段長度不超過65XXX

 

 

19.一個很表面的區別就是MySQL的安裝特別簡單,而且文件大小才110M(非安裝版),相 比微軟這個龐然大物,安裝進度來說簡直就是…

 

 

20.MySQL的存儲過程只是出現在最新的版本中,穩定性和性能可能不如MS SQL

 

 

21.同樣的負載壓力,MySQL要消耗更少的CPU和內存,MS SQL的確是很耗資源。

 

 

22.mysqlifnull()函數對應sqlisnull()函數;

 

 

23.mysql的存儲過程中變量的定義去掉@;

 

 

24.mysql的每句結束要用";"

 

 

25.SQLServer存儲過程的ASMySql中需要用begin end替換

 

 

26.字符串連接用concat()函數;SQLServer: Temp=select * from +tablename++MySql:Temp=concat(select * from, tablecname,,)

 

 

27.mysqluuid()對應mssqlGUID();

 

 

28.MySqlout對應SQLServeroutput,mysql out要放在變量的前面,SQLServer output放在變量后面

 

 

29.MySql out,in,inout的區別——MySQL 存儲過程 “in” 參數:跟 C 語言的函數參 數的值傳遞類似, MySQL 存儲過程內部可能會修改此參數,但對 in 類型參數的修改,對調用者(caller)來說是不可見的(not visible)。MySQL 存儲過程 “out” 參數:從存儲過程內部傳值給調用者。在存儲過程內部,該參數初始值為 null,無論調用者是否給存儲過程參數設置值。MySQL 存儲過程 inout 參數跟 out 類似,都可以從存儲過程內部傳值給調用者。不同的是:調用者還可以通過 inout 參數傳遞值給存儲過程。

 

 

30.MySQLif語句為 if (條件) then end if; 或者 If (條件) then Else End if 或者 If(條件)then Elseif (注意不能寫成 Else if ) Elseif End if

 

 

31.MysqlExecute對應SqlServerexec; (注意:必須想下面這樣調用) Set @cnt=select * from 表名‟; Prepare str from @cnt; Execute str;

 

 

32.MySql存儲過程調用其他存儲過程用call Call 函數名(即SQLServer的存儲過程名)(‟參數1,‟參數2,……)

 

 

33.mysql的日期

 

1) 獲得當前日期函數:curdate()current_date()

2) 獲得當前時間函數:curtime();

3) 獲得當前日期+時間:now();

4) MySQL dayof... 函數:dayofweek(), dayofmonth(), dayofyear()分別返回日期參 數,在一周、一月、一年中的位置。

5)  (注:周日=1,周一=2,周二=3……)

6)   返回本月的天數:select day(last_day(now()));

7) MySQL 為日期增加一個時間間隔:date_add()

8)  select date_add(CURRENT_DATE(),interval „要增加的天數‟ day) as Fdate

9)  MySQL 為日期減去一個時間間隔:date_sub()

10)  select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);

11)  MySQL 日期、時間相減函數:datediff(date1,date2), timediff(time1,time2)

12) MySQL 拼湊日期、時間函數:makdedate(year,dayofyear), maketime(hour,minute,second)

13) 例:select makedate(2001,31); -- '2001-01-31'

14)  select makedate(2001,32); -- '2001-02-01'

15)  本周時間(起始)

16)  select date_sub(CURRENT_DATE(),interval dayofweek(curdate())-2 day) as Fdate

17)  本周時間(結束)

18)  select date_add(CURRENT_DATE(),interval dayofweek(curdate())+3 day) as Fdate

19)  上周時間(起始)

20) select date_sub(CURRENT_DATE(),interval dayofweek(curdate())+5 day) as Fdate

21)  上周時間(結束)

22)  select date_sub(CURRENT_DATE(),interval dayofweek(curdate())-1 day) as Fdate

23)  本月時間(起始)

24)  select DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY) as Fdate

25)  本月時間(結束)

26)  Select date_add(current_date(),interval day(last_day(CURDATE())) -day(CURDATE()) day) as Fdate

27)  上月時間(起始)

28)  select DATE_SUB(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY),interval day(last_day(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY)))- 1 day) as Fdate

29)  上月時間(結束)

30)  select DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY) as Fdate

31)  今年時間(起始)

32)  select makedate(year(curdate()),1) as FDate

33)  今年時間(結束)

34)  select DATE_SUB(makedate(year(curdate())+1,1) ,INTERVAL 1 day) as Fdate

35)  去年時間(起始)

36)  select makedate(year(curdate())-1,1) as Fdate

37) 去年時間(結束)

38)  select DATE_SUB(makedate(year(curdate()),1) ,INTERVAL 1 day) as FDate

39) ) DATE_FORMAT(date,format):根據format字符串格式化date值。下列修飾符 可以被用在format字符串中

40)  %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。) %Y , 數字, 4 %y , 數字, 2 %a 縮寫的星期名字(Sun……Sat) %d 月份中的天數, 數字(00……31) %e 月份中的天數, 數字(0……31) %m , 數字(01……12) %c , 數字(1……12) %b 縮寫的月份名字(Jan……Dec) %j 一年中的天數(001……366) %H 小時(00……23) %k 小時(0……23) %h 小時(01……12) %I 小時(01……12) %l 小時(1……12) %i 分鍾, 數字(00……59) %r 時間,12 小時(hh:mm:ss [AP]M) %T 時間,24 小時(hh:mm:ss) %S (00……59) %s (00……59) %p AMPM

41)  %w 一個星期中的天數(0=Sunday ……6=Saturday %U 星期(0……52), 這里星期天是星期的第一天 %u 星期(0……52), 這里星期一是星期的第一天 %% 一個文字“%”

42)  例:所有的其他字符不做解釋被復制到結果中。 mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); ->'Saturday October 1997' mysql>select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');

43)  -> '22:23:00'

44)  mysql>select DATE_FORMAT('1997-10-04 22:23:00', '%D %y %a %d %m %b %j');

45) ->'4th 97 Sat 04 10 Oct 277'

46)  mysql>select DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');

 

 

34.MySql存儲過程中沒有return函數,在MySql中可以用循環和out參數代替 If EXISTS(SELECT * FROM T_Chance WHERE FCustID=CostomerID) return 0 改寫為: (在參數中定義一個out變量:out temp varchar(100);BEGIN Loop1:loop SELECT count(*) FROM T_Chance WHERE FCustID=CostomerID int @cnt If @cnt>0 then begin set temp=0; leave loop1; end; end if end loop loop1;

 

35.select @a=count() from VW_Action mySql中修改為:select count() from VW_Action into @a;

 

36.MySQL中沒有top關鍵字,需要用limit代替且放在后面 注意,在MySQL中的limit不能放在子查詢內,limit不同與SQLServer,它可 以規定范圍 limit a,b——范圍a-b SQL SERVER : select top 8 * from table1 MYSQL: select * from table1 limit 5;

 

37.即使存儲過程沒有參數也要寫括號“()”

 

38.當一個存儲過程中有創建臨時表時 create procedure up_test () begin drop table if exists tb1; create TEMPORARY table tb1//注意添加TEMPORARY table ( id int, name varchar(20) );//注意最后加分號 insert tb1 values(1,jim); select * from tb1; end

 

39.建表中自增長問題: create table user ( Id varchar(10) primary key auto_increment not null, Name varchar(20) not null, Password varchar(20), create_date datetime ); auto_increment 自增長

 

40.“Unable to convert MySQL date/time value to System.DateTime"這是因為在日期 列中有"0000-00-00"數據值,要修正這個問題,你可以把這些數據設為null,或者在連接字符串中設置"Allow Zero Datetime=True” 。

 

41.MySQL視圖的FROM子句不允許存在子查詢,因此對於SQL ServerFROM 子句帶有子查詢的視圖,需要手工進行遷移。可通過消除FROM子句中的子查詢,或將FROM子句中的子查詢重構為一個新的視圖來進行遷移

MySql Server Sql的差異

1、自增長列的插入:
SQLServer中可以不為自動增長列插入值,
MySQL中需要為自動增長列插入值。

2、獲取當前時間函數
SQLServer寫法:getdate()
MySQL寫法:now()

3、從數據庫定位到表。
Sqlserver寫法:庫名.dbo.表名 ;或者:庫名..表名 
 (注:中間使用兩個點)
select password from Info.dbo.users where userName='boss'
或者
select password from Info..users where userName='boss'
mysql寫法:庫名.表名
select password from Info.users where userName='boss'

4、判斷是否存在某個數據庫,若存在,則刪除
Sqlserver寫法:
IF DB_ID('users') IS NOT NULL
DROP DATABASE users
Mysql寫法:
Drop DATABASEif exists
 users

拓展:若sqlserver數據庫正在使用中,刪除之前,先要把數據庫變成單一用戶,再刪除
ALTER DATABASE users SET SINGLE_USER with ROLLBACK IMMEDIATE IF DB_ID('users') IS NOT NULL DROP DATABASE users

另附:判斷某數據庫中是否存在某張表,若存在,則刪除
Sqlserver寫法:
if exists(select * from sysobjects where name ='Users_test')
drop table Users_test
Mysql寫法:
DROP TABLE IF EXISTS
 Users_test

5、主鍵存在,則更新,不存在,則插入
Mysql寫法:    
INSERT into users (userID,userName,password) VALUES (1,’jmj’,’123’) ON DUPLICATE KEY UPDATE  userName
 ='jmj', password =123

Sqlserver沒有mysql這樣的關鍵字,只能組合sql語句來實現操作:
if not exists (select userID from users where userID= 1)insert into users (userID,userName,password) values(1,’jmj’,’123’) else update users set userName
 = ’jmj’, password=’123’ where userID = 1

(關於On duplicate key update的兩篇文章,推薦給大家!
可遇不可求的QuestionSQLServerINSERT ON DUPLICATE KEY UPDATE語法篇
MySql避免重復插入記錄方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

6、符號的使用
mysql對參數可以使用單引號,也可以使用雙引號,對字段名和表明可以使用反引號。
sqlserver只能使用單引號,且不能使用反引號。
Mysql寫法:
Select 
`password` from Users where userName='boss' or username=”jmj”
Sqlserver寫法:
Select 
password from Users where userName='boss' or username=’jmj’
 
7、取出查詢結果中的第一條數據或者前幾條記錄(取前幾條記錄只需要修改對應的數字即可),分頁也是使用這個關鍵字:
SQLServer寫法:
select top 1 password from users where userName='boss'  
MySQL寫法:
select password from users where userName='111'limit 0,1
 它可以規定范圍 limit a,b——范圍a-b
8、查詢所有庫 
SQLServer寫法:
select * from [master]..[SysDatabases];
MySQL寫法:
SHOW DATABASES;

9、查詢指定庫中的所有表
SQLServer寫法:
select *from 庫名.dbo.[SysObjects]
 where[type]='U';
(注:若想知道[type]='U'代表什么意思,請點擊http://blog.csdn.net/winddai/article/details/5815138
MySQL寫法:
SHOW TABLES

10、某些關鍵詞的使用
10.1截取字符串
SQLServer只能使用SUBSTRING關鍵詞來截取字符串。
MySQL可以使用SUBSTRINGSUBSTR截取字符串
10.2取得字符串的長度

SQLServer只能使用Len關鍵詞取得字符串的長度。
MySQL可以使用Length取得字符串的長度。


11、相同點


deleteselectinsertdrop(刪除數據庫:drop database 庫名),updatecreate(創建數據庫:create
 database 庫名)語句一樣。

MySQLSQLServer的語法區別

 

1.MySQL支持enum,set類型,SQL Server不支持

 

 

2.MySQL不支持nchar,nvarchar,ntext類型

 

 

3.MySQL的遞增語句是AUTO_INCREMENT,而MS SQLidentity(1,1)

 

 

4.MS SQL默認到處表創建語句的默認值表示是((0)),而在MySQL里面是不允許帶兩括號的

 

 

5.MySQL需要為表指定存儲類型

 

 

6.MS SQL識別符是[],[type]表示他區別於關鍵字,但是MySQL卻是 `,也就是按鍵1左邊的那個符號

 

 

7.MS SQL支持getdate()方法獲取當前時間日期,但是MySQL里面可以分日期類型和時間類型,獲取當前日期是current_date (),當前完整時間是 now()函數

 

 

8.MS SQL不支持replace into 語句,但是在最新的sql20008里面,也支持merge語法

 

 

9.MySQL支持insert into table1 set t1 = „‟, t2 = „‟ ,但是MS SQL不支持這樣寫

 

 

10.MySQL支持insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1)

 

 

11.MySQL在創建表時要為每個表指定一個存儲引擎類型,而MS SQL只支持一種存儲引擎

 

 

12.MySQL不支持默認值為當前時間的datetime類型(MS SQL很容易做到),在MySQL里面 是用timestamp類型

 

 

13.My SQL里面檢查是否有這個表再刪除,需要這樣:if exists (select * from dbo.sysobjects where id = object_id(Nuc_newpm) and OBJECTPROPERTY(id,NIsUserTable)=1) 但是在MySQL里面只需要 DROP TABLE IF EXISTS cdb_forums;

 

 

14.MySQL支持無符號型的整數,那么比不支持無符號型的MS SQL就能多出一倍的最大數 存儲

 

 

15.MySQL不支持在MS SQL里面使用非常方便的varchar(max)類型,這個類型在MS SQL里 面既可做一般數據存儲,也可以做blob數據存儲

 

 

16.MySQL創建非聚集索引只需要在創建表的時候指定為key就行,比如:KEY displayorder (fid,displayorder) MS SQL里面必須要:create unique nonclustered index index_uc_protectedmembers_username_appid on dbo.uc_protectedmembers (username asc,appid asc)

 

 

17.MySQL text字段類型不允許有默認值

 

 

18.MySQL的一個表的總共字段長度不超過65XXX

 

 

19.一個很表面的區別就是MySQL的安裝特別簡單,而且文件大小才110M(非安裝版),相 比微軟這個龐然大物,安裝進度來說簡直就是…

 

 

20.MySQL的存儲過程只是出現在最新的版本中,穩定性和性能可能不如MS SQL

 

 

21.同樣的負載壓力,MySQL要消耗更少的CPU和內存,MS SQL的確是很耗資源。

 

 

22.mysqlifnull()函數對應sqlisnull()函數;

 

 

23.mysql的存儲過程中變量的定義去掉@;

 

 

24.mysql的每句結束要用";"

 

 

25.SQLServer存儲過程的ASMySql中需要用begin end替換

 

 

26.字符串連接用concat()函數;SQLServer: Temp=select * from +tablename++MySql:Temp=concat(select * from, tablecname,,)

 

 

27.mysqluuid()對應mssqlGUID();

 

 

28.MySqlout對應SQLServeroutput,mysql out要放在變量的前面,SQLServer output放在變量后面

 

 

29.MySql out,in,inout的區別——MySQL 存儲過程 “in” 參數:跟 C 語言的函數參 數的值傳遞類似, MySQL 存儲過程內部可能會修改此參數,但對 in 類型參數的修改,對調用者(caller)來說是不可見的(not visible)。MySQL 存儲過程 “out” 參數:從存儲過程內部傳值給調用者。在存儲過程內部,該參數初始值為 null,無論調用者是否給存儲過程參數設置值。MySQL 存儲過程 inout 參數跟 out 類似,都可以從存儲過程內部傳值給調用者。不同的是:調用者還可以通過 inout 參數傳遞值給存儲過程。

 

 

30.MySQLif語句為 if (條件) then end if; 或者 If (條件) then Else End if 或者 If(條件)then Elseif (注意不能寫成 Else if ) Elseif End if

 

 

31.MysqlExecute對應SqlServerexec; (注意:必須想下面這樣調用) Set @cnt=select * from 表名‟; Prepare str from @cnt; Execute str;

 

 

32.MySql存儲過程調用其他存儲過程用call Call 函數名(即SQLServer的存儲過程名)(‟參數1,‟參數2,……)

 

 

33.mysql的日期

 

1)  獲得當前日期函數:curdate()current_date()

2)  獲得當前時間函數:curtime();

3)  獲得當前日期+時間:now();

4)  MySQL dayof... 函數:dayofweek(), dayofmonth(), dayofyear()分別返回日期參 數,在一周、一月、一年中的位置。

5)   (注:周日=1,周一=2,周二=3……)

6)    返回本月的天數:select day(last_day(now()));

7)  MySQL 為日期增加一個時間間隔:date_add()

8)   select date_add(CURRENT_DATE(),interval „要增加的天數‟ day) as Fdate

9)   MySQL 為日期減去一個時間間隔:date_sub()

10)   select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);

11)   MySQL 日期、時間相減函數:datediff(date1,date2), timediff(time1,time2)

12)  MySQL 拼湊日期、時間函數:makdedate(year,dayofyear), maketime(hour,minute,second)

13)  例:select makedate(2001,31); -- '2001-01-31'

14)   select makedate(2001,32); -- '2001-02-01'

15)   本周時間(起始)

16)   select date_sub(CURRENT_DATE(),interval dayofweek(curdate())-2 day) as Fdate

17)   本周時間(結束)

18)   select date_add(CURRENT_DATE(),interval dayofweek(curdate())+3 day) as Fdate

19)   上周時間(起始)

20)  select date_sub(CURRENT_DATE(),interval dayofweek(curdate())+5 day) as Fdate

21)   上周時間(結束)

22)   select date_sub(CURRENT_DATE(),interval dayofweek(curdate())-1 day) as Fdate

23)   本月時間(起始)

24)   select DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY) as Fdate

25)   本月時間(結束)

26)   Select date_add(current_date(),interval day(last_day(CURDATE())) -day(CURDATE()) day) as Fdate

27)   上月時間(起始)

28)   select DATE_SUB(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY),interval day(last_day(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY)))- 1 day) as Fdate

29)   上月時間(結束)

30)   select DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY) as Fdate

31)   今年時間(起始)

32)   select makedate(year(curdate()),1) as FDate

33)   今年時間(結束)

34)   select DATE_SUB(makedate(year(curdate())+1,1) ,INTERVAL 1 day) as Fdate

35)   去年時間(起始)

36)   select makedate(year(curdate())-1,1) as Fdate

37)  去年時間(結束)

38)   select DATE_SUB(makedate(year(curdate()),1) ,INTERVAL 1 day) as FDate

39)  ) DATE_FORMAT(date,format):根據format字符串格式化date值。下列修飾符 可以被用在format字符串中

40)   %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。) %Y , 數字, 4 %y , 數字, 2 %a 縮寫的星期名字(Sun……Sat) %d 月份中的天數, 數字(00……31) %e 月份中的天數, 數字(0……31) %m , 數字(01……12) %c , 數字(1……12) %b 縮寫的月份名字(Jan……Dec) %j 一年中的天數(001……366) %H 小時(00……23) %k 小時(0……23) %h 小時(01……12) %I 小時(01……12) %l 小時(1……12) %i 分鍾, 數字(00……59) %r 時間,12 小時(hh:mm:ss [AP]M) %T 時間,24 小時(hh:mm:ss) %S (00……59) %s (00……59) %p AMPM

41)   %w 一個星期中的天數(0=Sunday ……6=Saturday %U 星期(0……52), 這里星期天是星期的第一天 %u 星期(0……52), 這里星期一是星期的第一天 %% 一個文字“%”

42)   例:所有的其他字符不做解釋被復制到結果中。 mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); ->'Saturday October 1997' mysql>select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');

43)   -> '22:23:00'

44)   mysql>select DATE_FORMAT('1997-10-04 22:23:00', '%D %y %a %d %m %b %j');

45)  ->'4th 97 Sat 04 10 Oct 277'

46)   mysql>select DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');

 

 

34.MySql存儲過程中沒有return函數,在MySql中可以用循環和out參數代替 If EXISTS(SELECT * FROM T_Chance WHERE FCustID=CostomerID) return 0 改寫為: (在參數中定義一個out變量:out temp varchar(100);BEGIN Loop1:loop SELECT count(*) FROM T_Chance WHERE FCustID=CostomerID int @cnt If @cnt>0 then begin set temp=0; leave loop1; end; end if end loop loop1;

 

35.select @a=count() from VW_Action mySql中修改為:select count() from VW_Action into @a;

 

36.MySQL中沒有top關鍵字,需要用limit代替且放在后面 注意,在MySQL中的limit不能放在子查詢內,limit不同與SQLServer,它可 以規定范圍 limit a,b——范圍a-b SQL SERVER : select top 8 * from table1 MYSQL: select * from table1 limit 5;

 

37.即使存儲過程沒有參數也要寫括號“()”

 

38.當一個存儲過程中有創建臨時表時 create procedure up_test () begin drop table if exists tb1; create TEMPORARY table tb1//注意添加TEMPORARY table ( id int, name varchar(20) );//注意最后加分號 insert tb1 values(1,jim); select * from tb1; end

 

39.建表中自增長問題: create table user ( Id varchar(10) primary key auto_increment not null, Name varchar(20) not null, Password varchar(20), create_date datetime ); auto_increment 自增長

 

40.Unable to convert MySQL date/time value to System.DateTime"這是因為在日期 列中有"0000-00-00"數據值,要修正這個問題,你可以把這些數據設為null,或者在連接字符串中設置"Allow Zero Datetime=True” 。

 

41.MySQL視圖的FROM子句不允許存在子查詢,因此對於SQL ServerFROM 子句帶有子查詢的視圖,需要手工進行遷移。可通過消除FROM子句中的子查詢,或將FROM子句中的子查詢重構為一個新的視圖來進行遷移


免責聲明!

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



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