学习SQL server2005

本文介绍了SQL语言的基础概念,包括各类SQL指令的用途、数据完整性的维护方式、数据库文件的管理和配置选项等。此外,还详细讲解了表的建立规则、T-SQL通配符的应用、数据操作技巧以及联接查询等高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL 语言分类:
 DQL:数据查询语言,比如select
 DML:数据操作语言,比如update
 DCL:数据控制语言,比如revoke
 DDL:数据定义语言,比如create
 CCL:通用命令语言,比如declare

数据的完整性:
 1。实体完整性:针对行,建主键,唯一约束,标识列。
 2。引用完整性:多个表,建外键,注意:外键表所引用的数据在主键表中必须存在。
 3。域完整性:针对于列,建检查约束,默认值,not null 属性。
 4。用户定义的完整性:建存储过程和触发器。

数据库文件和日志文件:
 1。主要数据文件,是指数据库起始点并且指向数据库的其他文件,每个数据库都有一个主要数据文件,扩展名(.mdf)
 2。次要数据文件,包括除主数据文件以外的所有数据文件,可有0个或多个,扩展名(.ndf)
 3。日志文件,包含所有用于恢复数据库的日志信息。每个数据库至少要有一个日志文件,也可以有多个。
 
数据库配置选项:
 1。exec sp_dboption 'pubs','read only','true' 含义:把pubs设为只读
 2。exec sp_dboption 'pubs',autoshrink,true 含义:设置pubs数据库自动周期性收缩。
 3。exec sp_dboption 'pubs','single user' 含义:设置pubs数据库在同一时间只允许一个用户访问。
 4。dbcc shrinkdatabase(pubs,10) 含义:收缩pubs数据库的大小。并允许其有10%的未用空间。
 5。修改数据库名称:
 alter database 原名 modify name=新名
 6。删除数据库:
 use master
 go
 if DB_id('Study') is not null
  drop database Study
 go
 
NULL 既不是0也不是""(空字符串),可以理解成“任何不确定的值”

移动数据库:可以使用分离和附加,或者备份和还原。

建表规则:
  1。每个表必须有一个键字段。
  2。不能存在重复键
  3。每个表必须包含单个实体的信息
  4。表的每个字段必须依赖于主键字段
  5。所有非主键字段不能相互依赖。
  
T-SQL语句中的通配符:
 1。'_' :一个字符
 2。'%' :任意长度的字符串
 3。'[]':括号中指定范围内的一个字符
 4。'[^]':不在括号中指定范围内的任意一个字符。
 
使用select into 将一个表中的数据添加到另一个表中:
 1。 insert into 表名(列表) select 选择列表 from 源表
 2。 select 选择列表 into 新建表名 from 源表
 注意:
 1).以上两种语句功能类似,但是不完全一样,前者是将一个结果集插入到一个现有的表中,而后者是利用结果集创建一个新表。
 2).采用第一种形式,你必须保证目的表存在。并且源表中列的数据类型与目的表中相应列的数据类型匹配。
 3).采用第一种形式,如果在源表中没有出现的列,你必须为目的表的列指定默认值,或者允许该列为空,否则不会成功。
 4).采用第二种形式,如果新表在数据库中存在,系统将会提示出错。
 
delete 和 truncate
 两者都能删除表中的所有行,并且保留表结构。
 不同之处在于:delete删除表数据时,会写日志,而truncate就不会写日志,所以在删除大量数据时如果不想写到日志文件中去的话用truncate的效率会高的多。

备份表:
 select * into 新表名 from 旧表名 [where 0=1]
 可选部分含义:如果只想要表结构的话可加上此条件。

使用top关键字:
 select top 10 * from 表名  (显示前十行)
 select top 40 percent * from 表名 (返回前百分之40的行)

distince关键字:忽略重复行

group by分组:
 注意:使用此语句时对select列表中的项目是有限制的,仅允许以下几项:
 1。分组列
 2。为每个分组返回一个值的表达式,例如用一个列名作为参数的聚合函数

