达梦数据库事务管理

事务概念

数据库中由用户自定义发起的一些列操作集合简称事务。只要可以连接数据库中进行一组操作序列都可以称为事务。

COMMIT 操作会将该语句所对应事务对数据库的所有更新持久化(即写入磁盘),数据库此时进入一个新的一致性状态,同时该事务成功地结束。ROLLBACK 操作将该语句所对应事务对数据库的所有更新全部撤销,把数据库恢复到该事务初启动前的一致性状态。

事务特性

原子性

这一组操作要么一起生效,要么都不生效,事务执行过程中如遇错误,已经执行的操作要全部撤回,这就是事务的原子性。

一致性

数据一致性是指表示客观世界同一事务状态的数据,不管出现在何时何处都是一致的、正确的、完整的。换句话说,数据一致性是任何点上保证数据以及内部数据结构的完整性,

比如账户之间无论怎么转账,总额不会变等现实约束;年龄不能为负值。

隔离性

事务是隔离的,意味着每个事务的执行效果与系统中只有该事务的执行效果一样,也就是说,某个并发事务所做的修改必须与任何其他的并发事务所做的修改相互隔离。

数据库为了提高资源利用率和事务执行效率、降低响应时间,允许事务并发执行。但是多个事务同时操作同一对象,必然存在冲突,事务的中间状态可能暴露给其它事务,导致一些事务依据其它事务中间状态,把错误的值写到数据库里。需要提供一种机制,保证事务执行不受并发事务的影响,让用户感觉,当前仿佛只有自己发起的事务在执行,这就是隔离性。

持久性

持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。即一旦一个事务提交,DBMS 保证它对数据库中数据的改变应该是永久性的。如果 DM 数据库或者操作系统出现故障,那么在 DM 数据库重启的时候,数据库会自动恢复。如果某个数据驱动器出现故障,并且数据丢失或者被损坏,可以通过备份和联机重做日志来恢复数据库。需要注意的是,如果备份驱动器也出现故障,且系统没有准备其他的可靠性解决措施,备份就会丢失,那么就无法恢复数据库了。

事务隔离级别

脏读(DirtyRead)所谓脏读就是对脏数据的读取,而脏数据所指的就是未提交的已修改数据;

不可重复度(Non-RepeatableRead)一个事务先后读取同一条记录,但两次读取的数据不同,我们称之为不可重复读;

幻像读(PhantomRead)一个事务按相同的查询条件重新读取以前检索过的数据,却发现其他事务插入了满足其查询条件的新数据,这种现象就称为幻像读。

达梦数据库支持读未提交、读提交和序列化(串行化)三种隔离级。其中,读提交是 DM 数据库默认使用的事务隔离级别。可重复读升级为更严格的串行化隔离级。

读未提交:

<会话1>

SQL> SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

操作已执行

已用时间: 1.097(毫秒). 执行号:800.

SQL> CREATE TABLE T1 (C1 INT);

操作已执行

已用时间: 74.113(毫秒). 执行号:801.

SQL> INSERT INTO T1 VALUES (1);

影响行数 1

已用时间: 4.845(毫秒). 执行号:802.

SQL> INSERT INTO T1 VALUES (2);

影响行数 1

已用时间: 0.408(毫秒). 执行号:812.

SQL> SELECT * FROM T1;

行号     C1

---------- -----------

1          1

2          2

已用时间: 0.251(毫秒). 执行号:813.

<会话2>

SQL> SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

操作已执行

已用时间: 0.210(毫秒). 执行号:909.

SQL> SELECT * FROM T1;

行号     C1

---------- -----------

1          1

2          2

已用时间: 0.292(毫秒). 执行号:910.

事务级别设置为读未提交时,会话2可以读取到会话1中未提交的数据。

读已提交:

<会话1>

SQL>  SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

操作已执行

已用时间: 0.264(毫秒). 执行号:823.

SQL>  INSERT INTO T1 VALUES (1);

影响行数 1

已用时间: 0.474(毫秒). 执行号:824.

SQL>  INSERT INTO T1 VALUES (2);

影响行数 1

已用时间: 0.518(毫秒). 执行号:825.

SQL>  SELECT * FROM T1;

行号     C1

---------- -----------

