创建一个数据库 create database student on primary(主要数据文件) ( name=student_data,(主要数据文件逻辑名) filename='e:student_data.mdf',(文件存放地址且文件名) size=10mb,(初始容量大小) maxsize=100mb,(文件最大容量) filegrowth=10mb(文件增长量) ),(注意这里有个逗号)
(
name=student_data1,(次要数据文件逻辑名) filename='e:student_data.ndf',(文件存放地址且文件名) size=10mb,(初始容量大小) maxsize=100mb,(文件最大容量) filegrowth=10mb(文件增长量)
) log on(事务日志) ( name = student_log, filename = 'e:student_data.ldf', size = 10mb, maxsize=100mb, filegrowth=20% )
创建自定义文件组 create database xueke on primary ( name = X1, filename = 'D:SQLDATAX1.mdf', size=10mb,(初始容量大小) maxsize=100mb,(文件最大容量) filegrowth=10mb(文件增长量) ), filegroup XKGroup1 ( name = X2, filename = 'D:SQLDATAX1.ndf', size=10mb,(初始容量大小) maxsize=100mb,(文件最大容量) filegrowth=10mb(文件增长量) ) log on ( name = student_log,
filename = 'e:student_data.ldf',
size = 10mb,
maxsize=100mb,
filegrowth=20% )
约束(表的)
1.是否允许为空 【not null】
2.主键 constraint 约束名 【primary key】
3.外键 constraint 约束名 【foreign key】references 联系表名(列名)(外键联系的两表:从表里的外键的值要参考主表中主表已有的值)
4.唯一值 constraint 约束名 【unique】
5.默认值 constraint 约束名 【default‘默认值’】
6.取值范围 constraint 约束名 【check(表达式)】
use student
模板
create table 表名
(
列名1 数据类型(长度) 【约束】,
列名2 数据类型(长度) 【约束】,
列名3 数据类型(长度) 【约束】,
)
create table 系部表
{
系号 char(3) constraint px_xh primary key,
系名称 varchar(30)not null constraint uq_xmc unique,
系主任 char(8) constraint df_xzr default '未知',
电话 char(13)constraint ck_dh check(电话 like '[0-9](后面省略)')
}
方法一:列级约束(针对某一项)
create table 系部表
{
系号 char(3) constraint px_xh primary key,--主键
系名称 varchar(30)not null constraint uq_xmc unique,--非空,唯一
系主任 char(8) constraint df_xzr default '未知',--默认值
电话 char(13)constraint ck_dh check(电话 like '[0-9](后面省略)') --检查约束
}
方法二:表级约束(可以涉及多列)
--仅有主键唯一键外键检查约束这四种约束可以建立表级约束,非空和默认不可以
create table 系部表
{
系号 char(3) ,--主键
系名称 varchar(30)not null,--非空,唯一
系主任 char(8) constraint df_xzr default '未知',--默认值
电话 char(13) , --检查约束
constraint px_xh primary key(系号),
constraint uq_xmc unique(系名称),
constraint ck_dh check(电话 like '[0-9](后面省略)')
}
方法三:先建表,后建约束
create table 系部表
(
系号 char(3) ,--主键
系名称 varchar(30)not null,--非空,唯一
系主任 char(8) ,--默认值
电话 char(13) , --检查约束
)
alter table 系部表
(前面要加减号,除了最后一行)
--add constraint px_xh primary key(系号)
--add constraint uq_xmc unique(系名称)
--add constraint ck_dh check(电话 like '[0-9](后面省略)')
add constraint df_xzr default '未知' for(系主任)
问题:1.建表有几种方法:表级约束 ,列级约束 ,先建表后建约束
create table zyh_员工表 ( 员工号 char(4) not null, 性别 char(2) not null , 部门号 char(3) not null, 工资 money, 出生日期 smalldatetime, 学历 varchar(12) ) alter table zyh_员工表 add constraint pk_ygh primary key(员工号) alter table zyh_员工表 add constraint df_xb default ‘男’ for 性别 alter table zyh_员工表 add constraint fk_bmh foreign key (部门号)references zyh_部门表(部门号) alter table zyh_员工表 add constraint ck_gz check (工资>=3000 and 工资<=5000) alter table zyh_员工表 add constraint ck_xl check (学历='专科' or 学历='本科' or 学历='研究生')
自增(每个表只能有一个,不能更新)
- 数据库的备份
1.完整数据库备份
BACKUP DATABASE AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak'
2.差异性数据库备份
差异性数据库备份包括自从上一次完整性备份以来所有改变的数据页,以及备份结尾的部分活动事务日志BACKUP DATABASE AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak' WITH DIFFERENTIAL
3.事务日志备份
事务日志备份的内容是从还未被备份的事务日志开始,直到备份结尾的最后一个事务日志为止
BACKUP LOG AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak'--测试数据库备份还原代码 create database book --*完整备份数据库用name给备份集命名,加with format格式化(清除备份集)或者使用init覆盖(隐含格式化) backup database book to disk='e:full.bak' with init,name='完整备份' --查看该备份文件备份集信息 restore headeronly from disk='e:full.bak' use book go create table table1 ( id int primary key, name varchar(8) ) --获取系统时间 declare @dt datetime set @dt=getdate() select @dt--2019-09-23 14:42:17.300 select getdate()--2019-09-23 14:45:17.300 create table table2 ( id int primary key, name varchar(8) ) use master go --差异备份 backup database book to disk='e:diff.bak' with differential insert table1 values(1,'差异后') --日志备份 backup log book to disk='e:log.bak' use book go --日志备份后插入记录 insert table1 values(2,'日志后') backup log book to disk='e:log2.bak' --还原数据库 --情况:仅仅完整备份的还原 use master go restore database book from disk='e:full.bak' with replace,recovery--仅有数据库 --情况:完整备份的还原+差异还原 restore database book from disk='e:full.bak' with replace,norecovery restore database book from disk='e:diff.bak' with recovery --情况:完整备份的还原+日志还原(才能还原到某个时间点) restore database book from disk='e:full.bak' with replace,norecovery restore log book from disk='e:log.bak' with recovery ,stopat='2019-09-23 14:42:17.300' --情况:完整备份的还原+差异备份+日志还原+日志还原 restore database book from disk='e:full.bak' with replace,norecovery restore database book from disk='e:diff.bak' with norecovery restore log book from disk='e:log.bak' with norecovery restore log book from disk='e:log2.bak' with recovery --设置单用户 alter database book set single_user