数据库重点总结
第六章 程序数据集散地:数据库
使用数据库的必要性:
使用数据库可以高效且条理分明地存储数据,它使人们能够更加迅速和方便的管理数据。
主要体现在以下几个方面:
(一):可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。
(二):可以有效的保持数据信息的一致性和完整性,降低数据冗余。
(三):可以满足应用的共享和安全方面的要求。
(四):数据库技术能够方便智能化地分析,产生新的有用的信息。
当今常用的数据库:
SQL Server:
SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。
Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
Oracle:
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
IBM DB2:
DB2是IBM公司开发的关系数据库管理系统,它有多种不同的版本,如:DB2工作组版(DB2Workgroup Edition)、DB2企业版(DB2 Enterprise Edition)、DB2个人版(DB2 Personal Edition)和DB2企业扩展版(DB2 Enterprise-Exended Edition)等,这些产品基本的数据管理功能是一样的,区别在于支持远程客户能力和分布式处理能力。
个人版适用于单机使用,即服务器只能由本地应用程序访问。工作组版和企业版提供了本地和远程客户访问DB2的功能(当然远程客户要安装相应客户应用程序开发部件),企业版包括工作组版中的所有部件外再增加对主机连接的支持。企业扩展版允许将一个大的数据库分布到同一类型的多个不同计算机上,这种分布式功能尤其适用于大型数据库的处理。
DB2可运行在OS/2、Windows NT、UNIX操作系统上,通常将运行在这些平台上的DB2产品统称为DB2通用数据库,这主要是强调这些产品运行环境类似,并共享相同的源代码。DB2通用数据库主要组件包括数据库引擎(Dalabase Engine )应用程序接口和一组工具。数据库引擎提供了关系数据库管理系统的基本功能,如管理数据、控制数据的访问(包括并发控制)、保证数据完整性及数据安全。所有数据访问都通过SQL接口进行。
db2起源于system r和system r*。他支持从pc到unix,从中小型机到大型机;从ibm到非ibm(hp及sun unix系统等)各种操作平台。他既可以在主机上以主/从方式独立运行,也可以在客户/服务器环境中运行。其中服务平台可以是os/400,aix,os/2,hp-unix,sun-solaris等操作系统,客户机平台可以是os/2或windows, dos, aix, hp-ux, sun solaris等操作系统。
MySQL:
MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言,它使得存储、更新和存取信息更加容易。MySQL是一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和许多不同的客户程序以及库组成的。
数据库的基本概念
1.数据库的作用
①存储大量数据,方便检索和访问
②保持数据信息的一致、完整
③共享和安全
④通过组合分析,产生新的有用信息
2.数据库和应用程序
①应用程序
作用:响应操作并显示结果、向数据库请求数据
要求:美观、操作简单方便
②数据库:
作用:存储数据、检查数据、生成新的数据
要求:统一、安全、性能等
3.企业里流行的数据库
①Oracle(也称:大型数据库)
Oracle公司的产品
产品免费、服务收费
*一般是大型公司基金表使用
②SQL Server
微软公司产品
针对不同用户群体的多个版本
企业版
标准版
工作组版
开发版
评估版
易用性好
③DB2
IBM公司的产品
支持多操作系统、多种类型的硬件和设备
操作系统可以实现跨平台
④MySQL(也叫:小型数据库)
由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
开放源代码
网站应用广泛
4.数据库中的实体
客观存在的、可以被描述的事物
而“实体”是在数据库中使用表来代替
“表”:
行:记录
列:字段
数据库就是“数据”的“仓库”
数据库中包含表、关系及操作对象
数据存放在表中
5.数据库管理(操作)
①检索数据
②插入数据
③更新数据
④删除数据
简称“增删改查”
数据库系统(DBS):仓库
数据库管理系统(DBMS):多个用户可以同时实现(增删改查)
6.数据库安装时基本要求的配置:
①处理器:
最少600-MHz奔腾处理器。
推荐:1GHZ或更高
②内存:
最小:512MB
推荐:1GB或更大
③磁盘容量:
360MB(典型安装)
750MB(完全安装)
④操作系统
不同版本安装支持不同的操作系统
7.数据库文件和事务日志文件
(1)数据文件
①.mdf(主要数据文件):主要负责数据文件的管理和监控(核心操作),并且只有一个
②.ndf(次要数据文件):可有可无、可有多个。当主要数据文件数据工作量过大时辅助
(2)日志文件:
①.ldf:记录整个数据文件的运行状态包括错误的信息、记录。有利于我们查看数据库的运行性能
*日志文件:一般使用一个就可以,也可以使用多个
SQl Server数据库
1.SQL Server服务启动方式
(1)操作系统的服务中启动
①点击我的电脑→右击→管理→服务和应用程序→服务→在服务中找到SQL Server相应的版本→启动服务→在状态列中显示正在运行就可以了
②Windows键+R→输入services.msc→服务→在服务中找到SQL Server相应的版本→启动服务→在状态列中显示正在运行就可以了
(2)SQL Server Management Studio中启动
2.链接到服务器
服务器名称:一般情况下是“.”或者“.”+服务器名称
身份验证:有两种→①SQL Server 身份验证(需要用户名和密码) ②Windows 身份验证(不需要用户名和密码)
3.系统数据库和用户数据库
(1)系统数据库
①master(数据库核心):负责数据库的整个运行过程和监控数据库的运行状态
②model(模型数据库):提供用户参考结构
③tempdb(临时数据库):当我们进行“增删改查”时产生的临时数据保存到临时数据库
④msdb(警告数据库):存储有些错误信息
⑤Resource(数据库资源):
(2)用户数据库
是自己创建使用的数据库
4.建立登录名
*新建登录名并把“sa”账户禁用或删除以保障数据库的安全性
*“sa”是管理员默认的登录名
(1)禁用:
安全性→登录名→找到登录名→选中右键→属性→状态→登录设置修改为禁用
(2)删除:
安全性→登录名→找到登录名→删除
(3)新建登录名:
*若使用管理员禁用所有登录名出线bug
①使用Windows身份登录→安全性→选中登录名→右键→新建登录名
填写登录名→选择身份验证类型→输入密码→取消强制实施密码策略
登录名:一般情况下使用英文命名
强制实施密码策略:每次登录都要更改密码
②修改管理员权限(修改到最高):
服务器角色→选中sysadmin
③查看状态
如果登录有变化修改为启动状态
5.数据库的创建和管理
(1)创建:
数据库→选中,右键→输入数据库名称
创建次要数据文件:添加→后缀名.datal
所有者:关联
当访问权限低的登录名关联访问权限高的登录名时访问权限低的登录名权限会提高
第七章 用表组织数据
1.数据完整性
①数据存放在表中
②数据完整性的问题大多是由设计引起
③创建表的时候,就应当保证以后数据输入时正确的------错误的数据、不符合要求的数据不允许输入
*可靠性+准确性=数据完整性
2.完整性的内容
(1).列值要求(约束)
①输入类型
②输入格式
③允许范围
(2).整型要求(约束)
①存在重复
②符合特定的要求
3.四种完整性约束
①域完整性:
制定范围
约束方法:限制数据类型、查询约束、外键约束、默认值、非空约束
比如:性别、分数。
②实体完整性
表示整行(列)独一无二
约束方法:唯一约束、主键约束、标识列
比如:学号
③自定义完整性
约束方法:规则、存储过程、触发器
④引用完整性
表与表之间的联系
4.创建数据表:
(1).确定列的数据类型
①二进制数据类型:
image
可用来存储图像
②文本数据类型
*Unicode是代表字符站一位
char
固定长度的非Unicode字符数
varchar
可变长度非Unicode数据
nchar
固定长度的Unicode数据
nvarchar
可变长度的Unicode数据
text
存储长文本信息
ntext
存储可变长度的长文本
*默认长度为1,可以改变长度
③日期和时间
datetime
*默认长度为8,不可改变,不用编辑
④数字数据
int(4位)、smallint(2位)、tinyint、bigint
整型
*默认长度为8,不可改变,不用编辑
float、real
浮点型
⑤货币数据类型
money
十进制货币类型
⑥bit数据类型
bit
存储布尔
默认长度为1
值: 0/1
true/false
数据表的设计构选
1.标识列、主外键约束
(1)标识列
创建标识列必须使用int类型(值类型)
①标识增量:标识种子增长的数量
②标识种子:初始化数字
*不能该列添加数据!
(2)主外键:
设置主键的时候不需要考虑数据类型
*主键不允许为空!
FK外键
PK主键
(3)设置默认值
选中行→列属性→默认值或绑定中填写默认值
(4)设置长度
右击空白处→CHECK约束→常规小的表达式→check(len(列名)=长度)
在CHECK约束中吧表达式中的check删除就可以了
(5)约束:
or或
and并且
like 模糊
%任意的1
建立表之间的关系
1.建立表之间的关系实际上就是引用约束!
2.步骤
右键→关系→添加→关系→建立关系
3.在那个表中新建关系,本表就是子表
check约束(检查约束)
1.定义列可接受的数据格式(成绩、性别)
2.使用步骤
01.选中相应的列→右键→check约束→添加→常规下的表达式中填入应该的约束!!
什么是主键、外键:
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键
比如
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
同理 成绩表中的课程号是课程表的外键
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
SQL Server数据类型
分类
|
数据类型
|
说明
|
|
二进制数据类型
|
用来存储非字符和文本的数据
|
binary
|
固定长度的二进制数据
|
varbinary
|
可变长度的二进制数据
|
||
image
|
可用来存储图像
|
||
文本数据类型
|
字符数据包括任意字母、符号或数字字符的组合
|
char
|
固定长度的非Unicode字符数据,最大长度为8000个字符
|
varchar
|
可变长度的非Unicode字符数据
|
||
nchar
|
固定长度的Unicode字符数据
|
||
nvarchar
|
可变长度的Unicode字符数据
|
||
日期和时间数据类型
|
用于存储日期和时间
|
datetime
|
从1753年1月1日到9999年12月31日,准确度为三百分之一秒或3.33毫秒
|
数字数据类型
|
该数据仅包含数字、包括正数、负数及分数
|
int
smallint
tinyint
bigint
|
整数
|
floa
treal
|
浮点数
|
||
|
|||
分类
|
数据类型
|
说明
|
|
货币数据类型
|
货币数据类型用于十进制货币值,并且精确到小数点后面4位数字
|
money
|
|
bit数据类型
|
表示是/否的数据,只有两种选择,如婚否、是否订购等。在SQL Server 中用1和0表示,一般1表示是,0表示否
|
bit
|
存储布尔数据类型
|
第八章 用SQL语句操作数据
1、理论总结
1.SQL的组成
1.DML :数据操作语言
2.DDL:数据定义语言
3.DQL:数据查询语言
4.DCL:数据控制语言
2、结构化语言
1.USE 数据库名称(指定这个数据库)
2.SELECT * FROM 表名(查询表)
3.INSERT [INTO] 表名 [(列名列表)] VALUES (插入一行数据)
4.INSERT SELECT 语句 SELECT INTO 语句 UNION 关键字 (插入多行数据)
5.UPDATE 表名 SET 列名 = 更新值 [ WHERE 更新条件 ] (更新数据)
6.DELETE [FROM] 表名 [WHERE <删除条件>] (删除数据) 可以加条件删除
7.TRUNCATE TABLE 表名 (删除表中所有记录行) 不可以加条件删除
一:SQL的组成
(1)DML(数据操作语言)
插入,删除和修改数据库中的数据INSERT,UPDATE,DELETE等。
(2):DCL(数据控制语言)
用来控制存取许可,存取权限GRANT,REVOKE等。
(3):DQL(数据查询语言)
用来查询数据库中的数据SELETE等。
(4):DDL(数据定义语言)
用来建立数据库,数据库对象和定义表的列GREATE,TABLE,DROP,TABLE等。
二:运算符
算术运算符,赋值运算符,比较运算符,逻辑运算符
<>不等于 !=不等于
三:T-sql
结构化查询语言:不区分大小写。
(1):插入数据行语法:
INSERT [INTO] 表名 [(列名)] VALUES(值列表)
(2):插入多行数据语法:
INSERT INTO <表名> (列名)
SELETE <列名>
FROM <源表名>
一:使用UPDATE更新数据行
语法:
UPDATE 表名 SET 列名=更新值
IWHERE [更新条件]
注意:
1.更新多列数据使用逗号隔开。
2.勿忘条件限制,以防有效数据丢失。
二:使用DELETE删除数据行
语法-:
DELETE [FROM] 表名 [WHERE<删除条件>]
语法二:
TRUNCATE TABLE 表名
作用:删除的数据不能恢复。
(1):使用UPDATE更新数据,一般有限制条件。
(2):使用DELETE删除数据,不能删除主键值被引用数据行。
(3):数据导入导出功能可以更文本文件,Excel文件交换数据。
SQL的组成:
(1)DML(Data Manipiation Language ,数据操作语言,)用来插入,修改和删除数据库中的数据,如:INSERT,UPDATE,DELETE等。
(2)DDL(Data Definition Language ,数据定义语言)用来建立数据库,数据库对和定义其列,大部分是以CREATE开头的命令,如:CREATE TABLE, CREATE VIEW及DROP TABLE等。
(3)DQL (Data Query Language 数据查询语言)用来对数据库中的数据进行查询,如:SELLECT等。
(4)DCL (Data Control Language 数据控制语言 )用来控制数据库组件的存取许可,存取权限等,如:GRANT,REVOKE等。
SQL中的运算符:
1:
算数运算符: +(加),-(减),*(乘),/(除),%(模,求两个数相除的余数),
2:
赋值运算符: =(把一个数或变量赋值给另一个)
3:
比较运算符:=(等于),>(大于),<(小于),<>(不等于),>=(大于等于),<=(小于等于),!=(不等于,非SQL-92标准)
4:
逻辑运算符:AND(当且仅当两个布尔表达式都为TRUE时,返回TRUE),OR(当且仅当个两个布尔表达式都为FALSE时,返回 FALSE),
NOT(对布尔表达式的值取反,优先级别最高)。
使用 T-SQL插入数据。
使用INSERT语句一行一行的插入数据是最常用的方法:
语法:INSERT INTO 表名 (表的列名)
VALUES (值列表)
如:INSERT INTO Studentes(SName,Sadress,Sgrade,SEmali,Sec)
VALUES ('张庆','上海',6,'ZWM@qq.com',0)
一次插入多行数据。
一次插入多行数据有三种方法:
(1)通过INSERT SELECT语句相表中添加数据
INSERT INTO AddressList(姓名,地址,电子邮件)
SELECT SName,Saddress,SEmail
FROM Student
注意:1,查询得到的数据个数,顺序,数据类型等,必须与插入的项保持一致。2,AddressList表 必须是预先创建好,并且具有姓名,地址,电子邮箱这三类。
(2)通过SELECT INTO语句将现有的数据添加到表中
如:SELECT Students.SName,Students.SAddress,Students.SEmali
INTO AddressList
FROM Students
在向一个新表插入数据的时候,又会有一个新问题,如何插入标识列?
语法: SELECT IDENTITY(数据类型,标识种子,标识增长量)AS列名
INTO 新表
FROM 原始表
(3)通过UNION关键子合并数据进行插入
如:INSERT Students(SName,SGrade,SSex)
SELECT '张黑',7,1UNION
SELECT '张黑',7,1UNION
SELECT '张黑',7,1
使用 T-SQL更新数据
语法:UPDATE 表名 SET 列名 =更新值 WHERE 更新条件
使用 T-SQL删除数据
语句:DELETE FROM 表名 WHERE 删除条件
使用 TRUNCATE TABLE 删除数据
TRUNCAE TABLE Studnts
E-R图基本知识
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
它是描述现实世界概念结构模型的有效方法。是表示概念模型的一种方式,用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。
总结来说,E-R图的四个组成的部分
矩形框:表示实体,在矩形框中写上实体的名字
椭圆形框:表示实体或联系的属性
菱形框:表示联系,在框中记入联系名
连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)。
下面简单的介绍下基本的概念
实体:客观存在并且可以相互区分的事物为实体。可以是具体的人,事,物或者抽象的概念
属性:实体所具有的某一个特性就称为属性,一个实体可以由若干个属性来刻画。
码:唯一标识实体的属性集
域:属性的取值范围称为该属性的域
实体型:用实体名及其属性名集合来抽象和刻画同类实体称为实体型
实体集:同一类型实体的集合称为实体集
联系:现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。包括实体内部的联系及实体之间的联系
其中码分为超码,候选码,主码,外码
超码:一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一的标识一个实体
候选码:任意超码的真子集不能包括超码,则称其为候选码;超码包括候选码
主码: 其实主码一般指的就是主关键字。主关键字是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录,主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键。又称主码。
外码: 外码别称外键,具体来说就是比如说这个外码是相对于关系R来说的,但是如果相对于关系S来说的话是关系R中的主码,外码就是这个意思。
举个最经典的例子
E-R图表示某个工厂物资管理的概念模型
实体包括:
仓库: 仓库号、面积、电话号码;
零件 :零件号、名称、规格、单价、描述;
供应商:供应商号、姓名、地址、电话号码、帐号;
项目:项目号、预算、开工日期;
职工:职工号、姓名、年龄、职称;
实体之间的联系
仓库------零件
1、一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。仓库和零件是多对多的关系。
2、用库存量来表示某种零件在某个仓库中的数量
仓库------职工
1、一个仓库拥有多个职工,一个职工只能在一个仓库中工作,仓库和职工是一对多的关系
2、职工之间有领导和被领导的关系,因为管仓库肯定有个头,所以有领导和被领导的关系。
E-R图如下所示
什么是数据库E-R图?
E-R图也称实体-联系图,是一种提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。通俗点讲就是,当我们理解了实际问题的需求之后,需要用一种方法来表示这种需求,概念模型就是用来描述这种需求。
E-R图的构图要素组成
1.实体
实际问题中客观存在的并且可以相互区别的事物称为实体。实体是现实世界中的对象,可以具体到人,事,物。可以是学生,教师,图书馆的书籍。
2.属性
实体所具有的某一个特性称为属性,在E-R图中属性用来描述实体。比如:可以用“姓名”“姓名”“出生日期”来描述人。
3.联系
世界上任何事物都不是孤立存在的,事物内部和事物之间都有联系的,实体之间的联系通常有3种类型:一对一联系,一对多联系,多对多联系。
绘制数据库E-R图的常用符号
数据库E-R图一般包含的元素有:实体(方框表示),联系(菱形表示),属性(椭圆表示),联系(直线表示)相关表示符号见下图:
绘制数据库E-R图要注意的问题
数据库E-R图在绘制前,要先弄清楚各个实体之间的联系和相关约束,这样才能保证我们做出来的数据库E-R图的有效性。绘制时主要注意以下几个点:
1.一个实体转化为一个关系模式。实体属性就是关系的属性,实体的码就是关系的码。
2.一个1:1联系可以转化为一个独立的关系模式,也可以与任意一端所对应的关系合并。
3.一个1:n联系可以转化为一个独立的关系模式,也可以与任意n端所对应的关系合并。
4.实体中键属性一般在其下面画下划线区别表示。
怎么绘制数据库E-R图?
目前,数据库E-R图的绘制一般用软件辅助,画数据库E-R图常用的软件有:WORD,亿图图示,visio等等,PPT也是可以绘制出美观的实体关系图。
一般的作图步骤:
- 确定所有的实体集合;
- 选择实体集应包含的属性;
- 确定实体集之间的联系;
- 确定实体集的关键字,用下划线在属性上表明关键字的属性组合;
- 确定联系的类型,在用线将表示联系的菱形框联系到实体集时,在线旁注明是1或n(多)来表示联系的类型。
数据库E-R图模板展示
看完以上关于数据库E-R图的介绍,相信大家也明白了数据库E-R图的魅力,最后,小编也找了相关的数据库E-R图供大家学习参考。
学生就业系统E-R图
体育会议系统E-R图
MySQL 三大范式
一、第一范式
1NF是对属性的原子性,要求属性具有原子性,不可再分解;
二、第二范式
2NF是对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖;
三、第三范式
3NF是对字段的冗余性,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;
第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。简而言之,第一范式就是无重复的域。
满足第二范式必须先满足第一范式。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。