Gbase8s学习

一.Gbase8s命令

(1)课程教学内容

1.安装与卸载

2.客户端工具dbaccess

3.运行模式与切换

4.基本数据类型

5.gbase语法

6.内置函数

7.SPL入门

8.数据迁移

9.基于ontape的备份与恢复

10.元数据查询

11.管理员常用命令

(2)用户的创建与连接

gbase8s用户即系统用户,在系统用户创建后过一会儿,或者oninit -ivy初始化数据库,系统用户被识别入数据库,成为数据库用户。

useradd chenziyang

passwd chenziyang

 在数据库中连接用户

connect to ‘@ol_gbasedbt1210_5’ user 'chenziyang'

  ENTER PASSWORD:******

gbase8s 用户管理和alter user 语法_gbase8s创建用户

(3)Gbase8s基本语法

GBase 学习笔记 - 基本语法_gbase语法

(4)定制安装Gbase8s流程(设置特定实例)

五个回车        Y

/home/num1chenziyang/ids        Y

2(Custom installation)

两个回车        DEFAULT 

2(Do not enable role separation,虽然也是DEFAULT,但是注意一下 )

1(Yes - create a server instance)        1(Yes - initialize the server)

1(Use default parameters)        ftstest1

默认向下结束

(5)查看Gbase8s实例端口号

cat /etc/services

(6)Gbase8s创建数据空间&建立分片表

GBASE 8s 如何创建数据空间&建立分片表_八珍豆腐的博客-CSDN博客

 创建各种数据空间(包括sbspace)

GBase 8s 之数据存储空间划分_数据库优化

(7)oninit -ivy失败问题

此命令为彻底初始化数据库并启动,是一个很危险的命令。

在默认配置的情况下,会报:Fatal error in shared memory initialization,因为配置文件中将此操作限制了,避免误操作导致严重后果。

(8)Gbase8s数据库权限

GBase 8s数据库权限 - 墨天轮 (modb.pro)

(9)GBASE 8s常用命令之:dbschema

GBASE 8s常用命令之:dbschema_ls_hong的博客-CSDN博客

二.练习

(1)shell脚本连接Gbase8s并批量插入数据

vim insertid.sh

#!/bin/bash
export servername="test1"
echo "connect to '@servername' user 'czy' using '976156';">>tmp.sql
echo "database chenziyang;">>tmp.sql

for i in {1..10}
do
    echo "insert into students(id) values($i);">>tmp.sql
done

dbaccess - tmp.sql
echo " ">tmp.sql


#echo "...">>tmp.sql  :双箭头是添加,当语句在tmp.sql文件中准备好后,dbaccess - tmp.sql
#echo "...">tmp.sql   :单箭头是覆盖,所以本程序最后用空格覆盖,等价于清空文件

chmod u+x insertid.sh

./insertid.sh

这种方法是适合dbaccess命令行工具的,与gsql和mysql工具不同。

GBase 8s 客户端命令行工具dbaccess

(2)Gbase8s数据库操作练习(可顺利从头执行到尾)

dbaccess - -

create database chenziyang;

database chenziyang;

create table chen_sir(num int,name varchar(50));

info tables;

Table name

chen_sir

info columns for chen_sir;

Colum name        Type                Nulls

num               integer             yes
name              varchar(50)         yes

insert into chen_sir values(1,'gbase8s');

select * from chen_sir;

1.查看表的权限/为用户赋权

select * from systabauth

where tabid = (select tabid from systables where tabname = 'chen_sir');

 

查看表的权限。授权者是授予权限的用户。授权者通常是表的所有者,但所有者可为授权者授权了的另一用户。被授权者是将权限授予其的用户,被授权者 public意味着有 Connect 权限的任何用户。如果您的用户名未出现,则您仅拥有授予给了 public 的那些权限。

    s(选择)、u(更新)、*(列级别特权)、i(插入)

    d(删除)、x(索引)、a(改变)、r(引用)来标识特权的类型 

grant connect to root;

grant resource to root;

grant dba to root;

Permission granted.许可授权,即给root用户赋权;dba为数据库管理员,包括所有权限。

2.触发器 --- trigger

create table students(id int,name varchar(50),age int);

create table students_log(id int,name varchar(50));

create trigger students_insert insert on students

referencing new as new

for each row

(insert into students_log values(new.id,new name));

Trigger created.

