返回首页

gbase数据、南大通用产品文档:GBase8s嵌入数据定义语句

更新日期:2024年09月11日

数据定义语句是创建数据库和修改表的定义的 SQL 语句,通常将这些语句放在程序内。
原因是很少执行它们。数据库只创建一次,但会多次查询和更新它。
使用 DB-Access,一般都是交互地完成数据库及其表的创建。还可从语句的文件运行这些
工具,
因此可使用操作系统命令来完成数据库创建。
在 GBase 8s SQL 指南:
语法 和 GBase
8s 数据库设计和实现指南 中描述数据定义语句。

使用指导
前提条件
连接数据库时使用的用户需要具备访问数据库的权限。
背景信息
使用gsql 命令可以连接数据库。在连接远程数据库时,需要在服务器上设置允许远程

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
12
连接,详细操作请参见《GBase 8c V5_3.0.0_开发者指南》中“3.2.3.2 远程连接数据库”。
操作步骤
步骤1 使用gsql 连接到GBase 8c 服务器。格式为:
gsql -d dbname -p port <-U user_name> <-h hostip>

-d 参数指定要连接到的数据库名称。首次连接可以指定生成的默认数据库postgres。

-p 参数指定通过端口号信息。

-U 参数指定以数据库用户名。缺省默认为gbase。

-h 参数指定数据库节点所在的服务器IP。缺省默认为当前服务器IP。
若未指定数据库名称,
则使用初始化时默认生成的数据库名称;
若未指定数据库用户名,
则默认使用当前操作系统用户作为数据库用户名;当某个值没有前面的参数(-d、-U
等)时,若连接的命令中没有指定数据库名(-d)则该参数会被解释成数据库名;如
果已经指定数据库名(-d)而没有指定数据库用户名(-U)时,该参数则会被解释成
数据库用户名。
示例如下:
#示例1:使用gbase 用户连接到本机postgres 数据库的15400 端口。
[gbase@gbasehost ~]$ gsql -d postgres -p 15400
#示例2:使用jack 用户连接到远程主机postgres 数据库的15400 端口。
[gbase@gbasehost ~]$ gsql -h 10.180.123.163 -d postgres -U jack -p 15400
#示例3:
参数postgres 和gbase 不属于任何选项时,
分别被解释成了数据库名和用户名。
[gbase@gbasehost ~]$ gsql postgres gbase -p 15400
#等效于
[gbase@gbasehost ~]$ gsql -d postgres -U gbase -p 15400
详细的gsql 参数请参见命令参考。
步骤2 执行SQL 语句。
例如,创建数据库human_staff:
gbase=# CREATE DATABASE human_staff;

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
13
CREATE DATABASE
通常,输入的命令行在遇到分号的时候结束。
如果输入的命令行没有错误,结果就会输
出到屏幕上。
步骤3 执行gsql 元命令。
首先创建一个表空间,例如EXAMPLE:
gbase=# CREATE TABLESPACE EXAMPLE RELATIVE LOCATION 'tablespace1/tablespace_1';
CREATE TABLESPACE
然后创建模式,例如HR:
gbase=# CREATE schema HR;
CREATE SCHEMA
以把一个查询分成多行输入为例。注意提示符的变化:
gbase=# CREATE TABLE HR.areaS(
gbase(# area_ID NUMBER,area_NAME VARCHAR2(25)
gbase(# )
gbase-# tablespace EXAMPLE;
CREATE TABLE
查看表的定义:
gbase=# \d HR.areaS
Table "hr.areas"
Column
|
Type
| Modifiers
-----------+-----------------------+-----------
area_id
| numeric
|
area_name | character varying(25) |
Tablespace: "example"
向HR.areaS 表插入数据:
gbase=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (1,'Europe'),(2,
'Americas'),(3, 'Asia'),(4, 'Middle East and Africa');
INSERT 0 4
切换提示符:
gbase=# \set PROMPT1 '%n@%m %~%R%#'
gbase@local gbase=#

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
14
查看表:
gbase@local gbase=# SELECT * FROM HR.areaS;
area_id |
area_name
---------+------------------------
1 | Europe
2 | Americas
3 | Asia
4 | Middle East and Africa
(4 rows)
可以用\pset 命令以不同的方法显示表:
gbase@local gbase=# \pset border 2
Border style is 2
gbase@local gbase=# SELECT * FROM HR.areaS;
+---------+------------------------+
| area_id |
area_name
|
+---------+------------------------+
|
1 | Europe
|
|
2 | Americas
|
|
3 | Asia
|
|
4 | Middle East and Africa |
+---------+------------------------+
(4 rows)
gbase@local gbase=# \pset border 0
Border style is 0.
gbase@local gbase=# SELECT * FROM HR.areaS;
area_id
area_name
------- ----------------------
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
(4 rows)
使用元命令:
gbase@local gbase=# \a \t \x
Output format is unaligned.
Showing only tuples.
Expanded display is on.

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
15
gbase@local gbase=# SELECT * FROM HR.areaS;
area_id|1
area_name|Europe
area_id|2
area_name|Americas
area_id|3
area_name|Asia
area_id|4
area_name|Middle East and Africa
gbase@local gbase=#

返回值

如果以一个参数调用,它返回X 的自然对数;

这个函数同LN(X)具有相同意义。
示例
示例1
返回2 的自然对数。
gbase> SELECT LOG(2) FROM t;
+-------------------+
| LOG(2) |
+-------------------+
| 0.693147180559945 |
+-------------------+
1 row in set
示例2
返回-2 的自然对数。
gbase> SELECT LOG(-2) FROM t;
+---------+
| LOG(-2) |
+---------+
| NULL |
+---------+
1 row in set
示例3
如果以两个参数调用,这个函数返回以B 为底,X 的对数。
gbase> SELECT LOG(2,65536) FROM t;
+--------------+
| LOG(2,65536) |
+--------------+
| 16 |
+--------------+
1 row in set
示例4
LOG(B,X)等同于LOG(X)/LOG(B)。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 829
gbase> SELECT LOG(1,100) FROM t;
+------------+
| LOG(1,100) |
+------------+
| NULL |
+------------+
1 row in set

注意
输入非法数值后,返回NULL,ORACLE 引擎报错。