首页 > 代码库 > 初识数据库

初识数据库

数据库简介

  使用数据库的必要性

    1.可以结构化存储大量的数据信息,方便用户进行有效的检索和访问

    2.可以有效的保持数据信息的一致性、完整性,降低数据冗余

    3.可以满足应用的共享和安全方面的要求

数据库的基本概念

    数据:不仅仅包括数字,文字、图形、图像、声音、档案记录等都是数据

    数据库和数据库表:不同的记录组织在一起,就形成了数据库的表。也可以说表是用来存储具体数据的

数据库管理系统和数据库系统

    数据库管理系统(DBMS):是实现对数据库资源有效组织、管理和存取的系统软件,主要功能包括:

        数据库的建立和维护功能

        数据定义功能

        数据操纵功能

        数据库的运行管理功能

        通信功能

    数据库系统(DBS):是一个人一机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户组成。

数据库的发展史

    初级阶段-第一代数据库:20世纪60年代起,它是层次模型与网状模型的数据库系统。

    中级阶段-第二代数据库:20世纪70年代初,关系数据库开始出现。

    高级阶段-第三代数据库:20世纪80年代开始,各种适应不同领域的新型数据库系统不断涌现。

    经典数据库模型:

        网状模型、层次模型、关系模型

    当今主流数据库:

        SQL Server(微软公司产品)

                面向Windows操作系统简单、易用

        Oracle(甲骨文公司产品)

                面向所有主流平台安全、完善,操作复杂

        DB2(IBM公司产品)    

                面向所有主流平台大型、安全、完善

         MySQL(甲骨文公司收购)

                开源、体积小、速度快、稳定

关系数据库的基本概念

    关系数据库的基本结构

        基本结构:多个由行和列构成的二维表

        主键(Primary Key)

            由一个或多个字段组成,保证实体的唯一性

            一个主键值对应一行数据

            不允许取空值(NULL)

            一个表只能有一个主键

        候选键

            能唯一标识表的一行而又不含有多余属性的属性集

            表中可以有多个候选键

            只能有一个候选键可以选作表的主键

        外键(Foreign Key)

            通过外键可以将多个表关联起来

            将表中主键列添加到另一个表中,这个列就称为第二个表的外键

数据完整性规则

        实体完整性

            要求主键对应的属性不能取空值

        域完整性

            指定某一列的值是否有效和是否允许为空值

            定义字段“性别”只能取值“男”或“女”,不能出现“male”或“female”等值


        引用完整性

            如果两个表相互关联,不允许引用不存在的元组

        用户定义的完整性

            针对某一具体数据的约束条件,由应用环境决定

注册服务器

    作用

        保存实例连接信息,便于更方便地连接和管理

    需指定内容

        服务器类型

        实例名称

        身份验证方式

数据库分类

    系统数据库

        Master:记录系统级别信息,如登录用户、其他数据库文件的位置等

        Model:数据库模板,创建数据库时使用

        Msdb:用于 SQL Server 代理计划警报和作业

        Tempdb:保存临时对象或中间结果集

    用户数据库

文件类型

    数据文件

        主数据文件( .mdf)

            包含数据库的启动信息

            包含数据和对象,如表和索引

        次要(辅助)数据文件( .ndf)

            除主数据文件以外的所有其他数据文件

        文件流(Filestream)数据文件

            存储非结构化的数据,如文档、图片、音频等

        事务日志文件( .ldf)

            记录所有事务的SQL语句

            用于恢复数据库

扩展数据库

    作用:为数据文件和日志文件分配更多的空间

    方法:

        扩展现有文件的自动增长设置

        添加新文件

收缩数据库

    作用:释放数据库中未使用空间

    方法:

        手动收缩

            收缩数据库

            收缩文件

        自动收缩

分离和附加数据库

    作用:将数据库更改到不同SQL Server实例中

    分离数据库:将数据库从实例中移除

    附加数据库:通过定位主数据文件,将数据库附加到另一实例

    删除数据库

        只能删除用户数据库,系统数据库无法删除

数据完整性

    实体完整性

        作用:每一行必须是唯一的实体

    域完整性

        作用:检查每一列是否有效

    引用完整性

        确保所有表中数据的一致性,不允许引用不存在的值

    用户定义的完整性

        制定特定的业务规则

主键

    用于唯一标识表中的行数据

    由一个或多个字段组成

    具有唯一性

    不允许取空值(NULL)

    一个表只能有一个主键

数据类型

    概念:

        是数据的一种属性,指定对象可保存的数据的类型。如整数数据、字符数据、货币数据、日期和时间数据等

    SQL Server 中的数据类型

                        精准数字

数据类型 描述

int 整型,存储-231到231之间的整数。占4字节空间

bit 整型,取值0、1或NULL。存储只有两种可能值的数据,如Yes或No


decimal    存储从-1038-1到1038-1的固定精度和范围的数值型数据,须指定范围和精度。范围是小数点左右所能存储的数字的总位数。精度是小数点右边存储的数字的位数

money    表示钱和货币值。存储从-922 337 203 685 477.5808 到 922 337 203 685 477.5807之间的数据,精确到货币单位的万分之一。占8 字节空间

                近似数字

数据类型 描述

float 表示浮点数值数据的大致数值。表示-1.79E+308到1.79E+308 之间的任意数。占8 字节空间

real 表示-3.40E+38到3.40E+38之间的浮点数。占4 字节空间

                字符串

数据类型 描述

char 存储固定长度,非 Unicode 字符数据。须指定列长,最多包含 8000 个字符

varchar 存储可变长度,非 Unicode 字符数据。需要指定该列的最大长度,最多包含231个字符

text 存储大量的非 Unicode字符数据。最多可以有231-1或大约20亿个字符

                    Unicode 字符串

数据类型 描述

nchar 存储定长Unicode字符型数据。Unicode使用双字节结构来存储每个字符,在空间占用上增加了一倍

nvarchar 存储变长Unicode字符型数据

ntext 存储大量的Unicode字符型数据

               二进制字符串

数据类型 描述

binary 存储可达8000 字节长的定长的二进制数据

varbinary 存储可达8000 字节长的变长的二进制数据

image 存储变长的二进制数据,最大可达231-1或大约20亿字节

              日期和时间

数据类型 描述

date 日期。存储从公元元年1月1日到公元9999年 12月31日间所有的日期数据。占3字节空间

time 表示一天中某个时间,不能感知时区且基于 24 小时制。占5字节空间

datetime 表示日期和时间。存储从1753年1月1日到9999年12月31日间所有的日期和时间数据。占8个字节空间

默认值

    如果没有为列指定值,默认值则指定列中使用的值

        如常量、内置函数或数学表达式

        没有为列指定默认值

    如果允许空值,则将向该列中插入 NULL

    如果不允许空值,在用户为该列提供值前,将无法保存行

标识符列

    包含系统自动生成的序号值的列,特点如下

        列值由系统按一定规律生成,不允许空值

        列值不能重复,唯一标识表中每一行

        每个表只能有一个标识列

    创建标识符列(自增列)

        类型(type)

            必须是数值类型,如:decimal、int

        种子(seed)

            指派给表中第一行的值,默认为1

        递增量(increment)

            相邻两个标识值之间的增量,默认为1

检查约束

    限制列可接受的值

    通过逻辑表达式创建检查(CHECK)约束

        例如,限制“成绩”列的取值范围为 0 ~ 100

            逻辑表达式:成绩 >= 0 and 成绩 <= 100
























初识数据库