Oracle 用户必看:3 小时上手 KingbaseES 实战教程
文章目录
-
- 一、连接和断开数据库
-
- 认识ksql工具
- 连接数据库步骤
- 断开数据库连接
- 二、创建和管理数据库
-
- 创建数据库
- 查看数据库列表
- 切换数据库
- 删除数据库
- 三、创建和管理表空间
-
- 表空间的作用
- 创建表空间
- 使用表空间
- 查询表空间
- 修改和删除表空间
- 四、创建和管理模式
-
- 模式的作用
- 创建模式
- 查看模式列表
- 模式的搜索路径
- 权限控制
- 五、创建和管理表
-
- 创建表
- 修改表结构
- 表数据操作
- 删除表
- 六、创建和管理索引
-
- 索引的作用
- 创建索引
- 查看和维护索引
- 七、创建和管理视图
-
- 视图的特点
- 创建视图
- 查询和使用视图
- 修改和删除视图
- 八、创建和管理用户
-
- 创建用户
- 修改用户
- 权限管理
- 查看和删除用户
- 九、启动和管理事务
-
- 事务的概念
- 事务控制命令
- 事务示例
- 学习资源与实践建议
在如今这个数据驱动的时代,数据库的性能和兼容性对于企业的重要性不言而喻。KingbaseES 作为国产数据库里的“扛把子”之一,和Oracle的兼容性那叫一个强,在政务、金融这些领域用得相当广泛,给企业的数据系统迁移和搭建提供了超靠谱的选择。
接下来,咱就直奔主题,讲讲怎么快速上手这KingbaseES。这教程主要围绕数据库连接、管理,还有核心对象操作这些方面,步骤简单明了,再配上点实例,让你能快速掌握它的基本用法。
一、连接和断开数据库
认识ksql工具
ksql这玩意儿,就是个命令行连接工具,本地连接(也就是在同一台计算机上操作)和远程连接(通过网络访问其他计算机上的数据库)它都支持。说实在的,这工具用起来挺顺手,很多老运维都爱用它,方便快捷,效率高。
连接数据库步骤
-
获取服务端口
KingbaseES默认端口号为54321,不过最好确认一下实际配置:- Windows平台:执行
findstr /R \"^\\s*port\" C:\\kb_install\\data\\kingbase.conf
(记得替换为你的数据文件路径) - Linux平台:执行
grep ^\\s*port /test/kb_install/data/kingbase.conf
(路径根据实际安装位置调整)
小贴士:如果是默认安装,配置文件通常在安装目录的data文件夹下,但自定义安装时可能会更改路径。
- Windows平台:执行
-
使用ksql连接
- 指定端口号连接:
ksql -h 10.11.0.11 -p 54321 -d kingbase -U Alice
(10.11.0.11是服务器IP,54321是端口,kingbase是数据库名,Alice是用户名;本地连接可省略-h参数) - 默认端口连接:
ksql -h localhost -d kingbase -U Alice
- 指定端口号连接:
断开数据库连接
想断开连接的时候,也简单,在ksql里输入\\q或者QUIT,就跟咱关电脑上的软件一样,点个关闭按钮就完事,轻松搞定。
二、创建和管理数据库
创建数据库
有两种常用方式,根据你的习惯选择:
- SQL语句创建:
CREATE DATABASE temp_db;
(可以加参数指定字符集、所有者等,例如CREATE DATABASE temp_db WITH ENCODING \'UTF8\' OWNER test;
) - 命令行工具:
createdb temp_db
(需要在操作系统命令行执行,不是ksql里面)
注意:创建数据库的用户需要有CREATEDB权限,普通用户默认没有这个权限。
查看数据库列表
- 执行SQL:
SELECT datname FROM sys_database;
(sys_database是系统表,存储数据库信息) - ksql快捷命令:
\\l
(这个命令在ksql里非常实用,能直观看到所有数据库)
切换数据库
连接后用\\c
命令切换,例如\\c test
就切换到test数据库了,和Oracle的conn
命令类似。
删除数据库
- SQL语句:
DROP DATABASE IF EXISTS temp_db;
(加IF EXISTS可以避免数据库不存在时报错) - 命令行工具:
dropdb temp_db
警告:删除数据库会永久删除所有数据,操作前一定要确认!
三、创建和管理表空间
表空间的作用
表空间这东西,就像是数据库里的“储物间”,你可以指定数据库对象存储在哪个“储物间”里。比如说,把经常要用的数据放在“靠近门口”(快速存储介质)的“储物间”,能大大提升数据库读写性能。不过得注意,这创建表空间的事儿,一般只有超级用户才有这权限,就像公司里只有大领导才有资格分配重要资源一样。
创建表空间
一般只有超级用户能创建表空间,语法如下:
CREATE TABLESPACE tablespace_name LOCATION \'directory\';
例如:CREATE TABLESPACE dbspace LOCATION \'/data/dbs\';
关键注意点:
- 目录路径必须是绝对路径
- 目录必须提前创建好
- KingbaseES操作系统用户(通常是kingbase)要有该目录的读写权限
使用表空间
创建对象时指定表空间:
- 直接指定:
CREATE TABLE t1(i int) TABLESPACE dbspace;
- 设置默认表空间:
SET default_tablespace = \'dbspace\'; CREATE TABLE t2(i int);
(这样后续创建的表默认都用这个表空间)
查询表空间
- SQL查询:
SELECT spcname FROM sys_tablespace;
- ksql命令:
\\db
(能看到表空间名称、位置和大小)
修改和删除表空间
- 重命名:
ALTER TABLESPACE dbspace RENAME TO newdbspace;
- 删除:
DROP TABLESPACE newdbspace;
(删除前必须确保表空间里没有任何对象,否则会失败)
四、创建和管理模式
模式的作用
模式这玩意儿,就像是数据库里的“分类文件夹”,把表、视图、函数这些数据库对象都组织管理起来。它最大的好处就是能避免命名冲突,比如说不同部门的表可能名字一样,放在不同模式里就不会乱套了。而且在权限管理上也特别方便,不同模式可以设置不同的访问权限,安全又高效。
创建模式
语法:CREATE SCHEMA [schema_name] AUTHORIZATION owner;
例如:
- 创建自己的模式:
CREATE SCHEMA myschema;
(默认所有者是当前用户) - 给其他用户创建模式:
CREATE SCHEMA myschema AUTHORIZATION test;
(指定test为所有者)
注意:模式名不能以
SYS_
开头,这是系统模式的保留前缀。
查看模式列表
- SQL查询:
SELECT nspname FROM sys_namespace;
- ksql命令:
\\dn
模式的搜索路径
搜索路径决定了系统查找对象的顺序,就像操作系统的PATH环境变量。
- 查看当前路径:
SHOW SEARCH_PATH;
(默认通常是\"$user\", public) - 设置路径:
SET SEARCH_PATH TO myschema, public;
(先搜索myschema,再搜索public)
实用技巧:如果经常使用某个模式,可以把它加入搜索路径,这样查询表时就不用写
schema.表名
了。
权限控制
默认情况下,用户只能访问自己的模式。要访问别人的模式,需要授权:
GRANT USAGE ON SCHEMA myschema TO u1;
(授予u1访问myschema的权限)
建议收回普通用户在public模式的创建权限,避免混乱:
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
五、创建和管理表
创建表
基本语法:CREATE TABLE table_name (column_name data_type, ..., constraints);
例如创建订单表:
CREATE TABLE orders( order_id INT PRIMARY KEY, customer_name VARCHAR(50) NOT NULL, employee_id INT, order_date DATE DEFAULT CURRENT_DATE, total_amount NUMERIC(10,2) CHECK (total_amount >= 0));
(这里加了主键约束、非空约束、默认值和检查约束,实际使用时根据业务需求设计)
修改表结构
用ALTER TABLE
语句,常见操作:
- 重命名表:
ALTER TABLE orders RENAME TO orders_new;
- 添加列:
ALTER TABLE orders ADD COLUMN status VARCHAR(20);
- 修改列类型:
ALTER TABLE orders ALTER COLUMN customer_name TYPE VARCHAR(100);
表数据操作
- 插入数据:
INSERT INTO orders VALUES(101, \'RDJC\', 1, \'1999-03-20\', 1500.00);
(可以只插部分字段,需指定列名) - 更新数据:
UPDATE orders SET employee_id = 3 WHERE order_id = 104;
(千万别忘了WHERE条件,否则会更新所有行!) - 删除数据:
DELETE FROM orders WHERE order_id = 103;
(同样注意WHERE条件) - 查询数据:
SELECT * FROM orders WHERE order_date > \'1999-01-01\';
(可以加各种条件过滤)
删除表
DROP TABLE orders_new;
(删除表会同时删除表上的索引和约束,谨慎操作!)
六、创建和管理索引
索引的作用
索引能加快查询速度,但会减慢插入、更新和删除操作,就像书的目录,查起来快,但增减内容时目录也要跟着更新。所以要合理创建索引,不是越多越好。
创建索引
常见索引类型:
- 普通索引:
CREATE INDEX idx_employee ON orders(employee_id);
(加速按employee_id查询) - 组合索引:
CREATE INDEX idx_orders ON orders(order_id, order_date);
(适合多字段查询) - 唯一索引:
CREATE UNIQUE INDEX uid_order ON orders(order_id);
(确保字段值唯一,和主键约束类似但可以为NULL)
经验之谈:在经常作为查询条件、连接条件或排序的字段上创建索引效果最好。
查看和维护索引
- 查看索引:
\\di
(ksql命令)或SELECT * FROM sys_indexes WHERE indrelid = \'orders\'::regclass;
- 重建索引:
REINDEX INDEX idx_employee;
(索引使用久了可能会碎片化,重建能提升性能) - 删除索引:
DROP INDEX idx_employeeid;
七、创建和管理视图
视图的特点
视图是虚拟表,不存实际数据,只保存查询语句。适合把复杂查询封装起来,或者给不同用户展示不同的数据子集。
创建视图
语法:CREATE [OR REPLACE] VIEW view_name AS query;
例如:CREATE OR REPLACE VIEW orders_info AS SELECT order_id, customer_name, order_date FROM orders WHERE total_amount > 1000;
好处:用OR REPLACE可以直接更新视图定义,不用先删除再创建。
查询和使用视图
- 查询视图:
SELECT * FROM orders_info;
(和查普通表一样) - 查看视图定义:
\\sv orders_info
(ksql命令)或SELECT definition FROM sys_views WHERE viewname = \'orders_info\';
修改和删除视图
- 重命名:
ALTER VIEW orders_info RENAME TO orders_high_value;
- 删除:
DROP VIEW orders_info;
八、创建和管理用户
创建用户
- SQL语句:
CREATE USER test WITH PASSWORD \'123456\';
(超级用户或有CREATEROLE权限的用户才能创建) - 命令行工具:
createuser rdjc
(在操作系统命令行执行)
安全提示:密码最好包含大小写字母、数字和特殊符号,避免简单密码。
修改用户
- 修改密码:
ALTER USER test PASSWORD \'654321\';
- 限制连接数:
ALTER USER test CONNECTION LIMIT 10;
(防止单个用户占满连接) - 授予权限:
ALTER USER test CREATEDB;
(允许用户创建数据库)
权限管理
- 授权:
GRANT SELECT, INSERT ON orders TO test;
(授予test用户对orders表的查询和插入权限) - 撤权:
REVOKE INSERT ON orders FROM test;
查看和删除用户
- 查看用户:
\\du
(ksql命令)或SELECT usename FROM sys_user;
- 删除用户:
DROP USER test;
(如果用户有对象,需要先删除对象或用CASCADE选项)
九、启动和管理事务
事务的概念
事务是一组SQL语句的执行单元,要么全成功,要么全失败。比如转账操作,扣钱和加钱必须同时成功,否则就回滚。
事务控制命令
- 开始事务:
BEGIN;
或START TRANSACTION;
- 提交事务:
COMMIT;
(所有操作生效) - 回滚事务:
ROLLBACK;
(取消所有操作,回到事务开始前状态)
事务示例
BEGIN;INSERT INTO orders VALUES(107, \'RDJC\', 5, \'1999-03-20\', 2000.00);-- 如果上面的插入成功,继续执行下面的更新UPDATE inventory SET stock = stock - 1 WHERE product_id = 1001;-- 确认没问题后提交COMMIT;-- 如果中间出错,执行ROLLBACK;
重要:KingbaseES默认是自动提交模式,每条SQL执行后自动COMMIT。用BEGIN显式开启事务后,需要手动COMMIT或ROLLBACK。
学习资源与实践建议
通过本教程,你已经掌握了KingbaseES的基本操作。但数据库技术博大精深,建议结合实际场景深入学习:
-
官方文档:《KingbaseES数据库管理员指南》和《KingbaseES数据库概念》是权威资料,详细讲解了底层原理和高级功能。
-
实践建议:
- 在测试环境多动手操作,比如创建复杂表结构、模拟并发事务
- 遇到问题时查看数据库日志(通常在data目录的log文件夹)
- 关注金仓官方技术社区,里面有很多实际案例和解决方案
-
进阶方向:性能优化、高可用部署、数据迁移工具使用等,这些都是企业应用中的关键技能。
数据库管理需要理论和实践结合,刚开始可能会遇到各种问题,但只要多操作、多总结,很快就能熟练掌握KingbaseES的使用。祝你在数据库学习之路上越走越远!