当前位置: 首页 > news >正文

KingbaseES数据库操作指南(2):SQL语法从入门到精通

引言

在数字化转型的浪潮中,数据库作为企业核心数据的存储与处理中枢,其重要性不言而喻。近年来,国产数据库技术飞速发展,人大金仓KingbaseES凭借其 Sql 高度兼容性、强大的分布式架构以及针对国产软硬件环境的深度优化,成为金融、政务、能源等关键行业的首选数据库之一。
在这里插入图片描述

本文从表、索引、视图、用户权限、事务管理五大模块讲述,结合案例与性能优化建议,无论你是数据库新手,还是从其他数据库迁移至KingbaseES的技术人员,都能从中找到想要的内容。

No.文章地址(点击进入)
1电科金仓KingbaseES数据库解析:国产数据库的崛起与技术创新
2KingBase数据库迁移利器:KDTS工具深度解析与实战指南
3KingBase数据库迁移利器:KDTS工具 MySQL数据迁移到KingbaseES实战
4电科金仓KingbaseES V9数据库:国产数据库的自主创新与行业实践深度解析
5KingbaseES客户端工具Ksql使用全指南:从安装到高级操作
6Spring JDBC与KingbaseES深度集成:构建高性能国产数据库应用实战
7深度解析:基于 ODBC连接 KingbaseES 数据库的完整操作与实践
8Oracle与Kingbase深度兼容体验:从连接配置到性能优化全解析
9Python驱动Ksycopg2连接和使用Kingbase:国产数据库实战指南
10Go语言×Kingbase数据库极速打通:Gokb驱动三步实操,让国产数据库连接效率嘎嘎提升!
11金仓数据库KingbaseES实现MongoDB平滑迁移全攻略:从架构适配到性能调优的完整实践
12深度解析:通过ADO.NET驱动Kdbndp高效连接与操作Kingbase数据库
13PHP驱动Pdo_kdb连接Kingbase数据库全攻略:从零到实战的深度指南
14KingbaseES数据库操作指南(1):SQL语法从入门到精通

一、创建和管理表

表是数据库中数据存储的基本单元,也是数据库中最重要的数据库对象,合理的表设计直接影响查询效率、存储空间利用率以及后续的维护成本。博主简单介绍表的创建、修改、结构查看、数据操作和删除

1.1 创建表

CREATE TABLE 语句用于创建一个表,在 CREATE TABLE 语句中可以指定列、表约束等信息。

  • 语法格式
CREATE TABLE table_name (column_name data_type,..., table_constraint);
  • 示例

创建orders表,并为order_id列定义一个主键约束以及为customer_name定义一个NOT NULL约束

CREATE TABLE orders(order_id INT CONSTRAINT pk_orders PRIMARY KEY,customer_name VARCHAR(10) NOT NULL,employee_id INT,order_date DATE
);

1.2 修改表结构

ALTER TABLE 语句可以修改表结构及表上的属性。

  • 示例

重命名orders表为orders_new

ALTER TABLE orders RENAME TO orders_new;

1.3 查看表结构

查看表的结构可以使用ksql工具的 \d+ table_name 命令。

  • 示例

查看orders表的结构

\d+ orders

1.4 插入表数据

INSERT 命令用于向表中插入数据。

  • 示例

使用 INSERT 命令增加包含所有字段的数据:

INSERT INTO orders VALUES(101,'RDJC',1,'1999-03-20');

使用 INSERT 命令增加只有部分字段的数据:

INSERT INTO orders(order_id, customer_name) VALUES(104,'ADJC');

使用 INSERT 命令增加多条数据:

INSERT INTO orders VALUES(103,'GDJC',4,'1989-03-20'),(105,'SDJC',1,'1999-03-20');

1.5 更新表数据

UPDATE 命令用于更新表中的数据。

  • 示例

使用 UPDATE 命令修改数据:

UPDATE orders SET employee_id = 3 WHERE order_id = 104;

1.6 删除表数据

DELETE 命令用于删除表中的数据。

  • 示例

使用 DELETE 命令删除数据:

DELETE FROM orders WHERE order_id = 103;

1.7 查询表数据

SELECT语句是用于查询表数据的SQL语句,查询表数据是从一个或多个表中检索数据的操作。

  • 示例

使用SELECT语句检索表中所有数据:

SELECT * FROM orders;

使用SELECT语句检索表中特定列数据:

SELECT employee_id FROM orders;

使用DISTINCT子句消除查询结果中重复的行:

SELECT DISTINCT employee_id FROM orders;