insert into students values(1,'aaa',18);

select * from students_log;

id        name

1         aaa

触发器成功创建并应用:在students表插入数据时,向students_log表中插入数据。

note:referencing new as new语句是必要的,否则new识别不了。

select * from systriggers;

trigid        2
trigname      students_insert
owner         root
tabid         159
event         I
old
new           new
mode          0
collation     zh_CN.57372

 查看所有触发器

3.索引 --- index

create index index_students_age on students(age);

select age from students where age>1

age

2
4
5
6

select idxname from sysindexes

order by substr(idxname,1,1) asc;     //按idxname的首字母排序(第m个字母,长度为n)

idxname    amname
idxname    idx_students_id
idxname    sxa_gtor
idxname    users
idxname    view

4.结束

delete from students;                        //清空表内数据

drop index if exists index_students_age;

drop trigger if exists students_insert;

drop table if exists chen_sir;

drop table if exists students;

drop table if exists students_log;

 GBase8s系统表介绍6(很多信息可以在系统表查到,如索引和触发器等)

(3)load/unload

load 语句速度较快且较易于使用,但它只接受指定的数据格式。通常可将使用unload语句准备好的数据用于 load。

load/unload 用于单表文本数据的装载和卸载,unload 导出表数据到指定文件,load则将指定的文本文件数据插入到表。

示例 1:导出表 test 的所有数据到 test.unl 文件:

unload to test.unl select * from test;

示例 2:将文本文件 test.unl 的数据导入到表:

test load from test.unl insert into test;

三.sql语句学习与分析

1.

select first 5 col1, col2 from

table (function fibGen(10)) tab1(col1), table (function fibgen(5)) tab2(col2)

group by col1, col2

order by col2 desc;

1. `select first 5 col1, col2 from`:这部分表示选择前5个满足条件的记录。其中,`first` 是一个关键字,用于指定返回结果的数量。在这里,它表示返回前5条记录。

2. `table (function fibGen(10)) tab1(col1), table (function fibgen(5)) tab2(col2)`:这部分表示从两个表中选择数据。`fibGen(10)` 和 `fibgen(5)` 是两个函数,分别生成了包含10个和5个元素的斐波那契数列。这两个表分别命名为 `tab1` 和 `tab2`,并且它们都有两列,分别是 `col1` 和 `col2`。

3. `group by col1, col2`:这部分表示按照 `col1` 和 `col2` 的值进行分组。这意味着查询结果将包含多个分组,每个分组包含具有相同 `col1` 和 `col2` 值的记录。

4. `order by col2 desc;`:这部分表示按照 `col2` 的值进行降序排列。`desc` 是一个关键字,表示降序排列。这意味着查询结果将按照 `col2` 的值从大到小排序。

 2.

select col1, col2, count(*) from

table (function fibGen(10)) tab1(col1), table (function fibgen(5)) tab2(col2)

group by col1, col2

having count(*) > 1

order by col1, col2 asc;

1. `select col1, col2, count(*) from`:选择要查询的列,这里是col1和col2,以及计算每个组合出现的次数(count(*))。

2. `table (function fibGen(10)) tab1(col1), table (function fibgen(5)) tab2(col2)`:创建两个表tab1和tab2,分别使用fibGen函数生成前10个斐波那契数列的值作为col1,使用fibgen函数生成前5个斐波那契数列的值作为col2。

3. `group by col1, col2`:按照col1和col2的组合进行分组。

4. `having count(*) > 1`:筛选出在分组后出现次数大于1的组合。

5. `order by col1, col2 asc;`:按照col1和col2升序排列结果。

四.一些与数据库相关的linux操作

1.netstat

netstat命令用于显示网络连接、路由表和网络接口等系统的网络状态信息。它可以帮助用户监视和诊断网络活动,以及查看系统的网络配置。

命令:

netstat -a: 显示所有活动的网络连接和监听端口
netstat -t: 显示TCP连接
netstat -u: 显示UDP连接
netstat -r: 显示路由表
netstat -s: 显示网络统计信息
netstat -i: 显示网络接口信息

 场景:

安装数据库时,端口号被占用,想要查看端口号并释放:

netstat -ntl(列出所有正在监听的TCP连接,显示其本地地址、端口号以及连接状态)

fuser -k -n tcp 8000(查找并终止占用TCP端口8000的进程)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值