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 server2005相关推荐

  1. SQL进阶提升(疑惑篇order by)-学习sql server2005 step by step(十一)

    这篇主要发出两个疑惑,希望有兴趣的人解答,谢谢! 1.newid()疑惑 1 create table tb (aa int,bb char(1)) 2 insert tb values(1,'A') ...

  2. Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型

    sql server2005新增加了2大数据类型: 1.大值数据类型 2.xml 1.大值数据类型 Microsoft SQL Server 2005 中引入了 max 说明符.此说明符增强了 var ...

  3. Sql Server2005 Transact-SQL 新兵器学习总结之-PIVOT和UNPIVOT运算符

    1.简介  PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合. UNPIVOT与PIVOT执行相反的操作,将表值表达式的列转 ...

  4. [学习SQL SERVER 2005系列]图解SQL SERVER2005的安装

    [学习SQL SERVER 2005系列]图解SQL SERVER2005的安装 前言: [学习SQL SERVER 2005系列]准备把学习2005的一些心得整理出来,和大家分享,共同学习一起提高. ...

  5. 记一次SQL Server2005导入Oracle10G的折腾过程【供多种数据库导入导出数据的C#程序源码参考】...

    曾经很早的时候用 SQL Server2000 时就见过我们老大,用 SQL Server2000 的导入导出功能,把数据都导入到了 Oracle9 里去,所以我也对导入导出数据有充分的信心,绝对能做 ...

  6. SQL Server2005 只有配置工具,而没有查询分析器、企业管理器的解决方法

    在先安装了VS2008,再安装完SQL Server2005 后,发现在开始菜单中只有配置工具,安装的时候该选择的都选上了,感觉不对劲,那查询分析器和企业管理器跑哪里去了.网上百度了一下,遇到这个问题 ...

  7. SQL Server 2005系列教学(1) SQL SERVER2005介绍及安装

    重点在于SQL Server 2005各个版本的安装及测试! 大纲如下: 信息与数据的区别 信息:是现实世界事物的存在方式或运动状态的反映. 数据:数据是信息的载体和具体表现形式,是信息的表现形式. ...

  8. 学习SQL应知道的动态SQL语句基本语法

    学习SQL应知道的动态SQL语句基本语法 1 .普通SQL语句可以用Exec执行 9Kp=A   ' CdaFr1   eg: Select * from tableName Wsc+A:<&q ...

  9. Win7上的sql server2005安装教程

    1.打开下载好的sql server2005,点击"运行程序(R)": 2.点击"下一步": 3.点击"安装"继续,出现如下第二幅图时为已经 ...

最新文章

  1. 弗洛伊德算法(Floyd)简介
  2. 未设置服务器核心文件,[问题3] dhcpd.conf是DHCP服务器的配置的核心,每次启动DH..._考试资料网...
  3. grunt.config()_gruntjs api
  4. 小朋友学数据结构(3):二叉树的建立和遍历
  5. 4倍速!ML.NET Model Builder GPU 与 CPU 对比测试
  6. 软件工程---07.设计与实现
  7. 祝刘冬冬十八周岁快乐
  8. 武汉科技大学计算机课程设置,武汉科技大学计算机控制与接口技术课程实施方案.docx...
  9. 蓝湖+Vue.js+SosoApi+Spring Cloud+Rancher——项目架构总结介绍
  10. ac3音频 机顶盒播放音量变小问题
  11. iPhone12、iPhone12 Pro、iPhone12 Max、iPhone12 Pro Max是双卡双待吗
  12. idea部署RuoYi-Vue分离版详解,够细!你值得拥有
  13. Grafana面板(panel):从数据源请求数据
  14. Linux下存储多路径软件MultiPath源码分析
  15. C语言实现CRC32算法
  16. ASP.NET幼儿园网站源码 前台+后台
  17. Python2.7获取QQ空间部分好友
  18. 饥荒联机版Mod开发——准备工具(一)
  19. [译] 系统设计入门 | 掘金翻译计划
  20. VC6环境下使用图形控件NTGraph的方法和步骤

热门文章

  1. 数值计算网格------学习
  2. 安卓桌面小部件使用一段时间后无响应变为空白
  3. Matlab 中文论坛等待验证会员
  4. ubuntu13用wine安装TM2013
  5. python使用matplotlib制作精美的饼图
  6. python 读取文件时报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf
  7. Shell编程三剑客之awk
  8. F5运维之 将Windows中的证书导入F5
  9. JS正则表达式断言和贪婪
  10. AIX 挂载及卸载光驱、弹出光驱