第四节——数据表与约束
Posted 想学习安全的小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四节——数据表与约束相关的知识,希望对你有一定的参考价值。
数据表的使用
一、表的使用
- 表的创建,命令:
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表都会创建,但是不存在才会创建成功,已有则会提示创建失败
- 表的查看,命令:
\\d+ //查看当前数据库下的所有表的名字
\\d 表表明 //查看具体表的构成,可以看到有哪些列名,哪些列约束
-
表的重命名:
alter table 旧表明 rename to 新表名;
-
添加表字段:
alter table 表名字 add column 列名 数据类型 约束条件
,同样,约束条件可以省略
eg:给表ttable增加一列名为name,数据类型为text的列,alter table ttable add column name text;
-
删除表字段:
alter table 表名字 drop column' 列名;
eg:将ttable表里面的name列给删除,删除后列里面的数据也会被删除
-
删除数据表:
drop table 表名称;
二、常用的的数据类型
- numeric:数字类型
- int/integer:整数类型
- serial:自动增加的整数
- text:字符型,无限长度
- varchar(n):有限制的变长字符
- char(n):定长的字符,不足用空格补充
三、列的约束
- 默认值default:插入数据时,没有插入被默认值约束的列的数据,该列的值会被默认值填充,命令:
create table 表名 (列名 数据类型 defaule 默认值);
eg:创建ttable表,其中name列设置默认值为qwe,插入数据时,不对name列进行操作,插入成功后系统会自动将默认值插入
- 检查约束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
- 非空约束not null:列中数据不允许为空(注意空与’‘不一样),命令:
创建表时对列设置非空约束:create table 表名 (列名 数据类型 not null);
对已有的列设置非空约束:alter table 表名 alter column 列名 set not null;
将非空约束从列中删除:alter table 表名 alter column 列名 drop not null;
- 唯一约束unique:为约束的列创建一个b树,使得列中的值不能重复出现,但是可以出现多个空值,命令:
创建表时对列设置默认名称的唯一约束:create table 表名 (列名 数据类型 unique);
创建表时对列设置特定名称的唯一约束:create table 表名 (列名 数据类型 constraint 约束名称 unique);
对已有的列设置默认名称的唯一约束:alter table 表名 add unique(列名);
对已有的列设置特定名称的唯一约束:alter table 表名 add constraint 约束名 unique(列名);
- 主键约束primary key:将一个列设置成主键,一个表中有且仅有一个主键,主键使用b树存储数据,使得主键值不能重复且非空,命令:
创建表时对列设置默认名称的主键约束:create table 表名 (列名 数据类型 primary key);
创建表时对列设置特定名称的主键约束:create table 表名 (列名 数据类型 constraint 约束名称 primary key);
对已有的列设置默认名称的主键约束:alter table 表名 add primary key(列名);
对已有的列设置特定名称的主键约束:alter table 表名 add constraint 约束名 primary key(列名);
- 外键约束:外键约束的列都来自主表
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 主表名 (主表列名));
以上是关于第四节——数据表与约束的主要内容,如果未能解决你的问题,请参考以下文章