cast(变量 as 类型)
convert(类型,变量)
1. MSSQL 2005 基本数据类型
1)字符串类型
非unicode:char 最多存储8000个字符 char(10)
varchar 2^31. 变长 varchar(30) text
unicode: nchar,nvarchar,ntext
使用 UNICODE UCS-2 字符集(全球大部分字符都有)比如欧洲字母表很小,255个字符足够了。但是韩国,日本,中国的中文没办法全够。 unicode 使用2个字节,
,用2个字节表示一个字符。 即2^16=65536 字符
使用规则:当固定字长用char,变长varchar; nchar,nvarchar是当不同国家字符在不同机器上 可以无误显示。
2)数值类型
精确数字
bigint 8字节。 -2^63到2^63-1
int 4字节 。 -2^31到2^31-1
smallint 2字节 -2^16到2^16-1
tinyint 1字节 0到255
近似数字
float
real
3)时间类型
datetime 精确到3.33毫秒
smalldatetime 精确到分钟
4)
二进制数据
binary ,varbinary,image
5)其他数据类型
cursor
timestamp 时间数字
sql_variant
uniqueidentifier
table
xml
2.check 约束
IF OBJECT_ID ('dbo.Vendors', 'U') IS NOT NULL
DROP TABLE dbo.Vendors;
GO
CREATE TABLE dbo.Vendors
(VendorID int PRIMARY KEY, VendorName nvarchar (50),
CreditRating tinyint)
GO
ALTER TABLE dbo.Vendors ADD CONSTRAINT CK_Vendor_CreditRating
CHECK (CreditRating >= 1 AND CreditRating <= 5)
或者企业管理器编辑约束
//约束了creditRating只能插入 1-5之间的值
select * from vendors
insert into vendors values('1','sdf','6') //插入的6大于5 就会报错
执行结果:
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 CHECK 约束"CK_Vendor_CreditRating"冲突。该冲突发生于数据库"companyData",表"dbo.Vendors", column 'CreditRating'。
语句已终止。
*default 约束
USE [companyData]
GO
ALTER TABLE [dbo].[companyKey] ADD DEFAULT ((0)) FOR [isUsed]