首页 > 代码库 > SQL Server2005常用概念(created by one friend)
SQL Server2005常用概念(created by one friend)
数据库(database):为特定目的或操作而组织和表示的信息、表和其他对象的集合。 数据库管理系统(database management system):是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库 数据库系统(database systems):是由数据库及其管理软件组成的系统 数据库对象:数据库中的表、索引、触发器、视图、键、约束、默认值、规则、用户定义数据类型或存储过程及数据库本身等 数据库所有者:DBO 架构:单个用户所拥有的数据库对象的集合,这些对象形成单个命名空间。 Server.database.schema.object 即服务器.数据库.架构.数据库对象 OLTP数据库:联机事务处理(OnLine Transaction Processing),用于捕获高比率的数据更改和添加 OLAP数据库:联机分析处理(OnLine Analytical Processing),用于组织大量的稳定数据以便于分析和检索 数据库设计的步骤:需求分析、概念设计、逻辑设计、物理设计 数据库重命名:ALTER DATABASE database_name MODIFY NAME= new_database_name SQL Server用于存储数据的基本单位是页,每页容量为8KBnumer 对于一个SQL Server实例,最多可以创建32767个用户数据库 每个数据库至少具有两个操作系统文件:一个主数据文件和一个日志文件。主数据文件.mdf;次要数据文件.ndf;事务日志文件.ldf Numeric类似decimal Numeric(6,2)表示精确度为6,小数位数为2,其中小数点算1位精确度,且进行四舍五入 比如115.01 添加列:ALTER TABLE STUDENT ADD column_class VARCHAR(20) NULL 删除列:ALTER TABLE STUDENT DROP COLUMN column_class 修改数据:UPDATE score SET final=87 WHERE studentno=’008’ AND courseno=’c001’ 数据完整性的类型: (1) 域(Domain)完整性:实现机制有默认值(Default)、检查(Check)、外键(Foreign Key)、数据类型(Data Type)和规则(Rule) (2) 实体(Entity)完整性:实现机制有主键(Primary Key)、唯一码(Unique Key)、唯一索引(Unique Index)和标识列(Identity Column) (3) 引用完整性:实现机制有外键(Foreign Key)、检查(Check)、触发器(Trigger)和存储过程(Stored Procedure) (4) 用户定义完整性:实现机制有规则(Rule)、触发器(Trigger)和存储过程(Stored Procedure)及创建数据表时的所有约束(Constraint) SQL SERVER 2005 支持的约束类型:1,NOT NULL约束 2,PRIMARY KEY约束 3,FOREIGN KEY约束 4,UNIQUE约束 5,CHECK约束 Transact-SQL语句分类: 1, 数据定义语言(Data Definition Language,DDL),包括数据库对象的创建(CREATE)、修改(ALTER)和删除(DROP) 2, 数据操纵语言(Data Manipulation Language,DML),包括数据的查询(SELECT)、添加(INSERT)、修改(UPDATE)和删除(DELETE) 3, 数据控制语言(DCL),用来设置或更改数据库用户或角色权限的语句,包括授予(GRANT)、拒绝(DENY)、撤销(REVOKE)等命令 4, 控制流语句,如BEGIN…END、IF…ELSE、WHILE、BREAK、GOTO、WAITFOR、RETURN等 对于Unicode字符串,其前面必须有一个大写字母N前缀,如N’中国’ 局部变量: DECLARE @myvar nchar(20) set @myvar =’This is a test’ SELECT @myvar 包含C的数据显示出来:select * from product where productname like’%C%’ 显示以en结尾的所有3个字母的字符串:like’_en’ %代表任意字符串,_代表任意单个字符 Transact-SQL中的常用数学函数: ABS 返回表达式的绝对值 CEILING返回大于或等于指定数值表达式的最小整数 EXP 返回给定表达式为指数的e值,如exp(y) FLOOR 返回小于或等于指定数值表达式的最大整数 LOG 返回给定表达式的自然对数 LOG10 返回给定表达式的以10为底的对数 PI 常量,圆周率 POWER 返回给定表达式的指定次方的值 ROUND 返回指定小数的位数的表达式的值, 如select round(13.45767,3)结果为13.45800 SQUARE 返回给定表达式的平方 SQRT 返回给定表达式的平方根 转换类型函数:convert(varchar(12),year(getdate())) 或者 cast(year(getdate()) as varchar(12)) 字符串函数: LEN 返回给定字符串表达式的字符个数,其中不包含尾随空格 LTRIM 删除起始空格后返回字符表达式 SUBSTRING 求子串函数 内连接((INNER) JOIN)为默认连接 左外连接(LEFT (OUTER) JOIN),右外连接(RIGHT (OUTER) JOIN) 分别以左表和右表为基准,对于不匹配的行的所有列全部赋予NULL,即不输出该行。 完全外连接(FULL (OUTER) JOIN)则保留不匹配的行,只把不匹配的列赋予NULL。 交叉连接(CROSS JOIN)没有连接条件,也没有WHERE子句,直接产生两个表的笛卡尔积,结果集大小为二者行数之积。 利用子查询做表达式: 例1:查询学号为001的学生的入学成绩、所有学生的平均入学成绩、该学生成绩与所有学生的平均入学成绩的差 SELECT studentno,sname,point, (SELECT AVG(point) FROM student)AS ‘平均成绩’, point- (SELECT AVG(point) FROM student) AS ‘分数差值’ FROM student WHERE studentno=’001’ 例2:查询选修课程多于两门、且期末成绩均在85分以上的学生的学号、姓名和电话 SELECT studentno,sname,phone FROM student WHERE studentno IN (SELECT studentno FROM score WHERE final>85 GROUP BY studentno HAVING count(*)>2) 利用子查询关联数据 P164 利用子查询生成派生表 例:查询期末成绩高于85分、总评成绩高于90分的学生的学号、课程号和总评成绩 SELECT TT.studentno,TT.courseno, TT.final*0.8+TT.usually*0.2 AS ’总评成绩’ FROM (SELECT * FROM score WHERE final >85) AS TT WHERE TT.final*0.8+TT.usually*0.2>90 利用子查询修改表数据 P165 索引:只有表的所有者才能在表上创建索引 聚集索引:决定了数据库表中记录行的存储顺序。每个表中只能有一个聚集索引 非聚集索引:每个表最多可以创建249个。 唯一索引:聚集索引和非聚集索引都可以是唯一索引 视图:是从一个或几个基表(或视图)导出的表,它是一个虚拟表 填充因子(FILLFACTOR) 存储过程:是独立存在于表之外的数据库对象 1, 系统存储过程:带有sp_前缀。如sys.sp_helpdb 2, 用户定义的存储过程:Transact-SQL或CLR 3, 临时存储过程:以“#”或“##”为前缀 4, 扩展存储过程:以xp_为前缀,是SQL Server 2005 的实例可以动态加载和运行的DLL 触发器:是一种相应数据操作语言(DML)事件或数据定义语言(DDL)事件而执行的特殊类型的存储过程。只有表的所有者可以创建 DML触发器:分为AFTER触发器和INSTEAD OF触发器两种 DDL触发器 SQL Server为每个触发器创建和管理两个特殊的表 1, 插入表inserted表:与INSERT或UPDATE语句相关的被添加或被更新的记录 2, 删除表deleted表:与DELETE或UPDATE 语句相关的被删除的记录 对于它们,用户只有读取的权限,没有修改的权限 用户:一组匹配的帐户和密码 角色:管理权限相近的安全帐户的集合 服务器角色的最高权限为系统管理员(sysadmin),数据库角色的最高权限为数据库所有者(db_owner) 完整数据库备份:备份在备份过程中发生的所有活动和事务日志中的所有未提交事务的数据库备份 差异数据库备份:只备份自上一次完整数据库备份发生改变的内容和在差异备份过程中所发生的所有活动,及事务日志中所有未提交的部分的数据库备份 事务日志备份:在完整数据库备份的基础上,从上一次成功执行BACKUP LOG语句之后到当前事务日志结尾的这段事务日志的数据库备份 还原数据库时,首先要进行创建完整数据库备份操作。 SQL Server代理实际上是一种Windows服务,可以帮助管理员完成很多事先预设好的作业,在规定的时间内自动完成 作业是由一系列SQL Server代理顺序执行的指定操作 警报:是一种对事件等信息进行检测的机制 操作员:是在完成作业或出现警报时,可以接受电子通知的人员的别名 维护计划:用于创建所需的维护任务工作流,以确保数据库运行良好 创建发布:将要进行复制的源数据库对象进行发布处理 创建订阅;在发布服务器或订阅服务器中创建请求订阅 配置分发:在创建发布之前,如果尚未在服务器上配置分发,可以先配置“分发服务器” 系统性能监视器:在“运行”对话框中输入perfmon命令,即可启动。它可以创建图表、警报、日志和报表,以监视SQL Server实例
数据库(database):为特定目的或操作而组织和表示的信息、表和其他对象的集合。
数据库管理系统(database management system):是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库
数据库系统(database systems):是由数据库及其管理软件组成的系统
数据库对象:数据库中的表、索引、触发器、视图、键、约束、默认值、规则、用户定义数据类型或存储过程及数据库本身等
数据库所有者:DBO
架构:单个用户所拥有的数据库对象的集合,这些对象形成单个命名空间。
Server.database.schema.object 即服务器.数据库.架构.数据库对象
OLTP数据库:联机事务处理(OnLine Transaction Processing),用于捕获高比率的数据更改和添加
OLAP数据库:联机分析处理(OnLine Analytical Processing),用于组织大量的稳定数据以便于分析和检索
数据库设计的步骤:需求分析、概念设计、逻辑设计、物理设计
数据库重命名:ALTER DATABASE database_name MODIFY NAME= new_database_name
SQL Server用于存储数据的基本单位是页,每页容量为8KBnumer
对于一个SQL Server实例,最多可以创建32767个用户数据库
每个数据库至少具有两个操作系统文件:一个主数据文件和一个日志文件。主数据文件.mdf;次要数据文件.ndf;事务日志文件.ldf
Numeric类似decimal
Numeric(6,2)表示精确度为6,小数位数为2,其中小数点算1位精确度,且进行四舍五入
比如115.01
添加列:ALTER TABLE STUDENT ADD column_class VARCHAR(20) NULL
删除列:ALTER TABLE STUDENT DROP COLUMN column_class
修改数据:UPDATE score SET final=87
WHERE studentno=’008’ AND courseno=’c001’
数据完整性的类型:
<!--[if !supportLists]-->(1) <!--[endif]-->域(Domain)完整性:实现机制有默认值(Default)、检查(Check)、外键(Foreign Key)、数据类型(Data Type)和规则(Rule)
<!--[if !supportLists]-->(2) <!--[endif]-->实体(Entity)完整性:实现机制有主键(Primary Key)、唯一码(Unique Key)、唯一索引(Unique Index)和标识列(Identity Column)
<!--[if !supportLists]-->(3) <!--[endif]-->引用完整性:实现机制有外键(Foreign Key)、检查(Check)、触发器(Trigger)和存储过程(Stored Procedure)
<!--[if !supportLists]-->(4) <!--[endif]-->用户定义完整性:实现机制有规则(Rule)、触发器(Trigger)和存储过程(Stored Procedure)及创建数据表时的所有约束(Constraint)
SQL SERVER 2005 支持的约束类型:1,NOT NULL约束 2,PRIMARY KEY约束 3,FOREIGN KEY约束 4,UNIQUE约束 5,CHECK约束
Transact-SQL语句分类:
<!--[if !supportLists]-->1, <!--[endif]-->数据定义语言(Data Definition Language,DDL),包括数据库对象的创建(CREATE)、修改(ALTER)和删除(DROP)
<!--[if !supportLists]-->2, <!--[endif]-->数据操纵语言(Data Manipulation Language,DML),包括数据的查询(SELECT)、添加(INSERT)、修改(UPDATE)和删除(DELETE)
<!--[if !supportLists]-->3, <!--[endif]-->数据控制语言(DCL),用来设置或更改数据库用户或角色权限的语句,包括授予(GRANT)、拒绝(DENY)、撤销(REVOKE)等命令
<!--[if !supportLists]-->4, <!--[endif]-->控制流语句,如BEGIN…END、IF…ELSE、WHILE、BREAK、GOTO、WAITFOR、RETURN等
对于Unicode字符串,其前面必须有一个大写字母N前缀,如N’中国’
局部变量:
DECLARE @myvar nchar(20)
set @myvar =’This is a test’
SELECT @myvar
包含C的数据显示出来:select * from product where productname like’%C%’
显示以en结尾的所有3个字母的字符串:like’_en’
%代表任意字符串,_代表任意单个字符
Transact-SQL中的常用数学函数:
ABS 返回表达式的绝对值
CEILING返回大于或等于指定数值表达式的最小整数
EXP 返回给定表达式为指数的e值,如exp(y)
FLOOR 返回小于或等于指定数值表达式的最大整数
LOG 返回给定表达式的自然对数
LOG10 返回给定表达式的以10为底的对数
PI 常量,圆周率
POWER 返回给定表达式的指定次方的值
ROUND 返回指定小数的位数的表达式的值,
如select round(13.45767,3)结果为13.45800
SQUARE 返回给定表达式的平方
SQRT 返回给定表达式的平方根
转换类型函数:convert(varchar(12),year(getdate()))
或者 cast(year(getdate()) as varchar(12))
字符串函数:
LEN 返回给定字符串表达式的字符个数,其中不包含尾随空格
LTRIM 删除起始空格后返回字符表达式
SUBSTRING 求子串函数
内连接((INNER) JOIN)为默认连接
左外连接(LEFT (OUTER) JOIN),右外连接(RIGHT (OUTER) JOIN)
分别以左表和右表为基准,对于不匹配的行的所有列全部赋予NULL,即不输出该行。
完全外连接(FULL (OUTER) JOIN)则保留不匹配的行,只把不匹配的列赋予NULL。
交叉连接(CROSS JOIN)没有连接条件,也没有WHERE子句,直接产生两个表的笛卡尔积,结果集大小为二者行数之积。
利用子查询做表达式:
例1:查询学号为001的学生的入学成绩、所有学生的平均入学成绩、该学生成绩与所有学生的平均入学成绩的差
SELECT studentno,sname,point,
(SELECT AVG(point) FROM student)AS ‘平均成绩’,
point- (SELECT AVG(point) FROM student) AS ‘分数差值’
FROM student
WHERE studentno=’001’
例2:查询选修课程多于两门、且期末成绩均在85分以上的学生的学号、姓名和电话
SELECT studentno,sname,phone
FROM student
WHERE studentno IN (SELECT studentno FROM score WHERE final>85
GROUP BY studentno HAVING count(*)>2)
利用子查询关联数据 P164
利用子查询生成派生表
例:查询期末成绩高于85分、总评成绩高于90分的学生的学号、课程号和总评成绩
SELECT TT.studentno,TT.courseno,
TT.final*0.8+TT.usually*0.2 AS ’总评成绩’
FROM (SELECT * FROM score WHERE final >85) AS TT
WHERE TT.final*0.8+TT.usually*0.2>90
利用子查询修改表数据 P165
索引:只有表的所有者才能在表上创建索引
聚集索引:决定了数据库表中记录行的存储顺序。每个表中只能有一个聚集索引
非聚集索引:每个表最多可以创建249个。
唯一索引:聚集索引和非聚集索引都可以是唯一索引
视图:是从一个或几个基表(或视图)导出的表,它是一个虚拟表
填充因子(FILLFACTOR)
存储过程:是独立存在于表之外的数据库对象
<!--[if !supportLists]-->1, <!--[endif]-->系统存储过程:带有sp_前缀。如sys.sp_helpdb
<!--[if !supportLists]-->2, <!--[endif]-->用户定义的存储过程:Transact-SQL或CLR
<!--[if !supportLists]-->3, <!--[endif]-->临时存储过程:以“#”或“##”为前缀
<!--[if !supportLists]-->4, <!--[endif]-->扩展存储过程:以xp_为前缀,是SQL Server 2005 的实例可以动态加载和运行的DLL
触发器:是一种相应数据操作语言(DML)事件或数据定义语言(DDL)事件而执行的特殊类型的存储过程。只有表的所有者可以创建
DML触发器:分为AFTER触发器和INSTEAD OF触发器两种
DDL触发器
SQL Server为每个触发器创建和管理两个特殊的表
<!--[if !supportLists]-->1, <!--[endif]-->插入表inserted表:与INSERT或UPDATE语句相关的被添加或被更新的记录
<!--[if !supportLists]-->2, <!--[endif]-->删除表deleted表:与DELETE或UPDATE 语句相关的被删除的记录
对于它们,用户只有读取的权限,没有修改的权限
用户:一组匹配的帐户和密码
角色:管理权限相近的安全帐户的集合
服务器角色的最高权限为系统管理员(sysadmin),数据库角色的最高权限为数据库所有者(db_owner)
完整数据库备份:备份在备份过程中发生的所有活动和事务日志中的所有未提交事务的数据库备份
差异数据库备份:只备份自上一次完整数据库备份发生改变的内容和在差异备份过程中所发生的所有活动,及事务日志中所有未提交的部分的数据库备份
事务日志备份:在完整数据库备份的基础上,从上一次成功执行BACKUP LOG语句之后到当前事务日志结尾的这段事务日志的数据库备份
还原数据库时,首先要进行创建完整数据库备份操作。
SQL Server代理实际上是一种Windows服务,可以帮助管理员完成很多事先预设好的作业,在规定的时间内自动完成
作业是由一系列SQL Server代理顺序执行的指定操作
警报:是一种对事件等信息进行检测的机制
操作员:是在完成作业或出现警报时,可以接受电子通知的人员的别名
维护计划:用于创建所需的维护任务工作流,以确保数据库运行良好
创建发布:将要进行复制的源数据库对象进行发布处理
创建订阅;在发布服务器或订阅服务器中创建请求订阅
配置分发:在创建发布之前,如果尚未在服务器上配置分发,可以先配置“分发服务器”
系统性能监视器:在“运行”对话框中输入perfmon命令,即可启动。它可以创建图表、警报、日志和报表,以监视SQL Server实例