文章目錄
- 一、前言
- 二、軟件下載
- 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 | 數據庫服務器主機名或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
-- 或者使用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 = SYSTEMENCODING = '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_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_new@example.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的強大功能,為企業的數字化轉型貢獻力量。