• 数据库约束


    约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

    MYSQL中,常用的几种约束:

    约束类型:主键默认值唯一外键非空
    关键字: PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY

    NOT NULL

    ===================================================

    主键(PRIMARY KEY)是用于约束表中的一行,作为这一行的标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要。主键要求这一行的数据不能有重复且不能为空。

    还有一种特殊的主键——复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识

    ===================================================

    默认值约束(DEFAULT)规定,当有DEFAULT约束的列,插入数据为空时该怎么办。

    DEFAULT约束只会在使用INSERT语句(上一实验介绍过)时体现出来,INSERT语句中,如果被DEFAULT约束的位置没有值,那么这个位置将会被DEFAULT的值填充

    ===================================================

    唯一约束(UNIQUE)比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。

    当INSERT语句新插入的数据和已有数据重复的时候,如果有UNIQUE约束,则INSERT失败.

    ===================================================

    外键(FOREIGN KEY)既能确保数据完整性,也能表现表之间的关系。

    一个表可以有多个外键,每个外键必须REFERENCES(参考)另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。

    在INSERT时,如果被外键约束的值没有在参考列中有对应,比如以下命令,参考列(department表的dpt_name)中没有dpt3,则INSERT失败

    ===================================================

    非空约束(NOT NULL),听名字就能理解,被非空约束的列,在插入值时必须非空。

    在MySQL中违反非空约束,不会报错,只会有警告.

    附: SQL语句

    复制代码
     1 CREATE DATABASE mysql_shiyan;
     2 
     3 use mysql_shiyan;
     4 
     5 CREATE TABLE department
     6 (
     7   dpt_name   CHAR(20) NOT NULL,
     8   people_num INT(10) DEFAULT '10',
     9   CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)
    10  );
    11 
    12 CREATE TABLE employee
    13 (
    14   id      INT(10) PRIMARY KEY,
    15   name    CHAR(20),
    16   age     INT(10),
    17   salary  INT(10) NOT NULL,
    18   phone   INT(12) NOT NULL,
    19   in_dpt  CHAR(20) NOT NULL,
    20   UNIQUE  (phone),
    21   CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)
    22  );
    23  
    24 CREATE TABLE project
    25 (
    26   proj_num   INT(10) NOT NULL,
    27   proj_name  CHAR(20) NOT NULL,
    28   start_date DATE NOT NULL,
    29   end_date   DATE DEFAULT '2015-04-01',
    30   of_dpt     CHAR(20) REFERENCES department(dpt_name),
    31   CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name)
    32  );
  • 相关阅读:
    mysql中Can't connect to MySQL server on 'localhost' (10061)
    Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法。
    Class.forName()用法详解
    ] 解决myeclipse中新建javaweb工程,无法使用Web App Libraries问题
    Struts2的模板和主题theme及自定义theme的使用
    sql中 in 、not in 、exists、not exists 用法和差别
    JavaScript的replace方法与正则表达式结合应用讲解
    Caused by: java.lang.NoClassDefFoundError at com.jc.zm.ZmAlarmAction.analyDo(ZmAlarmAction.java:198)
    打开jsp页面时,显示空白页。
    chown命令详情
  • 原文地址:https://www.cnblogs.com/qinghuani/p/8620056.html
Copyright © 2020-2023  润新知