服務熱線
153 8323 9821
mssql與mysql的有什么區別?哪個更好用?
MySQL可以說是MSSQL的簡化版本。理念相同,但MySQL的實現比MSSQL的需求低。MySQL是一個免費的、開放源代碼的SQL數據庫,所以免費的MYSQL很受歡迎,php+mysql,MySQL數據庫專用于PHP網站的,一般用在PHP的網頁上的,他和PHP可以說是黃金搭檔(都是開源免費的東西)。對于不是特別大流量的網站,特別勝任,效率最高,MYSQL適合小、中型網站。mysql 是個開源的數據庫Server,可運行在windows平臺、unix、linux平臺,其標準版是免費的,ASP.NET跟MYSQL不適合一起用,國內建站用PHP+MySQL+Apache很流行。
MS SQL是微軟推出的商用數據庫系統,全稱是Microsoft SQL Sever。,是微軟的東東,都需要收錢的,所以貴些,目前的大型網站一般使用Oracle或者MSSQL,JSP.PHP.ASP都可以。一般是企業級的商務網站使用的。MS SQL Server 和ASP都是微軟的產品, 互相兼容性最好, 所以ASP 網站用MS SQL Server 最好, 搭配!
asp、php只是一種解釋語言,不一定mssql不能用php,也不一定mysql非得用php,只不過asp-mssql,php-mysql是一種常用的組合。
一個網友在做mssql轉換成mysql的工作時候,總結了mssql和mysql區別的一點經驗,跟大家分享:
1 mysql支持enum,和set類型,sql server不支持
2 mysql不支持nchar,nvarchar,ntext類型
3 mysql的遞增語句是AUTO_INCREMENT,而mssql是identity(1,1)
4 msms默認到處表創建語句的默認值表示是((0)),而在mysql里面是不允許帶兩括號的
5 mysql需要為表指定存儲類型
6 mssql識別符是[],[type]表示他區別于關鍵字,但是mysql卻是 `,也就是按鍵1左邊的那個符號
7 mssql支持getdate()方法獲取當前時間日期,但是mysql里面可以分日期類型和時間類型,獲取當前日期是cur_date(),當前完整時間是 now()函數
8 mssql不支持replace into 語句,但是在最新的sql20008里面,也支持merge語法
9 mysql支持insert into table1 set t1 = ‘’, t2 = ‘’ ,但是mssql不支持這樣寫
10 mysql支持insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1)
11 mssql不支持limit語句,是非常遺憾的,只能用top 取代limt 0,N,row_number() over()函數取代limit N,M
12 mysql在創建表時要為每個表指定一個存儲引擎類型,而mssql只支持一種存儲引擎
13 mysql不支持默認值為當前時間的datetime類型(mssql很容易做到),在mysql里面是用timestamp類型
14 mssql里面檢查是否有這個表再刪除,需要這樣:
if exists (Select × from dbo.sysobjects where id = object_id(N'uc_newpm') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
但是在mysql里面只需要 DROP TABLE IF EXISTS cdb_forums;
15 mysql支持無符號型的整數,那么比不支持無符號型的mssql就能多出一倍的最大數存儲
16 mysql不支持在mssql里面使用非常方便的varchar(max)類型,這個類型在mssql里面既可做一般數據存儲,也可以做blob數據存儲
17 mysql創建非聚集索引只需要在創建表的時候指定為key就行,比如:KEY displayorder (fid,displayorder) 在mssql里面必須要:create unique nonclustered index index_uc_protectedmembers_username_appid on dbo.uc_protectedmembers
(username asc,appid asc)
18 mysql text字段類型不允許有默認值
19mysql的一個表的總共字段長度不超過65XXX。
20一個很表面的區別就是mysql的安裝特別簡單,而且文件大小才110M(非安裝版),相比微軟這個龐然大物,安裝進度來說簡直就是.....
21mysql的管理工具有幾個比較好的,mysql_front,和官方那個套件,不過都沒有SSMS的使用方便,這是mysql很大的一個缺點。
22mysql的存儲過程只是出現在最新的版本中,穩定性和性能可能不如mssql。
23 同樣的負載壓力,mysql要消耗更少的CPU和內存,mssql的確是很耗資源。
24php連接mysql和mssql的方式都差不多,只需要將函數的mysql替換成mssql即可。
25mysql支持date,time,year類型,mssql到2008才支持date和time。
附:SQL數據庫完全手冊_1
SQL是Structured Quevy Language(結構化查詢語言)的縮寫。SQL是專為數據庫而建立的操作命令集,是一種功能齊全的數據庫語言。在使用它時,只需要發出“做什么”的命令,“怎么做”是不用使用者考慮的。SQL功能強大、簡單易學、使用方便,已經成為了數據庫操作的基礎,并且現在幾乎所有的數據庫均支持SQL。
##1 二、SQL數據庫數據體系結構
SQL數據庫的數據體系結構基本上是×××結構,但使用術語與傳統關系模型術語不同。在SQL中,關系模式(模式)稱為“基本表”(base table);存儲模式(內模式)稱為“存儲文件”(stored file);子模式(外模式)稱為“視圖”(view);元組稱為“行”(row);屬性稱為“列”(column)。名稱對稱如^00100009a^:
##1 三、SQL語言的組成
在正式學習SQL語言之前,首先讓我們對SQL語言有一個基本認識,介紹一下SQL語言的組成:
1.一個SQL數據庫是表(Table)的集合,它由一個或多個SQL模式定義。
2.一個SQL表由行集構成,一行是列的序列(集合),每列與行對應一個數據項。
3.一個表或者是一個基本表或者是一個視圖。基本表是實際存儲在數據庫的表,而視圖是由若干基本表或其他視圖構成的表的定義。
4.一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。每個存儲文件與外部存儲上一個物理文件對應。
5.用戶可以用SQL語句對視圖和基本表進行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區別,都是關系(表格)。
6.SQL用戶可以是應用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。SQL用戶也能作為獨立的用戶接口,供交互環境下的終端用戶使用。
##1 四、對數據庫進行操作
SQL包括了所有對數據庫的操作,主要是由4個部分組成:
1.數據定義:這一部分又稱為“SQL DDL”,定義數據庫的邏輯結構,包括定義數據庫、基本表、視圖和索引4部分。
2.數據操縱:這一部分又稱為“SQL DML”,其中包括數據查詢和數據更新兩大類操作,其中數據更新又包括插入、刪除和更新三種操作。
3.數據控制:對用戶訪問數據的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。
4.嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程序中使用的規則。
下面我們將分別介紹:
##2 (一)數據定義
SQL數據定義功能包括定義數據庫、基本表、索引和視圖。
首先,讓我們了解一下SQL所提供的基本數據類型:(如^00100009b^)
1.數據庫的建立與刪除
(1)建立數據庫:數據庫是一個包括了多個基本表的數據集,其語句格式為:
CREATE DATABASE <數據庫名> [其它參數]
其中,<數據庫名>在系統中必須是唯一的,不能重復,不然將導致數據存取失誤。[其它參數]因具體數據庫實現系統不同而異。
例:要建立項目管理數據庫(xmmanage),其語句應為:
CREATE DATABASE xmmanage
(2) 數據庫的刪除:將數據庫及其全部內容從系統中刪除。
其語句格式為:DROP DATABASE <數據庫名>
例:刪除項目管理數據庫(xmmanage),其語句應為:
DROP DATABASE xmmanage
2.基本表的定義及變更
本身獨立存在的表稱為基本表,在SQL語言中一個關系唯一對應一個基本表。基本表的定義指建立基本關系模式,而變更則是指對數據庫中已存在的基本表進行刪除與修改。
(1)基本表的定義:基本表是非導出關系,其定義涉及表名、列名及數據類型等,其語句格式為:
CREATE TABLE[<數據庫名>.]<表名>
(<列名> 數據類型 [缺省值] [NOT NULL / NULL]
[,<列名> 數據類型 [缺省值] [NOT NULL / NULL]]......
[,UNIQUE (列名[,列名]......)]
[,PRIMARY KEY(列名)]
[,FOREIGN KEY(列名[,列名]......)REFERENCE <表名>(列名[,列名]......)]
[,CHECK(條件)] [其它參數])
其中,〈數據庫名〉.]指出將新建立的表存放于該數據庫中;
新建的表由兩部分組成:其一為表和一組列名,其二是實際存放的數據(即可在定義表的同時,直接存放數據到表中);
列名為用戶自定義的易于理解的名稱,列名中不能使用空格;
數據類型為上面所介紹的幾種標準數據類型;
[NOT NULL/NULL]指出該列是否允許存放空值,SQL語言支持空值的概念,所謂空值是“不知道”或“無意義”的值,值得注意的是數據“0”和空格都不是空值,系統一般默認允許為空值,所以當不允許為