0
点赞
收藏
分享

微信扫一扫

SQL Server 应用开发(四)




第2章 SQL SERVER 数据库表管理


一、表相关的几个基本概念

(一)数据完整性

   1、定义:数据的完整性是指,在数据库中存储的数据必须是准确的,准备性是通过数据库表的设计和约束来实现的


   2、SQL SERVER 中存在的五种约束:

      主键约束、外键约束、检查约束、默认约束和唯一约束


   3、SQL SERVER 中提供的四种类型的约束(Constraint):

      1)实体完整性约束:要求表中的每一行数据都反映不同的实体,不能存在相同的数据行,一般通过索引、唯一约束、主键约束或标识列属性来实现


      2)域完整性约束:指给定列的输入有效性,一般通过数据类型、检查约束、输入格式、外键约束、默认值、非空约束等方法实现


      3)引用完整性约束:在输入或删除数据行时,引用完整性约束用来保持表之间已定义的关系。


学员信息表



学号

姓名

地址

0010012

李山

山东定陶

0010013

吴兰

湖南新田


学员成绩表


科目

学号

分数

数学

0010012

88

数学

0010013

74


      在上面二个表中已经存在了关系,学员成绩表中“学号”字段中的值必须存在于学员信息表中的“学号”字段中,学员信息表是“主表”,学员成绩表是“子表”,也叫“相关表”。


      在强制引用完整性时,SQL SERVER 禁止用户进行如下操作:

        A.当主表中没有关联的记录时,将记录添加到相关表中,即学员成绩表中不能出现学员信息表中不存在的学员


        B.更改主表中的值并导致相关表中的记录孤立。如果学员信息表中的学员改变了,学员成绩表中的学号也应当随之改变


        C.从主表中删除记录,但仍存在与该记录匹配的相关记录。如果学员信息表中的学号被删除了,则该学员学号不能出现在学员成绩表中


      4)自定义完整性约束:用户自己定义的完整性约束


(二)主键(Primary Key)和外键(Foreign Key)

   1、主键:

     1)定义:表中有一列或几列组合的值能用来唯一地标识表中的每一行,这样的列或者多列的组合叫做表的主键


     2)主键的值不能重复且不能为空(NULL),在一个表中只能定义一个主键,尽管表中也可以没有主键,但通常情况下应该为表设置主键


     3)定义主键的原则:

      A.最少性:在可以同时选择单一主键和组合主键(即用几列的组合来标识唯一行)时,尽管采用单一主键

      B.稳定性:被定义为主键的列,其数据应该想对稳定,不需要经常进行更新,最好永远不会改变


   2、外键:

      外键是对应于主键而言的,就是“子表”中对应于“主表”的列,在子表中称为外键或者引用键,它的值要求与主表的主键或唯一键相对应,外键用来强制引用完整性。一个表可以有多个外键


二、建立数据库表


(一)在企业管理器中建立数据库表

   1、系统表“sysFiles”和“sysUsers”的功能:

     1)“sysFiles”表:用于保存当前数据库的物理文件的信息

     2)“sysUsers”表:用于保存当前数据库的用户信息


   2、如何创建数据库表:     在当前数据库下,右击“表”项目,并在快捷菜单中选择“新建表”,就会进入到数据库表的设计对话框中,在这里可以对数据类型及相关约束进行设置


(二)确定列的数据类型

   1、SQL SERVER 中常用的数据类型:



分类

备注和说明

数据类型

说明

二进制数据类型

用来存储非字符和文本的数据

Binary

固定长度的二进制数据

Varbinary

可变长度的二进制数据

Image

可用来存储图像

文本数据类型

字符数据包括任意字母、符号或数字字符的组合

Char

固定长度的非Unicode字符数据,最大长度为8000个字符

Varchar

可变长度的非Unicode数据

Nchar

固定长度的Unicode数据

Nvarchar

可变长度的Unicode数据

Text

存储长文本信息

Ntext

存储可变长度的长文本信息

日期和时间

日期和时间在单引号内分别输入

Datetime

时期和时间

数字类型

该数据仅包含数字,包括正数、负数以及分数

int

整数

smallint

tinyint

bigint

float

数字

real

货币数据类型

货币数据类型用于十进制货币值,并且精确到小数点后四位数字

Money


Bit数据类型

表示是/否的数据,只有两种选择,1表示是,0表示否

Bit

