sql server是关系型数据库,以二维表的形式存放数据。

1.数据类型

首先学习以下sql server的数据类型吧。

数字类型bigint、int、tinyint、smallint、float、decima、numeric、
字符串类型char、varchar、varchar(max)、nchar、nvarchar、nvarchar(max)、
时间类型time、date、datetime、smalldatetime

bigint:表示的数字为-2的63次方到+2的63次方之间。

int:表示的数字为-2的31次方到+2的31次方之间。

smallint:表示的数字范围为-2的15次方到+2的15次方之间。

tinyint:表示的数字范围是0-255之间。

decima(m,n):表示小数不存在精度损失,m表示小数一共有多少位 小数点不算在内,n表示小数点后有几位小数。

numeric(m,n):感觉和decima差不多表示小数,m也是小数一共有多少位,n表示小数点后有几位小数。

普通编码类型

char(n):固定长度。sqlserver中字符串类型定义时要给定占多少的空间,n是字节数,比如name char(20);

表明name这个变量的数据类型是char型的然后name最多可以占20个字节,当你给的name不足20个字节的时候,便会自动的补上空格。

varchar(n):可变长度。n也表示字节数,和char的区别是当你给定的变量占的内存小于n个字节时,会根据你的字节数自动缩小,但最大是n个字节,还要加上2字节额外开销。

varchar(max):不限定占多少空间,会实际的根据你的输入自动转换长度,并加上2字节额外的开销。

字符编码类型

nchar(n):n表示的就不是字节数了,加上n表示的是字符数,一个字符占两个字节,常用作汉字的输入,一个汉字就看作一个字符,英文字母看作一个字节,不足时也自动的补上空格,且最大可占2*n个字节。

nvarchar(n):可变长度,加上n也表示的是字符数,会根据你的输入自动转换大小,占的内存数为2*你实际输入的+2字节额外开销。

nvarchar(max):不限定大小。

时间类型

date:表示日期类型的数据,一张数据表总会有这种类型的,举个例子”2012-01-12“就是一个日期类型的数据。

time:表示时间类型的数据,举个例子”12:20:55.1234567“可以精确到秒级。

datetime:时间与日期结合起来,举个例子”2022-01-20 17:22:22.1234567”

smalldatetime:也是时间与日期结合,区别是去掉了时间的秒,“2022-01-20 17:22:22”

如何创建数据库

使用脚本语言创建数据库

create databese database_name
on primary(
name=文件的名字,
filaname=物理路径,
size=文件的起始容量,
maxsize=文件最大的容量,
filegrowth=文件每次增加数据的大小
)
log on(
name=文件名字,
filename=物理路径,
size=文件最初的容量,
maxsize=文件最大的容量,
filegrowth=文件每次增加数据的大小
)

database_name指的是你要创建的数据库的名字,可以是中文。

name=文件的名字   这里不用加上后缀。

filename 指的是你这个文件在你电脑磁盘上具体的位置,一定是你提前创建好的,

size是文件的起始大小 下面列举一个具体的例子。 

create database database1
on primary(
name=a,
filename='e:\database\shiyan\a.mdf',
size=3,
maxsize=10,
filegrowth=10%
),
filegroup primary2(
name=b,
filename='e:\database\shiyan\b.ndf',
size=3,
maxsize=5,
filegrowth=10%
)
log on(
name=c,
filename='e:\database\shiyan\c.ldf',
size=3,
maxsize=5,
filegrowth=10%
)

一个数据库里只能有一个主数据文件后缀名为mdf 其他的数据文件后缀名为ndf 日志文件至少有一个后缀名为ldf,

对已有的数据库进行修改

add file:为数据库新添加一个文件(数据文件或者日志文件)

alter database database1
add file(
name=newFile,
filename='e:\database\shiyan\newFile.ndf',
size=3MB,
maxsize=unlimited,
filegrowth=2
)

每次对数据库进行修改的时候都要以alter database database_name开头

maxsize=unlimited 表示此文件的最大容量没有限制  理论上可以无限增长。

以上就为database1这个数据库添加了一个数据文件,放在你的默认文件组里面,未设定时,primary为系统默认的文件组

add log file:为数据库添加一个日志文件

alter database database1
add log file(
name=newLogFile,
filename='e:\database\shiyan\newLogFile.ldf',
size=3,
maxsize=10,
filegrowth=10%
)

日志文件是不放在文件组里的。

查看database1数据库的属性可以看到刚刚增加的数据文件newFile是放在默认文件组primary里的而日志文件则是不适用文件组。

add filegroup filegroup_name:为数据库添加一个新的文件组

alter database database1
add filegroup newFilegroup

这个时候你再往数据库里面添加数据文件的时候就可以指定它放在哪个文件夹里面了

to filefroup filegroup_name:指定你的数据文件放在数据库的哪个文件组里面

alter database database_name
add file(
name=newFile2,
filename='e:\database\shiyan\newFile2.ndf',
size=4,
maxsize=unlimited,
filegrowth=3
)
to filegroup newFilegroup

 在往数据库里面放入数据文件的时候指定了它放在哪个文件组里面,不指定的画就放在默认文件组primary里

modify filegroup filegroup_name:修改数据库文件组的属性

alter database database1
modify filegroup newFilegroup default

将上面我们创建的newFilegroup文件组修改为默认文件组,修改了之后当你再往数据库里面添加数据文件的时候,且没有使用to filegroup语句的时候就放在这个文件组里面了。当然一个数据库只能有一个默认文件组。

remove file file_name:删除数据库中的文件 ,可以是日志文件也可以是数据文件,但是删除不了主数据文件和主日志文件

alter database database1
remove file newLogFile  --删除日志文件 c.ldf是主日志文件删除不了
alter database database1
remove file newFile     --不能删除以mdf后缀的主数据文件

remove filegroup filegroup_name:删除数据库中的文件组,但是当你的文件组里面不为空,意思就是你的文件组里面装有别的文件这个时候删除不了 需要先使用remove file file_name 将文件组的文件全部删除 保证文件组为空才可以删除该文件组

alter database database1
remove filegroup primary2

modify file:修改数据库已有的文件的属性。

alter database database1
modify file(
name=newFile2  --根据你给的文件的名字找到这个文件
size=4, --修改了这个文件的一些属性
filegrowth=20%
)

modify name:修改数据库的名字。

alter database database1
modify name=database2

将数据库database1成功改名为database2

exec sp_renamedb old_name,new_name:修改数据库的名字

exec sp_renamedb database2,database1

将database2改名为database1。

drop database name1,name2,name3.......:删除数据库,可一次性删除多个数据库

drop database database1

将数据库database1删除

更多推荐

SQL SERVER相关知识