人大金仓数据库常用命令、SQL

👨‍🎓博主简介

  🏅CSDN博客专家

  🏅云计算领域优质创作者

  🏅华为云开发者社区专家博主

  🏅阿里云开发者社区专家博主

💊交流社区: 运维交流社区 欢迎大家的加入!

🐋 希望大家多多支持,我们一起进步!😄

🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


文章目录

  • 一、数据库的操作
    • [1.1 进入数据库](#1.1 进入数据库)
    • [1.2 创建数据库](#1.2 创建数据库)
    • [1.3 查看所有数据库](#1.3 查看所有数据库)
    • [1.4 切换到其他数据库](#1.4 切换到其他数据库)
    • [1.5 查看当前数据库下的所有表](#1.5 查看当前数据库下的所有表)
    • [1.6 查看表结构](#1.6 查看表结构)
    • [1.7 删除表](#1.7 删除表)
    • [1.8 删除库](#1.8 删除库)
    • [1.9 删除一个表中的字段](#1.9 删除一个表中的字段)
    • [1.10 退出数据库](#1.10 退出数据库)
  • [二、数据库的操作 - 模式](#二、数据库的操作 - 模式)
    • [2.1 查看模式](#2.1 查看模式)
      • [2.1.1 查看所有模式](#2.1.1 查看所有模式)
      • [2.1.2 用SQL查询所有模式(包含内部模式)](#2.1.2 用SQL查询所有模式(包含内部模式))
      • [2.1.3 查看当前使用的模式](#2.1.3 查看当前使用的模式)
      • [2.1.4 查看当前搜索路径(模式查找顺序)](#2.1.4 查看当前搜索路径(模式查找顺序))
      • [2.1.5 查看指定模式的表结构](#2.1.5 查看指定模式的表结构)
    • [2.2 创建模式](#2.2 创建模式)
      • [2.2.1 创建新的模式](#2.2.1 创建新的模式)
      • [2.2.2 创建模式并指定所有者](#2.2.2 创建模式并指定所有者)
      • [2.2.3 如果模式不存在则创建(防重复)](#2.2.3 如果模式不存在则创建(防重复))
    • [2.3 切换/设置模式](#2.3 切换/设置模式)
      • [2.3.1 切换到指定模式(当前会话有效)](#2.3.1 切换到指定模式(当前会话有效))
      • [2.3.2 设置多个搜索路径(按顺序查找)](#2.3.2 设置多个搜索路径(按顺序查找))
      • [2.3.3 恢复默认搜索路径](#2.3.3 恢复默认搜索路径)
      • [2.3.4 修改数据库的默认模式](#2.3.4 修改数据库的默认模式)
      • [2.3.5 修改用户的默认模式](#2.3.5 修改用户的默认模式)
      • [2.3.6 重置搜索路径为默认值](#2.3.6 重置搜索路径为默认值)
    • [2.4 修改模式](#2.4 修改模式)
      • [2.4.1 重命名模式](#2.4.1 重命名模式)
      • [2.4.2 修改模式的所有者](#2.4.2 修改模式的所有者)
    • [2.5 删除模式](#2.5 删除模式)
      • [2.5.1 删除模式(模式必须为空)](#2.5.1 删除模式(模式必须为空))
      • [2.5.2 删除模式及其所有对象(表、视图等)](#2.5.2 删除模式及其所有对象(表、视图等))
      • [2.5.3 如果模式存在则删除](#2.5.3 如果模式存在则删除)
      • [2.5.4 默认行为,非空则报错](#2.5.4 默认行为,非空则报错)
    • [2.6 权限管理](#2.6 权限管理)
      • [2.6.1 授予模式的所有权限](#2.6.1 授予模式的所有权限)
      • [2.6.2 允许用户在该模式下创建对象](#2.6.2 允许用户在该模式下创建对象)
      • [2.6.3 允许用户使用该模式下的对象](#2.6.3 允许用户使用该模式下的对象)
      • [2.6.4 收回模式的所有权限](#2.6.4 收回模式的所有权限)
      • [2.6.5 收回创建权限](#2.6.5 收回创建权限)
    • [2.7 在模式下操作表](#2.7 在模式下操作表)
      • [2.7.1 在指定模式下创建表](#2.7.1 在指定模式下创建表)
      • [2.7.2 查看指定模式下的所有表](#2.7.2 查看指定模式下的所有表)
      • [2.7.3 查看指定模式下某表的结构](#2.7.3 查看指定模式下某表的结构)
      • [2.7.4 删除指定模式下的表](#2.7.4 删除指定模式下的表)
      • [2.7.5 查询指定模式下的表数据](#2.7.5 查询指定模式下的表数据)
  • 三、数据库的导入导出
    • [3.1 导出数据库](#3.1 导出数据库)
      • [3.1.1 常用导出命令](#3.1.1 常用导出命令)
      • [3.1.2 通用连接参数](#3.1.2 通用连接参数)
      • [3.1.3 输出控制参数(最常用)](#3.1.3 输出控制参数(最常用))
      • [3.1.4 内容选择参数(核心)](#3.1.4 内容选择参数(核心))
      • [3.1.5 数据格式控制参数](#3.1.5 数据格式控制参数)
      • [3.1.6 对象过滤参数](#3.1.6 对象过滤参数)
      • [3.1.7 清理与恢复相关参数](#3.1.7 清理与恢复相关参数)
      • [3.1.8 其他实用参数](#3.1.8 其他实用参数)
    • [3.2 数据库恢复命令](#3.2 数据库恢复命令)
      • [3.2.1 常用恢复命令](#3.2.1 常用恢复命令)

一、数据库的操作

1.1 进入数据库

一般默认用户为:kingbase

bash 复制代码
ksql -h 主机地址 -p 端口号 -U 用户名
ksql -U 用户名

1.2 创建数据库

bash 复制代码
CREATE DATABASE 数据库名;

1.3 查看所有数据库

sql 复制代码
\l

1.4 切换到其他数据库

sql 复制代码
\c 库名

1.5 查看当前数据库下的所有表

sql 复制代码
\dt

1.6 查看表结构

sql 复制代码
\d 表名

1.7 删除表

sql 复制代码
DROP TABLE 表名;

1.8 删除库

不能删除当前连接的数据库,会报错

sql 复制代码
DROP DATABASE 数据库名;
DROP DATABASE IF EXISTS 数据库名;              -- 防报错
DROP DATABASE 数据库名 WITH (FORCE);           -- 强制删除(终止所有连接后删除)

1.9 删除一个表中的字段

sql 复制代码
ALTER TABLE 表名 DROP COLUMN 字段名;
ALTER TABLE 表名 DROP COLUMN IF EXISTS 字段名;      -- 字段不存在时不报错
ALTER TABLE 表名 DROP COLUMN 字段名 CASCADE;        -- 级联删除依赖对象(视图、外键等)

1.10 退出数据库

sql 复制代码
\q

二、数据库的操作 - 模式

2.1 查看模式

2.1.1 查看所有模式

sql 复制代码
# 列出所有模式
\dn
# 列出所有模式(含描述)
\dn+

2.1.2 用SQL查询所有模式(包含内部模式)

sql 复制代码
SELECT * FROM sys_namespace;

2.1.3 查看当前使用的模式

sql 复制代码
SELECT current_schema();

2.1.4 查看当前搜索路径(模式查找顺序)

sql 复制代码
SHOW search_path;

2.1.5 查看指定模式的表结构

sql 复制代码
\dt 模式名.*

2.2 创建模式

2.2.1 创建新的模式

sql 复制代码
CREATE SCHEMA 模式名;

2.2.2 创建模式并指定所有者

sql 复制代码
CREATE SCHEMA 模式名 AUTHORIZATION 用户名;

2.2.3 如果模式不存在则创建(防重复)

sql 复制代码
CREATE SCHEMA IF NOT EXISTS 模式名;

2.3 切换/设置模式

2.3.1 切换到指定模式(当前会话有效)

sql 复制代码
SET search_path TO 模式名;

2.3.2 设置多个搜索路径(按顺序查找)

sql 复制代码
SET search_path TO 模式1, 模式2;

2.3.3 恢复默认搜索路径

sql 复制代码
SET search_path TO "$user", public;

2.3.4 修改数据库的默认模式

sql 复制代码
ALTER DATABASE 数据库名 SET search_path TO 模式名;

2.3.5 修改用户的默认模式

sql 复制代码
ALTER USER 用户名 SET search_path TO 模式名;

2.3.6 重置搜索路径为默认值

sql 复制代码
RESET search_path;

2.4 修改模式

2.4.1 重命名模式

sql 复制代码
ALTER SCHEMA 模式名 RENAME TO 新模式名;

2.4.2 修改模式的所有者

sql 复制代码
ALTER SCHEMA 模式名 OWNER TO 新所有者;

2.5 删除模式

2.5.1 删除模式(模式必须为空)

sql 复制代码
DROP SCHEMA 模式名;

2.5.2 删除模式及其所有对象(表、视图等)

sql 复制代码
DROP SCHEMA 模式名 CASCADE;

2.5.3 如果模式存在则删除

sql 复制代码
DROP SCHEMA IF EXISTS 模式名;

2.5.4 默认行为,非空则报错

sql 复制代码
DROP SCHEMA 模式名 RESTRICT;

2.6 权限管理

2.6.1 授予模式的所有权限

sql 复制代码
GRANT ALL ON SCHEMA 模式名 TO 用户名;

2.6.2 允许用户在该模式下创建对象

sql 复制代码
GRANT CREATE ON SCHEMA 模式名 TO 用户名;

2.6.3 允许用户使用该模式下的对象

sql 复制代码
GRANT USAGE ON SCHEMA 模式名 TO 用户名;

2.6.4 收回模式的所有权限

sql 复制代码
REVOKE ALL ON SCHEMA 模式名 FROM 用户名;

2.6.5 收回创建权限

sql 复制代码
REVOKE CREATE ON SCHEMA 模式名 FROM 用户名;

2.7 在模式下操作表

2.7.1 在指定模式下创建表

sql 复制代码
CREATE TABLE 模式名.表名 (...);

2.7.2 查看指定模式下的所有表

sql 复制代码
\dt 模式名.*

2.7.3 查看指定模式下某表的结构

sql 复制代码
\d 模式名.表名

2.7.4 删除指定模式下的表

sql 复制代码
DROP TABLE 模式名.表名;

2.7.5 查询指定模式下的表数据

sql 复制代码
SELECT * FROM 模式名.表名;

三、数据库的导入导出

3.1 导出数据库

sql 复制代码
sys_dump [参数]

3.1.1 常用导出命令

  • 导出数据库信息 - 包含创建表结构、插入数据、创建模式(注意:不包含创建数据库的sql)
bash 复制代码
sys_dump -U 用户名 -d 数据库名 -f /路径/备份.sql
  • 导出指定数据库的表结构(不包含自动创建数据库sql及数据)
bash 复制代码
sys_dump -U 用户名 -d 数据库名 -s -f /路径/备份.sql
  • 导出指定数据库需要自动创建库和表结构的sql(不包含数据)
bash 复制代码
sys_dump -U 用户名 -d 数据库名 -s -C -f /路径/备份.sql
  • 导出指定数据库的自动创建库和表结构及数据
bash 复制代码
sys_dump -U 用户名 -d 数据库名 -C -f /路径/备份.sql
  • 导出指定模式的表结构
bash 复制代码
sys_dump -U 用户名 -d 数据库名 -n 模式名 -s -f /路径/备份.sql
  • 导出指定模式的表结构及数据
bash 复制代码
sys_dump -U 用户名 -d 数据库名 -n 模式名 -f /路径/备份.sql
  • 导出指定模式的表结构及数据,插入数据默认的COPY换为INSERT
bash 复制代码
sys_dump -U 用户名 -d 数据库名 -n 模式名 --inserts -f /路径/备份.sql
sys_dump -U 用户名 -d 数据库名 -n 模式名 --column-inserts -f /路径/备份.sql

# --inserts、--column-inserts 两者区别在于前者导出的插入语句不带列名,例如:
# --inserts:
## INSERT INTO public.users VALUES (1, '张三', 25);
# --column-inserts:
## INSERT INTO public.users (id, name, age) VALUES (1, '张三', 25);
  • 不常用的导出命令
bash 复制代码
# 1. 导出指定表(含数据)
sys_dump -U 用户名 -d 数据库名 -t 模式名.表名1 -t 模式名.表名2 -f /路径/备份.sql

# 2. 导出指定表(只结构)
sys_dump -U 用户名 -d 数据库名 -t 模式名.表名 -s -f /路径/备份.sql

# 3. 导出带清理语句(恢复前先删除已存在的对象)
sys_dump -U 用户名 -d 数据库名 -c --if-exists -f /路径/备份.sql

# 4. 导出为自定义二进制格式(配合sys_restore使用,体积小)
sys_dump -U 用户名 -d 数据库名 -Fc -Z 6 -f /路径/表结构备份.dmp

# 5. 排除日志表的数据(只导结构)
sys_dump -U 用户名 -d 数据库名 --exclude-table-data=sys_oper_log -f /路径/备份.sql

# 6. 导出一个模式,用INSERT格式,每1000行提交一次
sys_dump -U 用户名 -d 数据库名 -n sso --inserts --rows-per-insert=1000 -f /路径/备份.sql

3.1.2 通用连接参数

参数 说明 示例
-h, --host=HOST 数据库服务器主机地址 -h 127.0.0.1
-p, --port=PORT 数据库端口号(默认54321) -p 54321
-U, --username=NAME 连接用户名 -U kingbase
-W, --password 强制提示输入密码 -W
-d, --dbname=DBNAME 要连接的数据库名 -d mould
--no-password 不提示输入密码 --no-password

3.1.3 输出控制参数(最常用)

参数 说明 示例
-f, --file=FILENAME 指定输出文件路径 -f ./backup.sql
`-F, --format=c d t
-v, --verbose 显示详细执行信息 -v
-Z, --compress=0-9 压缩级别(0-9),仅适用于自定义格式 -Z 6

3.1.4 内容选择参数(核心)

参数 说明 示例
-a, --data-only 只导出数据,不导结构 -a
-s, --schema-only 只导出结构,不导数据 -s
-n, --schema=SCHEMA 只导出指定模式 -n mould
-N, --exclude-schema=SCHEMA 排除指定模式 -N public
-t, --table=TABLE 只导出指定表(可多个) -t public.users
-T, --exclude-table=TABLE 排除指定表 -T public.temp
--include-table-data=TABLE 只导出指定表的数据 --include-table-data=users
--exclude-table-data=TABLE 排除指定表的数据 --exclude-table-data=log
--include-tablespace 包含表空间定义 --include-tablespace
--no-tablespaces 不导出表空间定义 --no-tablespaces

3.1.5 数据格式控制参数

参数 说明 示例
--inserts 数据用 INSERT INTO 代替 COPY --inserts
--column-inserts INSERT 显式带列名(兼容性最好) --column-inserts
--rows-per-insert=N 每条 INSERT 插入 N 行数据(配合 --inserts 使用) --rows-per-insert=1000
--no-tablespaces 不导出表空间分配信息 --no-tablespaces
--no-acl 不导出权限(GRANT/REVOKE) --no-acl
--no-owner 不导出对象所有者信息 --no-owner
--no-sync 跳过文件同步(可提升速度) --no-sync

3.1.6 对象过滤参数

参数 说明 示例
-O, --no-owner 不导出所有者信息 -O
-x, --no-privileges 不导出权限信息 -x
--disable-triggers 导出时禁用触发器(用于数据恢复) --disable-triggers
--enable-row-security 启用行安全策略 --enable-row-security
--exclude-table-data=TABLE 排除特定表的数据 --exclude-table-data=log
--exclude-schema=SCHEMA 排除特定模式 --exclude-schema=temp

3.1.7 清理与恢复相关参数

参数 说明 示例
-c, --clean 导出前先执行 DROP 清理语句 -c
-C, --create 在导出文件中包含 CREATE DATABASE 语句 -C
-r, --roles-only 只导出角色(用户)信息 -r
--if-exists 配合 -c 使用,DROP 时加 IF EXISTS --if-exists

3.1.8 其他实用参数

参数 说明 示例
-E, --encoding=ENCODING 指定导出文件的字符编码 -E UTF8
--section=PRE/ DATA / POST 只导出指定部分 --section=DATA
--quote-all-identifiers 所有标识符加双引号 --quote-all-identifiers
--no-unlogged-table-data 不导出未记录日志表的数据 --no-unlogged-table-data
--serializable-deferrable 使用可串行化事务,保证一致性快照 --serializable-deferrable
--lock-wait-timeout=TIMEOUT 等待表锁超时时间 --lock-wait-timeout=60000
--use-set-session-authorization SET SESSION AUTHORIZATION 替代 ALTER OWNER --use-set-session-authorization

3.2 数据库恢复命令

导出格式 推荐恢复方式 说明
纯文本 .sql(默认) ksql -U kingbase -d 数据库名 -f 文件.sql 最通用,可读性好
自定义格式 .dmp-Fc sys_restore -U kingbase -d 数据库名 文件.dmp 支持并行恢复、选择性恢复
Tar包 .tar-Ft sys_restore -U kingbase -d 数据库名 -Ft 文件.tar 适合归档
目录格式(-Fd sys_restore -U kingbase -d 数据库名 -Fd 目录/ 支持并行恢复

3.2.1 常用恢复命令

bash 复制代码
# 恢复纯文本SQL
ksql -U kingbase -d mould -f ./mould_backup.sql

# 恢复自定义格式(可选择性恢复)
sys_restore -U kingbase -d mould ./mould.dmp

# 恢复自定义格式,只恢复结构
sys_restore -U kingbase -d mould -s ./mould.dmp

# 恢复自定义格式,只恢复指定表
sys_restore -U kingbase -d mould -t users ./mould.dmp
  • 数据库中导入sql
sql 复制代码
# 需要先进入到库中
\i /路径/备份.sql