存储布尔数据类型


   2、在创建表的时候,选择字符数据类型,还需要输入长度信息(text除外),选择数字数据类型不再需要输入长度信息


(三)是否允许为空值

     数据库中的列是否允许为空也是一项约束,如果该列允许为空,则在输入数据行的时候,这一项可以不输入,这项约束在“表设计”对话框中的“允许空”一项进行设置


(四)建立主键

     在“表设计”对话框中选定要设为主键的列,右击选择“设置主键”即可,设置组合键的,可以按住CTRL选取多列进行设置


(五)默认值

     表的默认值设置能定义一个值,每当用户没有在某一列中输入值时,将所定义的值提供给这一列。在“表设计”对话框中选定要设置默认值的列,在其下方的“默认值”文本框中输入即可


(六)标识列

   1、标识列的作用:

    “标识列”是为了特意对列进行区分,其本身没有具体的意义,不反映具体的信息,只用来区别不同的学员,例如:一个学校中有多位姓名相同的学员时,就不能以姓名作为“主键”来使用,这时使用“标识列”为主键,以达到区分的目的


   2、标识列的实现:

    A.如果一列的数据属于数字类型,才可以把该列定义为标识列

    B.定义成标识列之后,还需要分别指定“标识种子”和“标识递增量”,默认都是1

    C.定义了标识列后,在以后每次输入数据的时候,该列随数据行的增加自动增加数据,并且不会重复,第一次的数字就是“标识种子”值,以后每次按照“标识增量”增加数值,标识列通常也被定义为主键,通常所说的“自动编号”就是指标识列的数字自动增加。


   3、使用标识列时的注意事项:

    A.标识列中的数据是自动生成的,不能在该列上输入数据,使用SQL语句插入数据时,也不允许为标识列指定值

    B.对于定义有标识列的数据行进行删除操作时,不影响“标识列”的自动增长值,如:在学生表中将“学号”定义为标识列,有2名新生入学进行登记,向表中插入2条记录,学号分为1和2,后因2号学生转学,“学号”为2的记录被删除,此后又有一名新生入学,此时该新生的学号为3,而非2


三、建立表间关系

(一)建立表间关系实际上就是实施引用完整性约束,建立主表和子表的关系

(二)建立表间关系的方法:

      在“表设计”对话框空白处右击,选择“关系”,即可打开“属性”对话框,在“关系”选项卡中单击“新建”后,选择好要建立关系的主表及子表,还有它们的关系字段即可

(三)查看表间关系的方法:

      在指定数据库下,右击“关系图”,选择“新建关系图”,弹出“关系图向导”对话框,选择要查看关系的两个或多个表,点击下一步至完成即可


四、建立检查约束

    检查约束也叫Check约束,用于定义列中可接受的数据值或者格式


五、导入和导出数据

 1、功能:用于将SQL SERVER中的数据转换成其它格式的数据,例如,文本文件或EXCEL等


 2、导出数据的方法:

  A.右击“数据库”,选择“所有任务”--“导出数据”,打开“导入导出向导”后点击“下一步”


  B.在“选择数据源”对话框中,可以设置以下选项,设置好后点“下一步”

    a.数据源:即为SQL SERVER数据,保持默认

    b.服务器:数据源所在主机

    c.验证方式:选择哪种都可以

    d.数据库:数据源所在的数据库名称


  C.在“选择目的”对话框中可进行如下设置,完成后点“下一步”

    a.目的:即要转换成哪种类型的数据,这里以文本类型为例,选择“文本文件”

    b.文件名:目标文件的名称(要先建好)


  D.在“指定表复制或查询”对话框中,可进行选择:本例选择第一项,选好后点“下一步”

    a.“从源数据库复制表和视图”:选这项后,可在下面的步骤中选择要导出的数据表

    b.“用一条查询来导出所需要的数据”:选这项后,在下面的步骤中会要求输入SQL语句,将执行结果导出


  E.在“选择目的文件格式”对话框中,可进行如下设置,完成后单击“下一步”:

    a.源:选择要导出的表

    b.是否带有分隔符:设置导出数据的格式中是否运用分隔符

    c.分隔符的种类


  F.直接单击“下一步”直到“完成”


 3、导入数据的方法:与导出类似


六、删除表

    在指定的数据库中,右击想要删除的表格,点击“删除”即可,删除后不可恢复



举报

相关推荐

0 条评论