1 基础
1.1 简介
sqlserver是闭源的,必须运行在windows平台上的数据库。默认事务隔离级别是读已提交(commit read)。全称Microsoft® SQL Server,说以也被称为mssql
1.2 数据类型(和mysql对比)
(1)Integer
mysql | ms sqlserver | 说明 |
tinyint | tinyint | 1byte |
smallint | smallint | 2byte |
medium int | int | medium 3byte, int 4byte |
bigint | bigint | 8 byte |
(2)BigDecimal
mysql | ms sqlserver | 说明 |
decimal(m,d) | decimal(p,s) | 表示列可以存储s位小数的p位数,p范围1-65,s范围0-30 |
默认精度和小数位数为(18,0) |
(3)Floating
mysql | ms sqlserver | 说明 |
float(n) | float(24) | m=24 4byte, n=53 8byte |
double(m,d) | float(53) | |
real(m,d) | float(53) | |
其中 n 为用于存储 float 数值尾数的位数,以科学记数法表示,因此可以确定精度和存储大小。如果指定了 n,则它必须是介于 1 和 53 之间的某个值。n 的默认值为 53 |
(4) Date and Time
mysql | ms sqlserver | 说明 |
datetime | datetime2 | “yyyy-mm-dd hh:mm:ss”格式,日期和时间的组合 |
date | date | “yyyy-mm-dd”格式表示的日期值 |
time | time | hh:mm:ss”格式表示的时间值 |
TIMESTAMP | smalldatetime | “yyyymmddhhmmss”格式表示的时间戳值,TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间 |
year | samllint | “yyyy”格式的年份值 |
(5) String
mysql | ms sqlserver | 说明 |
char | char | 固定长度。char(10)耗损10字节硬盘 |
varchar | varchar | 可变长度,会根据实际存储数据的大小动态重新分配存储空间 |
time | time | hh:mm:ss”格式表示的时间值 |
nchar | char支持的是本地默认编码(char是1字节),nchar是unicode编码(char是2字节)。nchar占用空间比char大。比如char格式下一个字母只占用一个字节,汉字占用两个,nchar所有字符都占用两个字节。char 和nchar的最大容量都是8000字节,意味着char可以最多存放8000个字符,nchar最多存放4000个字符 | |
nvchar | mysql不支持nchar,nvarchar,ntext类型 | |
text | text | 如果存储的字符不超过4000,建议使用varchar |
ntext |
1.3 sqlserver和mysql语法区别
1.分页
(1)mysql:select * from table limit (start-1)*pagesize,pagesize
(2)sql server:
①方式1:三重循环
先取前20页,然后倒序,取倒序后前10条记录,这样就能得到分页所需要的数据,不过顺序反了,之后可以将再倒序回来,也可以不再排序了,直接交给前端排序
select *
from (select top pageSize *
from (select top (pageIndex*pageSize) *
from student
order by sNo asc ) -- 其中里面这层,必须指定按照升序排序,省略的话,查询出的结果是错误的。
as temp_sum_student
order by sNo desc ) temp_order order by sNo asc
②方式2:offset /fetch next(2012版本及以上才有)
select * from student order by sno offset (start-1)*pagesize rows fetch next pagesize rows only ;
2.插入
INSERT INTO table(col1,col2) values(value1,value2);
MySQL支持insert into table1 set t1 = '', t2='',但是MSSQL不支持这样写