SQL Server 数据库基础编程

转自:http://blog.csdn.net/ibm_hoojo/article/details/6608103

Ø  Go批处理语句

        用于同时执行多个语句

 

Ø  使用、切换数据库

  1. use master  
  2. go  


Ø  创建、删除数据库

方法1、

  1. --判断是否存在该数据库,存在就删除  
  2. if (exists (select * from sys.databases where name = 'testHome'))  
  3.     drop database testHome  
  4. go  
  5. --创建数据库,设置数据库文件、日志文件保存目录  
  6. create database testHome  
  7. on(  
  8.     name = 'testHome',  
  9.     filename = 'c:\data\students.mdf'     
  10. )  
  11. log on(  
  12.     name = 'testHome_log',  
  13.     filename = 'c:\data\testHome_log.ldf'  
  14. )  
  15. go  

 

 方法2(设置文件大小)、

  1. if (exists (select * from sys.databases where name = 'testHome'))  
  2.     drop database testHome  
  3. go  
  4. create database testHome  
  5. --默认就属于primary主文件组,可省略  
  6. on primary (      
  7.     --数据文件的具体描述  
  8.     name = 'testHome_data',             --主数据文件的逻辑名  
  9.     fileName = 'c:\testHome_data.mdf',  --主数据文件的物理名  
  10.     size = 3MB,                     --主数据文件的初始大小  
  11.     maxSize = 50MB,                 --主数据文件增长的最大值  
  12.     fileGrowth = 10%                --主数据文件的增长率  
  13. )  
  14. --日志文件的具体描述,各参数含义同上  
  15. log on (  
  16.     name = 'testHome_log',  
  17.     fileName = 'c:\testHome_log.ldf',  
  18.     size = 1MB,  
  19.     fileGrowth = 1MB  
  20. )  
  21. go  
 

方法3(设置次数据文件)、

  1. if (exists (select * from sys.databases where name = 'testHome'))  
  2.     drop database testHome  
  3. go  
  4. create database testHome  
  5. --默认就属于primary主文件组,可省略  
  6. on primary (      
  7.     --数据文件的具体描述  
  8.     name = 'testHome_data',             --主数据文件的逻辑名  
  9.     fileName = 'c:\testHome_data.mdf',  --主数据文件的物理名  
  10.     size = 3MB,                     --主数据文件的初始大小  
  11.     maxSize = 50MB,                 --主数据文件增长的最大值  
  12.     fileGrowth = 10%                --主数据文件的增长率  
  13. ),  
  14. --次数据文件的具体描述  
  15. (     
  16.     --数据文件的具体描述  
  17.     name = 'testHome2_data',            --主数据文件的逻辑名  
  18.     fileName = 'c:\testHome2_data.mdf'--主数据文件的物理名  
  19.     size = 2MB,                     --主数据文件的初始大小  
  20.     maxSize = 50MB,                 --主数据文件增长的最大值  
  21.     fileGrowth = 10%                --主数据文件的增长率  
  22. )  
  23. --日志文件的具体描述,各参数含义同上  
  24. log on (  
  25.     name = 'testHome_log',  
  26.     fileName = 'c:\testHome_log.ldf',  
  27.     size = 1MB,  
  28.     fileGrowth = 1MB  
  29. ),  
  30. (  
  31.     name = 'testHome2_log',  
  32.     fileName = 'c:\testHome2_log.ldf',  
  33.     size = 1MB,  
  34.     fileGrowth = 1MB  
  35. )  
  36. go  
   

Ø  基本数据类型

精确数字类型

类型

描述

bigint

bigint 数据类型用于整数值可能超过 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

real 的 SQL-92 同义词为 float(24),范围在-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) 个字节

 

