写在前面
代码中使用的数据库名字 review 和 review_2,表名是 first 和 second
数据库的创建
数据库创建常用的几个参数设置
- name:逻辑文件名称
- filename:物理文件名称(存放在磁盘的哪个地方)
- size:初始化的大小
- maxsize:最大大小
- filegrowth:增量(可以选择百分比,数值和 unlimited)
use master -- 使用当前数据库
go -- 批处理,类似事务(在两个 go 之间)
create database review_2
on primary -- 一个数据库只能有一个主文件(默认文件)
(
name = review_2_Data, -- 逻辑名称
filename = 'D:\review_2_Data.MDF', -- 物理名称
size = 10, -- 初始大小
maxsize = unlimited, -- 最大值:无限制
filegrowth = 5 -- 每次增量为 5 MB
)
log on -- 事务日志文件
(
name = review_2_Log,
filename = 'D:\review_2_Data.LDF',
size = 10,
maxsize = 1000,
filegrowth = 10% -- 按照百分比增长
)
go
生成的数据库
数据库的修改
数据库的选择
use review
数据库属性查询
exec sp_helpdb review_2
查询结果
修改数据库属性
alter database review_2
modify file
(
name = review_2_Data, -- 必须出现 name
size = 110
)
增加数据库属性
alter database review_2
add file
(
name = review_2_Data, -- 必须出现 name
size = 110
)
分离和附加数据库
分离
use review
go
exec sp_detach_db @dbname = 'review'
go
附加
use review
go
exec sp_attach_db @dbname = 'review',filename = '你存储的磁盘位置'
go
删除数据库
drop database review
创建表
create table first
(
-- not null 定义非空,primary key 定义主键
cid int not null primary key,
cname varchar(255),
-- check 定义了域完整性,此处是 check 也就是值范围
cage char(4) check( cage like '[0-9][0-9][0-9][0-9]'),
)
create table seconde
(
cmid int not null primary key,
--外键关联 first 表的 cid
cid int foreign key references first(cid)
)
create table SC
(
sno char(10) foreign key references Student(sno),
cno char(4) foreign key references Course(cno),
grade int ,
-- 创建组合主键
primary key(sno,cno)
)
修改表
增加属性
alter table first add nothing int
修改属性
alter table first alter column nothing varchar(255)
-- 修改数据表的某列为不空
alter table SC
alter column cid int not null
删除属性
alter table first drop column nothing
数据库完整性的实现
实体完整性(主键约束)
列级约束
cmid int not null primary key
表级约束
cid int not null,
cname varchar(255),
primary key (cid,cname)
修改已经存在的表中的属性为主键(前提是该属性不为空)
alter table SC
add primary key (cid)
参照完整性(外键约束)
列级约束
cid int references second(cid)
表级约束
foreign key (cid) references second(cid)
修改表-在已存在的表中添加外键
alter table SC
add constraint FK_cid foreign key (cid) references course (cid)
域完整性
默认约束(default)
create table second
(
cid int not null primary key,
cname varchar(255) default 'zhangyu', -- 设置了默认约束,当没有给该属性键入值
的时候,默认使用 zhangyu
cage char(2) check( cage like '[0-9][0-9]')
)
如果表存在,需要添加默认值(def 是设置的默认约束的名称)
alter table second add constraint def default 'zhangyu' for cname
删除默认约束
alter table second drop constraint def
检查约束(check)
create table second
(
cid int not null primary key IDENTITY, -- identity 是 t-sql 语句中实现自动增长的方式
cage char(4) check(cage >= 0 and cage <= 100) -- 不能用 && 之类的判断方式
)
在以有表中增加检查约束
alter table second add constraint csex check(csex in ('m','f'))
唯一约束(unique)
ciid int unique
创建索引
创建一个唯一的聚集索引
create unique clustered index index_name
on second (cname)
创建一个唯一的非聚集索引
create unique nonclustered index index_name
on second (cname)
删除索引
drop index second.index_name