人大金仓Kingbase数据库KSQL 常用命令指南
1. 连接与基本操作
1.1 连接数据库
ksql -U 用户名 -d 数据库名 -h 主机名 -p 端口号
ksql -U system -d testdb -h 127.0 .0.1 -p 54321
1.2 执行SQL脚本
ksql - U < 用户名> - d - W - f < SQL 脚本文件路径>
ksql - U root - d - W - f init_database. sql
1.3 常用元命令
\l
\c 数据库名
\d
\d 表名
\q
1.4 删除数据库
1.4.1 使用 SQL 命令删除数据库
DROP DATABASE [ IF EXISTS ] 数据库名称;
DROP DATABASE IF EXISTS test_db;
1.4.2 强制删除数据库(有连接时)
SELECT pg_terminate_backend( pg_stat_activity. pid)
FROM pg_stat_activity
WHERE pg_stat_activity. datname = '数据库名称' ;
DROP DATABASE 数据库名称;
2. 数据查询(SELECT)
基本查询
SELECT * FROM 表名;
SELECT 列1 , 列2 FROM 表名;
SELECT * FROM 表名 WHERE 条件;
SELECT * FROM 表名 LIMIT 10 ;
高级查询
SELECT * FROM 表名 ORDER BY 列名 DESC ;
SELECT 部门, COUNT ( * ) FROM 员工表 GROUP BY 部门;
SELECT a. * , b. 名称
FROM 表1 a JOIN 表2 b ON a. id = b. id;
SELECT * FROM 表1 WHERE id IN ( SELECT id FROM 表2 WHERE 条件) ;
3. 数据插入(INSERT)
INSERT INTO 表名 ( 列1 , 列2 ) VALUES ( 值1 , 值2 ) ;
INSERT INTO 表名 ( 列1 , 列2 )
VALUES ( 值1 , 值2 ) , ( 值3 , 值4 ) , ( 值5 , 值6 ) ;
INSERT INTO 目标表 ( 列1 , 列2 )
SELECT 列A, 列B FROM 源表 WHERE 条件;
4. 数据更新(UPDATE)
UPDATE 表名 SET 列1 = 值1 , 列2 = 值2 WHERE 条件;
UPDATE 产品 SET 价格= 价格* 1.1 WHERE 类别= '电子产品' ;
UPDATE 表1 SET 列1 = 表2. 列A
FROM 表2 WHERE 表1. id= 表2. id;
5. 数据删除(DELETE)
DELETE FROM 表名 WHERE 条件;
DELETE FROM 表名;
TRUNCATE TABLE 表名;
6. 表结构操作(DDL)
创建表
CREATE TABLE 表名 (
id SERIAL PRIMARY KEY ,
姓名 VARCHAR ( 50 ) NOT NULL ,
年龄 INT CHECK ( 年龄> 0 ) ,
入职日期 DATE DEFAULT CURRENT_DATE
) ;
修改表
ALTER TABLE 表名 ADD COLUMN 列名 数据类型;
ALTER TABLE 表名 ALTER COLUMN 列名 TYPE 新类型;
ALTER TABLE 表名 DROP COLUMN 列名;
删除表
DROP TABLE IF EXISTS 表名;
7. 索引操作
CREATE INDEX 索引名 ON 表名 ( 列名) ;
CREATE UNIQUE INDEX 索引名 ON 表名 ( 列名) ;
DROP INDEX 索引名;
8. 事务控制
BEGIN ;
COMMIT ;
ROLLBACK ;
9. 常用函数
SELECT CONCAT( 'Hello' , ' ' , 'Kingbase' ) ;
SELECT SUBSTRING( 'Kingbase' FROM 1 FOR 4 ) ;
SELECT CURRENT_DATE ;
SELECT EXTRACT( YEAR FROM CURRENT_DATE ) ;
SELECT ROUND ( 3.14159 , 2 ) ;
SELECT RANDOM( ) ;
10. 用户权限管理
CREATE USER 用户名 WITH PASSWORD '密码' ;
GRANT ALL PRIVILEGES ON 表名 TO 用户名;
REVOKE ALL PRIVILEGES ON 表名 FROM 用户名;
注意事项
KingbaseES 兼容 PostgreSQL 语法,部分特殊功能可能有差异
生产环境操作前建议先备份数据
V7 和 V8 版本在部分语法上可能有区别
使用大写表名和列名时需要用双引号括起来