第四节——数据表与约束

Posted 想学习安全的小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四节——数据表与约束相关的知识,希望对你有一定的参考价值。

数据表的使用

一、表的使用

  1. 表的创建,命令:
creaet table [if not exists] 表名 (列名 数据类型 列约束,列名 数据类型 列约束,......);
//if not exists不是必须的,列约束不是必须的

eg:

create table if not exists testtable (id int primary key,name test not null);
//若不存在testtable的表则创建,表中有两列,一列名为id存放数字,是主键,另一列为name存放字符,不能为空
//简化版:
create table qwe (id int,name test);
//不论存不存在qwe表都会创建,但是不存在才会创建成功,已有则会提示创建失败
  1. 表的查看,命令:
\\d+      //查看当前数据库下的所有表的名字
\\d 表表明  //查看具体表的构成,可以看到有哪些列名,哪些列约束

在这里插入图片描述

  1. 表的重命名:alter table 旧表明 rename to 新表名;

  2. 添加表字段:alter table 表名字 add column 列名 数据类型 约束条件,同样,约束条件可以省略
    eg:给表ttable增加一列名为name,数据类型为text的列,alter table ttable add column name text;
    在这里插入图片描述

  3. 删除表字段:alter table 表名字 drop column' 列名;
    eg:将ttable表里面的name列给删除,删除后列里面的数据也会被删除
    在这里插入图片描述

  4. 删除数据表:drop table 表名称;

二、常用的的数据类型

  1. numeric:数字类型
  2. int/integer:整数类型
  3. serial:自动增加的整数
  4. text:字符型,无限长度
  5. varchar(n):有限制的变长字符
  6. char(n):定长的字符,不足用空格补充

三、列的约束

  1. 默认值default:插入数据时,没有插入被默认值约束的列的数据,该列的值会被默认值填充,命令:create table 表名 (列名 数据类型 defaule 默认值);
    eg:创建ttable表,其中name列设置默认值为qwe,插入数据时,不对name列进行操作,插入成功后系统会自动将默认值插入
    在这里插入图片描述
  2. 检查约束check:插入数据时进行检查,若插入的数据不符合约束,则插入失败,命令:
创建默认名字的检查约束:create table 表名 (列名 数据类型 check (约束条件));  //默认名字:表名_字段名_约束类型
创建指定名字的检查约束:create table 表名 (列名 数据类型 constraint 约束名字 check (约束条件));
对已有的列增加默认名字的检查约束:alter table 表名 add check (约束条件);
对已有的列增加特定名字的检查约束:alter table 表名 add constraint 约束名 check (约束条件);
将约束从列中删除:alter table 表名 drop constraint 约束名; //通用且唯一的删除方式

eg:创建ttable表,id列约束为大于零,不指定名称,name列约束为不等于’’(注意’‘不等于空字符串),约束名为yuesu
在这里插入图片描述

  1. 非空约束not null:列中数据不允许为空(注意空与’‘不一样),命令:
创建表时对列设置非空约束:create table 表名 (列名 数据类型 not null);
对已有的列设置非空约束:alter table 表名 alter column 列名 set not null;
将非空约束从列中删除:alter table 表名 alter column 列名 drop not null;
  1. 唯一约束unique:为约束的列创建一个b树,使得列中的值不能重复出现,但是可以出现多个空值,命令:
创建表时对列设置默认名称的唯一约束:create table 表名 (列名 数据类型 unique);
创建表时对列设置特定名称的唯一约束:create table 表名 (列名 数据类型 constraint 约束名称 unique);
对已有的列设置默认名称的唯一约束:alter table 表名 add unique(列名);
对已有的列设置特定名称的唯一约束:alter table 表名 add constraint 约束名 unique(列名);
  1. 主键约束primary key:将一个列设置成主键,一个表中有且仅有一个主键,主键使用b树存储数据,使得主键值不能重复且非空,命令:
创建表时对列设置默认名称的主键约束:create table 表名 (列名 数据类型 primary key);
创建表时对列设置特定名称的主键约束:create table 表名 (列名 数据类型 constraint 约束名称 primary key);
对已有的列设置默认名称的主键约束:alter table 表名 add primary key(列名);
对已有的列设置特定名称的主键约束:alter table 表名 add constraint 约束名 primary key(列名);
  1. 外键约束:外键约束的列都来自主表
    a)主表从表:两个表a,b,b将a主键列设置为外键,则a为主表,b为从表,b中外键列所有数据都来自a
    命令:
创建从表时指定主表的默认名称的外键:create table 从表名 (列名 数据类型 references 主表名(需要绑定的主表列名));//绑定的列同名时,可以省略()里的主表列名
创建从表时创建特定名称的外键:create table 从表名 (列名 数据类型,constraint 约束名 foreign key (从表列名) references 主表名 (主表列名));
对从表已存在列设置默认名称外键约束:alter table 从表名 add foreign key (从表列名) references 主表名 (主表列名));
对从表已存在列设置特定名称外键约束:alter table 从表名 add constraint 约束名 foreign key (从表列名) references 主表名 (主表列名));

以上是关于第四节——数据表与约束的主要内容,如果未能解决你的问题,请参考以下文章

第四节 pandas 数据加载

第四节——生成go测试代码

第四节——生成go测试代码

第四节——生成go测试代码

opencv学习-第四节:图像对象的创建与赋值

数据链路层-第四节:可靠传输