SQL Server 2005笔记总结

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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
相关文章
|
16天前
|
SQL 存储 关系型数据库
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
本文介绍了SQL的基础语言类型(DDL、DML、DCL、DQL),并详细说明了如何创建用户和表格,最后推荐了几款适合初学者的免费SQL实践平台。
68 3
SQL自学笔记(3):SQL里的DCL,DQL都代表什么?
|
16天前
|
SQL 数据挖掘 数据库
SQL自学笔记(2):如何用SQL做简单的检索
本文深入介绍了SQL的基本语法,包括数据查询、过滤、排序、分组及表连接等操作,并通过实际案例展示了SQL在用户研究中的应用,如用户行为分析、用户细分、用户留存分析及满意度调查数据分析。
28 0
SQL自学笔记(2):如何用SQL做简单的检索
|
16天前
|
SQL 数据挖掘 关系型数据库
SQL自学笔记(1):什么是SQL?有什么用?
本文为用户研究新手介绍SQL(结构化查询语言),解释了SQL的基本概念、入门方法及在用户研究中的应用通过实际案例说明,如用户行为分析、用户细分和满意度调查数据分析,展示了SQL在用户研究中的重要作用。
42 0
SQL自学笔记(1):什么是SQL?有什么用?
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
133 13
|
5月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
5月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
69 6
|
5月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
457 1
|
5月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
375 3
|
4月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
530 0
下一篇
DataWorks