​​金仓数据库KingbaseES V9R1C10 Windows版安装指南​

​​金仓数据库KingbaseES V9R1C10 Windows版安装指南​
本教程详细介绍了国产数据库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主机IPlocalhost或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 --hostlocalhost --port54321 --dbnameTEST --usernameSYSTEM6.2.2 常用启动参数参数长格式说明-h--host数据库服务器主机名或IP地址-p--port数据库服务器端口号-d--dbname要连接的数据库名-U--username连接用户名-W--password强制提示输入密码-f--file执行指定的SQL文件-c--command执行单个SQL命令后退出-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 -- 或者使用CtrlC6.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 mydb6.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 students6.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, zhangsanexample.com); -- 插入多条记录 INSERT INTO students (name, age, gender, email, address) VALUES (李四, 21, F, lisiexample.com, 北京市朝阳区), (王五, 19, M, wangwuexample.com, 上海市浦东新区), (赵六, 22, F, zhaoliuexample.com, 广州市天河区), (钱七, 20, M, qianqiexample.com, 深圳市南山区), (孙八, 23, F, sunbaexample.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_grade FROM enrollments; -- 分组过滤 SELECT course_id, COUNT(*) as student_count, AVG(grade) as avg_grade FROM enrollments GROUP BY course_id HAVING COUNT(*) 1;6.5.3 连接查询-- 内连接查询 SELECT s.name, c.course_name, e.grade FROM students s INNER JOIN enrollments e ON s.id e.student_id INNER JOIN courses c ON e.course_id c.course_id; -- 左连接查询显示所有学生包括未选课的 SELECT s.name, c.course_name, e.grade FROM students s LEFT JOIN enrollments e ON s.id e.student_id LEFT JOIN courses c ON e.course_id c.course_id; -- 右连接查询显示所有课程包括无人选的 SELECT s.name, c.course_name, e.grade FROM students s RIGHT JOIN enrollments e ON s.id e.student_id RIGHT 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_level FROM students s JOIN enrollments e ON s.id e.student_id JOIN courses c ON e.course_id c.course_id ORDER BY e.grade DESC;6.5.4 更新数据-- 更新单条记录 UPDATE students SET age 21 WHERE name 张三; -- 更新多个字段 UPDATE students SET age 23, email zhangsan_newexample.com, update_time CURRENT_TIMESTAMP WHERE 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_grade FROM students s; -- EXISTS子查询 SELECT name FROM students s WHERE 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_rank FROM 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_course FROM students s JOIN enrollments e ON s.id e.student_id JOIN 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_avg FROM 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.txt SELECT * 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的强大功能为企业的数字化转型贡献力量。