数据库.docx
《数据库.docx》由会员分享,可在线阅读,更多相关《数据库.docx(9页珍藏版)》请在冰点文库上搜索。
数据库
数-据-库
一、数据库介绍
数据是对客观存在的事物特征的一种符号化的、抽象的表示。
而信息则是加工处理过的数据,也就是说信息是对大量数据进行分析处理后的结果。
信息来源于数据,而同时信息又以数据的形式表示出来。
现在,世界各国都在加快本国的信息化建设,为的是能够节约并充分利用资源、提高各行各业的作业效率。
而衡量一个国家信息化的水平,往往要看这个国家数据库的建设规模,数据库中信息量的大小以及数据库的使用程度。
中国是从七十年代引进的数据库技术。
经过近三十年的发展,取得了很大的进步,但和发达国家相比还有着一定的差距。
我们国家也一直非常重视信息化的建设,这些年还特别提出了要通过
表是关系型数据库中的一个重要对象。
它是以行和列所组成的二维表格形式来存储、显示、组织数据库中的所有数据信息。
SQLServer的每一个数据库最多可以创建20亿个表,每个表可以有250个字段,而对每张表的数据个数则没有做限制。
表的设计应遵循下列几个范式:
第一常规表单(第一范式)
1.去掉各个表中的重复组。
2.为每组关联数据创建独立的数据。
3.使用主关键字确定每组关联数据。
第二常规表单(第二范式)
1.为应用到多个记录的多组数值创建独立表。
2.使用外部关键字将这些表关联起来。
第三常规表单(第三范式)
去掉了不取决于关键字的字段。
其它标准化表单(范式)
也有第四常规表单(第四范式)(也称为 Boyce Codd 常规表单(范式)(BCNF))与第五常规表单(第五范式)存在,但是在实际设计中很少考虑。
忽视这些规则可能使得数据库的设计不太完美,但这不应影响功能。
将示例表标准化
这些步骤说明将一个虚构的汽车信息表进行标准化的步骤。
非标准化的表:
品牌
厂家
顶级版
尊贵版
豪华版
……
别克
上海通用
别克君威
别克凯越
别克赛欧
……
大众
上海大众
帕萨特
波罗
桑塔纳2000
……
红旗
一汽
红旗旗舰
世纪星
明仕
……
……
第一常规表单(第一范式):
无重复组
Id
品牌
厂家
类型
系列
……
1
别克
上海通用
顶级版
别克君威
……
2
别克
上海通用
尊贵版
别克凯越
……
3
别克
上海通用
豪华版
别克赛欧
……
4
大众
上海大众
顶级版
帕萨特
……
5
大众
上海大众
尊贵版
波罗
……
6
大众
上海大众
豪华版
桑塔纳2000
……
7
红旗
一汽
顶级版
红旗旗舰
……
8
红旗
一汽
尊贵版
世纪星
……
9
红旗
一汽
豪华版
明仕
……
第二常规表单(第二范式):
去掉冗余数据
以下两个表说明第二常规表单(第二范式):
factory表
id(主键)
品牌
厂家
1
别克
上海通用
2
大众
上海大众
3
红旗
一汽
car表
s_id(主键)
id(外键)
类别
系列
……
1
1
顶级版
别克君威
……
2
1
尊贵版
别克凯越
……
3
1
豪华版
别克赛欧
……
4
2
顶级版
帕萨特
……
5
2
尊贵版
波罗
……
6
2
豪华版
桑塔纳2000
……
7
3
顶级版
红旗旗舰
……
8
3
尊贵版
世纪星
……
9
3
豪华版
明仕
……
第三常规表单(第三范式):
去掉不取决于关键字的数据
也就是说可以将诸如颜色再单独建一个表,每个颜色都有一个代码来表示如下表所示:
c_id(主键)
颜色代码
颜色
1
0001
雅黑
2
0002
峡谷红
3
0003
钻石银
……
……
……
这时候,将原来car表中的颜色列改为颜色代码,让car表原来直接保存颜色,改为保存颜色的代码,每一种颜色都有一个唯一的代码与之相对应。
这个代码就需要我们来保证它的唯一性了。
这样做的目的是为了保证数据的完整性,一致性。
因为有的人喜欢输入简称,比如“西安”,而有的人比较严谨,会写“西安市”,这样就会出现数据的不一致,这在数据库看来是两个不同的数据,而不是指的同一个城市。
如果我们用代码来表示,就不会出现这种问题。
三、SQL语句
SQL(STRUCTUREDQUERYLANGUAGE)语言,中文名叫结构化查询语言,是关系型数据库的核心,具体到SQLServer所使用的数据库查询语言称为Transact-SQL,它是SQLServer的核心,是增强版的SQL,或者说是扩展的SQL。
Transact-SQL强化了原有的SQL关键字以进行数据的存取,储存及处理等功能,Transact-SQL扩充了流程控制指定,可以使你方便的编写功能强大的存储过程
SQL语言又分为DDL(datadefinitionlanguage)数据定义和DML(datamanipulationlanguage)数据操纵语言两种。
1.DDL:
用于创建和修改对象:
注:
下列语句中的中圆点代表空格的意思。
createdatabasetttt
go
usetttt
createtabletable1(
[id]intidentity(1,1)notnull,
[aa]varchar(50)null,
[bb]varchar(50)null)
createtabletable2(
[s_id]intidentity(1,1)notnull,
[id]intnull,
[cc]varchar(50)null,
[dd]varchar(50)null)
altertabletable1add
constraint[df_table1_aa]default('')for[aa],
constraint[df_table1_bb]default('')for[bb],
constraint[df_table1]primarykeyclustered([id])
altertabletable2add
constraint[df_table2_id]default(0)for[id],
constraint[df_table2_cc]default('')for[cc],
constraint[df_table2_dd]default('')for[dd],
constraint[df_table2]primarykeyclustered([s_id])
3.DML:
用于操纵数据库中的数据
所能完成功能主要有检索(select)、插入(insert)、删除(delete)以及更新(update)四种。
格式如下:
检索语句的格式如下:
Select字段1,字段2,字段3from表名where字段名=值orderby字段descgroupby字段
插入语句的格式如下:
Insertinto表名(字段1,字段2,字段3)values(值1,值2,值3)
删除语句的格式:
deletefrom表名where字段名=值
修改语句的格式:
update表名set字段1=值1,字段2=值2,字段3=值3where字段名=值
四、存储过程
存储过程是SQLServer服务器上一组预先定义并编译好的Transact-SQL语句,它可以接受参数、返回状态值和参数值,并且可以嵌套调用。
存储过程的基本格式如下:
CREATEPROCEDURE存储过程名
[参数名参数类型(大小),
参数名参数类型(大小),
…………
参数名 参数类型(大小)]
AS
declare@变量名变量类型(大小)
declare@变量名变量类型(大小)
declare@变量名变量类型(大小),……,@变量名变量类型(大小)
存储过程的具体语句
五、触发器
触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动执行,唤醒调用触发器以响应INSERT、UPDATE或DELETE语句。
触发器的基本格式如下:
CREATETRIGGER触发器名ON表名
FORINSERT(DELETE,UPDATE)
AS
declare@变量名变量类型(大小)
declare@变量名变量类型(大小)
declare@变量名变量类型(大小),……,@变量名变量类型(大小)
触发器的具体语句