且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SQL Server 2005笔记总结

更新时间:2022-09-17 08:18:52

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,如需转载请自行联系原作者