SQL Server 笔记

Sql数据库

SQL Server简介
1996——SQL server6.5
1998——SQL server7.0
2000——SQL server2000
2005——SQL server2005
2008——SQL server2008
2012——SQL server2012
2014——SQL server2014
1.企业版 (SQL Server 2008Enterprise Edition)
企业版最全面的版本,支持所有的SQL Server 2008提供的功能,能够满足大型企业复杂的业务需求

2.标准版本(SQL Server 2008 Standard Edition)
标准版适合中小型企业的需求,在价格上比企业版有优势

3.工作组版( SQL Server2008 Workgroup Edition)
对于那些在大小和用户数量上对数据库没有限制的小型企业,工作组版是理想的数据管理解决方案它可以用作前端Web服务器,也可以用作部门或分支机构的运营

4. 开发版(SQL Server 2008 Express)
开发版覆盖了企业版所有的功能, 但是只允许,作为开发和测试系统,不允许作为生产系统
数据库体和记录
数据库中的数据是按照数据的格式是一样的方式进行存储的,而不是杂乱无章的,相同格式和类型的数据统一存放在一起。
数据冗余: 存在着重复的数据
数据完整性: 保证数据库中的数据准确可靠
系统数据库
master
model
tempdb
MSDB
Resource
用户数据库
数据库文件
数据文件
主要数据文件 .mdf
次要数据文件 .ndf
日志文件 .ldf
创建一个数据库,最少需要二个文件, .mdf .ldf
 身份验证方式
window身份验证
SQL Server身份验证
总结
第六章总结
> 用数据库来管理数据,将使数据的存储,检索变得更加安全和高效

>SQL Server 2008是微软公司提供的关系型数据库管理系统,SQL Server 也是当今流行的数据库,
>数据库是表和数据库访问对象的集合,其中表分类存储了不同的实体信息,每一行数据对应一个实体的描述信息。
> 数据冗余是指数据库存在一些重复的数据。数据完整性,是指数据库中的数据能够正确反映实际情况,数据库中允许有一些的数据冗余,但是要保持数据的完整性。
>SQL Server Management Studio 是SQL Server 2008 最常用的操作环境。能够执行对数据库的日常管理操作和数据查询,如分离和附加数据库,备份和还原数据库,收缩数据库等
> 连接 SQL Server 之前应先启动 SQL Server服务。建库之前建好使用该数据库的用户,
>  SQL Server 数据库的物理文件包括数据文件和日志文件两部分,在创建数据库时指定

第七章
表相关的几个基本概念
7.1.1数据完整性
数据完整性要求数据库中的数据具有准确性,准确性是通过数据库表的设计和约束来实现的,例如在存储学生信息的表中,如果允许任意输入学生信息的话,那么可以重复输入同一个学生的信息,如果不对表中存储的年龄信息加以限制,那么学生的年龄可能会出现负数,这样的数据都不具备完整性
为了实现完整性,数据库需要做以下两方面的工作,
(1)检验每行数据是否符合要求。
(2)检验每列数据是否符合要求。
为实现以上要求,SQL Server提供了以下四种类型的约束(Constraint)


1.实体完整性约束
实体完整性要求表中的每一行数据都反应不同的实体,不能存在相同的数据行。
通过索引,唯一约束,主键约束或标识列属性,可以实现表的实体完整性。
2.域完整性约束
域完整性指的是给定列输入的有效性。通过限制属性类型,检查约束,输入格式,外键约束,默认值,非空约束等多种方法,可以实现表的域完整性
3. 引用完整性约束
在输入或删除数据行时,引用完整性约束用来保持表之间已定义的关系,
4. 在强制引用完整性时, SQL Server禁止用户进行下列操作
(1)主表中没有关联记录时,将记录添加到从表中,也就是说学生成绩表中不能够出现在学生信息表中不存在的学号。
(2)更改主表中的值并导致相关表中的记录孤立,如果学生信息表中的学号改变了,学生成绩表中的学号也应当随之改变
(3)从主表中删除记录。但在相关表中仍存在与该记录匹配的相关记录,如果把学生信息表中的学生删除了,则该学生的学号不能出现在学生成绩表中。引用完整性通过主键和外键之间的引用关系来实现
主键和外键
1.主键:(Primary Key):主关键字
如果在表中存储了很多行数据,就会引发这样的问题,如何判断表中没有重复的数据行,如何判断一个学生的信息没有被输入两次?
这就需要一个列。这个列的值用来唯一标识表中的每一行,用于强制表的实体完整性,这样的列定义为表的主键


一个表中只能有一个主键,并且主键列不允许出现null值,尽管有的表中允许没有主键,但是通常情况下建议为表设置一列为主键,


提示:如果两列或多列组合起来唯一的标识表中的每一行,则该主键也叫做“复合主键”。