使用WHERE子句筛选表中满足条件的行:

SELECT * FROM orders WHERE order_id > 104;

使用ORDER BY子句对查询结果进行排序:

SELECT * FROM orders ORDER BY order_id;

使用GROUP BY子句对查询结果进行分组:

SELECT COUNT(order_id), employee_id FROM orders GROUP BY employee_id;

1.8 删除表

DROP TABLE 语句用于删除数据库中的表。

  • 示例

通过DROP TABLE语句删除orders_new表

DROP TABLE orders_new;

二、创建和管理索引

索引是一种数据库对象,它与表相关联,可以建立在单列或多列上。它的核心作用是帮助数据库快速定位符合条件的数据行,避免全表扫描,从而显著提升数据查询效率。

注意:索引并不是越多越好,当表中插入、更新或删除数据时,涉及的索引也需要更新,这会造成性能开销。所以需要对索引进行合理的创建和管理

2.1 创建索引

KingbaseES中,使用 CREATE INDEX 语句来创建索引。

  • 示例

使用 CREATE INDEX 语句创建索引:

CREATE INDEX创建的是非唯一索引

CREATE INDEX idx_employee ON orders(employee_id);

使用 CREATE INDEX 语句创建组合索引:

CREATE INDEX idx_orders ON orders(order_id, order_date);

使用CREATE UNIQUE INDEX语句创建唯一索引:

CREATE UNIQUE INDEX uid_order ON orders(order_id);

使用CREATE UNIQUE INDEX语句创建唯一组合索引:

CREATE UNIQUE INDEX uid_orders ON orders(order_id, order_date);

2.2 修改索引

使用ALTER INDEX语句可以修改索引的相关属性信息。

  • 示例

使用ALTER INDEX语句重命名索引名:

ALTER INDEX idx_employee RENAME TO idx_employeeid;

使用ALTER INDEX语句设置索引选项:

FILLFACTOR为索引的填充因子,用于指定在创建或重建索引时新页的填充程度,其值是介于1~100之间的整数。

ALTER INDEX idx_employeeid SET(FILLFACTOR = 60);

2.3 查看索引

可通过下述两种方式查询数据库中的索引信息:

使用SELECT语句查询sys_indexes视图查看数据库中的所有索引:

SELECT * FROM sys_indexes;

使用ksql工具的 \di 命令查看数据库中的所有索引:

\di

2.4 重建索引

重建索引可以确保索引存储参数的修改完全生效,并且还能用来恢复无用或被损坏的索引。

使用REINDEX INDEX语句重建索引:

REINDEX INDEX idx_employee;

使用REINDEX TABLE语句重建表上所有索引:

REINDEX TABLE orders;

2.5 删除索引

使用 DROP INDEX 语句删除索引:

DROP INDEX idx_employeeid;

使用 DROP INDEX 语句级联删除索引:

级联删除索引是指删除索引时自动删除依赖于该索引的对象

DROP INDEX idx_orders CASCADE;

三、创建和管理视图

KingbaseES数据库中视图是一个虚拟表,不记录实际数据,只保存定义中的查询语句,当查询视图时,数据库内部执行该查询语句来获取数据。

3.1 创建视图

使用 CREATE VIEW 语句创建视图:

CREATE [options] VIEW name [options] AS query [options] ;

使用CREATE OR REPLACE VIEW语句创建视图:

CREATE OR REPLACE VIEW orders_info AS SELECT order_id, customer_name FROM orders;

3.2 查询视图定义

查询sys_views视图获取自定义视图定义:

SELECT * FROM sys_views WHERE viewname = 'orders_info';

使用ksql命令查询视图定义:

\sv orders_info

3.3 查询视图

使用SELECT语句查询视图:

SELECT * FROM orders_info;

3.4 修改视图

使用 ALTER VIEW 语句修改视图,例如视图重命名:

ALTER VIEW orders_info RENAME TO orders_new;

3.5 删除视图

使用 DROP VIEW 语句删除视图:

DROP VIEW orders_info;

四、创建和管理用户

KingbaseES中的用户是拥有数据库对象和权限的实体。为了确保数据的安全性,KingbaseES提供了多种方式来创建和管理用户。

4.1 创建用户

使用 CREATE USER 语句创建用户:

CREATE USER test WITH PASSWORD '123456';

使用createuser命令行工具创建用户:

createuser rdjc

4.2 修改用户

使用 ALTER USER 语句修改用户密码:

ALTER USER test PASSWORD '654321';

使用 ALTER USER 语句限制用户的连接数:

