• SQL高级特性


      1、约束(constraint)

      约束是表示管理如何插入或处理数据库数据的规则。DBMS通过在数据库上施加约束来实施引用完整性。有的约束是在创建表的时候定义的,有的约束可以在创建表之后再定义。下面列举一些常见的约束:

    • 主键
    -- 在创建表的时候定义主键
    CREATE TABLE table_name
    {
       row_id  char(10) NOT NULL PRIMARY KEY,
       sex     char(2)  NOT NULL
    };
    
    
    -- 在表创建后定义主键
    ALTER TABLE table_name
    ADD CONSTRAINT PRIMARY KEY (row_id)
    • 外键
    -- 在创建表的时候定义外键
    CREATE TABLE table_name
    {
        row_id      char(10)  NOT NULL PRIMARY KEY,
        sex         char(2)   NOT NULL,
        other_id    char(10)  NOT NULL REFERENCES
    };
    
    
    
    -- 在表创建后定义外键
    ALTER TABLE table_name
    ADD CONSTRAINT
    FOREIGN KEY (other_id) REFERENCES other_table_name (other_id)
    • 唯一约束

      唯一约束用来保证一列或一组列中的数据是唯一的,可以通过关键字UNIQUE来定义;唯一约束虽然类似于主键,但是它们之间还是有差异的:

      (1)表可以包含多个唯一约束,但每个表中只允许一个主键

      (2)唯一约束列可以含NULL值

      (3)唯一约束列可以修改或更新

      (4)唯一约束列的值可以重复使用

      (5)唯一约束不能用来定义外键,而主键是可以的

    • 检查约束

      检查约束用来保证一列或一组列中的数据满足一组指定的条件,可以通过关键字CHECK来实现,以下场景中可以用到它:

      (1)检查最小值和最大值

      (2)指定范围

      (3)只允许特定的值,例如字段的数据类型检查

    -- 在创建表的时候进行字段的检查约束定义
    CREATE TABLE table_name
    {
        row_id     char(10)   NOT NULL PRIMARY KEY,
        age          INTEGER  NOT NULL CHECK (age > 0)
    }
    
    
    -- 在创建表后进行字段的检查约束定义
    ALTER TABLE table_name
    ADD CONSTRAINT CHECK (field_name LIKE '[MF]'

      2、索引(index)

       主键数据总是排序的,所以按主键检索特定行总是一种快速有效的操作。可以在表的一列或者多列上定义索引,使得DBMS保存其内容的一个排序的列表,索引可以改善数据检索的性能。使用索引时需要注意以下几点:

      (1)索引改善检索操作的性能,但是会降低数据插入、修改和删除的性能,因为这些操作过程中,DBMS必须动态地更新索引

      (2)索引数据可能要占据大量的存储空间

      (3)索引用于数据过滤和数据排序

      (4)定期检查索引,并根据需要对索引进行调整

    -- 创建索引示例
    CREATE INDEX col_name_index
    ON table_name (col_name);

       3、触发器

      触发器可以用来执行运行前后的处理流程,请参考此连接

      

      

  • 相关阅读:
    在VSCode中使用码云
    自定义博客样式
    bolb、bloburl、file、base64间的转换
    html2canvas的使用:vue中将div导出成图片
    vue-to-pdf的使用:vue中将div转换为pdf文件
    早期javac编译器优化
    HttpClient4.3 连接池参数配置及源码解读
    Java编译程序和运行过程详解
    JVM中的常量池详解
    MySQL索引背后的数据结构及原理
  • 原文地址:https://www.cnblogs.com/bien94/p/12926515.html
Copyright © 2020-2023  润新知