zoukankan      html  css  js  c++  java
  • 三、Oracle SQL(SQL高级--表结构相关)

    4. SQL高级--表结构相关(建表、约束)

    4.1 建表语句

    4.1.1 CREATE DATABASE(创建数据库)

    --创建数据库
    create database 数据库名字;
    

    4.1.2 CREATE TABLE(创建表)

    --创建表
    CREATE TABLE 表名
    (
    字段1 类型(长度),
    字段2 类型(长度),
    字段3 类型(长度),
    字段4 类型(长度),
    字段5 类型(长度)
    );
    

    4.2 约束语句

    4.2.1 定义

    SQL 约束用于规定表中的数据规则。
    如果存在违反约束的数据行为,行为会被约束终止。
    约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

    • 约束类型:
      NOT NULL - 指示某列不能存储 NULL 值。
      UNIQUE - 保证某列的每行必须有唯一的值。
      PRIMARY KEY - (主键)NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
      FOREIGN KEY - (外键)保证一个表中的数据匹配另一个表中的值的参照完整性。
      CHECK - 保证列中的值符合指定的条件。
      DEFAULT - 规定没有给列赋值时的默认值。

    4.2.2 NOT NULL(非空约束)

    --创建表时增加约束 NOT NULL
    CREATE TABLE 表名
    (
    列1 类型(长度) NOT NULL,
    列2 类型(长度) NOT NULL,
    列3 类型(长度),
    列4 类型(长度),
    列5 类型(长度)
    );
    
    --删除约束 NOT NULL
    alter table 表 modify 列 null;
    --设置约束 NOT NULL
    alter table 表 modify 列 not null;
    

    4.2.3 UNIQUE(唯一约束)

    PS:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

    --创建表时增加约束 UNIQUE
    CREATE TABLE 表名
    (
    列1 类型(长度) NOT NULL,
    列2 类型(长度) NOT NULL,
    列3 类型(长度),
    列4 类型(长度),
    列5 类型(长度),
    CONSTRAINT 约束名 UNIQUE (列1,列2)
    );
    
    --修改表时,增加约束 UNIQUE (单列约束的情况)
    ALTER TABLE 表 ADD UNIQUE (列1);
    
    --修改表时,如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束(多列约束的情况)
    ALTER TABLE 表
    ADD CONSTRAINT 约束名 UNIQUE (列1,列2)
    
    --删除约束 UNIQUE
    ALTER TABLE 表 DROP CONSTRAINT 约束名
    

    4.2.4 PRIMARY KEY(主键)

    主键必须包含唯一的值。
    主键列不能包含 NULL 值。
    每个表都应该有一个主键,并且每个表只能有一个主键。

    PS:每个表都应该有一个主键,并且每个表只能有一个主键。
    
    --创建表时增加约束 PRIMARY KEY
    CREATE TABLE 表名
    (
    列1 类型(长度) PRIMARY KEY,
    列2 类型(长度),
    列3 类型(长度),
    列4 类型(长度),
    列5 类型(长度)
    );
    
    --创建表时,如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束(多列约束的情况)
    PS:这种情况还是只有一个主键。然而,此时主键的值是由两个列(列1和列2)组成的
    CREATE TABLE 表名
    (
    列1 类型(长度),
    列2 类型(长度),
    列3 类型(长度),
    列4 类型(长度),
    列5 类型(长度),
    CONSTRAINT 约束名 PRIMARY KEY (列1,列2)
    );
    
    
    PS:用ALTER TABLE 语句添加主键(即修改表的场景),必须把主键列声明为不包含 NULL 值(在表首次创建时)。
    --修改表时,增加约束 PRIMARY KEY (单列约束的情况)
    ALTER TABLE 表 ADD PRIMARY KEY (列1);
    
    --修改表时,如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束(多列约束的情况)
    ALTER TABLE 表
    ADD CONSTRAINT 约束名 PRIMARY KEY (列1,列2)
    
    
    --删除约束 PRIMARY KEY(有约束名的场景)
    ALTER TABLE 表 DROP CONSTRAINT 约束名
    
    --删除约束 PRIMARY KEY(未定义约束名的场景)
    ALTER TABLE 表 DROP CONSTRAINT 列名
    

    4.2.5 FOREIGN KEY(外键)

    一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
    FOREIGN KEY 约束用于预防破坏表之间连接的行为。
    FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

    --创建表时增加约束 FOREIGN KEY
    CREATE TABLE 表名
    (
    列1 类型(长度) PRIMARY KEY,
    列2 类型(长度),
    列3 类型(长度) FOREIGN KEY REFERENCES 外键关联的表名(外键关联的表字段)
    );
    
    --创建表时,如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束
    CREATE TABLE 表名
    (
    列1 类型(长度) PRIMARY KEY,
    列2 类型(长度),
    列3 类型(长度),
    CONSTRAINT 约束名 FOREIGN KEY (当前表的字段)
    REFERENCES 外键关联的表名(外键关联的表字段)
    );
    
    
    --修改表时,增加约束 FOREIGN KEY (单列约束的情况)
    ALTER TABLE 表
    ADD FOREIGN KEY (当前表的字段)
    REFERENCES 外键关联的表名(外键关联的表字段);
    
    --修改表时,如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束(多列约束的情况)
    ALTER TABLE 表
    ADD CONSTRAINT 约束名 FOREIGN KEY (当前表的字段)
    REFERENCES 外键关联的表名(外键关联的表字段);
    
    
    --删除约束 FOREIGN KEY(有约束名的场景)
    ALTER TABLE 表 DROP CONSTRAINT 约束名
    
    --删除约束 FOREIGN KEY(未定义约束名的场景)
    ALTER TABLE 表 DROP CONSTRAINT 列名
    

    4.2.6 CHECK(校验)

    CHECK 约束用于限制列中的值的范围。
    如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
    如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。

    --创建表时增加约束 CHECK
    CREATE TABLE 表名
    (
    列1 类型(长度) PRIMARY KEY,
    列2 类型(长度),
    列3 类型(长度) CHECK (校验条件,如:列3>0)
    );
    
    --创建表时,如需命名 CHECK 约束,并定义多个列的 CHECK 约束
    CREATE TABLE 表名
    (
    列1 类型(长度) PRIMARY KEY,
    列2 类型(长度),
    列3 类型(长度),
    CONSTRAINT 约束名 CHECK (校验条件1 AND 校验条件2)
    );
    
    
    --修改表时,增加约束 CHECK (单列约束的情况)
    ALTER TABLE 表 ADD CHECK (校验条件);
    
    --修改表时,如需命名 CHECK 约束,并定义多个列的 CHECK 约束(多列约束的情况)
    ALTER TABLE 表
    ADD CONSTRAINT 约束名 CHECK (校验条件1 AND 校验条件2);
    
    
    --删除约束 CHECK(有约束名的场景)
    ALTER TABLE 表 DROP CONSTRAINT 约束名
    
    --删除约束 CHECK(未定义约束名的场景)
    ALTER TABLE 表 DROP CONSTRAINT 列名
    

    4.2.7 DEFAULT (默认值)

    --创建表时增加约束 DEFAULT
    CREATE TABLE 表名
    (
    列1 类型(长度) PRIMARY KEY,
    列2 类型(长度),
    列3 类型(长度) DEFAULT 默认值
    );
    
    --修改表时,增加约束 DEFAULT  (单列约束的情况)
    ALTER TABLE 表 MODIFY 列 DEFAULT 默认值
    
    --删除约束 DEFAULT
    ALTER TABLE 表
    ALTER COLUMN 列 DROP DEFAULT
    

    转载自:有梦想的肥宅

  • 相关阅读:
    Windows Azure Cloud Service (5) 由过渡环境向生产环境过渡
    rpcss.dll丢失造成任务栏不见
    css文本省略号
    字符串是否包含中文?
    在 System.NullReferenceException 中第一次偶然出现的“ComServer.exe”类型的异常
    取参数的正则表达式
    EverNote死机的问题
    找尺子
    读书笔记
    水晶按钮的学习
  • 原文地址:https://www.cnblogs.com/cy-8593/p/12559298.html
Copyright © 2011-2022 走看看