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、触发器

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

  

  

原文地址:https://www.cnblogs.com/bien94/p/12926515.html