数据库基本代码

第一讲建库
create database thinkbank
on
(
name=thinkbank_data, --设置主数据库文件名
filename='d:\thinkbank_data.mdf', --主数据库文件路径
size=3mb, --设置主数据库初始值
maxsize=200mb, --设置主数据库总容量
filegrowth=3% --设置自动增长值的大小
),
(
name=thinkbank_data1,
filename='d:\thinkbank_data1.ndf',
size=3mb,
maxsize=400mb,
filegrowth=3mb
)
log on
(
name=thinkbank_log,
filename='d:\thinkbank_log.ldf',
size=3mb,
maxsize=100mb,
filegrowth=2mb
),
(
name=thinkbank_log1,
filename='d:\thinkbank_log1.ldf',
size=3mb,
maxsize=100mb,
filegrowth=2mb
)


--添加二级数据库文件
alter database thinkbank
add file
(
name=thinkbank_data3,
filename='d:\thinkbank_data3.ndf',
size=3mb,
maxsize=400mb,
filegrowth=3mb
)

--修改数据库名
sp_renamedb 'thinkbank','nfcc09009'

--切换数据库
use nfcc09009

--删除数据库
drop database nfcc09009

--删除文件
alter database 库名
remove file 文件名

--增加文件组
alter database nfcc09009
add filegroup use1

--添加文件到文件组中
alter database nfcc09009
add file
(
name=thinkbank_data6,
filename='d:\thinkbank_data6.ndf',
size=3mb,
maxsize=400mb,
filegrowth=3mb
)
to filegroup use1


第二讲表操作
--创建数据库
create database thinkbank
on
(
name=thinkbank_data,
filename='d:\thinkbank_data.mdf',
size=3mb,
maxsize=50mb,
filegrowth=10%
),
(
name=thinkbank_data1,
filename='d:\thinkbank_data1.ndf',
size=3mb,
maxsize=90mb,
filegrowth=3mb
)
log on
(
name=thinkbank_log,
filename='d:\thinkbank_log.ldf',
size=3mb,
maxsize=40mb,
filegrowth=3mb
)
use thinkbank --切换数据库
--建表
create table nfcc09003
(
学号 varchar(9) primary key,
姓名 text not null,
性别 bit,
班级 varchar(9) not null,
年龄 int,
电话 varchar(12),
住址 varchar(100),
民族 text,
学历 text
)
--增加字段
Alter table nfcc09003 add 身高 int
--修改字段
Alter table nfcc09003 alter column 身高 varchar
--删除字段
Alter table nfcc09003 drop column 身高
--修改表名
sp_rename nfcc09003,nfcc09006
--查看表属性
sp_help nfcc09006
--插入数据
insert into nfcc09006 (学号,姓名,性别,班级,年龄,电话,住址,民族,学历)
values('tb0911111','小三',0,'nfcc09006','21','88888888','qerwre','汉族','小本')
--修改数据
update nfcc09006
set 姓名='小飞',年龄='88',班级='afcc09009'
where 学号='tb0911112'
--删除数据
delete from nfcc09006 学历
where 学号='tb0911112'



--第三讲查询语句的使用
--查询表中所有的信息,*表示所有信息
--格式: select * from 表名
use NorthwindCS
go
select * from 产品
-----------------------------------------------------
--查询表中某几个字段
--格式:select 字段名,字段名 from 表名
use NorthwindCS
go
select 产品名称,单位数量,单价 from 产品
---------------------------------

