SQL分类
DDL data definition language
create alter drop
DML data manipulation language
insert update delete select
DCL data control language
grant revoke deny
数据库的创建和管理
文件 数据文件(主数据文件.mdf 辅助数据文件.ndf)
日志文件 .ldf
文件组 逻辑结构 包含数据文件
创建数据库
create database 数据库名
on primary
(name=,filename=,size=,maxsize=,filegrowth=),
filegroup 文件组名
(name=,filename=,size=,maxsize=,filegrowth=)
log on
(name=,filename=,size=,maxsize=,filegrowth=),
(name=,filename=,size=,maxsize=,filegrowth=)
修改
alter database 数据库名
|add filegroup 文件组名
|add file() to filegroup 文件组名
|add log file()
|modify name=新数据库名
|modify file(name=,newname=,size=,maxsize=,filegrowth=)
|modify filegroup 文件组名 default
|remove file
|set 数据库选项
删除
drop database 数据库名
数据库收缩
dbcc shrinkfile
dbcc shrinkdatabase
数据库信息查看
sp_helpdb
dbcc sqlperf
sp_spaceused
dbcc checkdb
系统数据类型
整型:bigint int smallint tinyint
精确数值:decimal(p,s) numeric(p,s)
近似数值:float real
货币:money smallmoney
日期:datetime smalldatetime
--SQL2008
date time datetime2 datetimeoffset
字符:char(n) varchar(n) varchar(max)
nchar(n) nvarchar(n) nvarchar(max)
bit uniqueidentifier table
......
表的创建
create table 表名
(列名 数据类型,
列名 数据类型 not null,
列名 数据类型 identity(seed,increment))
表的修改
alter table 表名
|add 列名 数据类型 属性
|alter column 列名 新数据类型|旧数据类型 属性
|drop column 列名 数据类型
表的删除
drop table 表名
DML
insert
insert into 表名(列名列表) values(对应值)
注意:字符和日期数据加单引号
insert into 表名(列名列表) select语句
update
update 表名 set 列名=值 where 条件
delete
delete from 表名 where 条件
select
语句 子句
select:结果中的列
*
列名
distinct
top(n) [percent]
+
函数
算术运算符
with ties
列别名
列名 as 列别名
列名 列别名
列别名=列名
into:将查询结果放入新表
from:数据源(具体表名;CTE;derived table)
where:条件 对返回的数据行进行限定
逻辑运算符 and not or
比较运算符 > < >= <= <> != =
算术运算符
between...and...:给定取值范围,包括边界
in(值列表):取给定值
like:字符串的模糊查询
通配符: %:任意长度任意字符
_: 任意单个字符
[]:取给定的任意一个
[^] :除了给定的字符,任意取一个
is null:空值判断
exists:判断存在性
group by:分组汇总+聚合函数
having:对分组后的数据进行筛选
order by:排序
升序asc(默认) 降序 desc
可以按多个列排序 null作为最小值
join:多表连接
where select 列名 from 表1,表2 where 表1.列=表2.列 and 条件
join select 列名 from 表1 *JOIN* 表2 on 表1.列=表2.列 where 条件
内连接:[inner] join 连接字段的值在两张表中相同的数据
左外联结:left [outer] join 连接字段的值在两张表中相同的数据,连接字段的值在左表有在右表没有的数据
右外连接:right [outer] join 连接字段的值在两张表中相同的数据,连接字段的值在右表有在左表没有的数据
全连结:full [outer] join 连接字段的值在两张表中相同的数据,连接字段的值在左表有在右表没有的数据,连接字段的值在右表有在左表没有的数据
stu exam
id name id eid score
1 a 1 2072 100
2 b 2 2072 80
3 c 3 2072 60
4 d null 2072 70
交叉连接
笛卡尔积 m*n
select 列名 from 表1 cross join 表2
自连接
union
行叠加
select语句 *union* select语句
union//union all//intersect//except
子查询--可以转换为多表
select 字段 from 表1 where 字段 in(select语句)
数据完整性
实体完整性:行唯一
域完整性:对字段的取值范围或格式进行限制
引用完整性:维护表之间的数据一致性
实现:规则 默认 约束
约束
主键约束 primary key
一张表只有一个主键约束,可以创建在多个列上,创建主键约束的字段取值唯一,不能为NULL,创建主键约束会自动创建唯一聚集索引
唯一约束 unique
一张表可以有多个唯一约束,可以创建在多个列上,创建唯一约束的字段可以为NULL,取值唯一(包括NULL),创建唯一约束会自动创建唯一非聚集索引
检查约束 check
对字段的取值范围或格式进行限制
默认约束 default
如果某列定义了默认约束,插入数据时,不给值,自动填充默认值
外键约束 foreign key
被参照表的被参照列要定义主键约束或唯一约束,维护表之间的数据一致性
创建表的同时,创建约束************************************
create table 表名
(列名 数据类型,
列名 数据类型 not null,
列名 数据类型 primary key,
列名 数据类型 unique,
列名 数据类型 check(表达式)
列名 数据类型 default 默认值,
列名 数据类型 references 被参照表(被参照列))
表创建成功后添加约束***************************************
primary key(主键字段)
unique(唯一字段)
alter table 表名 add constraint 约束名 check(表达式)
default 默认值 for 列名
foreign key(参照字段) references 被参照表(被参照列)
视图
分类:普通视图 分区视图 索引视图
数据库中只有视图定义,不存放数据
创建视图
create view 视图名
as
select语句
视图选项
create view 视图名
with encryption | schemabinding
as
select语句
with check option
备份还原
备份目标
备份设备:实现创建好,通过命令和图形界面均可查看备份内容
备份文件:创建的同时创建,只能通过命令查看
故障恢复模型
大容量日志:对大批量数据操作只记录结果不记录过程
简单:不能进行日志备份
完整:
备份类型
完整备份
backup database 数据库名 to disk=''
backup database 数据库名 to 备份设备名
差异备份
backup database 数据库名 to disk='' with differential
backup database 数据库名 to 备份设备名 with differential
日志备份
backup log 数据库名 to disk=''
backup log 数据库名 to 备份设备名
文件和文件组备份
backup database 数据库名 file= to disk=''
backup database 数据库名 filegroup= to 备份设备名
尾日志备份
backup log 数据库名 to disk='' with no_truncate
backup log 数据库名 to 备份设备名 with no_truncate
本文转自Grodd51CTO博客,原文链接:http://blog.51cto.com/juispan/1949879,如需转载请自行联系原作者