SQL Server 2005笔记总结

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

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

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
6天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
42 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
16天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
15 0
|
6天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
61 6
|
7天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
9天前
|
SQL 存储 关系型数据库
【MySQL实战笔记】02.一条SQL更新语句是如何执行的-2
【4月更文挑战第5天】两阶段提交是为确保`redo log`和`binlog`逻辑一致,避免数据不一致。若先写`redo log`, crash后数据可能丢失,导致恢复后状态错误;若先写`binlog`,crash则可能导致重复事务,影响数据库一致性。一天一备相较于一周一备,能缩短“最长恢复时间”,但需权衡额外的存储成本。
15 1
|
11天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
14 1
|
24天前
|
SQL 存储 Python
Microsoft SQL Server 编写汉字转拼音函数
Microsoft SQL Server 编写汉字转拼音函数
|
1月前
|
SQL 存储 数据库
数据安全无忧,SQL Server 2014数据库定时备份解密
数据安全无忧,SQL Server 2014数据库定时备份解密
|
1月前
|
SQL 网络协议 Windows
破解SQL Server迷局,彻底解决“管道的另一端无任何进程错误233”
破解SQL Server迷局,彻底解决“管道的另一端无任何进程错误233”