-------------------
--查询产品表中前10行记录
--格式:select top10 from 表名
use NorthwindCS
go
select top 10 * from 产品
-----------------------------------------------------
--查询产品表中前10%行的记录
--格式:
use NorthwindCS
go
select top 10 percent * from 产品
-------------------------------------------------------
--将查询出来的结果以别名方式显示
/*格式:
1、select 列标题=字段名,…… from 表名
2、select 字段名 列标题,…… from 表名
3、select 字段名 as 列标题,……from 表名
*/
use NorthwindCS
go
select '商品名'=产品名称,'价格'=单价 from 产品
select 产品名称 '商品名', 单价 '价格' from 产品
select 产品名称 as 商品名, 单价 as 价格 from 产品
------------------------------------------------------
--1、查询产品表中库存量大于50的产品名称
--2、查询单价小于等于30的产品名称和库存量
--格式:select [字段列表|*] from 表名 where 条件表达式
use NorthwindCS
go
select 产品名称 from 产品 where 库存量>50
select 产品名称 as 便宜货,库存量 from 产品 where 单价<=30
----------------------------------------------------------
--where(条件)子句中的逻辑运算符的应用:and or not
use NorthwindCS
go
select 产品名称,库存量 from 产品 where 单价<=30 and 库存量>60
select 产品名称,库存量 from 产品 where 单价<=30 or 库存量>60
select 产品名称,库存量,单价 from 产品 where not 单价>=30
select 产品名称,库存量 from 产品 where 单价<=30 and not 库存量>60
--------------------------------------------------------------------
--where子句中between和in的应用
--1、查询出库存量在30到69之间的产品名称
select 产品名称,库存量 from 产品 where 库存量 between 30 and 69
--2、查询出库存量不在30到69之间的产品名称
select 产品名称,库存量 from 产品 where 库存量 not between 30 and 69
---------------------------------------------------------------------
--模糊查询
--格式:select [字段列表] from 表名 where 字段名 like‘通配符表达式’
/*
% 匹配0—n个任意字符
_ 匹配1个任意字符
[] 匹配在方括号内列出的任意一字符
[^] 匹配不在括号内列出的任意一字符
*/
select 产品名称 from 产品 where 产品名称 like '%奶酪'
select 产品名称 from 产品 where 产品名称 like '_奶酪'
select 产品名称 from 产品 where 产品名称 like '[黑花]奶酪'
select 产品名称 from 产品 where 产品名称 like '%[^利]奶酪'
-------------------------------------------------------------------
--order by 子句排序
--格式:select [字段列表] from 表名 order by 字段名,[字段名] [asc|desc]
--asc升序 desc除序
--案例1、对产品表中单价进行升序排列
select 单价 from 产品 order by 单价 asc
--案例2、对产品表中单价进

行降序排列
select 单价 from 产品 order by 单价 desc
----------------------------------------------------------------------
/*
聚集函数:对表中的某个字段进行计算
avg(distinct 字段名) 求平均值
count(distinct 字段名) 统计字段值的个数,空值不统计
count(*) 统计查询返回的行数
max(字段名) 求字段中的最大值
min(字段名) 求字段中的最小值
sum(distinct 字段名) 求和字段值
distinct 限制重复行
*/
--案例1、:计算产品表中所有商品单价总和
select sum(单价) from 产品
--案例2、查找产品表中商品单价最高者
select max(distinct 单价) from 产品




第四讲多表查询
--交叉联接
--得到所连接的所有组合
--从产品表和订单明细表中分别取出产品名称和订单ID二个字段
select 产品.产品名称,订单明细.订单ID from 产品 cross join 订单明细
select 产品.产品名称,订单明细.订单ID from 产品 ,订单明细

--内联接
--得到连接表的满足条件的记录组合
--格式:inner join on
select 产品.产品名称,订单明细.产品ID,产品.单价 from 产品
inner join 订单明细 on 产品.产品ID=订单明细.产品ID

--全外联接
--包括所有联接表中的所有行,不论它们是否匹配
--格式:full outer join
select 产品.产品名称,订单明细.产品ID,产品.单价 from 产品 full
outer join 订单明细 on 产品.产品ID=订单明细.产品ID

--(多表)表字段联接
--查询出雇员表中雇员姓名
--练习题:将订单表中姓氏\名字和尊称联接起来.如:"小梅女士"
select 姓氏+名字 as 姓名 from 雇员

--给所有商品涨价5元
--练习题:给所有商品名称中有"奶"字的商品降价3元并起名为"打折商品"
--select 产品名称,单价 from 产品
select 产品名称,单价+5 as 新价格 from 产品