ALTER USER test CONNECTION LIMIT 1000;

使用 ALTER USER 语句增加CREATE ROLE权限:

ALTER USER test CREATE ROLE;

使用 ALTER USER 语句重命名用户名:

ALTER USER test RENAME TO Joe;

4.3 查看用户

使用SELECT语句查询sys_user视图查看用户:

SELECT * FROM sys_user;

使用ksql工具的 \du 命令查看用户:

\du

4.4 授予权限

GRANT 语句用于将对象的权限或角色的权限授予另一个角色或用户。

  • 示例

使用GRANT语句将表的插入和更新权限授予用户:

GRANT INSERT, UPDATE ON orders TO Joe;

使用GRANT语句将表的查询权限授予多个用户:

GRANT SELECT ON orders TO rdjc, Joe;

4.5 撤销权限

REVOKE 语句用于从角色或用户处收回对象的权限或角色的权限。

使用REVOKE语句撤销用户在表上的插入和更新权限:

REVOKE INSERT, UPDATE ON orders FROM Joe;

使用REVOKE语句撤销多个用户在表上的查询权限:

REVOKE SELECT ON orders FROM rdjc, Joe;

4.6 删除用户

使用 DROP USER 语句删除用户:

DROP USER Joe;

五、事务

数据库事务是作为独立逻辑单元运行的操作集合,包含一条或多条SQL语句。事务内的所有操作要么全部成功执行,要么全部回滚不执行。

示例:
开启一个事务

BEGIN;

向orders表中插入一条新的记录

INSERT INTO orders VALUES(107,'RDJC',5,'1999-03-20');

如果操作都成功完成,开始提交事务

COMMIT;

插入语句执行失败的语句(orders表存在主键约束)

INSERT INTO orders VALUES(107,'RDJC',5,'2000-03-20');
ERROR:  duplicate key value violates unique constraint "pk_orders"
DETAIL:  Key (order_id)=(107) already exists.

当语句执行失败时,COMMIT与ROLLBACK等效,均为回滚事务

ROLLBACK;

结语

在这里插入图片描述

KingbaseES不仅是数据库产品,更是支撑企业数字化转型的核心基础设施,从基础SQL语法入手,掌握它的核心操作,通过掌握本文介绍的五大模块:表、索引、视图、用户权限、事务管理,开发者能够高效完成数据库设计、性能调优与安全管控,为企业的数字化转型提供坚实的数据底座。后续博主会持续更新更多SQL语法知识点。

http://www.dtcms.com/a/536617.html

相关文章:

  • 介绍一个不错的新闻源汇总开源Github项目 BestBlogs
  • 第3章 运行时数据区概述及线程
  • 深入理解C语言函数栈帧:程序运行的底层密码
  • 谷歌网站怎么做外链站长工具端口查询
  • FPGA DDR3实战(十):基于DDR3的高速故障录播系统(二)—— 数据流转换与时钟域设计
  • 运维蓝图 用多工具组合把 iOS 混淆变成可复用的工程能力(iOS 混淆 IPA 加固 )
  • Caddyfile:用最简单的方式配置最现代的 Web 服务器
  • 昆明森贤网站建设国外h5网站模板下载
  • 机器人信息|基于Springboot的机器人门户展示系统设计与实现(源码+数据库+文档)
  • 上海网站空间租用自己做网站自己做推广教程视频教程
  • 《Cesium进阶教程:Shader与三维GIS可视化实战》
  • 从零开始打造Android桌面Launcher应用:原理剖析与完整实现
  • asp.net企业网站源码网站jquery上传源代码
  • 广州企业网站模板建站龙岩天宫山住宿
  • 单例模式:设计模式中的“独一无二“之道
  • CV论文速递:覆盖3D视觉与场景重建、视觉-语言模型(VLM)与多模态生成等方向!(10.20-10.24)
  • BERT 原理解析:从 Transformer 到双向语义理解
  • 土地流转网站建设项目网站制作步骤是什么
  • 网站开发 教学大纲wordpress一键仿站
  • 网站打开乱码app如何做
  • 【LabelImg】
  • ios26创建Widget不支持灵动岛UI
  • day07 spark sql
  • 如何做网站维护做个什么样的网站比较好
  • 借用与引用实战
  • 涉密资质 网站建设整站seo策略实施
  • 【数据结构】链表补充——静态链表、循环链表、双向链表与双向循环链表
  • Python测试题1
  • 解锁仓颉语言:探索全场景智能编程新范式
  • 大模型-模型压缩:量化、剪枝、蒸馏、二值化 (3)