• Oracle学习(三)SQL高级--表结构相关(建表、约束)


    一、建表语句

    CREATE DATABASE(创建数据库)

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

    CREATE TABLE(创建表)

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

    二、约束语句

    定义

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

    约束类型:

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

    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;

    UNIQUE(唯一约束)

    PS:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
    
    --创建表时增加约束 UNIQUE
    CREATE TABLE 表名
    (
    列1 类型(长度) NOT NULL,
    列2 类型(长度) NOT NULL,
    列3 类型(长度),
    列4 类型(长度),
    列5 类型(长度),
    CONSTRAINT 约束名 UNIQUE (列1,列2)
    );
    
    --修改表时,增加约束 UNIQUE (单列约束的情况)
    ALTER TABLEADD UNIQUE (列1);
    
    --修改表时,如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束(多列约束的情况)
    ALTER TABLEADD CONSTRAINT 约束名 UNIQUE (列1,列2)
    
    --删除约束 UNIQUE
    ALTER TABLEDROP CONSTRAINT 约束名

    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 TABLEADD PRIMARY KEY (列1); --修改表时,如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束(多列约束的情况) ALTER TABLEADD CONSTRAINT 约束名 PRIMARY KEY (列1,列2) --删除约束 PRIMARY KEY(有约束名的场景) ALTER TABLEDROP CONSTRAINT 约束名 --删除约束 PRIMARY KEY(未定义约束名的场景) ALTER TABLEDROP CONSTRAINT 列名

     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 TABLEADD FOREIGN KEY (当前表的字段)
    REFERENCES 外键关联的表名(外键关联的表字段);
    
    --修改表时,如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束(多列约束的情况)
    ALTER TABLEADD CONSTRAINT 约束名 FOREIGN KEY (当前表的字段)
    REFERENCES 外键关联的表名(外键关联的表字段);
    
    
    --删除约束 FOREIGN KEY(有约束名的场景)
    ALTER TABLEDROP CONSTRAINT 约束名
    
    --删除约束 FOREIGN KEY(未定义约束名的场景)
    ALTER TABLEDROP CONSTRAINT 列名

    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 TABLEADD CHECK (校验条件);
    
    --修改表时,如需命名 CHECK 约束,并定义多个列的 CHECK 约束(多列约束的情况)
    ALTER TABLEADD CONSTRAINT 约束名 CHECK (校验条件1 AND 校验条件2);
    
    
    --删除约束 CHECK(有约束名的场景)
    ALTER TABLEDROP CONSTRAINT 约束名
    
    --删除约束 CHECK(未定义约束名的场景)
    ALTER TABLEDROP CONSTRAINT 列名

    DEFAULT (默认值)

    --创建表时增加约束 DEFAULT  
    CREATE TABLE 表名
    (
    列1 类型(长度) PRIMARY KEY,
    列2 类型(长度),
    列3 类型(长度) DEFAULT 默认值
    );
    
    --修改表时,增加约束 DEFAULT  (单列约束的情况)
    ALTER TABLE 表 MODIFY 列 DEFAULT 默认值
    
    --删除约束 DEFAULT 
    ALTER TABLEALTER COLUMNDROP DEFAULT
  • 相关阅读:
    There is no getter for property named 'XXX' in 'class java.lang.String'解决方法
    BigDecimal类型转换
    根据一个字段多值查询(正则)
    Innodb与Myisam引擎的区别与应用场景
    页面输入框查找乱码问题
    Oracle做insert或者update时未提交事务导致表锁定解决办法
    sql语句表连接删除
    Update修改方法判断该ID的数据是否超过24小时,超过不许修改
    如何确定dbgrid选择的是记录而不是分组
    sql server2005的死锁
  • 原文地址:https://www.cnblogs.com/riches/p/11249529.html
Copyright © 2020-2023  润新知