700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【SQL Server】数据库开发指南(二)MSSQL数据库开发对于库 表 数据类型 约束等相关操作

【SQL Server】数据库开发指南(二)MSSQL数据库开发对于库 表 数据类型 约束等相关操作

时间:2022-10-05 07:29:03

相关推荐

【SQL Server】数据库开发指南(二)MSSQL数据库开发对于库 表 数据类型 约束等相关操作

文章目录

一、SQL Server 中的 GO 关键字二、切换不同数据库三、创建、删除数据库3.1 创建方式1:基本创建(适合演示和学习)3.2 创建方式2:设置存储位置以及大小等3.2 创建方式3:同时设置主与次数据文件信息 五、SQL Server 的基本数据类型5.1 精确数字类型5.2 近似数字类型5.3 日期时间类型5.5 字符串类型5.6 Unicode字符串类型5.7 二进制字符串类型 六、SQL Server 判断表或其他对象及列是否存在6.1 判断某个表或对象是否存在6.2 判断该列名是否存在,如果存在就删除 七、SQL Server 中创建、删除表八、SQL Server 中修改的表8.1 给表添加字段、修改字段、删除字段8.2 给表添加、删除约束 九、SQL Server 中操作数据9.1 插入数据9.2 查询、修改、删除数据 十、备份数据、备份表

一、SQL Server 中的 GO 关键字

GO是 T-SQL 中的一种分隔符,用于将批处理中的 T-SQL 语句分成多个批次。每个批次在 GO 后面执行。GO 通常被用于以下情况:

在一个脚本中,用于分隔多个 SQL 语句,因为 SQL Server 需要知道每个语句的结束位置。在一个事务中,用于提交或回滚一个批处理的事务。

GO并不是 T-SQL 的语句或命令,而是由 SQL Server 客户端应用程序识别的一个指令。

以下是一个使用GO分隔批处理的示例:

-- 创建新的表create table Employee (ID INT PRIMARY KEY,FirstName VARCHAR(50),LastName VARCHAR(50),Age INT)GO-- 向表中插入数据insert into Employee values (1, 'John', 'Doe', 25)insert into Employee values (2, 'Jane', 'Doe', 30)insert into Employee values (3, 'Bob', 'Smith', 40)GO-- 查询表中数据select * from Employee

注意:GO必须单独一行,不能和其他语句或命令在同一行。另外,GO 后面可以指定一个可选的参数,表示要执行多少次批处理。例如,GO 5表示要执行当前批处理 5 次。但是这个功能只能在某些客户端应用程序中使用,而在 SQL Server Management Studio 中不支持。

GO 是用于将 T-SQL 批处理分成多个批次的分隔符,通常在一个脚本中或一个事务中使用。

二、切换不同数据库

SQL Server 和其他数据库一样,都是使用use关键字,即可切换成所需要使用的数据库。

use mastergo

三、创建、删除数据库

3.1 创建方式1:基本创建(适合演示和学习)

--判断是否存在该数据库,存在就删除if (exists (select * from sys.databases where name = 'demoTest'))drop database demoTestgo--创建数据库,设置数据库文件、日志文件保存目录create database demoTeston(name = 'demoTest',filename = 'c:\data\demoTest.mdf' )log on(name = 'demoTest_log',filename = 'c:\data\demoTest_log.ldf')go

3.2 创建方式2:设置存储位置以及大小等

if (exists (select * from sys.databases where name = 'demoTest'))drop database demoTestgocreate database demoTest--默认就属于primary主文件组,可省略on primary ( --数据文件的具体描述name = 'demoTest_data',--主数据文件的逻辑名fileName = 'c:\demoTest_data.mdf',--主数据文件的物理名size = 5MB, --主数据文件的初始大小maxSize = 50MB, --主数据文件增长的最大值fileGrowth = 15% --主数据文件的增长率)--日志文件的具体描述,各参数含义同上log on (name = 'demoTest_log',fileName = 'c:\demoTest_log.ldf',size = 1MB,fileGrowth = 1MB)go

注意 上述 T-SQL 中,size与 maxSize 都是以 MB 为单位,fileGrowth可以以 MB 为单位,也可以以百分比为单位。

3.2 创建方式3:同时设置主与次数据文件信息

在 SQL Server 中,可以在创建数据库时同时设置数据文件和数据文件。主数据文件是数据库的主要数据文件,包含数据库的系统表和用户数据。次数据文件是包含用户数据的文件,可以帮助扩展数据库的存储容量并提高性能。

if (exists (select * from sys.databases where name = 'demoTest'))drop database demoTestgocreate database demoTest--默认就属于 primary 主文件组,可省略on primary ( --数据文件的具体描述name = 'demoTest_data',--主数据文件的逻辑名fileName = 'c:\demoTest_data.mdf',--主数据文件的物理名size = 5MB, --主数据文件的初始大小maxSize = 50MB, --主数据文件增长的最大值fileGrowth = 15% --主数据文件的增长率),--次数据文件的具体描述( --数据文件的具体描述name = 'demoTest2_data',--主数据文件的逻辑名fileName = 'c:\demoTest2_data.mdf', --主数据文件的物理名size = 2MB, --主数据文件的初始大小maxSize = 50MB, --主数据文件增长的最大值fileGrowth = 10% --主数据文件的增长率)--日志文件的具体描述,各参数含义同上log on (name = 'demoTest_log',fileName = 'c:\demoTest_log.ldf',size = 1MB,fileGrowth = 1MB),(name = 'demoTest2_log',fileName = 'c:\demoTest2_log.ldf',size = 1MB,fileGrowth = 1MB)go