Ø  判断表或其他对象及列是否存在

  1. --判断某个表或对象是否存在  
  2. if (exists (select * from sys.objects where name = 'classes'))  
  3.     print '存在';  
  4. go  
  5. if (exists (select * from sys.objects where object_id = object_id('student')))  
  6.     print '存在';  
  7. go  
  8. if (object_id('student''U'is not null)  
  9.     print '存在';  
  10. go  
  11.   
  12. --判断该列名是否存在,如果存在就删除  
  13. if (exists (select * from sys.columns where object_id = object_id('student'and name = 'idCard'))  
  14.     alter table student drop column idCard  
  15. go  
  16. if (exists (select * from information_schema.columns where table_name = 'student' and column_name = 'tel'))  
  17.     alter table student drop column tel  
  18. go  

 Ø  创建、删除表

  1. --判断是否存在当前table  
  2. if (exists (select * from sys.objects where name = 'classes'))  
  3.     drop table classes  
  4. go  
  5. create table classes(  
  6.     id int primary key identity(1, 2),  
  7.     name varchar(22) not null,  
  8.     createDate datetime default getDate()  
  9. )  
  10. go  
  11. if (exists (select * from sys.objects where object_id = object_id('student')))  
  12.     drop table student  
  13. go  
  14. --创建table  
  15. create table student(  
  16.     id int identity(1, 1) not null,  
  17.     name varchar(20),  
  18.     age int,  
  19.     sex bit,  
  20.     cid int  
  21. )  
  22. go  
 

Ø  给表添加字段、修改字段、删除字段

  1. --添加字段  
  2. alter table student add address varchar(50) not null;  
  3. --修改字段  
  4. alter table student alter column address varchar(20);  
  5. --删除字段  
  6. alter table student drop column number;  
  7.   
  8. --添加多个字段  
  9. alter table student   
  10. add address varchar(22),  
  11.     tel varchar(11),  
  12.     idCard varchar(3);  
  13.   
  14. --判断该列名是否存在,如果存在就删除  
  15. if (exists (select * from sys.columns where object_id = object_id('student'and name = 'idCard'))  
  16.     alter table student drop column idCard  
  17. go  
  18. if (exists (select * from information_schema.columns where table_name = 'student' and column_name = 'tel'))  
  19.     alter table student drop column tel  
  20. go  
 

Ø  添加、删除约束

  1. --添加新列、约束  
  2. alter table student   
  3.     add number varchar(20) null constraint no_uk unique;    
  4. --增加主键  
  5. alter table student    
  6.     add constraint pk_id primary key(id);    
  7. --添加外键约束  
  8. alter table student  
  9.     add constraint fk_cid foreign key (cid) references classes(id)  
  10. go  
  11. --添加唯一约束  
  12. alter table student  
  13.     add constraint name_uk unique(name);  
  14. --添加check约束  
  15. alter table student with nocheck     
  16.     add constraint check_age check (age > 1);  
  17. alter table student  
  18.     add constraint ck_age check (age >= 15 and age <= 50)  
  19. --添加默认约束  
  20. alter table student  
  21.     add constraint sex_def default 1 for sex;  
  22. --添加一个包含默认值可以为空的列  
  23. alter table student   
  24.     add createDate smalldatetime null  
  25.     constraint createDate_def default getDate() with values;  
  26.   
  27. ----- 多个列、约束一起创建--------  
  28. alter table student add     
  29.     /*添加id主键、自增*/    
  30.     id int identity constraint id primary key,     
  31.     /* 添加外键约束*/     
  32.     number int null      
  33.     constraint uNumber references classes(number),    
  34.     /*默认约束*/    
  35.     createDate decimal(3, 3)    
  36.     constraint createDate default 2010-6-1    
  37. go   
  38.   
  39. --删除约束  
  40. alter table student  drop constraint no_uk;  

 

Ø  插入数据

  1. insert into classes(namevalues('1班');  
  2. insert into classes values('2班''2011-06-15');  
  3. insert into classes(namevalues('3班');  
  4. insert into classes values('4班'default);  
  5.   
  6. insert into student values('zhangsan', 22, 1, 1);  
  7. insert into student values('lisi', 25, 0, 1);  
  8. insert into student values('wangwu', 24, 1, 3);  
  9. insert into student values('zhaoliu', 23, 0, 3);  
  10. insert into student values('mazi', 21, 1, 5);  
  11. insert into student values('wangmazi', 28, 0, 5);  
  12. insert into student values('jason'null, 0, 5);  
  13. insert into student values(nullnull, 0, 5);  
  14.   
  15. insert into student   
  16. select 'bulise' name, age, sex, cid   
  17. from student   
  18. where name = 'tony';  
  19.       
  20. --多条记录同时插入  
  21. insert into student  
  22.     select 'jack', 23, 1, 5 union  
  23.     select 'tom', 24, 0, 3 union  
  24.     select 'wendy', 25, 1, 3 union  
  25.     select 'tony', 26, 0, 5;  

 Ø  查询、修改、删除数据

  1. --查询数据  
  2. select * from classes;  
  3. select * from student;  
  4. select id, 'bulise' name, age, sex, cid from student   
  5. where name = 'tony';  
  6. select *, (select max(age) from student) from student   
  7. where name = 'tony';  
  8.   
  9. --修改数据  
  10. update student set name = 'hoho', sex = 1 where id = 1;  
  11.   
  12. --删除数据(from可省略)  
  13. delete from student where id = 1;  


 Ø  备份数据、表

  1. --备份、复制student表到stu  
  2. select * into stu from student;  
  3. select * into stu1 from (select * from stu) t;  
  4. select * from stu;  
  5. select * from stu1;  
 

Ø  利用存储过程查询表信息

  1. --查询student相关信息  
  2. exec sp_help student;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值