1          1

2          2

已用时间: 0.383(毫秒). 执行号:826.

<会话2>

SQL>  SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

操作已执行

已用时间: 0.213(毫秒). 执行号:916.

SQL> SELECT * FROM T1;

未选定行

已用时间: 0.688(毫秒). 执行号:917.

SQL> SELECT * FROM T1 WITH UR;

行号     C1

---------- -----------

1          1

2          2

已用时间: 0.286(毫秒). 执行号:918.

事务级别设置为读已提交时,会话2只能读取到会话1中提交的数据。要想读取未提交的数据,可以加上WITH UR 。

串行化隔离级
在要求消除不可重复读取或幻像读的情况下,我们可以设置事务隔离级为串行化。跟读提交隔离级相比,串行化事务的查询本身不会增加任何代价,但修改数据可能引发“串行化事务被打断”错误。具体来说,当一个串行化事务试图更新或删除数据时,而这些数据在此事务开始后被其他事务修改并提交时,DM 数据库将报“串行化事务被打断”错误。应用开发者应该充分考虑串行化事务带来的回滚及重做事务的开销,从应用逻辑上避免对相同数据行的激烈竞争导致产生大量事务回滚。并结合应用逻辑,捕获“串行化事务被打断”错误,进行事务重做等相应处理。如果系统中存在长时间运行的写事务,并且该长事务所操作的数据还会被其他短事务频繁更新的话,最好避免使用串行化事务。
用户可以在事务开始时使用以下语句设定事务为串行化隔离级:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

只读事务

DM 数据库还支持只读事务,只读事务只能访问数据,但不能修改数据。并且只读事务不会改变事务原有的隔离级。

SQL>  SET TRANSACTION READ ONLY;

操作已执行

已用时间: 0.318(毫秒). 执行号:939.

SQL> UPDATE T1 SET C1=6 WHERE C1=4;

UPDATE T1 SET C1=6 WHERE C1=4;

[-6506]:试图在只读事务中修改数据.

已用时间: 0.277(毫秒). 执行号:0.

锁等待与死锁检测

阻塞和死锁是会与并发事务一起发生的两个事件,它们都与锁相关。当一个事务正在占用某个资源的锁,此时另一个事务正在请求这个资源上与第一个锁相冲突的锁类型时,就会发生阻塞。被阻塞的事务将一直挂起,直到持有锁的事务放弃锁定的资源为止。死锁与阻塞的不同之处在于死锁包括两个或者多个已阻塞事务,它们之间形成了等待环,每个都等待其他事务释放锁。例如事务 1 给表 T1 上了排他锁,第二个事务给表 T2 上了排他锁,此时事务 1 请求 T2 的排他锁,就会处于等待状态,被阻塞。若此时 T2 再请求表 T1 的排他锁,则 T2 也处于阻塞状态。此时这两个事务发生死锁,DM 数据库会选择牺牲掉其中一个事务。

在 DM 数据库中,INSERT、UPDATE、DELETE 是最常见的会产生阻塞和死锁的语句。INSERT 发生阻塞的唯一情况是,当多个事务同时试图向有主键或 UNIQUE 约束的表中插入相同的数据时,其中的一个事务将被阻塞,直到另外一个事务提交或回滚。一个事务提交时,另一个事务将收到唯一性冲突的错误;一个事务回滚时,被阻塞的事务可以继续执行。

当 UPDATE 和 DELETE 修改的记录,已经被另外的事务修改过,将会发生阻塞,直到另一个事务提交或回滚。

<会话1>

SQL> SELECT * FROM T1;

行号     C1

---------- -----------

1          1

2          3

3          2

4          5

已用时间: 0.318(毫秒). 执行号:854.

SQL> UPDATE T1 SET C1=6 WHERE C1=5;

影响行数 1

已用时间: 0.739(毫秒). 执行号:945.

<会话2>

SQL>  SELECT * FROM T1;

行号     C1

---------- -----------

1          1

2          3

3          2

4          5

已用时间: 0.353(毫秒). 执行号:944.

SQL> UPDATE T1 SET C1=7  WHERE C1=5;

此时会话2出现阻塞。

<会话1>

SQL> COMMIT;

操作已执行

