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 SERVER2005的安装
第2部分(第3~9章)是本书的重点,也是读者深入学习SQL Server 2005的基础,详细介绍了SQL Server 2005的安装和配置过程,如何创建和管理数据库、数据表,以及如何对数据进行查询、修改、输出等内容;第3部分(第10~14章)...
学习SQL Server 2005:从哪里开始?.pdf
8 学习SqlServer 2005必须的先学一门编程语言么 9 数据结构和数据库的区别 10 什么是连接【重点】 11 有了编程语言为什么还需要数据库 12 建议初学者从三个方面学习数据库 13 如何建数据库 14 如何删除数据库 15 ...
对于学习SQL SERVER2005数据库安全管理机制的理解.pdf
Beginning SQL Server 2005 Administration是学习SQL Server 2005的书籍。SQL Server 2005 is the largest leap forward for SQL Server since its inception. With this update comes new features that will ...
Professional SQL Server 2005 Programming是《SQL Server 2005高级程序设计》原代码 是想学习SQL Server 2005数据库的必备书籍,简单,通俗,易懂,强烈建议大家买!全而精!!
笔记是本人学习SQLServer一段时间后重新整理出来的,适合有一些入门基础的人学习。 ├─01 安装及使用 │ SQLServer2005安装及使用.txt │ ├─02 常用函数 │ function.sql │ ├─03 建表、建库 │ create.sql ...
资源名称:新编SQL SERVER 2005数据库管理入门与提高内容简介:《数据库入门与提高·新编SOL Server 2005数据库管理入门与提高》是指导初学者学习SQL Server 2005数据库管理的入门书籍。书中图文并茂地介绍了初学者...
本资料是英文教程。详细介绍了在sql server 2005的环境下开发数据库。
Sql Server 2005学习资料,入门学习资料
SQL Server 2005基础教程,让正在学习SQL Server 2005的朋友们可以自己深入学习,在没有老师的指导下,迈入数据库的大门,让您不再成为门外汉!
内部含有两本使用教程:sqlserver基础教程,sqlserver从入门到精通;个人认为是学习sqlserver2005的好工具
SQL Server 2005微软官方权威参考书. 公球公认SQL Server 2005 经典著作.. 数据库“铁人”、微软MVP胡百敬先生鼎力推荐 微软SQL Server 总部Principal Group 项目经理朱凌志鼎力推荐 本书详细介绍了数据...
学习sql server 和sql 的两本经典的著作: 《sql server 2005 技术内幕 T-SQL查询》 《sql server 2005 技术内幕 T-SQL程序设计》 网上大多的资源都是英文的,好容易找到中文的了,上传上来和大家分享。 这两本书都...
是学习SQL Server 2005中文版的经典啊!理论与应用兼备!
很好的学习SQL server2005的资料。适合初学者学习和提高。
学习SQL server2005,sql server2005中的触发器使用,sqlserver2005的几类约束,数据库备份与恢复,使用JDBC访问SQL Server 2005
28个教程,并有辅助文字说明,从零基础开始入门,逐步深入,适合新人学习。
零基础学习SQL Server 2005