OushuDB学习笔记(增删改查)
前言
学习 OushuDB 已经有一段时间了,作为这段时间学习成长的证明。在这里总结一下我在使用 OushuDB 过程中的经常使用的增删改查命令,内容仅供参考如有疑问请一切以 OushuDB 官方文档为准。那么话不多说我们直接开始正题。(作者本身能力有限所以只讲述一些基础内容,会有些许省略的还请见谅)。
数据定义
想要对数据库进行增删改查首先要有数据库,所有在使用数据库之前要先创建数据库
创建数据库命令
CREATE DATABASE 数据库名;
也可以在 shell 中⽤ createdb 程序来创建新数据库:
createdb 数据库名
如果想要查看所有数据库的集合可以通过此命令查看
SELECT datname FROM pg_database;
也可以在 psql 程序中通过\l 命令来列出现存的数据库
删除数据库
DROP DATABASE 数据库名;
注意:只有数据库的所有者或者超级⽤户才可以删除数据库,删除数据库会删除数据库中包括的所有对象,且数据库的删 除操作是不可恢复的。还有就是我们不能删除当前正在连接的数据库,如果想删除此数据库需要先连接到其他数据库。
在 shell 上可以通过 dropdb 删除数据库的
dropdb 数据库名
上面我们已经创建好了一个数据库,接下来我们就要创建数据表了。
创建数据表命令
**CREATE TABLE 表名( **
**列名 数据类型, **
**列名 数据类型 **
);
注意:列与列之间要用英文逗号连接,并且最后一列后面没有逗号
现在 OushuDB 现在⽀持多种存储格式:ROW、ORC 和 Magma。默认存储格式为 ROW
ROW 是按⾏存储的格式,⽽ ORC、Magma 是按⾏列存 储的格式。Magma 和 ORC 都⽀持 update/delete, 且 Magma 还⽀持 index。
显示指定存储格式类型
**CREATE TABLE 表名(列 数据类型) **
with (appendonly =true, orientation =存储格式, compresstype =压缩方式);
此命令可以用于创建 ROW 和 ORC 存储格式并指定压缩方式 compresstype 可以省略代表不压缩。
创建 MAGMA 存储格式
create table 表名(列 数据类型) tablespace magma_default;
此外在创建表时我们也可以给列添加相应的修饰例如:缺省值、约束、非空约束、主键
**CREATE TABLE 表名( **
列名 数据类型 DEFAULT 缺省值, //添加缺省值
列名 数据类型 CHECK(表达式), //添加约束
列名 数据类型 NOT NULL, //添加非空约束
PRIMARY KEY(列名,列名……) //添加主键
);
注意:如果是 MAGMA 格式的表,是不⽀持列约束和⾮空约束的,但⽀持主键约束。
数据操纵
当我们拥有了数据库并且数据库里面存在数据表后我们就可以开始对数据表进行相应的增删改查了。目前 oushudb 兼容的表格式中,目前只有 ORC 和 MAGMA 格式的表支持更新和删除操作,AO 格式的表不 支持。
插入数据
INSERT INTO 表名(列名,列名…) VALUES(列值,列值…) ,(列值,列值…)……,(列值,列值…);
我们也可以同过查询命令来插入数据
INSERT INTO 表名 (列名, 列名, 列名) SELECT 列名, 列名, 列名 FROM 表名 WHERE 条件;
注意:要保证插入表的列数与查询表的列数保持一致。
更新数据
UPDATE 表名 SET 列名= '修改后的值' WHERE 条件;
注意:如果不加条件将会修改所有行的值。OushuDB 暂时不支持分布键和主键的 UPDATE 操作。
删除数据
DELETE FROM 表名 WHERE 条件;
注意:与更新一样如果不添加条件将删除所有行的数据。
数据查询
基础查询
SELECT 列名 FROM 表名 WHERE 条件;
范围查询
SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 起始范围 AND 结束范围;
关键字查询
SELECT 列名 FROM 表名 WHERE 列名 IN(‘关键词’,’关键词’);
模糊查询
SELECT 列名 FROM 表名 WHERE 列名 LIKE ‘% 值_’; //“%“为模糊项不定长度 “_”为一个占位模糊项
排序查询
升序(默认)
SELECT 列名 FROM 表名 ORDER BY 列名 ASC;
或
SELECT 列名 FROM 表名 ORDER BY 列名;
降序
SELECT 列名 FROM 表名 ORDER BY 列名 DESC;
分页查询
SELECT 列名 FROM 表名 LIMIT m OFFSET n;
注意: m 代表查询 m 条数据,n 代表忽略前 n 条数据,所以 LIMIT m OFFSET n 代表从 n+1 条开始显示 m 条数据。