五、SQL Server 的基本数据类型

5.1 精确数字类型

在 SQL Server 中,有几种精确数字类型可用于存储精确数字值。这些类型的特点是可以精确地存储小数点前后的数字,并避免精度丢失问题。以下是 SQL Server 中可用的精确数字类型:

5.2 近似数字类型

除了精确数字类型之外,SQL Server 还提供了近似数字类型,可以存储小数点后面一定位数的数字,但是不保证完全准确,因为存储的值会被截断或四舍五入。以下是 SQL Server 中的一些近似数字类型:

5.3 日期时间类型

5.5 字符串类型

5.6 Unicode字符串类型

5.7 二进制字符串类型

六、SQL Server 判断表或其他对象及列是否存在

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

--判断某个表或对象是否存在if (exists (select * from sys.objects where name = 'username'))print '存在';goif (exists (select * from sys.objects where object_id = object_id('student')))print '存在';goif (object_id('student', 'U') is not null)print '存在';go

6.2 判断该列名是否存在,如果存在就删除

--判断该列名是否存在,如果存在就删除if (exists (select * from sys.columns where object_id = object_id('student') and name = 'idCard'))alter table student drop column idCardgoif (exists (select * from information_schema.columns where table_name = 'student' and column_name = 'tel'))alter table student drop column telgo

七、SQL Server 中创建、删除表

--判断是否存在当前tableif (exists (select * from sys.objects where name = 'classes'))drop table classesgocreate table classes(id int primary key identity(1, 2),name varchar(22) not null,createDate datetime default getDate())goif (exists (select * from sys.objects where object_id = object_id('student')))drop table studentgo--创建tablecreate table student(id int identity(1, 1) not null,name varchar(20),age int,sex bit,cid int)go

八、SQL Server 中修改的表

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

--添加字段alter table student add address varchar(50) not null;--修改字段alter table student alter column address varchar(20);--删除字段alter table student drop column number;--添加多个字段alter table student add address varchar(22),tel varchar(11),idCard varchar(3);--判断该列名是否存在,如果存在就删除if (exists (select * from sys.columns where object_id = object_id('student') and name = 'idCard'))alter table student drop column idCardgoif (exists (select * from information_schema.columns where table_name = 'student' and column_name = 'tel'))alter table student drop column telgo

8.2 给表添加、删除约束

--添加新列、约束alter table student add number varchar(20) null constraint no_uk unique; --增加主键alter table student add constraint pk_id primary key(id); --添加外键约束alter table studentadd constraint fk_cid foreign key (cid) references classes(id)go--添加唯一约束alter table studentadd constraint name_uk unique(name);--添加check约束alter table student with nocheck add constraint check_age check (age > 1);alter table studentadd constraint ck_age check (age >= 15 and age <= 50)--添加默认约束alter table studentadd constraint sex_def default 1 for sex;--添加一个包含默认值可以为空的列alter table student add createDate smalldatetime nullconstraint createDate_def default getDate() with values;----- 多个列、约束一起创建--------alter table student add /*添加id主键、自增*/ id int identity constraint id primary key, /* 添加外键约束*/ number int null constraint uNumber references classes(number), /*默认约束*/ createDate decimal(3, 3) constraint createDate default -6-1 go --删除约束alter table student drop constraint no_uk;

九、SQL Server 中操作数据

9.1 插入数据

插入数据的关键字用insert into values关键字,也可以像其他数据库一样,使用insert into select

insert into classes(name) values('1班');insert into classes values('2班', '-06-15');insert into classes(name) values('3班');insert into classes values('4班', default);insert into student values('zhangsan', 22, 1, 1);insert into student values('lisi', 25, 0, 1);insert into student values('wangwu', 24, 1, 3);insert into student values('zhaoliu', 23, 0, 3);insert into student values('mazi', 21, 1, 5);insert into student values('wangmazi', 28, 0, 5);insert into student values('jason', null, 0, 5);insert into student values(null, null, 0, 5);insert into student select 'zhangtian' name, age, sex, cid from student where name = 'tony';--多条记录同时插入insert into studentselect 'jack', 23, 1, 5 unionselect 'tom', 24, 0, 3 unionselect 'wendy', 25, 1, 3 unionselect 'tony', 26, 0, 5;

9.2 查询、修改、删除数据

--查询数据select * from classes;select * from student;select id, 'bulise' name, age, sex, cid from student where name = 'tony';select *, (select max(age) from student) from student where name = 'tony';--修改数据update student set name = 'hoho', sex = 1 where id = 1;--删除数据(from可省略)delete from student where id = 1;

十、备份数据、备份表

常用的备份表操作 select

--备份、复制student表到stuselect * into stu from student;select * into stu1 from (select * from stu) t;select * into stu2 from student where 1=2; --只备份表结构select * from stu;select * from stu1;select * from stu2;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。