写在前面

代码中使用的数据库名字 review 和 review_2,表名是 first 和 second

数据库的创建

数据库创建常用的几个参数设置

  1. name:逻辑文件名称
  2. filename:物理文件名称(存放在磁盘的哪个地方)
  3. size:初始化的大小
  4. maxsize:最大大小
  5. 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

生成的数据库

sql server 数据库创建日期_ci

数据库的修改

数据库的选择
use review
数据库属性查询
exec sp_helpdb review_2

查询结果

sql server 数据库创建日期_ci_02

修改数据库属性
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