有时候,在同一张表中,有多个列可以用来当作主键,在选择哪个列作为主键的时候,需要考虑两个原则,最少性和稳定性。
(1)最少性是指列数最少的键,如果可以从单个主键和符合主键中选择,应该选择单个主键,这是因为操作一列,比操作多列要快,当然该规则也有例外,例如,两个整数类型的列和组合比一个很大的字符类型的列要快。
(2)稳定性是指列中数据的特征,由于主键通常用来在两个表中建立联系,所以主键的数据不要经常更新,理想情况下,应该永远不要改变。
2.外键(Foreign Key):外键部
一把情况下,学生的信息和学生的考试成绩是存放在不同的数据表中的,在成绩表中可以存储一行学生的学号来表示是哪个学生的考试成绩,这时有引发了一个问题,如果在成绩表中输入的学号根本不存在(如输入的时候把学号写粗了)该怎么办?
这个时候就应当建立一种“引用”的关系,确保“从表”中的某个数据项在“主表”中必须存在,避免以上错误发生。
“外键”就是用来达到这个目的的,他是相当于主键而言的,就是“从表”中对应“主表”的列,在从表中称为外键或者引用键,他的值要求与主键或者唯一键,相对应,外键用来强制引用完整性,一个表可以有多个外键,
明确了完整性规则之后,就可以创建数据库表了,创建数据库表实际上就是实施不同的约束,实现完整性规则的过程
创建数据库表
标志列
(1)如果一列的数据属于数字类型(如整形),那么可以把该列定义为标识列
定义成标识列之后还需要分别指定“标识种子”和“标识增量”默认值都是1
(3)定义了标识列之后,在以后每次输入数据的时候,该列随数据行的增加而自动增加数值,并且不会重复,第一次的数字就是“标识种子”值,以后每次按照“标识增量”增加数值,标识列通常也被定义为主键,通常所说的“自动编号”就是指标识列的数字自动增加

第七章总结
SQL Server 创建表的过程是设置数据列属性的过程,同时也是实施数据完整性(包括实体完整性,引用完整性和域完整性等)的过程
>实体完整性要求数据行不能有重复,每一行数据都由主键来唯一确定 
>域完整性实现了对输入到特定列的数值的限制
>创建数据库表需要确定表的列名,数据类型,是否允许为空,还需要确定主键,必要的是默认值,标识列和检查约束
如果建立了主表和从表的关系,则有以下几种情况
1.从表中相关项目的数据在主表中必须存在
2.主表中相关项的数据更改了。则从表对应的数据项也应当随之更改
3.在删除从表之前,不能够删除主表
第八章
SQL的组成
SQL 语言主要由以下及部分组成。
DML (Data Manipulation Language,数据操作语言,也称为数据操纵语言);用来插入,修改和删除数据库中的数据,如INSERT、UPDATE及 DELETE等。
DDL(Data Definition Language,数据定义语言):用来建立数据库,数据库对象和定义其列,大部分是以CREATE开头的命令,如CREATE TABLE CREATE VIEW 及DROP TABLE等。
DQL(Data Query Language,数据查询语言):用来对数据库中的数据进行查询,如SELECT等,
DCL (Data Control Language,数据控制语言):用来控制数据库组件的存款许可,存款权限等,如GRANT,REVOKE等。
SQL中的运算符
算术运算符
算术运算符:+(加),—(减),*(乘),/(除),%(模)五个算术运算符用来在两个数或表达式上执行数学运算,这两个表达式可以是任意两个数字数据类型的表达式。
赋值运算符
即‘=’符号,用于将一个数或变量表达式/赋值给另一个变量
比较运算符
比较运算符
              运算符 说明
              = 等于,例如age=23
> 大于,例如,price>100
< 小于
<> 不等于
>= 大于等于
<= 小于等于
              != 不等于(非SQL-92标准)
比较运算符计算结果为布尔数据类型,并根据测试条件的输出结果返回TRUE或FALSE
逻辑运算符
逻辑运算符用来对某个条件进行判断,以获得判断条件的真假,返回带有TRUE或FALSE值的布尔数据类型
T-SQL中的逻辑运算符
运算符 说明
AND 当且仅当两个布尔表达式都为TRUE时,返回TRUE
OR 当且仅当两个布尔表达式都为FALSE时,返回FALSE
NOT 对布尔表达式的值取反,优先级别最高
语法:INSERT [INTO]表名 [(列名列表)]VALUES(值列表);
其中:
(1)[INTO]是可选的,也可以省略。
(2)表名是必须的
(3)表的列名是可选的,如果省略,将依次插入所以列
(4)多个列名和多个值列表用逗号分隔。
(5)分号(;)是T-SQL语句终止符,不是必需的
例如:以下的语句为向学生表中插入一行数据。
INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX)
VALUES (‘ 张青裁’,’上海松江’,6,’ZQC@Sohu.com’,0)
使用INSERT插入数据
在插入数据的时候,需要注意以下事项。
(1)每次插入一整行数据,不可能只插入半行或者几列数据,但允许某些列为空或使用默认值
(2)数据值的数目必须与列数相同,每个数据值的数据类型,精度和小数位数也必须与相应的列匹配                                     (3)INSERT语句不能为标识列指定值,因为它的数字是自动增长的
(4)对于字符类型,日期类型的列当插入数据的时候,用单引号(‘)将其引起来
(5)尽管可以不指定列名,但是最好明确指定插入的列和对应的值,以便能够将列和值清晰地对应起来
(6)若在设计表的时候指定某列不允许为空,则该列必须插入数据,否则将报告错误信息,
(7)插入的数据项,要求符合检查约束的要求,例如,我们在前面设置了SEmail列必须包含一个字符@,如果插入语句修改为 INSERT INTO Students(SName,SAddress,SGrade,SEmail,SSEX)
VALUES(‘张青裁’,’上海松江’,’6,’ZQC’,0)
一次插入多行数据
通过 INSERT SELECT 语句向表中添加数据
例如,创建一张新表,来存储本班的通讯录信息,则可以从学生表中提取相关的数据插入建好的AddressList表中,T-SQL语句如下:
INSERT INTO AddressList (姓名,地址,电子邮件)
SELECT SName,SAddress,SEmail 
FROM Students

SELECT语句用于查询,上面的SQL语句 用来把学生信息表中的姓名,地址和Email信息读取并保存到新的AddressList表中
需要注意以下两点,
(1)查询得到的数据个数,顺序,数据类型等,必须与插入的项保持一致。
(2)AddressList表必须预先创建好,并且具有姓名,地址和电子邮件三列
3.通过SELECT INTO 语句将现有表中的数据添加到新表中。

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页