已用时间: 4.858(毫秒). 执行号:946.

<会话2>

SQL> UPDATE T1 SET C1=7  WHERE C1=5;

影响行数 0

已用时间: 00:00:38.886. 执行号:855.

当会话1中COMMIT后,会话2阻塞消失。

<会话2>

SQL> SELECT * FROM T1;

行号     C1

---------- -----------

1          1

2          3

3          2

4          6

已用时间: 0.287(毫秒). 执行号:856.

<会话1>

SQL> SELECT * FROM T1;

行号     C1

---------- -----------

1          1

2          3

3          2

4          6

已用时间: 0.332(毫秒). 执行号:947.

闪回功能

闪回技术主要是通过回滚段存储的 UNDO 记录来完成历史记录的还原。

设置ENABLE_FLASHBACK 为 1 后,开启闪回功能。DM 会保留回滚段一段时间,回滚段保留的时间代表着可以闪回的时间长度。由 UNDO_RETENTION 参数指定。

开启闪回功能后,DM 会在内存中记录下每个事务的起始时间和提交时间。通过用户指定的时刻,查询到该时刻的 LSN,结合当前记录和回滚段中的 UNDO 记录,就可以还原出特定 LSN 的记录。即指定时刻的记录状态。从而完成闪回查询。闪回查询功能完全依赖于回滚段管理,对于 DROP 等误操作不能恢复。闪回特性可应用在以下方面:

  1. 自我维护过程中的修复:当一些重要的记录被意外删除,用户可以向后移动到一个时间点,查看丢失的行并把它们重新插入现在的表内恢复;
  2. 用于分析数据变化:可以对同一张表的不同闪回时刻进行链接查询,以此查看变化的数据。

SQL> select sf_get_para_value(1,'ENABLE_FLASHBACK');

行号     SF_GET_PARA_VALUE(1,'ENABLE_FLASHBACK')

---------- ---------------------------------------

1          0

已用时间: 6.268(毫秒). 执行号:857.

SQL> sp_set_para_value(1,'ENABLE_FLASHBACK','1');

DMSQL 过程已成功完成

已用时间: 20.931(毫秒). 执行号:858.

SQL> select sf_get_para_value(1,'ENABLE_FLASHBACK');

行号     SF_GET_PARA_VALUE(1,'ENABLE_FLASHBACK')

---------- ---------------------------------------

1          1

已用时间: 5.479(毫秒). 执行号:859.

SQL> select  sf_get_para_double_value(1,'undo_retention');

行号     SF_GET_PARA_DOUBLE_VALUE(1,'undo_retention')

---------- --------------------------------------------

1          9.000000000000000E+01

已用时间: 6.245(毫秒). 执行号:860.

SQL> sp_set_para_double_value(1,'undo_retention','3600');

DMSQL 过程已成功完成

已用时间: 5.635(毫秒). 执行号:861.

SQL> CREATE TABLE T2 (

ID INT,

EMAIL VARCHAR(50),

NAME VARCHAR(20));

2   3   4   操作已执行

已用时间: 13.303(毫秒). 执行号:862.

SQL> insert into T2 values(1,'123131412@qq.com','张毅');

影响行数 1

已用时间: 0.674(毫秒). 执行号:863.

SQL> insert into T2 values(2,'zhanglong@126.com','张龙');

影响行数 1

已用时间: 0.476(毫秒). 执行号:864.

SQL> insert into T2 values(3,'lihong@163.com','李红');

影响行数 1

已用时间: 0.421(毫秒). 执行号:865.

SQL> insert into T2 values(4,'zhaohu@163.com','赵虎');

影响行数 1

已用时间: 0.475(毫秒). 执行号:866.

SQL> commit;

操作已执行

已用时间: 2.009(毫秒). 执行号:867.

SQL> select * from T2;

行号     ID          EMAIL             NAME

---------- ----------- ----------------- ------

1          1           123131412@qq.com  张毅

2          2           zhanglong@126.com 张龙

3          3           lihong@163.com    李红

4          4           zhaohu@163.com    赵虎

已用时间: 0.528(毫秒). 执行号:868.

SQL> select sysdate;

行号     SYSDATE

---------- -------------------

1          2023-09-18 12:02:51