where , having, 和 group by
 where搜索条件应用于分组操作发生之前,而having条件应用于分组操作之后,所以having可以包含聚合函数,而where不能,where子句用于筛选由from子句中指定的操作产生的行,group by 子句用于将where子句的输出结果进行分组,having用于筛选汇总后的行,
 where --> group by --> having
 
常用时间函数:
 函数名:              含义:
 getdate()              当前日期
 day('2/18/2004')          取天,返回18
 month('2/18/2004')         取月,返回2 
 year('2/18/2004')          取年,返回2004
 datepart(month,'2/18/2004')     取月,返回2
 datediff(day,'3/15/2004',getdate()) 返回指定日期与当前日期相差的天数
 dateadd(day,50,getdate())           在当前日期上加50天
 
alter table 表名 add 列名 数据类型[是否可以为空] constraint 约束名 default(给定的默认值) with values
 with values 选项表示用给定的默认值填充现有行中刚添加的列的值

主键的特点:
 (1) 主键(列)不允许空值。
 (2) 不能存在具有相同的主键值的两个行,因此主键值总是唯一标识单个行的。
 (3) 表中可以有不止一个列唯一标识行,每个列都称作候选键。只有一个候选键可以选作表的主键,所有其它候选键称作备用键。
 (4) 尽管表不要求具有主键,但定义主键是很好的做法。

当一个表(这里称为外键表)的某列应用另一个表(主键表)的主键或者唯一键列作为外键时,如果想要删除或者修改主键表中被引用的列的数据,可以给定两种方法,即“级联更新”和“级联删除”,指定级联更新时,在修改主键列信息时,数据库管理系统会自动修改外键列中的相应的数据,与此类似,在指定级联删除时,在删除主键表中的数据时外键表中的相关数据行也一起被删除,纵然可以这样,一般都不建议这样做,因为这样就失去了外键应有的作用。语法如下:
通过使用级联引用完整性约束,你可以定义当用户试图删除或更新现有外键指向的键时,SQL Server 2005 执行的操作。

CREATE TABLE 和 ALTER TABLE 语句的 REFERENCES 子句支持 ON DELETE 和 ON UPDATE 子句:

[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]

[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]

如果没有指定 ON DELETE 或 ON UPDATE,则默认为 NO ACTION。

ON DELETE NO ACTION

指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 DELETE 语句。

ON UPDATE NO ACTION

指定如果试图更新某一行中的键值,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 UPDATE 语句。

CASCADE、SET NULL 和 SET DEFAULT 允许通过删除或更新键值来影响指定具有外键关系的表,这些外键关系可追溯到在其中进行修改的表。如果为目标表也定义了级联引用操作,那么指定的级联操作也将应用于删除或更新的那些行。不能为具有 timestamp 列的外键或主键指定 CASCADE。

ON DELETE CASCADE

指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则也将删除所有包含那些外键的行。

ON UPDATE CASCADE

指定如果试图更新某一行中的键值,而该行的键值被其他表的现有行中的外键所引用,则组成外键的所有值也将更新到为该键指定的新值。

注意: 
如果 timestamp 列是外键或被引用键的一部分,则不能指定 CASCADE。

ON DELETE SET NULL

指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。

ON DELETE SET NULL

指定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。

ON DELETE SET DEFAULT

指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON DELETE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。

ON UPDATE SET DEFAULT

指定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON UPDATE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性

联接:
 1.内联:
 语法:select 列表 from table1 join table2 on 条件表达式
 2.外联:
  1).左外联:
  语法:select 列表 from 左表 left join 右表 on 条件表达式
  查询结果为左表中的全部数据加上右表中符合条件的数据
  2).右外联:
  语法:select 列表 from 左表 right join 右表 on 条件表达式
  查询结果为右表中的全部数据加上左表中符合条件的数据 

