您的位置:首页 > 数据库 > MySQL

MySQL基础(三)

2016-07-28 10:40 676 查看
约束

空值与非空

        NULL,字段值可以为空,默认为NULL

        NOT NULL,字段值禁止为空

        例子:

                CREATE TABLE tb2(

                         `username` VARCHAR(20) NOT NULL,

                         `age` TINYINT UNSIGNED NULL,

                );

AUTO_INCREMENT

        自动编号,且必须与主键组合使用

        默认情况下,起始值为1,每次的增量为1

PRIMARY KEY

        主键约束

        每张数据表只能存在一个主键

        主键保证记录的唯一性

        主键自动为NOT NULL

        主健可作外健,唯一索引不可

        例子:

                CREATE TABLE tb3(

                        `id` SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

                        `username` VARCHAR(30) NOT NULL

                );

UNIQUE KEY

        唯一约束

        唯一约束可以保证记录的唯一性,表中任意两行在 指定列上都不允许有相同的值

        唯一约束的字段可以为空值(NULL)

        每张数据表可以存在多个唯一约束

        例子:

               CREATE TABLE tb4(

                      `id` SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

                      `username` VARCHAR(20) NOT NULL UNIQUE KEY,

                      `age`  TINYINT UNSIGNED

               );

DEFAULT 

        默认值

       当插入记录时,如果没有明确为字段赋值,则自动赋予默认值

       例子:

              CREATE TABLE tb5(

                   `id` SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

                   `username` VARCHAR(20) NOT NULL UNIQUE KEY,

                   `sex` ENUM(‘1’,’2’,’3’) DEFAULT ‘3’

             );

FOREIGN KEY

        保持数据一致性,完整性

        实现一对一或一对多关系

        外键约束的要求:

               1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。

               2.数据表的存储引擎只能为InnoDB。

               3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。

               4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。  

        例子:

                CREATE TABLE provinces(

                       `id` SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

                       `pname` VARCHAR(20) NOT NULL

                );

                CREATE TABLE users(

                       `id` SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

                       `username` VARCHAR(10) NOT NULL,

                       `pid` SMALLINT UNSIGNED,

                       FOREIGN KEY (pid) REFERENCES provinces (id)

                 );

编辑数据表的默认存储引擎

       MySQL配置文件(my.ini)

               default-storage-engine = INNODB

外键约束的参照操作

       1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行

       2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL。

       3.RESTRICT:拒绝对父表的删除或更新操作。

       4.NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同。

       例子:

               CREATE TABLE provinces(

                      `id` SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

                      `pname` VARCHAR(20) NOT NULL

               );

               CREATE TABLE users1(

                      `id` SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

                      `username` VARCHAR(10) NOT NULL,

                      `pid` SMALLINT UNSIGNED,

                       FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE

                );

       实际开发中通常使用逻辑上的外键约束,而不使用物理上的外键约束,因为外键约束只有INNODB引擎才支持,其他的例如MyISAM不支持

表级约束与列级约束

        对一个数据列建立的约束,称为列级约束。

        对多个数据列建立的约束,称为表级约束。

        列级约束既可以在列定义时声明,也可以在列定义后声明。

        表级约束只能在列定义后声明。

        NOT NULL约束和 DEFAULT约束不存在表级约束,主键约束、唯一约束和外键约束均存在表级约束和列级约束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySQL 基础 约束