已用时间: 0.561(毫秒). 执行号:869.

SQL> delete from T2;

影响行数 4

已用时间: 0.550(毫秒). 执行号:870.

SQL> commit;

操作已执行

已用时间: 4.716(毫秒). 执行号:871.

SQL> select * from T2 ;

未选定行

已用时间: 0.581(毫秒). 执行号:872.

SQL> select * from T2 when timestamp '2023-09-18 12:02:51';

行号     ID          EMAIL             NAME

---------- ----------- ----------------- ------

1          1           123131412@qq.com  张毅

2          2           zhanglong@126.com 张龙

3          3           lihong@163.com    李红

4          4           zhaohu@163.com    赵虎

已用时间: 0.595(毫秒). 执行号:873.

SQL> select * from T2 when timestamp '2023-09-18 12:02:51' WHERE ID=1;

行号     ID          EMAIL            NAME

---------- ----------- ---------------- ------

1          1           123131412@qq.com 张毅

已用时间: 0.612(毫秒). 执行号:874.

总结

事务常用于需要保证数据一致性和完整性的场景,如金融交易、订单处理等。

事务的设计应遵循ACID原则,包括原子性、一致性、隔离性和持久性,同时应考虑事务的粒度和并发控制的方式。

事务中可能出现异常和错误,需要合理处理和进行错误恢复,如回滚和日志记录等。

