KingbaseES数据库操作指南(1):SQL语法从入门到精通
一、引言
KingbaseES的魅力在于其对SQL标准的深度兼容。无论是从Oracle、MySQL迁移,还是直接上手,KingbaseES的SQL语法都提供了无缝衔接的体验。本文将围绕创建和管理数据库、表空间、模式三大核心操作,结合实战案例,从零掌握KingbaseES的基础SQL语法。

| No. | 文章地址(点击进入) |
|---|---|
| 1 | 电科金仓KingbaseES数据库解析:国产数据库的崛起与技术创新 |
| 2 | KingBase数据库迁移利器:KDTS工具深度解析与实战指南 |
| 3 | KingBase数据库迁移利器:KDTS工具 MySQL数据迁移到KingbaseES实战 |
| 4 | 电科金仓KingbaseES V9数据库:国产数据库的自主创新与行业实践深度解析 |
| 5 | KingbaseES客户端工具Ksql使用全指南:从安装到高级操作 |
| 6 | Spring JDBC与KingbaseES深度集成:构建高性能国产数据库应用实战 |
| 7 | 深度解析:基于 ODBC连接 KingbaseES 数据库的完整操作与实践 |
| 8 | Oracle与Kingbase深度兼容体验:从连接配置到性能优化全解析 |
| 9 | Python驱动Ksycopg2连接和使用Kingbase:国产数据库实战指南 |
| 10 | Go语言×Kingbase数据库极速打通:Gokb驱动三步实操,让国产数据库连接效率嘎嘎提升! |
| 11 | 金仓数据库KingbaseES实现MongoDB平滑迁移全攻略:从架构适配到性能调优的完整实践 |
| 12 | 深度解析:通过ADO.NET驱动Kdbndp高效连接与操作Kingbase数据库 |
| 13 | PHP驱动Pdo_kdb连接Kingbase数据库全攻略:从零到实战的深度指南 |
二、创建和管理数据库
在KingbaseES中,数据库(Database)是多个模式(Schema)、表(Table)、索引等对象的集合。一个实例(Instance)可以管理多个数据库,每个数据库内的对象相互隔离,但可通过系统表(如sys_database)统一管理。
2.1 创建数据库
KingbaseES中支持在ksql中输入SQL命令或使用createdb工具来创建数据库。
1、使用 CREATE DATABASE 语句创建数据库
- 语法格式
CREATE DATABASE db_name [options];
- 示例
--创建一个temp_db 的数据库
CREATE DATABASE temp_db;
2、使用createdb命令行工具创建数据库
createdb temp_db
在KingbaseES的SQLServer模式中,只支持在master库中创建数据库,
例如,在SQLServer模式中使用CREATE DATABASE语句创建数据库:
--切换到master库下 \c master
--创建数据库 CREATE DATABASE temp_db;
2.2 查看数据库列表
进入数据库后可以通过SQL语句或ksql工具命令查看当前实例的数据库列表。
- 使用SQL语句查询数据库列表
SELECT * FROM sys_database;
- 使用ksql工具的
\l命令查看数据库列表
\l
2.3 使用数据库
连接数据库后,使用ksql工具的 \c 命令切换数据库。
- 示例
--切换到test数据库下
\c test
2.4 删除数据库
KingbaseES中支持在ksql中输入SQL命令或使用dropdb工具来删除数据库。
1、使用 DROP DATABASE 语句删除数据库
- 语法格式
DROP DATABASE [IF EXISTS] db_name;
- 示例
--删除temp_db数据库
DROP DATABASE temp_db;
2、使用dropdb命令行工具删除数据库
dropdb temp_db
三、创建和管理表空间
表空间被用来指定数据库对象文件存储的位置,对应文件系统的一个目录。使用表空间的优点如下:
- 灵活存储,不同对象的存储可以放在不同的表空间下。
- 优化性能,将频繁访问的对象数据存放在快速存储介质的表空间上,可显著提高数据库的读写性能。
3.1 创建表空间
CREATE TABLESPACE 语句用于创建一个表空间,一般来说,仅超级用户有权限创建
- 语法格式
CREATE TABLESPACE tablespace_name [options] LOCATION 'directory' [options];
其中, tablespace_name是要创建的表空间的名称。 directory是要被用于表空间的目录
- 示例
--创建表空间dbspace
CREATE TABLESPACE dbspace LOCATION '/data/dbs';
3.2 使用表空间
拥有表空间上的CREATE权限后,用户可以在表空间上创建数据库对象——表、索引等
创建对象共有两种显式指定表空间的方法:SET default_tablespace参数后创建对象、创建对象时指定TABLESPACE子句。若两种显式方式均指定,优先使用TABLESPACE子句的表空间值。若未显式指定表空间,数据库对象以所属数据库的表空间为默认表空间
- 示例
--在指定表空间上创建表,当结果显示为CREATE TABLE,创建成功
CREATE TABLE t1(i int) TABLESPACE dbspace ;--设置默认表空间dbspace后创建表,当结果显示为SET,设置成功
SET default_tablespace = 'dbspace';
CREATE TABLE t2(i int);
3.3 查询表空间
可通过以下两种方式查看当前实例中的所有表空间:
- 查询sys_tablespace系统视图
SELECT spcname FROM sys_tablespace;
- 使用ksql工具命令查询表空间
\db
3.4 查询表空间使用率
1、查询表空间的当前使用情况
SELECT SYS_TABLESPACE_SIZE('dbspace');
将返回如下信息:
sys_tablespace_size
---------------------4096
(1 row)
其中 4096 表示表空间的大小,单位为字节
2、计算表空间使用率
表空间使用率 = SYS_TABLESPACE_SIZE / 表空间所在目录的磁盘大小
3.5 修改表空间
ALTER TABLESPACE 语句可以修改表空间的相关属性
- 语法格式
ALTER TABLESPACE name RENAME TO new_name;
- 示例
--表空间dbspace重命名为newdbspace
ALTER TABLESPACE dbspace RENAME TO newdbspace;
35.6 删除表空间
使用 DROP TABLESPACE 语句删除表空间
- 语法格式
DROP TABLESPACE [IF EXISTS] name;
- 示例
--删除newdbspace表空间
DROP TABLESPACE newdbspace;
四、创建和管理模式
模式又被称为 schema,它是用于组织和命名数据库对象(如表、视图、函数等)的逻辑容器
模式是数据库中组织和管理数据库对象的重要机制,它提供了一种逻辑上的命名空间,具备如下优点:
- 可以避免命名冲突,允许在同一数据库中的不同模式下创建同名对象
- 便于权限管理和隔离,每个模式分配不同的访问权限,以此控制用户或角色对特定模式中对象的访问权限,提高数据库的安全性
4.1 创建模式
CREATE SCHEMA 用于在当前数据库中创建模式,创建模式时指定的模式名必须与当前数据库中任何现有模式的名称不同
- 语法格式
CREATE SCHEMA [ IF NOT EXISTS ] [ schema_name ] [AUTHORIZATION owner] [options];
- 创建myschema模式时不指定owner
CREATE SCHEMA myschema;
提示
不能以SYS_为前缀的schema名,该类schema为数据库系统预留的
- 创建myschema模式时指定owner为test用户
CREATE SCHEMA myschema AUTHORIZATION test;
提示
创建模式时不指定owner则owner默认为当前用户
4.2 查看模式列表
可通过两种方式查看当前的模式列表:
- 查询sys_namespace系统表
SELECT * FROM sys_namespace;
- 使用ksql工具的
\dn命令
\dn
4.3 模式的搜索路径
搜索路径定义了系统搜索schema的顺序
用户可以设置 search_path 配置参数指定寻找对象可用模式的顺序。如果在创建对象时不指定模式,则会创建在默认的模式中(根据current_schema函数决定)
- 查看搜索路径
SHOW SEARCH_PATH;
-----------------"$user", public
(1 行记录)
"$user"为当前用户模式,但当前用户可能未创建模式,public为系统默认创建的公共模式
- 设置搜索路径
--将搜索路径设置为myschema、public,首先搜索myschema
SET SEARCH_PATH TO myschema, public;
4.4 模式的权限控制
通过授予用户对不同模式对象的访问权限,可以实现更精细的数据库安全控制
默认情况下,用户只能访问属于各自模式中的数据库对象。如果需要访问其他模式的对象,则该模式的所有者应该赋予它对该模式的USAGE权限。默认情况下,所有角色都拥有在public模式上的USAGE权限和CREATE权限,但是普通用户在public模式中创建对象是不安全的,建议撤销普通用户在public模式上的CREATE权限
- 示例
--撤销所有用户在public模式下创建对象的权限
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
提示
第一个public是指public模式,第二个PUBLIC是指所有用户
以下示例将描述当前模式如何进行权限控制:
1、查看当前模式
SELECT current_schema();current_schema
----------------myschema
(1 row)
2、创建用户u1,并将myschema的CREATE权限赋给用户u1
CREATE USER u1;
GRANT CREATE ON SCHEMA myschema TO u1;
提示
通过将模式的CREATE权限授予某用户,被授权用户就可以在此模式中创建对象
3、将用户u1对于myschema的CREATE权限收回
REVOKE CREATE ON SCHEMA myschema FROM u1;
4.5 使用模式
若要在指定模式下创建对象或者访问指定模式下的对象,需要使用模式名限定的对象名。该名称包含模式名以及对象名,他们之间用.号分开
- 在myschema下创建mytable表
CREATE TABLE myschema.mytable(id int, name varchar(20));
- 查询myschema下mytable表的数据
SELECT * FROM myschema.mytable;
4.6 更改模式
使用 ALTER SCHEMA 语句可以更改模式的相关属性
--将myschema模式更名为myschema_new
ALTER SCHEMA myschema RENAME TO myschema_new;
4.7 删除模式
- 当模式下无数据库对象时,使用
DROP SCHEMA命令进行删除
--删除名为nullschema的空模式
DROP SCHEMA nullschema;
- 当模式下存在数据库对象时,还需要使用CASCADE关键字命令进行删除
--删除myschema及该schema下的所有对象
DROP SCHEMA myschema_new CASCADE;
五、结语
- 数据库管理:通过
CREATE DATABASE、DROP DATABASE等语句,实现数据库的创建、删除和备份。结合表空间,可优化存储性能。 - 表空间管理:通过
CREATE TABLESPACE将数据存储在独立物理目录,提升I/O性能并简化备份。 - 模式管理:通过
CREATE SCHEMA组织逻辑对象,避免命名冲突并实现权限隔离。
KingbaseES不仅是数据库,更是企业数字化转型的基石。 从基础SQL语法入手,掌握它的核心操作,你将开启一段高效、安全、自主的数据库管理之旅,后续博主会补充其他基础SQL语法知识点。