--在子查询中引用in和not in
--例:请查出花生供应商的名字
--练习题:请查出除麻油之外其它供应商的名称
select 公司名称 from 供应商 where 供应商ID in
(select 供应商ID from 产品 where 产品名称='花生')

--在子查询中引用any和all p199
--例:列出小于20至30的产品名称和单价
--练习题:查找出比酱油价格还要贵的产品名称和价格并算出单价总合
select 产品名称,单价 from 产品 where 单价 (select 单价 from 产品 where 单价 between 20 and 30)

--表别名
select a.产品名称,a.单价 from 产品 a



备份 数据库
--完整备份
Backup Database NorthwindCS
To disk='G:\Backup\NorthwindCS_Full_20070908.bak'

--差异备份
Backup Database NorthwindCS(数据库名)
To disk='G:\Backup\NorthwindCS_Diff_20070908.bak'
With Differential(差异)

--日志备份,默认截断日志
Backup Log NorthwindCS
To disk='G:\Backup\NorthwindCS_Log_20070908.bak'

--日志备份,不截断日志
Backup Log NorthwindCS
To disk='G:\Backup\Northwin

dCS_Log_20070908.bak'
With No_Truncate(截断)

--截断日志不保留
Backup Log NorthwindCS
With No_Log

--或者
Backup Log NorthwindCS
With Truncate_Only
--截断之后日志文件不会变小
--有必要可以进行收缩

--文件备份
Exec Sp_Helpdb NorthwindCS --查看数据文件
Backup Database NorthwindCS
File='NorthwindCS' --数据文件的逻辑名
To disk='G:\Backup\NorthwindCS_File_20070908.bak'

--文件组备份
Exec Sp_Helpdb NorthwindCS --查看数据文件
Backup Database NorthwindCS
FileGroup='Primary' --数据文件的逻辑名
To disk='G:\Backup\NorthwindCS_FileGroup_20070908.bak'
With init

--分割备份到多个目标
--恢复的时候不允许丢失任何一个目标
Backup Database NorthwindCS
To disk='G:\Backup\NorthwindCS_Full_1.bak'
,disk='G:\Backup\NorthwindCS_Full_2.bak'

--镜像备份
--每个目标都是相同的
Backup Database NorthwindCS
To disk='G:\Backup\NorthwindCS_Mirror_1.bak'
Mirror
To disk='G:\Backup\NorthwindCS_Mirror_2.bak'
With Format --第一次做镜像备份的时候格式化目标

--镜像备份到本地和远程
Backup Database NorthwindCS
To disk='G:\Backup\NorthwindCS_Mirror_1.bak'
Mirror
To disk='\\192.168.1.200\Backup\NorthwindCS_Mirror_2.bak'
With Format

--每天生成一个备份文件
Declare @Path Nvarchar(2000)
Set @Path ='G:\Backup\NorthwindCS_Full_'
+Convert(Nvarchar,Getdate(),112)+'.bak'

Backup Database NorthwindCS
To disk=@Path


--从NoRecovery或者
--Standby模式恢复数据库为可用
Restore Database NorthwindCS_Bak
With Recovery

--查看目标备份中的备份集
Restore HeaderOnly
From Disk ='G:\Backup\NorthwindCS_Full_20070908.bak'

--查看目标备份的第一个备份集的信息
Restore FileListOnly
From Disk ='G:\Backup\NorthwindCS_Full_20070908_2.bak'
With File=1

--查看目标备份的卷标
Restore LabelOnly
From Disk ='G:\Backup\NorthwindCS_Full_20070908_2.bak'

--备份设置密码保护备份
Backup Database NorthwindCS
To disk='G:\Backup\NorthwindCS_Full_20070908.bak'
With Password = '123',init

Restore Database NorthwindCS
From disk='G:\Backup\NorthwindCS_Full_20070908.bak'
With Password = '123'

相关文档
最新文档