不同的隔离级别会对数据库的并发控制和性能产生不同的影响,需要根据实际需求进行选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
达梦数据库常⽤系统视图及查询语句 ⼀、常⽤的系统视图: dba_objects:显⽰数据库中所有的对象,例如想查询数据库中有没有某个对象 v$sessions:显⽰会话的具体信息,如执⾏的 sql 语句、主库名、当前会话状态、⽤户名等等 v$lock:查看当前数据库中锁的信息 v$mem_pool:显⽰所有的内存池信息 V$deadlock_histor::记录死锁的历史信息 V$TABLESPACE:显⽰表空间信息,不包括回滚表空间信息 V$TRX:显⽰所有活动事务的信息。通过该视图可以查看所有系统中所有的事务以及相关信息,如锁信息等。 ⼆、常⽤查询语句 1、查询数据库在线实例信息 select distinct NAME, HOST_NAME, SVR_VERSION, DB_VERSION, START_TIME, STATUS$, MODE$ from V$INSTANCE; 2、查看数据库常⽤参数值 select PARA_NAME,PARA_VALUE FROM V$DM_INI WHERE PARA_NAME IN('MEMORY_POOL','BUFFER','PORT_NUM','MAX_SESSIONS','MAX_SESS ION_STATEMENT','INSTANCE_NAME','BAK_PATH','SYSTEM_PATH','ARCH_INI'); 3、查询数据库初始化配置 select SF_GET_PAGE_SIZE() page_size, SF_GET_EXTENT_SIZE() extent_size, SF_GET_UNICODE_FLAG() unicode_flag, SF_GET_CASE_SENSITIVE _FLAG() case_sensitive_flag, SF_GET_SYSTEM_PATH() system_path; 4、查询数据库名称、数据库总⼤⼩、数据库是否启⽤归档 select NAME,STATUS$,ARCH_MODE, TOTAL_SIZE from SYS.V$DATABASE; 5、查询数据库连续运⾏时间 select (SYSDATE-START_TIME)*24 FROM V$INSTANCE; 6、查询数据库管理⽤户状态,默认表空间,是否存在被锁定 select D.USERNAME,A.CREATED,D.ACCOUNT_STATUS,D.DEFAULT_TABLESPACE,D.EXPIRY_DATE,D.LOCK_DATE FROM DBA_USERS D,ALL_USE RS A; 7、查询当前数据库的⽇志分组情况 select GROUP_ID,FILE_ID,PATH,CLIENT_PATH,RLOG_SIZE FROM SYS.V$RLOGFILE; 8、查询表空间信息 select T.NAME 表空间名称, D.PATH 表空⽂件路径, T.TYPE$ 表空间类型, T.STATUS$ 表空间状态, T. FILE_NUM 包含的⽂件数, D.TOTAL_SIZE*16/1024 总⼤⼩, D.FREE_SIZE*16/1024 空闲⼤⼩, TRUNC((TRUNC(D.TOTAL_SIZE-D.FREE_SIZE, 4)/D.TOTAL_SIZE)*100, 2) 使⽤率 FROM V$TABLESPACE T, V$DATAFILE D WHERE "GROUP_ID"=T.ID; 9、查询数据表所分配的空间⼤⼩,辅助查询表⽤户使⽤情况 select OWNER,TABLESPACE_NAME,SEGMENT_TYPE,SEGMENT_NAME,BLOCKS,BYTES/1024/1024 FROM DBA_SEGMENTS ORDER BY OWNER,SE GMENT_NAME; 10、查询表索引状态,便于确认表索引是否可⽤ select I.TABLE_OWNER,I.TABLE_NAME,O.OBJECT_NAME,O.OBJECT_TYPE,O.STATUS FROM USER_INDEXES I,USER_OBJECTS O WHERE O.OBJE CT_NAME=I.INDEX_NAME AND O.STATUS='INVALID'; 11、查询数据库归档信息 select ARCH_TYPE,ARCH_DEST FROM V$DM_ARCH_INI; select ARCH_NAME, ARCH_TYPE, ARCH_DEST, ARCH_FILE_SIZE, ARCH_SPACE_LIMIT, ARCH_TIMER_NAME, ARCH_IS_VALID from SYS.V$DM_AR CH_IN
达梦数据库_SQL语言手册.pdf 数据库快照定义语句 数据库快照删除语句 第章数据查询语句和全文检索语句 单表查询 简单查询 带条件查询 集函数 情况表达式 连接查询 子查询 标量子查询 表子查询 派生表子查询 定量比较 带 谓词的子查询 多列表子查询 查询结果的合并 和 子句的使用 子句的使用 子句 选取前儿条数据 选取其屮几条数据 全文检索 层次查询 层次查询子句 层次查询相关伪列 层次查询相关操作符 层次查询相关函数 查看执行计划 第章数据的插入、删除和修改 数据插入语句 数据修改语句 数据删除语句 伪列的使用 和 自增列的使用 自增列定义 属性 第章视图 视图的作用 视图的定义 视图的删除 视图的查询 视图数据的更新 第章嵌入式 前缀和终结符 宿主变量 输入和输出变量 指示符变量 服务器登录与退出 登录服务器 退出服务器 游标的定义与操纵 定义游标语句 打开游标语句 拨动游标语句 关闭游标语句 关于可更新游标 游标定位删除语句 游标定位修改语句 单元组查询语句 动态 立即执行语句 准备语句 执行语句 异常处理 第章函数 数值函数 字符串函数 日期时间函数 空值判断函数 类型转换函数 杂类函数 系统函数 存储加密函数 标记处理函数 备份恢复函数 附加分离数据库 第章一致性和并发性 事务相关语句 事务的开始 事务的结束 保存点相关语句 设置事务隔离级及读写特性 手动上锁语句 第章存储模块 存储模块的定义 存储模块的删除 存储模块的控制语句 语句块 赋值语句 条件语句 循环语句 语句 调用语句 语句 语句 语句 语句 打印语句 存储模块的异常处理 异常变量的说明 异常的抛出 异常处理器 异常处理用法举例 存储模块的语句 游标 动态 游标变量 返回查询结果集 语句应用举例 客户端存储模块 子过程、子函数 子过程 子函数 记录类型 记录类型定义 记录赋值 第章触发器 触发器的定义 触发器类型 触发器激发顺序 新、旧行值的引用 触发器谓词 变异表 设计触发器的原则 触发器的删除 禁止和允许触发器 触发器应用举例 使用触发器实现审计功能 使用触发器维护数据完整性 使用触发器保障数据安全性 使用触发器派生字段值 第章安全管理 创建角色语句 删除角色语句 授权语句数据库权限 授权语句对象权限 授权语句角色权限 回收权限语句数据库权限 回收权限语句对象权限 回收权限语句角色权限 策略与标记管理 创建策略 修改策略 删除策略 安全标记 用户标记设置语句 表标记设置语句 审计设置语句 审计取消语句 审计信息查阅语句 审计分析 创建审计分析规则 删除审计分析规则 加密引擎 创建加密引擎 修改加密引擎 删除加密引擎 第章外部链接 创建外部链接 删除外部链接 使用外部连接进行远程对象操作 第章备份还原 备份数据库 还原数据库 第章包 创建包 创建包规范 创建包主体 删除包 删除包规范 删除包主体 应用实例 第章同义词 创建同义词 删除同义词 附录关键字和保留字 附录 语法描述说明 附录命令参考 附录系统存储过程和函数 附录技术支持 第1章结构化查询语言简介 第章结构化查询语言 简介 结构化查询语言 是在年提出的一种关系数据库语言。 由于语言接近英语的语句结构,方便简洁、使用灵活、功能强人,倍受用户及计算机工业 界的欢迎,被众多计算机公司和数据库厂商所采用,经各公司的不断修改、扩充和完善,语 言最终发展成为关系数据库的标准语言。 的第一个标准是年月由美国国家标准化组织公布的 数据库语言 简称 年国际标准化组织也通过了这一标准。以后通过对 的不断修改和完善,于年第二次公布了标准 年又公布了标准 即 。最新的标准是 (也称 年作为 《信息技术——数据库语言》发布。我国也相继 公布了数据库语言的国家标准。 成为国际标准以后,其影响远远超出了薮据库领域。例如在 软件工程、人工智 能、分布式等领域,人们不仅把作为检索数据的语言规范,而且也把作为检索图形、 图象、声音、文字等信息类型的语言规范。目前,世界上大型的著名数据库管理系统均支持 语言,如 等。在未来相当长的时间里,仍将是数据库领 域以至信息领域中数据处理的主流语言之 由于不同的产品,大都按自己产品的特点对语言进行了扩充,很难完全符合 标准。目前在 市场上已将的符合夲作为衡量产品质量的重要指标,并研制成专门的 测试软件,如 目前, 入门级和过渡级的符合率均达到,并且部分支持 更新的 标准。同时还兼容 和 的部分语言特性。本章主要 介绍系统所支持的语言 语 语言的特点 语言符合结构化査询语言标准,是标准的扩充。它集数据定乂、数据査 询、薮据操纵和数据控制于一体,是一种统一的、综合的关系数据库语言。它功能强大,使用简 单方便、容易为用户掌握 语言具有如下特点: 功能一体化 的功能一体化表现在以下两个方面 支持多媒体数据类型,用户在建表时可直接使用。系统在处理常规数据与 多媒体数据时达到了四个一体化:一体化定义、一体化存储、一体化检索、一体化处理,最大限 度地提高了数据库管理系统处理多媒体的能力和速度; 语言集数据库的定义、査询、更新、控制、维护、恢复、安全等一系列操作于 体,每一项操作都只需一种操作符表示,格式规范,风格一致,简单方便,很容易为用户所掌 握 两种用户接口使用统一语法结构的语言 语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能独立运行于联机交 互方式。作为嵌入式语言, 浯句能够嵌入到和语言程序中,将高级语言也称主 语言灵活的表达能力、强大的计算功能与 语言的数据处理功能相结合,完成各种复杂 的事务处理。而在这两种不同的使用方式中, 语言的语法结构是一致的,从而为用户使 第1章结构化查询语言简介 用提供了极大的方使性和灵活性。 高度非过程化 语言是·种非过程化语言。用户只需指出“做什么”,而不需指出“怎么做”,对数 据存取路径的选择以及 语句功能的实现均由系统自动完成,与用户编制的应用程序与 具体的机器及关系 的实现细节无关,从而方便了用户,提高了应用程序的开发效率,也 增强了数据独立性和应用系统的叮移植性。 面向集合的操作方式 语言采用了集合操作方式。不仅查询结果可以是元组的集合,而且一次插入、删除、 修改操作的对象也可以是元组的集合,相对于面向记录的数据库语言一次只能操作一条记录来 语言的使用简化了用户的处理,提高了应用程序的运行效率 语言简洁,方便易学 语言功能强大,格式规范,表达简洁,接近英语的语法结构,容易为用户所掌握。 保留字与标识符 标识符的语法规则兼容标准 ,标识符分为正规标识符和定界标识符两大类。 正规标识符以字母、、、或汉字开头,后面可以跟随字母、数字、、、或者汉字,正 规标识符的最大长度是个英文字符或个汉字。正规标识符不能是保留字 正规标识符的例子:, 表 定界标识符的标识符体用双引号括起来时,标识符体可以包含任意字符,特别地,其中使用 连续两个双引号转义为一个双引号 定界标识符的例子: 保留字的清单参见附录 语言的功能及语句 语言是一种介于关系代数与关系演算之间的语言,其功能主要包括数据定义、查询 操纵和控制四个方面,通过各种不同的语句米实现。按照所实现的功能, 语句分 为以下几种 数据库、登录、用户、模式、基表、视图、索引、序列、全文索引、存储过程和触发器 的定义和删除语句,登录、基表、视图、仝文索引的修改语句,对象的更名语句; 査询(含全文检索)、插入、删除、修改语句; 数据库安全语句。包括创建角色语句、删除角色语句,授权语句、回收权限语句,修改 登录口令语句,审计设置语句、取消审计设置语句等。 在嵌入方式中,为了协调 语言与主语言不同的数据处理方式 语言引入 了游标的概念。因此在嵌入方式下,除了数据查询语句一次查询一条记录外,还有几种与游标 有关的语句: 游标的定义、打廾、关闭、拨动语句 游标定位方式的数据修改与删除语句。 为了有效维护数据库的完整性和一致性,支持 的并发控制机制 语言提供 了事务的回滚( )与提交( )语句。同时允许选择实施事务级读一致 性,它保证同一事务内的可重复读,为此提供用户多种手动上锁语句,和设置事务隔离级别 第1章结构化查询语言简介 语句 所支持的数据类型 数据类型是可表示值的集。值的逻辑表示是字值。值的物理表示依赖于实现。系统具 有 的绝大部分数据类型,以及部分 和 的数据类型。 常规数据类型 字符数据类型 类型 语法:长度 功能: 数据类型指定定长字符串。在基表中,定义 类型的列时,可以指 定一个不超过的正整数作为字符长度,例如 如果未指定长度,缺省为。 确保存储在该列的所有值都具有这一长度。 数据类型的最大长度由数据库页面大 小决定,字符类型最大长度和页面大小的对应关系请见下表支持按字节存放字符 串 表 数据库页面大 最大长度 类型 语法: 长度 功能:与 相同。 类型 语法: 长度 功能 数据类型指定变长字符串,用法类似 数据类型,可以指定一 个不超过的正整数作为字符长度,例如: 。如果未指定长度,缺省为 在系统中, 数据类型的实际最大长度由数据库页面大小决定,具体最 大长度算法如表 的区别在于前者长度不足时,系统自动填充空 格,而后者只占用实际的字节空间。 表 数据库页面大 实际最大长度 注:这个限制长度只针对建表的情况,在定义变量的时候,可以不受这个限制长度的限 制 数值数据类型
人大金仓和神州通用是什么?如何使用达梦数据库管理工具进行用户管理和查询操作? 达梦数据库管理工具是一款用于管理达梦数据库的工具。而梦、人大金仓和神州通用是三个不同的数据库系统,可以使用达梦数据库管理工具进行管理。 用户管理方面,达梦数据库管理工具提供了新建用户和删除用户的功能。当用户已经关联表空间,并且模式内有数据时,删除用户需要勾选级联删除选项,然后再删除表空间。这样可以确保用户及其相关数据的完全删除。 查询操作方面,达梦数据库管理工具提供了新建查询的功能。在新建查询时,可以右键点击选项,设置自动提交和出错后继续执行的选项。自动提交选项表示在执行SQL语句后是否自动提交事务,而出错后继续执行选项表示在执行多条SQL语句时,如果第一条SQL出现错误,是否继续执行后续的SQL语句。这样可以根据需要来设置查询的执行方式。 综上所述,达梦数据库管理工具可以用于达梦数据库、人大金仓和神州通用的管理,包括用户管理和查询操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql初始化SQL转达梦、人大金仓、神州通用(南大通用)SQL脚本](https://download.csdn.net/download/caiqin19880823/88244955)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [达梦数据库管理工具使用](https://blog.csdn.net/weixin_48963576/article/details/120666558)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值