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不支持这样写