此博客记录阿伟学习数据库之路
创建数据库(用SQL语言创建)
create database Teach
on
(name=Teach_Data,
filename='D:\TeachData.mdf',
size=10,
maxsize=500,
filegrowth=10)
log on
(name=Teach_Log,
filename='D:\TeachData.ldf',
size=5,
maxsize=500,
filegrowth=5)
关于文件的扩展名:
.mdf:主要数据文件
.ndf:次要数据文件
.ldf:事务日志文件
修改数据库
修改文件的增容方式:
alter database Teach
modify file
(name=Teach_Data,
filegrowth=20)
添加次要数据文件:
alter database Teach
add file(
name=Teach_Datanew,
filename='D:\Teach_Datanew.ndf',
size=100,
maxsize=200,
filegrowth=10)
删除次要数据文件:
alter database Teach
remove file Teach_Datanew
用系统存储过程显示
数据库结构:
Sp_helpdb[[@dbname=]'name']
文件信息:
Sp_helpfile[[@filename=]'name']
文件组信息:
Sp_helpfilegroup[[@filegroupname=]'name']
数据类型
整数型:bigint,int,smallint,tinyint,bit
数值型:精确数值型:numeric,decimal 近似数值型:float,real
ps: numeric(p,s),其中p表示数据长度,s表示小数位数
字符型:char(定长),varchar(非定长),nchar(定长),nvarchar(非定长),text(定长),ntext(非定长)
char,varchar用来存放非Unicode字符(即ASCII字符),一个字符占一个字节
nchar,nvarchar用来存放Unicode字符,一个字符占两个字节
text存放非Unicode字符,ntext存放Unicode字符,最大可存储2GB
二进制数据型:binary(定长),varbinary(非定长),image
前两个最多可表示8000个字节,任何类型的数据都可存储在这种类型的字段中,不需要数据转换
image类型可以存储图片本身,这时需要事先将图片转化为二进制流的形式,也可以存储图片路径
特殊类型:timestamp(时间戳),uniqueidentifier(唯一标识符),sql_variant,table(用于存储对表或视图处理后的结果集,这一类型使得变量可以存储一个表,从而使函数或过程返回查询结果更加方便、快捷)
创建数据表 (用SQL语言创建)
create table S
(SNAME char(6),
SEX nchar(1) default '男',//缺省值为'男',即如果该空为NULL,则以'男'填充
primary key(SNNAME),//设置主键
foreign key(SEX) references T(SEX)//设置外键
)
定义数据表的约束
1.NULL / NOT NULL约束
create table S
(SNAME char(6),
SNUM varchar(6) not null //非空约束
)
2.UNIQUE约束(唯一约束)
指明基本表在某一列或多个列的组合上的取值必须唯一
(使用UNIQUE约束的字段允许为NULL值
一个表中可以允许有多个UNIQUE约束
UNIQUE约束用于强制在指定字段上创建一个UNIQUE索引,缺省为非聚集索引)
列约束:
create table S
(SNAME char(6) unique,//设置SNAME为唯一键,不允许出现重复姓名
SNUM varchar(6) not null
)
表约束:
create table S
(SNAME char(6) unique,//设置SNAME为唯一键,不允许出现重复姓名
SNUM varchar(6) not null,
SEX nchar(1),
constraint S_UNIQ unique(SNAME,SEX) //如果在姓名列上出现了重复姓名,就不能对于这个重复的姓名再有相同的性别
)
3.PRIMARY KEY约束(主键约束)
不能重复,不能为空
列约束:
create table S
(SNAME char(6) primary key,//设置SNAME为主键,不允许出现重复姓名,不能为空,注意和唯一键unique的区别,unique可以允许有一个空
SNUM varchar(6) not null,
SEX nchar(1)
)
表约束:
create table SC
(SNAME varchar(6) not null,
CNAME varchar(6) not null,
SCORE numeric(4,1),
primary key(SNAME,CNAME) //设置SNAME,CNAME为主键
)
4.FOREIGN KEY约束(外键约束)
create table SC
(SNAME varchar(6) not null foreign key references S(SNAME),
CNAME varchar(6) not null foreign key references C(CNAME), //外键约束
SCORE numeric(4,1)
)
5.CHECK约束
用来检查字段值所允许的范围
一个表中可以定义多个CHECK约束
每个字段只能定义一个CHECK约束
在多个字段上定义的CHECK约束必须为表约束
当执行INSERT,UPDATE语句时,CHECK约束将验证数据
create table SC
(SNAME varchar(6) not null,
CNAME varchar(6) not null,
SCORE numeric(4,1) check( SCORE >= 0 AND SCORE <= 100 )
)
修改数据表
1.增加新列:
alter table S add CLASS varchar(6)
使用这种方法增加的新列自动填充为NULL,因此不能为增加的新列指定NOT NULL约束
2.增加完整性约束:
alter table SC add check(SCOER between 0 and 100)
3.修改数据表结构
把S表中的SNAME列加宽到12个字符:
alter table S alter column SNAME nvarchar(12)
删除S表中的主键:
alter table S drop constraint SNAME
删除数据表
cascade(级联式)方式:执行drop语句时,把其下属的视图、索引等所有元素全部撤销。
restrict(约束式)方式:执行drop语句时,只有其没有任何下属元素时,才能撤销数据表,否则拒绝执行drop语句。