zoukankan      html  css  js  c++  java
  • 数据库基础——(SQLserver)约束

                                                              数据库
    定义:一些存储在硬盘上的数据文件

    内存:
    计算机临时存储的一些数据

    .net - SQL Server
    PHP - MySql
    Java - Oreacl


    数据库中的数据类型:
    int decimal(长度,小数位数)

    bit - 布尔型 1 - true 0 - false

    datetime - 时间日期型

    nvarchar(长度) 500 max 字符串
    varchar(长度)

    text - 长文本
    -------------------------------------------
    关系型数据库
    四种约束:

    1、主键约束:
    设置某一列为主键列
    不允许重复,不允许为空,一个表有且只有一个主键列

    2、外键约束:(建立表和表之间关系的最重要的约束)
    当前表的某一列被其它表的某一个主键列/唯一列所约束
    当前表被约束的这一列里面的内容不允许超出约束它的列里面的内容

    要作为主约束列来约束其它表的列,这一列必须是 主键列/唯一列/

     3、唯一约束:

    设置一列为唯一列,让这一列的数据不能重复

     4、Check约束:
    编写表达式,来约束某一列其中的值的范围
    && - and
    || - or

    ------------------------------
    作业:

    1、常用数据库类型

    1. IBM 的DB2

     

    作为关系数据库领域的开拓者和领航人,IBM在1997年完成了System R系统的原型,1980年开始提供集成的数据库服务器—— System/38,随后是SQL/DSforVSE和VM,其初始版本与SystemR研究原型密切相关。DB2 forMVSV1 在1983年推出。该版本的目标是提供这一新方案所承诺的简单性,数据不相关性和用户生产率。1988年DB2 for MVS 提供了强大的在线事务处理(OLTP)支持,1989 年和1993 年分别以远程工作单元和分布式工作单元实现了分布式数据库支持。最近推出的DB2 Universal Database 6.1则是通用数据库的典范,是第一个具备网上功能的多媒体关系数据库管理系统,支持包括Linux在内的一系列平台。

    2. Oracle

    Oracle 前身叫SDL,由Larry Ellison 和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979 年,Oracle公司引入了第一个商用SQL 关系数据库管理系统。Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。

    3. Informix

    Informix在1980年成立,目的是为Unix等开放操作系统提供专业的关系型数据库产品。公司的名称Informix便是取自Information 和Unix的结合。Informix第一个真正支持SQL语言的关系数据库产品是Informix SE(StandardEngine)。InformixSE是在当时的微机Unix环境下主要的数据库产品。它也是第一个被移植到Linux上的商业数据库产品。

    4. Sybase

    Sybase公司成立于1984年,公司名称“Sybase”取自“system”和 “database” 相结合的含义。Sybase公司的创始人之一Bob Epstein 是Ingres 大学版(与System/R同时期的关系数据库模型产品)的主要设计人员。公司的第一个关系数据库产品是1987年5月推出的Sybase SQLServer1.0。Sybase首先提出Client/Server 数据库体系结构的思想,并率先在Sybase SQLServer 中实现。

    5. SQL Server

    1987 年,微软和 IBM合作开发完成OS/2,IBM 在其销售的OS/2 ExtendedEdition 系统中绑定了OS/2Database Manager,而微软产品线中尚缺少数据库产品。为此,微软将目光投向Sybase,同Sybase 签订了合作协议,使用Sybase的技术开发基于OS/2平台的关系型数据库。1989年,微软发布了SQL Server 1.0 版。

    6. PostgreSQL

    PostgreSQL 是一种特性非常齐全的自由软件的对象——关系性数据库管理系统(ORDBMS),它的很多特性是当今许多商业数据库的前身。PostgreSQL最早开始于BSD的Ingres项目。PostgreSQL 的特性覆盖了SQL-2/SQL-92和SQL-3。首先,它包括了可以说是目前世界上最丰富的数据类型的支持;其次,目前PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统.

    7.mySQL

    mySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL的官方网站的网址是: www.mysql.com


    2、搜一下关系型数据库的特点

    关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。关系数据库的定义造成元数据的一张表格或造成表格、列、范围和约束的正式描述。每个表格(有时被称为一个关系)包含用列表示的一个或更多的数据种类。 每行包含一个唯一的数据实体,这些数据是被列定义的种类。当创造一个关系数据库的时候,你能定义数据列的可能值的范围和可能应用于那个数据值的进一步约束。
    3、四种约束总结

    1、CHECK 约束

    在数据库中,CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式。例如,可以要求 authors 表的 postcode 列只允许输入六位数字的邮政编码。

    CHECK 约束可以应用于一个或者多个列,也可以将多个CHECK 约束应用于一个列。

    当除去某个表时,对这个表的CHECK 约束也将同时被去除。

    CHECK 约束的限制

    CHECK 约束不接受计算结果为 FALSE 的值。因为 空值的计算结果为 UNKNOWN,所以如果 赋值表达式中存在这些值,则约束可能会被覆盖而不起作用。例如,假设对 int 列 MyColumn 应用一个约束,指定 MyColumn 只能包含值 10(即 MyColumn = 10)。如果将值 NULL 插入到 MyColumn, 数据库引擎将插入 NULL 且不返回错误。

    如果 CHECK 约束检查的条件对于表中的任何行都不是 FALSE,它将返回 TRUE。如果刚创建的表没有任何行,则此表的任何 CHECK 约束都视为有效。这种情况可能会产生意外结果,如下面的示例所示。

    CREATE TABLE CheckTbl (col1 int, col2 int);GOCREATE FUNCTION CheckFnctn()RETURNS intAS BEGIN DECLARE @retval int SELECT @retval = COUNT(*) FROM CheckTbl RETURN @retvalEND;GOALTER TABLE CheckTblADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn() >= 1 );GO 添加的 CHECK 约束指定表 CheckTbl 必须至少包含一行。但是,因为表中不包含任何可供检查此约束的条件的行,所以 ALTER TABLE 语句将成功。

    执行 DELETE 语句时不验证 CHECK 约束。因此,使用特定类型的 CHECK 约束对表执行 DELETE 语句时可能会产生意外结果。例如,假设对表 CheckTbl 执行下列语句。

    INSERT INTO CheckTbl VALUES (10, 10)

    GO

    DELETE CheckTbl WHERE col1 = 10;

    即使 CHECK 约束指定表 CheckTbl 必须至少包含 1 行,DELETE 语句也会成功。

    2、主键约束

    主键约束在表中定义一个主键来唯一确定表中每一行数据的标识符.(非空,惟一)例如:altertablememberaddconstraintPK_member_member_noprimarykeyclustered(member_no)主键列的数据类型不限,但此列必须是唯一并且非空。如该表中已有主键为1000的行,则不能再添加主键为1000。人工或程序不好控制的时候,也可以设置主键列为自动增长列。

    主键的作用

    主键是一个表中能标识唯一行的标志(也有其他方法表示唯一行,如唯一列)。

    主键主要用在查询单调数据,修改单调数据和删除单调数据上。

    一般做程序的时候,都将表的主键设置为int型的可自增的列,这样在 编程的时候,很容易区分数据。

    3、唯一约束

    唯一约束SQL实现

      唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的。

      创建唯一约束

      在服务器资源管理器中,选择要将唯一约束添加到的表,再从“数据库”菜单中单击“打开表定义”。

      该表在“表设计器”中打开。

      从“表设计器”菜单中单击“索引/键”。

      在“索引/键”对话框中单击“添加”。

      在网格中单击“类型”,再从属性右侧的下拉列表框中选择“唯一键”。

      当保存表时,将在数据库中创建该唯一约束。

      创建唯一约束可确保在不参与主键的特定列中不输入重复值。当唯一约束和主键都强制唯一性时,如果满足下列条件,则应将唯一约束而不是主键约束附加到表上:

      1.希望在列或列的组合中强制唯一性。可将多个唯一约束附加到表,但是只能将一个主键约束附加到表。

      2.希望在允许空值的列中强制唯一性。可将唯一约束附加到允许空值的列,但是只能将主键约束附加到不允许空值的列。当将唯一约束附加到允许空值的列时,请确保在约束的列中最多有 一行包含空值。

      对字段使用了unique约束,可以当主健在数据库中使用

    4、外键

    如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

    外键(Foreign Key)

    换而言之,如果关系模式R中的某属性集不是R的 主键,而是另一个关系R1的主键则该属性集是关系模式R的外键,通常在 数据库设计中缩写为FK。

    作用

    保持 数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。

    软道语录

    外键就是指另外表中的主键 。

  • 相关阅读:
    设计模式(十)外观模式
    设计模式(九)装饰器模式
    设计模式(八)组合模式
    设计模式(七)桥接模式
    设计模式(六)代理模式
    设计模式(五)适配器模式
    linux 安装 node
    LeetCode 335. Self Crossing
    LeetCode 332. Reconstruct Itinerary 最小欧拉路径
    LeetCode 327. Count of Range Sum 区间和的个数
  • 原文地址:https://www.cnblogs.com/weiyu11/p/6526315.html
Copyright © 2011-2022 走看看