发布于

Oushudb学习笔记

一、创建数据库
1.第一个数据库总是由 initdb 命令在初始化数据存储区的时候创建的,这个数据库叫 postgres。因此要创建第一个用户数据库时你可以与 postgres 连接。
2.命令创建数据库:CREATE DATABASE,命令删除数据库:DROP DATABASE。
3.检查系统表 pg_database:SELECT datname FROM pg_database;查看现有数据库的集合。
在 pgsql 程序中通过\l 命令来列出现存的数据库。
4.在 shell 中用 createdb 程序来创建新数据库:createdb dbname。
5.为其它人创建一个数据库,在 SQL 环境使用下列命令:CREATE DATABASE dbname OWNER rolename;或用命令行执行:createdb -O rolename dbname。
6.数据库是用 DROP DATABASE 命令删除的,格式为:DROP DATABASE name;只有数据库的所有者或者超级用户才可以删除数据库,删除数据库会删除数据库中包括的所有对象,且数据库的删除操作是不可恢复的。
7.在 shell 上可以通过 dropdb 删除数据库的:dropdb dbname。

二、数据定义
1、使用 CREATE TABLE 命令创建一个表,需要为声明新表的名称、各列的名称及数据类型。
2、OushuDB 现在支持多种存储格式:ROW、ORC 和 Magma。ROW 是按行存储的格式,而 ORC、Magma 是按行列存储的格式。 其中 Magma 是在 4.0.0.0 发布的全新的存储格式。Magma 和 ORC 都支持 update/delete, 且 Magma 还支持 index。
3.创建表并指定存储格式
3.1、创建 row 表:CREATE TABLE rank2 (id int, rank int, year smallint,gender char(1), count int ) with (appendonly =true(列式), orientation =row);
3.2、# 创建⼀个带压缩的 ORC 表,需指定压缩类型。
CREATE TABLE rank3 (id int, rank int, year smallint,gender char(1), count int )with (appendonly =true, orientation =orc, compresstype = lz4);
3.3、# 创建⼀个有 primary key 的 magma 表, magma 内部⾃动实现了压缩。
CREATE TABLE rank3 (id int, rank int, year smallint,gender char(1), count int,
primary key(id) ) format 'magmaap';
4、缺省值:DEFAULT
5、约束:CHECK 为约束命名:CONSTRAINT 约束名 CHECK 约束条件
6、非空约束:NOT NULL
7、主键:⼀个主键约束表示可以⽤作表中⾏的唯⼀标识符的⼀个列或者⼀组列,它的值必须是是唯⼀的并且⾮空。 PRIMARY KEY
8、表分区:
8.1、OushuDB 支持基于 Range 和 List 的两种分区方式:
8.2、Range 分区:表被一个或者多个关键列分区成”范围”,这些范围在不同的分区里没有重叠。 比如依 据日期、价格数值范围进行分区。
8.3、List 分区:依据一个值的列表进行分区,比如依据地区列表进行分区。
CREATE TABLE () PATITION BY 分区类型(range 或 list) 列名
多级分区:PARTITION BY RANGE (列名)
SUBPARTITION BY LIST (列名)
8.4、对一张已有大表数据进行分区,步骤如下:
(1). 按照现有大表结构创建一个新的分区表
(2). 将现有大表中的数据 load 到新创建的分区表中
(3). 删除原来的大表
(4). 按照原来大表名称重命名分区表名称
注意:数据量达到千万记录以上时使用分区表。
分区数不要超过 128 个,太多的分区将会减慢管理和维护任务。
除非必要,少用多级分区
三、数据操纵:
1、插入数据:insert into 表名 values(数据); 插入一行数值,数据值用逗号进行分隔,顺序与这些列在表中出现的顺序一致。
3、更新数据:UPDATE 表名 SET d_name = '测试部' WHERE d_id = 103;
4、删除数据:DELETE FROM department WHERE d_id = 101;

四、数据查询:
1、SELECT * FROM 表名 where 条件;
2、条件:between......and........
IN 关键字,规定⼏个检查的字符串
NOT IN 来删除查询结果列举值的⾏
Like(模糊查询) _:一个字符 %:多个字符
3、排序:ORDER BY asc(升序)-默认 desc(降序)
4、LIMIT 和 OFFSET ⼦句允许只取出部分的查询数据⾏
取出前 5 条 select 列名 from 表名 limit 5;
跳过前 2 条 select 列名 from 表名 offset 2;
跳过前 2 条,再取 5 条 select 列名 from 表名 limit 5 offset 2;

五、表连接、组合查询:
1、表连接方式包括:
(1)、内连接 inner join(join)
select * from 表 A inner join 表 B on tableA.id=tableB.id;
(2)、外连接 out join :left join 、right join 、full join(完成对两张表单的连接,同时保留两侧无法匹配上的数据,无法匹配的字段用 null 来补充)
(3)、交叉连接 cross join 交叉连接,是一种不带 WHERE 子句的连接方式,T1 CROSS JOIN T2 返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
2、NATURAL JOIN 可以自动形成一个由两个表中同名的列组成的 USING 列表
3、组合查询:UNION ALL 直接对查询结果进行合并 、UNION 对查询结果合并并去重

评论
    test