作者 迪尤逊 出版社 人民邮电出版社 本书重点阐述了SQL Server 2005的基础知识,前半部分以建立一个金融数据库系统为主线,从最基础的收集信息入手,一步步地引导读者学会如何保证数据库的安全,创建表、主键、索引等项目,在表之间建立恰当的关系,并掌握如何备份和还原数据库;之后以前面建立的示例数据库为基础,深入讲解各种数据操作的方法,从数据检索、插入、更新、删除,到函数、触发器、存储过程的使用;最后,概略讲述了SQL Server Reporting Services。书中还针对数据安全性方面的操作和细节提供了大量的例子。   本书适合希望使用SQL Server 2005的开发和管理人员阅读,也可作为高等学校相关课程的教材。 第1章 SQL Server 2005概述和安装  1.1 为什么选择SQL Server 2005  1.2 SQL Server的发展  1.3 硬件要求  1.4 示例  1.5 安装  1.6 标准安装  1.7 安全性  1.8 小结 第2章 SSMS  2.1 SSMS概览  2.2 SSMS的选项  2.3 查询编辑器  2.4 外围应用配置器工具  2.5 小结 第3章 设计和创建数据库  3.1 数据库的定义  3.2 SQL Server中的数据库  3.3 决定数据库系统类型  3.4 收集数据   3.5 决定要存储在数据库中的信息  3.6 外部信息和忽略的信息  3.7 建立关系  3.8 规范化  3.9 创建示例数据库  3.10 小结 第4章 安全   4.1 登录名  4.2 角色  4.3 架构  4.4 在解决方案中进行下去之前  4.5 小结 第5章 定义表  5.1 什么是表  5.2 定义表:SSMS   5.3 列不仅仅是简单的数据仓库   5.4 在SQL Server中存储图像和大型文本   5.5 在SSMS中创建表   5.6 通过查询编辑器定义表   5.7 定义表:使用模板   5.8 创建模板和修改模板  5.9 ALTER TABLE命令  5.10 定义其余的表   5.11 设置主键   5.12 创建关系  5.13 使用SQL语句ALTER TABLE  5.14 小结  第6章 创建索引和数据库关系图  6.1 什么是索引  6.2 确定是什么导致了好的索引   6.3 确定是什么导致了坏的索引   6.4 针对性能对索引进行回顾   6.5 创建索引   6.6 删除索引  6.7 在查询编辑器中修改索引  6.8 为数据库生成关系图  6.9 小结 第7章 数据库的备份、还原和维护  7.1 事务日志   7.2 备份策略   7.3 当可能发生错误  7.4 让数据库脱机   7.5 备份数据  7.6 还原数据库   7.7 分离和附加数据库  7.8 为数据库生成SQL脚本  7.9 维护数据库  7.10 小结  第8章 操作数据   8.1 T-SQL的INSERT命令的语法  8.2 SQL命令INSERT   8.3 DBCC CHECKIDENT  8.4 列约束  8.5 同时处理多条记录  8.6 检索数据  8.7 使用SSMS检索数据  8.8 SELECT语句  8.9 指定列  8.10 第一批搜索  8.11 改变输出的显示  8.12 限制搜索:WHERE的使用  8.13 字符串函数  8.14 顺序!顺序!  8.15 LIKE运算符  8.16 生成数据:SELECT INTO  8.17 谁能添加、删除或选取数据  8.18 更新数据  8.19 事务  8.20 删除数据  8.21 截断表(删除表中的所有行)  8.22 删除表  8.23 小结 第9章 构建视图  9.1 什么是视图  9.2 针对安全而使用查询  9.3 加密视图定义  9.4 创建视图:SSMS  9.5 使用视图来创建视图  9.6 CREATE VIEW语法  9.7 创建视图:查询编辑器窗格  9.8 创建视图:SCHEMABINDING  9.9 为视图设置索引  9.10 小结 第10章 存储过程  10.1 什么是存储过程  10.2 CREATE PROCEDURE语法  10.3 返回一系列记录   10.4 创建存储过程:SSMS  10.5 执行存储过程的不同方法  10.6 使用RETURN  10.7 控制流程  10.8 综合应用  10.9 小结  第11章 T-SQL基础  11.1 使用多个表  11.2 变量   11.3 临时表  11.4 聚合  11.5 GROUP BY  11.6 HAVING  11.7 独特值  11.8 函数   11.9 RAISERRO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值