金仓数据库KingbaseES V9R1C10安装教程 - Windows版详细指南
文章目录
- 一、前言
- 二、软件下载
-
- 2.1 下载安装包
- 2.2 下载授权文件
- 三. 安装KingbaseES数据库
-
- 3.1 解压安装包
- 3.2 运行安装程序
- 3.3 安装步骤详解
-
- 步骤1:欢迎界面
- 步骤2:许可协议
- 步骤3:添加授权文件
- 步骤4:选择安装路径
- 步骤5:选择安装类型
- 步骤6:安装预览
- 步骤7:安装进度
- 步骤8:创建快捷方式
- 步骤9:完成安装
- 四、创建数据库实例
-
- 4.1 启动管理工具
- 4.2 实例配置
- 4.3 完成创建
- 五、KStudio开发管理工具使用
-
- 5.1 工具介绍
- 5.2 启动KStudio
- 5.3 创建数据库连接
-
- 方法1:通过菜单创建
- 方法2:通过工具栏创建
- 连接配置
- 5.4 界面功能
- 5.5 数据库对象管理
-
- 创建数据库
- 创建表
- 数据浏览和编辑
- 六、 SQL入门使用
-
- 6.1 ksql命令行工具配置
- 6.2 启动ksql命令行工具
-
- 6.2.1 基本启动方式
- 6.2.2 常用启动参数
- 6.2.3 连接示例
- 6.3 ksql基础操作
-
- 6.3.1 连接和退出
- 6.3.2 基本命令
-
- 数据库相关命令
- 表和模式相关命令
- 用户和权限相关命令
- 6.4 数据库和表操作
-
- 6.4.1 创建数据库
- 6.4.2 创建表
- 6.4.3 查看表结构
- 6.4.4 修改表结构
- 6.5 数据操作
-
- 6.5.1 插入数据
- 6.5.2 查询数据
- 6.5.3 连接查询
- 6.5.4 更新数据
- 6.5.5 删除数据
- 6.6 高级查询示例
-
- 6.6.1 子查询
- 6.6.2 窗口函数
- 6.7 ksql实用命令
-
- 6.7.1 元命令
- 6.7.2 文件操作
- 6.7.3 环境设置
- 七、结语
本教程详细介绍了国产数据库KingbaseES V9R1C10在Windows系统下的完整安装配置流程,包含授权文件获取、安装步骤图解、实例创建和KStudio开发工具使用指南。教程特别针对初学者设计了SQL入门操作章节,涵盖数据库创建、表管理、数据增删改查等基础操作,并提供了丰富的实用命令和高级查询示例。通过30分钟的学习,您将掌握KingbaseES的核心功能,包括ksql命令行工具配置、环境变量设置、数据库连接管理等关键技能。本教程适用于数据库管理员、开发人员和国产数据库迁移用户,是学习KingbaseES的必备指南。
一、前言
KingbaseES是一个企业级关系型数据库管理系统,具有高性能、高可用、高安全等特点。本教程将详细介绍KingbaseES V9R1C10版本在Windows环境下的完整安装过程,以及KStudio开发管理工具的使用方法和SQL入门操作,帮助初学者快速上手这款国产数据库。
二、软件下载
2.1 下载安装包
首先我们需要进入到电科金仓数据库的下载页面:点击跳转
选择V9R1C10版本,下载X64_Windows版本的安装包。
2.2 下载授权文件
点击授权文件链接跳转到授权文件下载页面:
授权文件说明:
KingbaseES数据库授权文件分为开发版、标准版、专业版和企业版。根据版本定位不同,以数据库首次启动为首日开始计算:
- 开发版:时长限制为365天
- 标准版、专业版、企业版:时长限制为90天
根据需要选择相应的授权文件,这里选择开发版,点击开发版-365天
进行下载。
下载完成的授权文件以.dat
为扩展名,在后续安装过程中需要使用。
三. 安装KingbaseES数据库
3.1 解压安装包
下载的KingbaseES安装包是.iso
格式的镜像文件,需要使用解压工具进行解压。
3.2 运行安装程序
解压后进入KingbaseES_V009R001C010B0004_Win64_install
目录,右键点击setup.bat
,选择\"以管理员身份运行\"。
3.3 安装步骤详解
步骤1:欢迎界面
进入安装向导欢迎页面,点击【下一步】继续。
步骤2:许可协议
仔细阅读许可协议,选中我接受《许可协议条款》
,点击【下一步】。
步骤3:添加授权文件
点击【浏览】按钮,选择之前下载的.dat
授权文件,然后点击【下一步】。
步骤4:选择安装路径
可以使用默认路径,也可以自定义安装路径。建议选择有足够空间的磁盘分区,点击【下一步】。
步骤5:选择安装类型
推荐选择【完全安装】,这样可以获得完整的功能组件。
步骤6:安装预览
确认安装信息无误后,点击【安装】开始安装过程。
步骤7:安装进度
等待安装进度完成,这个过程可能需要几分钟时间。
步骤8:创建快捷方式
选中【创建快捷方式】,选择【所有用户】,程序组选择【Default】,点击【下一步】。
快捷方式说明:
- 用户范围:选择\"当前用户\"仅对当前账户有效;选择\"所有用户\"对设备上所有用户可用
- 程序组:可以自定义快捷方式的分组名称
步骤9:完成安装
选中【初始化数据库】选项,点击【完成】。
四、创建数据库实例
4.1 启动管理工具
安装完成后会自动弹出金仓数据库管理工具,选择【单节点列表】,点击【创建新实例】。
4.2 实例配置
在创建实例界面中,需要配置以下参数:
- 实例名称:自定义实例名称
- 端口号:默认54321,可根据需要修改
- 用户名和密码:设置数据库管理员账户
- 兼容模式:根据需要选择兼容模式(如MySQL、Oracle、PostgreSQL等)
配置完成后点击【下一步】。
4.3 完成创建
确认配置信息无误后,选择【创建后立即执行】和【创建后注册为系统服务】,点击【执行】。
创建完成后,在单节点列表中可以看到新创建的实例,状态显示为\"运行中\"表示创建成功。
五、KStudio开发管理工具使用
5.1 工具介绍
KingbaseES提供了多种客户端工具,存放在ClientTools的guitools目录下:C:\\Kingbase\\ES\\V9\\ClientTools\\guitools
工具说明:
- DeployTools:集群部署工具,用于远程部署集群节点服务
- KDts:数据库迁移工具,支持同异构数据源之间的数据迁移
- KStudio:开发管理工具,提供图形化界面管理数据库
5.2 启动KStudio
进入KStudio目录,双击KStudio.exe
启动开发管理工具。
5.3 创建数据库连接
方法1:通过菜单创建
单击菜单栏中的数据库 → 新建连接。
方法2:通过工具栏创建
点击工具栏中的连接图标。
连接配置
在连接配置对话框中填写以下信息:
- 数据库版本:选择KingbaseES V9
- 主机IP:localhost或127.0.0.1
- 端口:54321(或创建实例时设置的端口)
- 数据库:TEST(默认数据库)
- 用户名:SYSTEM(或创建实例时设置的用户名)
- 密码:创建实例时设置的密码
- 连接名:自定义连接名称
- 连接类型:选择合适的连接类型
配置完成后点击【测试连接】,连接成功后点击【完成】。
5.4 界面功能
KStudio主界面主要包含以下几个区域,顶部功能区,左侧导航区,中部工作区,底部状态区
5.5 数据库对象管理
创建数据库
- 点击连接名称
- 右键数据库选择新建数据库
- 输入数据库名称和相关配置
- 点击【确定】完成创建
创建表
- 展开数据库节点,选择数据库
- 选择模式
- 右键表,点击新建表
- 在表设计器中定义字段、数据类型、约束等
- 点击【保存】完成表创建
数据浏览和编辑
- 右键点击表名
- 选择查询数据或编辑数据
- 在数据网格中查看或修改数据
- 使用【提交】保存更改
六、 SQL入门使用
ksql 是 KingbaseES 数据库的命令行连接工具,支持本地和远程两种连接方式。
本地连接: ksql 连接到同一台计算机运行的 KingbaseES 数据库。
远程连接: ksql 通过网络访问另一台计算机运行的 KingbaseES 数据库。
6.1 ksql命令行工具配置
在使用ksql命令行工具之前,需要先配置环境变量以便系统能够找到ksql可执行文件。
在系统变量Path里面配置kingbase的bin目录
打开命令提示符,输入以下命令验证配置:
ksql --version
如果显示版本信息,说明环境变量配置成功。
6.2 启动ksql命令行工具
6.2.1 基本启动方式
# 使用默认参数连接ksql# 指定连接参数ksql -h localhost -p 54321 -d TEST -U SYSTEM# 使用完整参数格式ksql --host=localhost --port=54321 --dbname=TEST --username=SYSTEM
6.2.2 常用启动参数
-h
--host
-p
--port
-d
--dbname
-U
--username
-W
--password
-f
--file
-c
--command
-l
--list
6.2.3 连接示例
# 连接到本地数据库ksql -h localhost -p 54321 -d TEST -U SYSTEM -W# 执行SQL文件ksql -h localhost -p 54321 -d TEST -U SYSTEM -f script.sql# 执行单个命令ksql -h localhost -p 54321 -d TEST -U SYSTEM -c \"SELECT version();\"
6.3 ksql基础操作
6.3.1 连接和退出
-- 连接成功后会显示提示符TEST=#-- 退出ksql\\q-- 或者\\quit-- 或者使用Ctrl+C
6.3.2 基本命令
数据库相关命令
-- 查看当前数据库SELECT current_database();-- 查看所有数据库\\l-- 或者\\list-- 连接到其他数据库\\c database_name-- 或者\\connect database_name-- 查看数据库版本SELECT version();
表和模式相关命令
-- 查看当前模式下的所有表\\dt-- 查看所有模式下的表\\dt *.*-- 查看表结构\\d table_name-- 查看表的详细信息\\d+ table_name-- 查看所有模式\\dn-- 查看视图\\dv
用户和权限相关命令
-- 查看所有用户\\du-- 查看当前用户SELECT current_user;-- 查看会话用户SELECT session_user;
6.4 数据库和表操作
6.4.1 创建数据库
-- 创建数据库CREATE DATABASE mydb;-- 创建数据库并指定所有者CREATE DATABASE mydb OWNER SYSTEM;-- 创建数据库并指定编码CREATE DATABASE mydb WITH OWNER = SYSTEM ENCODING = \'UTF8\' TABLESPACE = pg_default;-- 连接到新创建的数据库\\c mydb
6.4.2 创建表
-- 创建学生表CREATE TABLE students ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, age INTEGER CHECK (age > 0 AND age < 120), gender CHAR(1) CHECK (gender IN (\'M\', \'F\')), email VARCHAR(100) UNIQUE, phone VARCHAR(20), create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP);-- 创建课程表CREATE TABLE courses ( course_id SERIAL PRIMARY KEY, course_name VARCHAR(100) NOT NULL, course_code VARCHAR(20) UNIQUE NOT NULL, credits INTEGER CHECK (credits > 0), teacher VARCHAR(50), description TEXT, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP);-- 创建选课表(多对多关系)CREATE TABLE enrollments ( enrollment_id SERIAL PRIMARY KEY, student_id INTEGER NOT NULL, course_id INTEGER NOT NULL, grade DECIMAL(3,1) CHECK (grade >= 0 AND grade <= 100), enroll_date DATE DEFAULT CURRENT_DATE, status VARCHAR(20) DEFAULT \'ACTIVE\', FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE CASCADE, FOREIGN KEY (course_id) REFERENCES courses(course_id) ON DELETE CASCADE, UNIQUE(student_id, course_id));
6.4.3 查看表结构
-- 查看表结构\\d students-- 查看表的详细信息(包括索引、约束等)\\d+ students-- 查看表的创建语句\\d students
6.4.4 修改表结构
-- 添加列ALTER TABLE students ADD COLUMN address TEXT;ALTER TABLE students ADD COLUMN birth_date DATE;-- 修改列数据类型ALTER TABLE students ALTER COLUMN name TYPE VARCHAR(100);-- 修改列默认值ALTER TABLE students ALTER COLUMN update_time SET DEFAULT CURRENT_TIMESTAMP;-- 删除列ALTER TABLE students DROP COLUMN phone;-- 重命名列ALTER TABLE students RENAME COLUMN birth_date TO birthday;-- 添加约束ALTER TABLE students ADD CONSTRAINT chk_email_format CHECK (email LIKE \'%@%.%\');-- 删除约束ALTER TABLE students DROP CONSTRAINT chk_email_format;-- 创建索引CREATE INDEX idx_students_name ON students(name);CREATE INDEX idx_students_email ON students(email);
6.5 数据操作
6.5.1 插入数据
-- 插入单条记录INSERT INTO students (name, age, gender, email) VALUES (\'张三\', 20, \'M\', \'zhangsan@example.com\');-- 插入多条记录INSERT INTO students (name, age, gender, email, address) VALUES(\'李四\', 21, \'F\', \'lisi@example.com\', \'北京市朝阳区\'),(\'王五\', 19, \'M\', \'wangwu@example.com\', \'上海市浦东新区\'),(\'赵六\', 22, \'F\', \'zhaoliu@example.com\', \'广州市天河区\'),(\'钱七\', 20, \'M\', \'qianqi@example.com\', \'深圳市南山区\'),(\'孙八\', 23, \'F\', \'sunba@example.com\', \'杭州市西湖区\');-- 插入课程数据INSERT INTO courses (course_name, course_code, credits, teacher, description) VALUES(\'数据库原理\', \'DB101\', 3, \'张教授\', \'关系数据库理论与实践\'),(\'Java程序设计\', \'JAVA201\', 4, \'李教授\', \'Java语言基础与面向对象编程\'),(\'数据结构\', \'DS101\', 3, \'王教授\', \'线性表、树、图等数据结构\'),(\'操作系统\', \'OS201\', 4, \'刘教授\', \'进程管理、内存管理、文件系统\'),(\'计算机网络\', \'NET301\', 3, \'陈教授\', \'TCP/IP协议栈与网络编程\');-- 插入选课数据INSERT INTO enrollments (student_id, course_id, grade) VALUES(1, 1, 85.5),(1, 2, 92.0),(2, 1, 78.5),(2, 3, 88.0),(3, 2, 95.5),(3, 4, 82.0),(4, 1, 90.0),(4, 5, 87.5),(5, 3, 93.0),(5, 4, 89.5);
6.5.2 查询数据
-- 基本查询SELECT * FROM students;-- 指定列查询SELECT name, age, email FROM students;-- 条件查询SELECT name, age FROM students WHERE age > 20;SELECT * FROM students WHERE gender = \'F\' AND age >= 21;-- 模糊查询SELECT * FROM students WHERE name LIKE \'张%\';SELECT * FROM students WHERE email LIKE \'%@example.com\';-- 排序查询SELECT * FROM students ORDER BY age DESC;SELECT * FROM students ORDER BY age ASC, name DESC;-- 分页查询SELECT * FROM students LIMIT 3;SELECT * FROM students LIMIT 3 OFFSET 2;-- 去重查询SELECT DISTINCT gender FROM students;SELECT DISTINCT teacher FROM courses;-- 聚合查询SELECT COUNT(*) as total_students FROM students;SELECT gender, COUNT(*) as count, AVG(age) as avg_age FROM students GROUP BY gender;SELECT AVG(grade) as avg_grade, MAX(grade) as max_grade, MIN(grade) as min_gradeFROM enrollments;-- 分组过滤SELECT course_id, COUNT(*) as student_count, AVG(grade) as avg_gradeFROM enrollments GROUP BY course_idHAVING COUNT(*) > 1;
6.5.3 连接查询
-- 内连接查询SELECT s.name, c.course_name, e.gradeFROM students sINNER JOIN enrollments e ON s.id = e.student_idINNER JOIN courses c ON e.course_id = c.course_id;-- 左连接查询(显示所有学生,包括未选课的)SELECT s.name, c.course_name, e.gradeFROM students sLEFT JOIN enrollments e ON s.id = e.student_idLEFT JOIN courses c ON e.course_id = c.course_id;-- 右连接查询(显示所有课程,包括无人选的)SELECT s.name, c.course_name, e.gradeFROM students sRIGHT JOIN enrollments e ON s.id = e.student_idRIGHT JOIN courses c ON e.course_id = c.course_id;-- 复杂连接查询SELECT s.name as student_name, s.age, c.course_name, c.teacher, e.grade, CASE WHEN e.grade >= 90 THEN \'优秀\' WHEN e.grade >= 80 THEN \'良好\' WHEN e.grade >= 70 THEN \'中等\' WHEN e.grade >= 60 THEN \'及格\' ELSE \'不及格\' END as grade_levelFROM students sJOIN enrollments e ON s.id = e.student_idJOIN courses c ON e.course_id = c.course_idORDER BY e.grade DESC;
6.5.4 更新数据
-- 更新单条记录UPDATE students SET age = 21 WHERE name = \'张三\';-- 更新多个字段UPDATE students SET age = 23, email = \'zhangsan_new@example.com\', update_time = CURRENT_TIMESTAMPWHERE id = 1;-- 批量更新UPDATE students SET age = age + 1 WHERE gender = \'M\';-- 基于连接的更新UPDATE enrollments SET grade = grade + 5 WHERE student_id IN ( SELECT id FROM students WHERE age < 21) AND grade < 95;
6.5.5 删除数据
-- 删除指定记录DELETE FROM enrollments WHERE grade < 60;-- 条件删除DELETE FROM students WHERE age < 18;-- 基于子查询的删除DELETE FROM enrollments WHERE student_id IN ( SELECT id FROM students WHERE name = \'张三\');-- 清空表数据(保留表结构)TRUNCATE TABLE enrollments;
6.6 高级查询示例
6.6.1 子查询
-- 单行子查询SELECT name FROM students WHERE age = (SELECT MAX(age) FROM students);-- 多行子查询SELECT name FROM students WHERE id IN (SELECT student_id FROM enrollments WHERE grade > 90);-- 相关子查询SELECT s.name, s.age, (SELECT AVG(grade) FROM enrollments e WHERE e.student_id = s.id) as avg_gradeFROM students s;-- EXISTS子查询SELECT name FROM students sWHERE EXISTS ( SELECT 1 FROM enrollments e WHERE e.student_id = s.id AND e.grade > 85);
6.6.2 窗口函数
-- 排名函数SELECT name, age, ROW_NUMBER() OVER (ORDER BY age DESC) as row_num, RANK() OVER (ORDER BY age DESC) as rank, DENSE_RANK() OVER (ORDER BY age DESC) as dense_rankFROM students;-- 分组排名SELECT s.name, c.course_name, e.grade, ROW_NUMBER() OVER (PARTITION BY e.course_id ORDER BY e.grade DESC) as rank_in_courseFROM students sJOIN enrollments e ON s.id = e.student_idJOIN courses c ON e.course_id = c.course_id;-- 累计函数SELECT name, age, SUM(age) OVER (ORDER BY age) as cumulative_age, AVG(age) OVER (ORDER BY age ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as running_avgFROM students;
6.7 ksql实用命令
6.7.1 元命令
-- 帮助命令\\?-- 时间统计\\timing on -- 开启查询时间统计\\timing off -- 关闭查询时间统计-- 输出格式\\x on -- 开启扩展显示模式(垂直显示)\\x off -- 关闭扩展显示模式-- 分页显示\\pset pager on -- 开启分页\\pset pager off -- 关闭分页-- 设置输出格式\\pset format aligned -- 对齐格式\\pset format unaligned -- 非对齐格式\\pset format csv -- CSV格式
6.7.2 文件操作
-- 执行SQL文件\\i script.sql\\include script.sql-- 将查询结果输出到文件\\o output.txtSELECT * FROM students;\\o -- 关闭输出重定向-- 复制表数据到文件\\copy students TO \'students.csv\' WITH CSV HEADER;-- 从文件导入数据\\copy students FROM \'students.csv\' WITH CSV HEADER;
6.7.3 环境设置
-- 查看当前设置\\set-- 设置变量\\set AUTOCOMMIT off\\set ECHO_HIDDEN on-- 设置环境变量\\setenv LANG zh_CN.UTF-8-- 执行系统命令\\! dir -- Windows下查看目录\\! ls -la -- Linux下查看目录
七、结语
通过本教程,我们完成了KingbaseES V9R1C10数据库在Windows环境下的完整安装配置,学习了KStudio开发管理工具的基本使用方法,并掌握了SQL的入门操作。KingbaseES作为一款优秀的国产数据库,在功能特性和性能表现上都达到了企业级应用的要求。
希望本教程能够帮助您快速入门KingbaseES数据库,在国产数据库的学习和应用道路上迈出坚实的第一步。随着对数据库理解的不断深入,相信您能够充分发挥KingbaseES的强大功能,为企业的数字化转型贡献力量。