SQL基本操作

成功部署Hubble集群之后,便可以在Hubble中执行SQL语句了。因Hubble支持PostgreSQL协议和大多数 PostgreSQL语法,这意味着在 PostgreSQL上构建的现有应用程序通常可以迁移到Hubble,而无需更改应用程序代码。

SQL是一门声明性语言,它是数据库用户与数据库交互的方式。它像是一种自然语言,好像在用英语与数据库进行对话,本文档介绍基本的 SQL操作。

分类

SQL 语言通常按照功能划分成以下的 4 个部分:

  • DDL (Data Definition Language):数据定义语言,用来定义数据库对象,包括库、表、视图和索引等。

  • DML (Data Manipulation Language):数据操作语言,用来操作和业务相关的记录。

  • DQL (Data Query Language):数据查询语言,用来查询经过条件筛选的记录。

  • DCL (Data Control Language):数据控制语言,用来定义访问权限和安全级别。

常用的 DDL功能是对象(如表、索引等)的创建、属性修改和删除,对应的命令分别是 CREATEALTERDROP

用dbeaver工具连接数据库

参考dbeaver连接数据库后,即可使用

用ssh工具连接数据库

需要注意certs-dir的地址和--host的端口信息

  • 连接数据库的sh语句
[root@hubble01 ~]# hubble sql --certs-dir=/var/lib/hubbletp/certs --host=hubble01:35432 --user hubble 
# Welcome to the HubbleDB SQL shell.
# All statements must be terminated by a semicolon.
# To exit, type: \q.
#
# Server version: HubbleDB v3.10.2-dirty (same version as client)
# Cluster ID: fb578fa1-b32c-4c71-bf5b-a4ee6f2ab28c
#
# Enter \? for a brief introduction.
#
hubble@hubble01:35432/defaultdb>

查看/创建/删除数据库

查看系统中所有数据库:

show databases;

要创建一个名为hubble_db的数据库,可使用以下语句:

create database  hubble_db;

使用SHOW TABLES语句查看当前数据库中的所有表:

show tables from hubble_db;

使用DROP DATABASE语句删除数据库:

drop database hubble_db;

切换到目标库

use hubble_db;

创建/查看/删除表

CREATE TABLE语句建表:

create table cust_info(
    cust_no       string primary key,
    cust_name     varchar(30) not null,
    cust_card_no  varchar(18),  
    cust_phoneno  decimal(15),
    cust_address  varchar(30),
    cust_type     varchar(10),
    index(cust_card_no)
 );

主键的创建必须在create table语句中,如果建表不指定主键的话,hubble数据库在建表时候自带rowid默认作为主键。

使用COMMENT给表和字段添加注释:

comment on table cust_info IS '客户信息表';
comment on column cust_info.cust_no is '客户号';
comment on column cust_info.cust_name is '客户姓名';
comment on column cust_info.cust_card_no is '客户身份证号';
comment on column cust_info.cust_phoneno is '客户手机号';
comment on column cust_info.cust_address is '客户所在地';
comment on column cust_info.cust_type is '客户授信类型';

查看表的注释

show tables with  comment;

查看字段的注释

show columns from cust_info with  comment;

使用SHOW CREATE语句查看建表语句:

show create table cust_info;

使用DROP TABLE语句删除表:

drop table cust_info;

创建/查看/删除索引

使用CREATE INDEX语句创建索引:

create index custbak_index on cust_info(cust_name);

使用SHOW INDEX语句查看表内所有索引:

show index from cust_info;

使用DROP INDEX语句来删除索引:

drop index custbak_index ;

数据的增删改查

使用INSERT INTO向表内插入数据:

insert into cust_info values('14435550','王吉','12022519960321531X',15122511874,'天津武清','抵押');
insert into cust_info values('14435551','张贺','431256197306265320',15534343555,'山西临汾','质押');
insert into cust_info values('14435552','刘明','371452199303034312',18967756743,'陕西延安','信用');
insert into cust_info values('14435553','李华','52112119860621421X',15833355455,'湖北武汉','抵押');
insert into cust_info values('14435554','郑青','213456199102275341',13054546567,'江西南昌','质押');

使用UPDATE语句修改表数据:

update cust_info set cust_phoneno='13565466894' where cust_no='14435554';

使用DELETE语句删除部分数据:

delete from cust_info where cust_no='14435554';

限制查询数据

select * from cust_info limit 3;
 cust_no  | cust_name |    cust_card_no    | cust_phoneno | cust_address | cust_type
-----------+-----------+--------------------+--------------+--------------+------------
  14435550 | 王吉      | 12022519960321531X |  15122511874 | 天津武清     | 抵押
  14435551 | 张贺      | 431256197306265320 |  15534343555 | 山西临汾     | 质押
  14435552 | 刘明      | 371452199303034312 |  18967756743 | 陕西延安     | 信用