您的位置:首页 > 数据库

SQL Server 数据库基础语法、数据类型

2012-04-10 16:17 441 查看
创建/删除数据库:

--Go批处理语句用于将go之前的语句合并为为一个语句块,同时执行多个语句


--使用、切换数据库


usemaster


go




--创建、删除数据库


--示例1


if(exists(select*fromsys.databaseswherename='testHome'))


dropdatabasetestHome


go


createdatabasetestHomeon


(


name='testHome',


filename='c:\data\students.mdf'


)


logon


(


name='testHome_log',


filename='c:\data\testHome_log.ldf'


)


go


--示例2


if(exists(select*fromsys.databaseswherename='testHome'))


dropdatabasetestHome


go


createdatabasetestHomeonprimary//默认就是primary,onprimary是可省略的


(


name='testHome_data',


fileName='c:\testHome_data.mdf',


size=3MB,


maxSize=50MB,


fileGrowth=10%


)


logon


(


name='testHome_log',


fileName='c:\testHome_log.ldf',


size=1MB,


fileGrowth=1MB


)


go


Ø基本数据类型

精确数字类型

bigintbigint数据类型,用于整数值可能超过int数据类型支持范围的情况,范围:-2^63到2^63-1,存储空间8字节
int整数数据类型,范围在-2^31到2^31-1,存储空间4字节
smallint整数,范围在-2^15到2^15-1,存储空间2字节
tinyint范围在0到255,存储空间1字节
bit可以取值为1、0或NULL的整数数据类型,每8个bit占一个字节,16bit就2个字节,24bit就3个字节
decimal带固定精度和小数位数的数值数据类型,有效值从-10^38+1到10^38-1
numeric同上
money货币或货币值的数据类型,范围在-922,337,203,685,477.5808到922,337,203,685,477.5807
smallmoney货币类型,-214,748.3648到214,748.3647
近似数字类型

float表示浮点数值数据的大致数值数据类型。浮点数据为近似值;范围-1.79E+308至-2.23E-308、0以及2.23E-308至1.79E+308
real范围在-3.40E+38至-1.18E-38、0以及1.18E-38至3.40E+38
日期时间类型

datetime表示某天的日期和时间的数据类型,范围在1753年1月1日到9999年12月31日
smalldatetime范围在1900年1月1日到2079年6月6日
字符串类型

char固定长度或可变长度的字符数据类型,范围在范围为1至8,000字节
text最大长度为2^31-1
varchar固定长度或可变长度的字符数据类型,最大存储大小是2^31-1个字节
Unicode字符串类型

nchar字符数据类型,长度固定,在必须在1到4,000之间
nvarchar可变长度Unicode字符数据。最大存储大小为2^31-1字节
ntext长度可变的Unicode数据,最大长度为2^30-1(1,073,741,823)个字符
二进制字符串类型

binary长度为n字节的固定长度二进制数据,范围从1到8,000的值。存储大小为n字节。
varbinary可变长度二进制数据。n可以取从1到8,000的值。最大的存储大小为2^31-1字节
image长度可变的二进制数据,从0到2^31-1(2,147,483,647)个字节
基础操作的语法:

--判断某个表或对象是否存在


if(exists(select*fromsys.objectswherename='classes'))


print'存在';


go


if(exists(select*fromsys.objectswhereobject_id=object_id('student')))


print'存在';


go


if(object_id('student','U')isnotnull)


print'存在';


go




--判断该列名是否存在,如果存在就删除(删除列需要确保这个列中没有数据)


if(exists(select*fromsys.columnswhereobject_id=object_id('student')andname='idCard'))


altertablestudentdropcolumnidCard


go


if(exists(select*frominformation_schema.columnswheretable_name='student'andcolumn_name='tel'))


altertablestudentdropcolumntel


go




--判断是否存在当前table


if(exists(select*fromsys.objectswherename='classes'))


droptableclasses


go


createtableclasses(


idintprimarykeyidentity(1,2),


namevarchar(22)notnull,


createDatedatetimedefaultgetDate()


)


go


if(exists(select*fromsys.objectswhereobject_id=object_id('student')))


droptablestudent


go




--创建table


createtablestudent(


idintidentity(1,1)notnull,


namevarchar(20),


ageint,


sexbit,


cidint


)


go




--添加字段


altertablestudentaddaddressvarchar(50)notnull;


--修改字段


altertablestudentaltercolumnaddressvarchar(20);


--删除字段


altertablestudentdropcolumnnumber;




--添加多个字段


altertablestudent


addaddressvarchar(22),


telvarchar(11),


idCardvarchar(3);




--添加新列、约束


altertablestudentaddnumbervarchar(20)nullconstraintno_ukunique;


--增加主键


altertablestudentaddconstraintpk_idprimarykey(id);


--添加外键约束


altertablestudentaddconstraintfk_cidforeignkey(cid)referencesclasses(id);


--添加唯一约束


altertablestudentaddconstraintname_ukunique(name);


--添加check约束


altertablestudentwithnocheckaddconstraintcheck_agecheck(age>1);


altertablestudentaddconstraintck_agecheck(age>=15andage<=50);


--添加默认约束


altertablestudentaddconstraintsex_defdefault1forsex;


--添加一个包含默认值可以为空的列


altertablestudentaddcreateDatesmalldatetimenull


constraintcreateDate_defdefaultgetDate()withvalues;




--多个列、约束一起创建


altertablestudentadd


/*添加id主键、自增*/


idintidentityconstraintidprimarykey,


/*添加外键约束*/


numberintnullconstraintuNumberreferencesclasses(number),


/*默认约束*/


createDatedecimal(3,3)constraintcreateDatedefault2010-6-1


go




--删除约束


altertablestudentdropconstraintno_uk;




--多条记录同时插入


insertintostudent


select'jack',23,1,5union


select'tom',24,0,3union


select'wendy',25,1,3union


select'tony',26,0,5;




--备份、复制student表到stu


select*intostufromstudent;


select*intostu1from(select*fromstu)t;




--查询student相关信息


execsp_helpstudent;


execsp_helpclasses;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: