使用 CREATE USER 创建用户,用户账户可以具有默认角色和表空间限定等限定!
每个数据库中的用户名都是唯一的,不能创建同名的账号。 可以通过系统**视图 sys_user **查询当前数据库已经存在的用户账号信息。KingbaseES 数据库不区分用户名巨细写,默认用户名都会转为小写。
创建用户的权限:
通过 授予用户 CREATEROLE 的系统权限的用户,可以创建用户操作,授权操作 ALTER USER user_name CREATEROLE;
新用户的默认权限
创建新用户账户时,答应此用户访问数据库:CREATE USER user_name WITH PASSWORD '用户登录密码';
创建用户时默认拥有 LOGIN 权限,也可以使用sql授权:ALTER USER user_name LOGIN;
1.2 删除用户
DORP USER 语句可以删除用户。
删除用户需要有 CREATEROLE 特权。如果一个用户对象在任何数据库中存在引用,它就不能被删除。需要删除依赖对象后才能删除用户。DROP OWNED 常常被用来为移除一个或者多个用户做预备:DROP OWNED BY user_name CASCADE;
当数据库中还有用户毗连的对话时,也无法删除此用户。必须先终止会话或者用户退出会话后,才能删除用户。
查询动态会话视图 sys_stat_activity ,找到用户的会话 PID ,然后使用函数call sys_terminate_backend('pid') 强行终止会话。用户与数据库断开毗连后,就可以使用 DROP USER 语句删除该用户了。
1.3 用户的数据字典视图
一个数据库可以包含一个或多个命名的模式(SCHEMA),一个模式内可以包含多个表。差别模式中的表名可以雷同,但是用一个模式中的表不能同名。模式雷同于操作系统的目录,但是不能嵌套!
用户只要有权限访问数据库,就可以访问所连数据库中的任何模式中的对象。当用户没用自己的模式并且其创建或者使用数据库对象没有指定模式时,默认就会使用 PUBLIC 模式。模式通常在一下环境使用:
多个用户使用同一个数据库,而不会相互影响
对数据中的对象进行逻辑分组,更便于管理。
各个应用分别使用各自的模式,以制止命名辩论。
-- ======【模式】=====
--1.创建模式
CREATE SCHEMA tempSchema;
--2.删除模式
DROP SCHEMA tempSchema;
--3。修改模式名称
ALTER SCHEMA tempSchema RENAME TO tempSchema2;
--4.查询数据库下模式
SELECT DISTINCT TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES;
SELECT COUNT(DISTINCT TABLE_SCHEMA) FROM INFORMATION_SCHEMA.TABLES;
NUMBER 数据类型存储定点数和浮点数。数据库可以存储几乎任意数量级的数字。这些数据能在差别操作系统中运行的 KingbaseES 数据库之间进行移植。以是对于必须存储数字数据的大多数环境,都建议使用 NUMBER 数据类型。
使用 NUMBER(精度,标度);
精度:指定总位数。如果未指定精度,则列存储的值与步伐提供的值完全一致,而不进行任何舍入。
标度:指定从小数点到最低位有用数字的位数。
浮点数类型
为浮点数提供数字数据类型有:FLOAT 和 DOUBLE。这些类型支持 NUMBER 数据类型提供的全部基本功能。但是 NUMBER 类型使用十进制精度盘算,BFLOAT 和 DOUBLE 使用二进制精度盘算,这使得算术盘算更快并且降低了存储需求。FLOAT 和 DOUBLE 是近似数值数据类型。它们存储小数值的近似数,而不是准确数。
3.3 日期时间数据类型
日期时间数据类型为 DATE、TIMESTAMP 和 DATETIME。
DATE 数据类型
DATE 类型存储日期和时间。固然日期时间可以用字符或数字数据类型表示,但 DATE 具有特别的关联属性。
日期存储在固定长度字段中,对应 世纪、年、月、日、小时、分钟和秒。
数据库根据指定的格式显示日期,以 24 小时格式存储时间 (HH24:MI:SS), 如果没有输入时间部分,那么默认环境下,DATE 字段中的时间为 00:00:00。
TIMESTAMP 数据类型
TIMESTAMP 和 DATATIME 数据类型是 DATE 数据类型的扩展。除了存储在 DATE 数据类型中的信息外,TIMESTAMP 还存储分秒。TIMESTAMP 数据类型用于存储准确的时间值。这种数据类型对于需要使用跨地理区域的日期信息的业务步伐很有用。
3.4 格式化模子
ALTER TABLE new_emp ADD COLUMN description3 TEXT CHECK (description3 <> NULL);
复制代码
移除列操作
移除列操作会将列中的数据 和 涉及到该列的表约束也会移除。
ALTER TABLE new_emp DROP COLUMN description2;
如果该列被另一个表的外键所引用,King-baseEs 不会移除该约束。我们可以通过 CASCADE 来授权移除任何依赖删除列的全部东西;
ALTER TABLE new_emp DROP COLUMN description CASCADE;
修改列的默认值 : ALTER TABLE new_emp ALTER COLUMN temp1 SET DEFAULT '这是设置的默认值!';
修改列的数据类型:
只用当列中的每一个项都能转换为新的类型时该操作才能成功!
ALTER TABLE new_emp ALTER COLUMN temp1 TYPE number(10,2);
重命名列:ALTER TABLE new_emp RENAME COLUMN temp1 TO new_temp;
重命名表名称: ALTER TABLE new_emp RENAME TO temp_table;
删除表:DROP TABLE new2_emp;
快速删除表中的全部记录 : TRUNCATE TABLE table_name;
关于Sql编辑的操作中,在数据库开发管理工具中存"SQL 模板" 管理工具:
5.3 其它表相干操作
使用 CREATE TABLE AS 语句
CREATE TABLE AS 创建一个表,并且由一个 SELECT 命令盘算出来的数据填充该表。该表的列具有和SELECT 的输出列相干的名称和数据类型(不过可以通过给出要给显式的新列名列表来覆盖这些列名)。
视图描述DBA_INDEXES ALL_INDEXES USER_INDEXESDBA视图会显示数据库中全部表上的索引信息。 ALL 视图显示用户可以访问的全部表上的索引信息。 USER 视图仅限于用户拥有的索引。DBA_IND_COLUMNS ALL_IND_COLUMNS USER_IND_COLUMNS这些视图显示表上索引列的信息。
修改索引操作
可以使用 ALTER INDEX 或者 REINDEX 语句修改索引,两者的使用场景有区别。
ALTER INDEX 用于更改一个现有索引的属性界说,如修改索引名称,变更表空间等。而 REINDEX 则根据表重建一个索引,并且替换旧索引。
删除索引
使用 DROP INDEXS语句删除索引,但是执行该命令你必须是该索引的拥有者。
DROP INDEX index_name;
删除表也能实现删除全部,将自动删除了全部与该表相干的索引。
6.3 索引管理指南
如果 CREATE VIEW 语句带有 FORCE 关键字,意味着无论视图的依赖检查是否成功,只要语句没有语法错误,数据库也会创建该视图。如果依赖检查成功则为有用视图,否则创建出来的就是无效视图。
比如视图中引用了一个不存在的表或现有表中的无效列,或者视图全部者没有所需的权限时,数据库依然能创建该视图并将其保存到数据字典中。只是该视图还不能使用。CREATE FORCE VIEW AS ...;
7.2 视图数据字典
与视图相干的数据字典有三个:
USER_VIEWS,当前用户有关的视图信息
DBA_VIEWS,系统中全部的视图信息
ALL_VIEWS,当前用户可以访问的全部视图信息
查询指定视图中,创建视图时使用的 SELECT 语句数据,存储在表中的 text 字段中:
7.3 视图的管理操作
替换视图:
可以通过删除视图并重新创建视图,或者通过执行带有 OR REPLACE 子句的 CREATE VIEW 语句实现替换现有的视图界说:
CREATE OR REPLACE VIEW view_name AS ......
SELECT v_employee_id AS "Employee ID", v_employee_name AS "Name" ;
END LOOP;
CLOSE c_employee; -- 关闭游标
END;
复制代码
游标用于更新的案例
DECLARE
CURSOR c_salary IS
SELECT employee_id, salary FROM employees WHERE department_id = 10 FOR UPDATE;
v_employee_id employees.employee_id%TYPE;
v_salary employees.salary%TYPE;
BEGIN
OPEN c_salary;
LOOP
FETCH c_salary INTO v_employee_id, v_salary;
EXIT WHEN c_salary%NOTFOUND;
-- 更新工资
v_salary := v_salary * 1.10; -- 加10%
-- 使用CURRENT OF更新当前行
UPDATE employees SET salary = v_salary WHERE CURRENT OF c_salary;
END LOOP;
CLOSE c_salary; -- 关闭游标
END;
复制代码
游标用于删除的案例
DECLARE
CURSOR c_delete IS
SELECT employee_id FROM employees WHERE hire_date < '2020-01-01' FOR UPDATE;
BEGIN
OPEN c_delete;
LOOP
FETCH c_delete INTO v_employee_id;
EXIT WHEN c_delete%NOTFOUND;
-- 删除员工
DELETE FROM employees WHERE CURRENT OF c_delete;
END LOOP;
CLOSE c_delete; -- 关闭游标
END;
复制代码
UNION 属性的使用示例:
ps: UNION ALL 关键字可以 替换 文件中无法创建使用临时表的问题,接纳 UNION ALL 关键字方案办理!!!(人大金仓数据库暂无此问题 可以忽略,达梦数据库在mapping.xml 文件中无法创建临时表格!) PS: UNION 是一种用于归并两个或多个 SELECT 语句结果集的操作符。使用 UNION 时,要求每个 SELECT 语句必须返回雷同数量的列,并且对应的列数据类型要兼容。
在达梦数据库(DM)和人大金仓数据库(KingbaseES)中,UNION 操作的语法与 SQL Server 中是雷同的。可以使用** UNION** 或 UNION ALL 来归并两个或多个 SELECT 语句的结果集。以下是使用 UNION 的基本示例和注意事项。
-- UNION 默认会去掉重复的记录
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
-- 如果你想保留所有记录(包括重复的),可以使用 UNION ALL!
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
-- *注意:第一条查询语句末尾不要加;直接连接 UNION 关键字!!
复制代码
示例代码:
DECLARE
p_assignee VARCHAR(255);
BEGIN
-- 声明游标
DECLARE cur CURSOR FOR
SELECT USER_ID_ AS ASSINGEE FROM ACT_HI_IDENTITYLINK WHERE USER_ID_ IS NOT NULL AND
数据库数据迁徙平台 (KDTS: KingBaseEs Data Transformation Service) 是为用户提供 Oracle、Mysql、SQLServer、Gbase、PostgreSQL、DM、PhotonBase 数据库数据迁徙到 人大金仓 数据库的数据迁徙工具。
下面展诉几种常用的数据库:
源端数据库支持版本版本查询方式支持迁徙对象Oracle9i、10g、11g、12c、19cselect * from v$version;表、视图、序列、函数、存储过程、步伐包、同义词、触发器、用户自界说类型、解释MySQL5.X、8.Xselect version();表、视图、函数、存储过程、触发器、用户自界说类型、解释SQLServer2000、2005、2008、2012、2014、2016、2017、2019select @@version;表、视图、序列、函数、存储过程、步伐包、同义词、触发器、用户自界说类型、解释DMDM7、DM8select * from v v e r s i o n ; s e l e c t ∗ f r o m v version; select * from v version;select∗fromvinstance;表、视图、序列、函数、存储过程、步伐包、同义词、触发器、用户自界说类型、解释 14.2 BS版数据迁徙
毗连 KingbaseES 出现非常:
com.kingbase8.util.KSQLException:The authentication type 10 is not supported.Check that you have configured the sys_hba.conf file to include the client’s IP address or subnet,and that it is using an authentication scheme supported by the driver.