15分钟

任务3 测试TBase的SQL语句

任务目的

此任务会在TBase上运行基本的CRUD (Create添加数据、Retrieve读取查询、Update更新数据、Delete删除数据)SQL语句,学员由此掌握TBase分布式数据库的基本SQL语法与使用方式。

任务步骤

1.Create添加数据语句的使用

创建一个数据库poc_test,字符集和字符序均保持默认,不进行指定。

CREATE DATABASE poc_test;
创建数据库poc_test

创建一个数据库poc_test_utf8,指定字符集为utf8。

CREATE DATABASE poc_test_utf8 ENCODING 'utf8';
创建数据库poc_test_utf8

创建一个数据库poc_testc_collate_zh_cn,指定字符序为zh_CN.UTF8

CREATE DATABASE poc_testc_collate_zh_cn lc_collate 'zh_CN.UTF8' TEMPLATE template0;
创建数据库poc_testc_collate_zh_cn

显示已经创建的库的具体信息与配置。

\l
显示数据库

进入前面创建的poc_test数据库,创建含有复合主键的表type014。

\c poc_test
CREATE TABLE type014(col1 INT NOT NULL,col2 INT NOT NULL,PRIMARY KEY(col1,col2));
在poc_test数据库中创建type014表

在poc_test数据库中,创建含有唯一索引的表type015。

CREATE TABLE type015(col1 INT,col2 INT,UNIQUE(col1));
创建含有唯一索引表type015

在poc_test数据库中,创建表type001,并为该表新增一列。

CREATE TABLE IF NOT EXISTS type001(col1 INTEGER,col2 INTEGER);
ALTER TABLE type001 ADD COLUMN id INT NULL;
新增列

为type001的id列新增索引。

CREATE INDEX type001_id_idx ON type001(id);
新增索引

向type001表中插入一行数据。

INSERT INTO type001 VALUES(101,102,103);
INSERT语句使用

2.Retrieve读取查询语句的使用

在poc_test数据库中,查询表type001中的数据。

SELECT * FROM type001;
SELECT语句使用

在poc_test数据库中,查询表type001中id小于200的id列数据。

SELECT id FROM type001 WHERE id<200;
WHERE语句使用

创建t1、t2表并各插入三条数据进行多表查询测试。

CREATE TABLE IF NOT EXISTS t1(id INT,name VARCHAR(10),entry_time TIMESTAMP,score NUMERIC(5,2) NULL,height SMALLINT,PRIMARY KEY(id));

CREATE TABLE IF NOT EXISTS t2(id INT,name VARCHAR(10),entry_time TIMESTAMP,score NUMERIC(5,2) NULL,height SMALLINT,PRIMARY KEY(id));

INSERT INTO t1(id,name,entry_time,score,height) VALUES(458972,'zyx','2014-08-26 08:30',534.05,180);
INSERT INTO t1(id,name,entry_time,score,height) VALUES(547894,'wsc','2013-05-26 14:30',625.55,175);
INSERT INTO t1(id,name,entry_time,score,height) VALUES(953124,'wq','2010-08-15 06:45',420.56,165);

INSERT INTO t2(id,name,entry_time,score,height) VALUES(458972,'zyx','2014-08-26 08:30',534.05,180);
INSERT INTO t2(id,name,entry_time,score,height) VALUES(547894,'wsc','2013-05-26 14:30',625.55,175);
INSERT INTO t2(id,name,entry_time,score,height) VALUES(462519,'cdg','2006-12-25 20:45',710.20,160);
创建t1,t2表并插入数据

使用JOIN、LEFT JOIN、RIGHT JOIN进行多表查询。

SELECT t1.id,t1.name,t1.score FROM t1 LEFT JOIN t2 ON t1.id=t2.id ORDER BY t1.id;

SELECT t1.id,t1.name,t1.score FROM t1 RIGHT JOIN t2 ON t1.id=t2.id ORDER BY t2.id;

SELECT t1.id,t2.name FROM t1 JOIN t2 ON t1.id=t2.id ORDER BY t2.id;
多表查询

GROUP BY查询语句。

SELECT MAX(tb.aa),LENGTH(tb.name)-1 FROM
(
  SELECT name,AVG(score) AS aa
  FROM t1 WHERE height<175 GROUP BY name
  )
   tb  GROUP BY LENGTH(tb.name)-1;
ORDER BY查询

ORDER BY查询语句。

SELECT tb.id,tb.name,tb.height,ROUND(tb.height*0.8+10)-1 FROM
(
  SELECT id,name,height,score FROM t1 WHERE height<175 ORDER BY height  
  )
  tb  ORDER BY ROUND(height*0.8+10)-1,2;
ORDER BY查询

HAVING查询语句。

SELECT SUM(t2.id),name FROM t2 WHERE height<175 GROUP BY name HAVING SUM(t2.id) > 294106;
HAVING查询

3.Update更新数据语句的使用

修改type001表中id为103的行,将id改为109。

SELECT * FROM type001;
UPDATE type001 SET id=109 WHERE id=103;
SELECT * FROM type001;
修改id

修改type001表中id字段默认值为0

ALTER TABLE type001 ALTER COLUMN id SET DEFAULT 0;
修改字段默认值

修改type001表中col2字段类型为float8。

ALTER TABLE type001 ALTER COLUMN col2 TYPE float8;
修改字段类型

4.Delete删除数据语句的使用

删除type001的索引type001_id_idx。

DROP INDEX IF EXISTS type001_id_idx;
删除索引

删除type001表中的id列。

ALTER TABLE type001 DROP COLUMN id;
删除列

删除type001表。

DROP TABLE IF EXISTS type001;
删除表