SQLServer详细教程
⼀、初识SQL Server
1、数据⽂件与⽂件组、⽇志⽂件
数据⽂件
SQL Server 数据库具有以下3种类型的⽂件。
数据⽂件:⽤来存放数据,
(1)主数据⽂件
⼀个数据库必须有且只有⼀个主数据⽂件,其扩展名为.mdf
(2)次数据⽂件
⼀个数据库可以没有也可以有多个次数据⽂件,其扩展名为.ndf
(3)事务⽇志⽂件(.ldf )
⽇志⽂件为数据库的恢复提供⽇志信息。每个数据库⾄少包含⼀个⽇志⽂件,也可以有多个。⽇志⽂件的扩展名建议为.ldf。
数据库⽂件组
出于分配和管理的⽬的,可以将数据库⽂件分成不同的⽂件组。每个⽂件组有⼀个组名。⽂件组分主⽂件组和次⽂件组。
(1)主⽂件组
主⽂件组包含主数据⽂件和任何没有明确指派给其它⽂件组的其它⽂件。
(2)⽤户定义⽂件组(次⽂件组)
⽤户定义⽂件组是在 create database 或 alter database 语句中,使⽤ FILEGROUP 关键字指定的⽂件组。
⼀个⽂件只能属于⼀个⽂件组,⼀个⽂件组也只能被⼀个数据库使⽤。
事务⽇志
事务⽇志是⼀个与数据库⽂件分开的⽂件。它存储对数据库进⾏的所有更改,并记录全部插⼊、更新、删除、提交、回退和数据库模式变化。
事务⽇志是任何数据库的关键组成部分,是备份和恢复的重要组件,如果系统出现故障,它将成为最新数据的重要来源。
在默认的情况下,所有数据库都使⽤事务⽇志。事务⽇志的使⽤是可选的,但是,除⾮您因特殊原因⽽不使⽤,否则您应始终使⽤它。运⾏带有事务⽇志的数据库可提供更强的故障保护功能、更好的性能以及数据复制功能。
数据库快照
2、系统数据库
SQL Server 包含master、model、msdb和tempdb4个系统数据库
(1)Master数据库
系统最重要的数据库,记录了所有系统信息。如所有的
登录信息、系统设置信息、SQL Server的初始化信息和其它
系统数据库及⽤户数据库的相关信息。
(2)Model数据库
decimal是整数数据类型是模板数据库,为新建⽴的数据库提供模板和原型。
(3)Tempdb数据库
是⼀个临时数据库,它为所有的临时表、临时存储过程及其它临时操作提供存储空间。
(4)Msdb数据库
是代理服务数据库,为其警报、任务调度和记录操作员的操作提供存储空间。
3、掌握建⽴、修改和删除数据库的⽅法
建⽴数据库
(1)使⽤对象资源管理器建⽴数据库
(2)使⽤T-SQL命令建⽴数据库
建⽴数据库的最简⽅法
CREATE DATABASE database_name
建⽴数据库的完整语法
CREATE DATABASE database_name
[ ON [ PRIMARY ]
[<filespec>[,…n]]
]
[ LOG ON {<filespec>[,…n]}]
其中filespec在实际应⽤中⽤下⾯相应代码替换:
<filespec>::=
([ NAME=logical_file_name,]
FILENAME=‘os_file_name’
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment])
例⼦:
CREATE DATABASE score3
ON PRIMARY
( NAME=score3_data,
FILENAME='D:\sql\score3_data.mdf’,
SIZE=5MB,
MAXSIZE=20MB,
FILEGROWTH=10%
),
( NAME=score3_data1,
FILENAME=’ D:\sql\score3_data1.ndf’,
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=1MB
) LOG ON
( NAME=score3_log,
FILENAME=’ D:\sql\score3_log.ldf’,
SIZE=2MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=1MB )
修改和删除数据库
使⽤对象资源管理器修改数据库
使⽤T-SQL命令修改数据库
alter database database_name
{ADD FILE<filespec>[,…n]
|ADD LOG FILE <filespec>[,…n]
|ADD FILEGROUP group_name
|REMOVE FILE logical_file_name
|REMOVE FILEGROUP group_name
|MODIFY FILE <filespec>
|MODIFY NAME=new_databasename
|MODIFY FILEGROUP group_name
NAME=new_groupname }
Database_name:要修改的数据库的名称。
ADD FILE<filespec>[,…n]:添加数据⽂件。
ADD LOG FILE <filespec>[,…n]:添加⽇志⽂件。
ADD FILEGROUP group_name:添加⽂件组。REMOVE FILE logical_file_name:删除⽂件,是物理删除。REMOVE FILEGROUP group_name:删除⽂件组。MODIFY FILE <filespec>:修改数据库⽂件。
MODIFY NAME=new_databasename:重命名数据库。
注意点:
修改⽂件属性时,不需指定物理⽂件名。
⽂件⼤⼩不能⼩于初始容量。
删除⽂件组前必须保证该⽂件组为空,若其中有⽂件则应先删除 。
⼆、创建和管理数据表
1、掌握系统数据类型
SQL Server的数据类型是SQL Server预先定义好的,可以直接使
⽤。SQL Server提供以下系统数据类型。
(1)bit
状态类型,可以取值为1或0。
(2)整型
(1)bigint(长整型):8个字节
(2)int(基本整型):4个字节
(3)Smallint (短整型):2个字节
(4)Tinyint(微整型) :1个字节 ,表⽰⽆符号整数,其取值范围0~255.
(3)精确数值型
包括decimal和numeric两种类型,该数值型数据由整数部分和⼩数部分组成,存储数值的范围为-10e38+1~10e38-1。
格式:
decimal(p,[s])或者numeric(p,[s])
其中:p(有效位数,⼩数点左右两侧位数之和)
s(⼩数位数),s默认值为0,0<=s<=p
例:decimal(10,6)
表⽰数中共有10位数,基中整数占4位,⼩数占6位。
decimal和numeric功能等价
(4)近似数据类型
⽤科学计数法来表⽰浮点数的数据类型。浮点数为近似值,包括re
al和float两种类型。两者的区别和能表⽰的数值范围如表所⽰。
数据类型数据范围占⽤存储空间
real-3.40E+38~3.40E+384个字节
float-1.79E+308~1.79E+3088个字节
real:精确到7位⼩数
float:可以精确到第15位⼩数,默认占⽤8个字节的存储空间。Float数据类型也可以写为float(n)的形式,n为1到15之间的整数值。当n取1到7时,系统⽤4个字节存储它;当n取8到15时,⽤8个字节存储它。
(5)字符数据类型
字符型数据是指由字母、数字和其他⼀些特殊符号(如$,@)构成的字符串。在引⽤字符串时要⽤单引号括起来。字符型包括char、varchar、nchar和nvarchar四种类型。
1)char(n)
存放固定长度的n个字符数据。若输⼊字符长度不⾜n时,则⽤空格补⾜。1≤n≤8000。
2)varchar(n)
存放可变长度的n个字符数据。若输⼊字符长度不⾜n时,则按实际输⼊长度存储。1≤n≤8000。
3)nchar[(n)] :可存储1~4000个定长Unicode字符串,字符串长度在创建时指定;如未指定,默认为nchar(1)。每个字符占⽤2bytes 存储空间。
4)nvarchar[(n)] :可存储最⼤值为4000个字符可变长Unicode字符串。可变长Unicode字符串的最⼤长度在创建时指定,如nvarchar(50),每个字符占⽤2bytes存储空间。
(6)货币型(低版本的类型)
⽤⼗进制数来表⽰货币值。使⽤货币型数据时必须在数据前加上货币符号($),当货币值为负数时,在符号和数据之间加负号,
如:$123,$-231。
包括money和smallmoney两种类型。
数据类型数据范围占⽤存储空间
money-2E+63~2E+63-18个字节
smallmoney-2E+31~2E+31-14个字节
(7)⽂本型
当存储的字符数⽬⼤于8000时使⽤⽂本型,⽂本型包括text和ntext两种。
text:⽤来存储ASCLL编码字符数据,最多可以存储231-1(约20亿)个字符。在定义Text数据类型时,不需要指定数据长度.
ntext:⽤来存储Unicode编码字符型数据,最多可能存储230 -1(约10亿)个字符,其存储长度为实际字符个数的两倍,因为Unicode 字符⽤双字节表⽰。
(8)⽇期型
旧类型:包括smalldatetime和datetime。
⽇期型数据以字符的形式表⽰,即要⽤单引号括起来。
数据类型⽇期范围占⽤存储空间
smalldatetime1900年1⽉1⽇—2079年6⽉6⽇4个字节
datetime1753年1⽉1⽇—9999年12⽉31⽇8个字节
(9)table数据类型
table数据类型是⼀种特殊的数据类型,⽤于存储结果集以进⾏后续处理。
(10)⼆进制数据类型
binary[(n)]:存放n字节固定长度的⼆进制数据。1≤n≤8000。
varbinary[(n)]:存放n字节可变长度的⼆进制数据,
1≤n≤8000。
(11)⾃定义数据类型
使⽤sp_addtype创建⽤户⾃定义数据类型的语法如下:
sp_addtype[@typename=]type,
[@phystype=]system_data_type
[,[@nulltype=]'null_type']
参数说明:
①[@typename=]type:
指定创建的⽤户⾃定义数据类型的名称。
⽤户⾃定义数据类型名称必须遵循标识符的命名规则,⽽且在数据库中唯⼀。
②[@phystype=]system_data_type:
指定⽤户⾃定义数据类型所依赖的系统数据类型。
③[@nulltype=]‘null_type’:指定⽤户⾃定义数据类型的可空属性,
即⽤户⾃定义数据类型处理空值的⽅式。取值为“NULL”,“NOT NULL”或“NONULL”。
例 在score数据库中,创建名为“sex_type”⾃定义数据类型,依赖字符型数据,宽度为2,不允许为空。
USE score
EXEC sp_addtype sex_type,'char(5)','not null'
可以像使⽤系统数据类型⼀样使⽤⾃定义数据类型。
例 在score数据库的student表中的sex字段的数据类型修改为sex_type。
USE score
ALTER TABLE student
ALTER COLUMN sex sex_type
删除⾃定义数据类型
使⽤sp_droptype删除⽤户定义数据类型的语法如下:
Sp_droptype {‘类型名’}
例 把score数据库中student表的sex字段的数据类型修改为char(2),然后再删除⾃定义数据类型sex_type。
USE score
ALTER TABLE student
ALTER COLUMN sex char(2)
GO
EXEC sp_droptype sex_type
注意:当⾃定义数据类型被使⽤状态下不能被删除
2、建⽴、修改和删除表
(1)建⽴表
使⽤对象资源管理器建⽴表
使⽤T-SQL语句建⽴表
CREATE TABLE <table_name>
(列名数据类型[NOT NULL/NULL][IDENTITY(初始值,步长值)][DEFAULT<;默认值>]
[,…n]
[,UNIQUE (列名[,…n])]
[,PRIMARY KEY(列名[,…n])]
[,FOREIGN KEY(列名) REFERENCES table_name [(列名)]
[,CHECK(条件)])
说明
列名:⽤户⾃定义属性的名称,应遵守标识符的命名规则。
数据类型:⽤来指定该列存放何种类型的数据。
NOT NULL | NULL:指定该列是否允许存放空值。
IDENTITY(初始值,步长值):⽤来指定标识列及其初始值和步长值。
UNIQUE:指定唯⼀性约束。
PRIMARY KEY:建⽴主键约束;
FOREIGN KEY:建⽴外键约束,括号中所指定的列即为外键; REFERENCES⽤来指定外键所参照的表,表名后⾯的列名⽤来指定外键所参照的列。
DEFAULT:为指定的列定义⼀个默认值,当该列没有录⼊数据时,则⽤默认值代替。
CHECK:定义检查约束,使⽤指定条件对存⼊表中的数据进⾏检查,以确定其合法性,提⾼数据的安全性。
例 在score数据库中建⽴⼀个名为teach的教师任教表,
并定义主键约束和外键约束。
Use score
Go
CREATE TABLE teach
( teacher_id char(4) NOT NULL,
course_id char(5) NOT NULL,
primary key(teacher_id,course_id),
FOREIGN KEY(teacher_id) REFERENCES teacher(teacher_id),
FOREIGN KEY(course_id) REFERENCES course(course_id)
)
例 在score数据库中建⽴⼀个名为course的课程信息表,
并定义主键约束和课程名称字段的唯⼀性约束。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论