1.查看数据库的基本语句:show databases; 2.选择相应的数据库进入语法:use 数据库名; 3.查看数据库中的表语法:show tables; 4.查看表的基本结构语句:desc 表名; 5.修改表名:alter table 旧表名 rename to 新表名; 6.修改字段的数据类型:alter table 表名 modify 字段名 数据类型; 7.修改字段名:alter table 表名 change 旧字段名 新字段名 新数据类型; 8.添加字段:alter table…
关键词:数据库触发器/服务器触发器  ,数据库级别DDL操作监控审计,禁止修改登录名密码 [1]数据库级别DDL操作监控审计 转自2012示例库,只能数据库级别,不能实例级别 use databasego SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create table databaseLog( [PostTime] datetime, [DatabaseUser] varchar(500), [Event] varchar(500),…
创建一个日志表,记录dept表的DML操作 create table dept_log(logid number,type varchar2(50),logdate date,deptno number,dname varchar2(50),loc varchar2(50)); create sequence dept_log_seq; create or replace trigger dept_update_trigger10 before insert or update or delet…
触发器可以理解为由特定事件触发的存储过程, 和存储过程.函数一样,触发器也支持CLR,目前SQL Server共支持以下几种触发器: 1. DML触发器, 表/视图级有效,可由DML语句 (INSERT, UPDATE, DELETE) 触发: 2. DDL 触发器,数据库级有效,可由DDL语句 (CREATE, ALTER, DROP 等) 触发: 3. LOGON 触发器, 实例级有效,可由用户账号登录(LOGON)数据库实例时触发: 一. DML触发器 1. 语句级触发器/行级触发器 在S…
功能: 1. 允许/限制对表的修改 2. 自动生成派生列,比如自增字段 3. 强制数据一致性 4. 提供审计和日志记录 5. 防止无效的事务处理 6. 启用复杂的业务逻辑 开始 create trigger biufer_employees_department_id before insert or update of department_id on employees referencing old as old_value new as new_value for each row wh…
一个朋友问我在线对大表进行ddl操作,如何做能尽量避免主从延迟以及不影响在线dml操作呢?我想到一个开源的pt-online-schema-change工具,测试了吧,效果还可以. pt-online-schema-change原理 1.如果存在外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,做相应设置的处理. 2.创建一个新的表,表结构为修改后的数据表,用于从源数据表向新表中导入数据. 3.创建触发器,用于记录从拷贝数据开始之后,对源数据表继续进行数据修…
DML(data manipulation language):  它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言  DML的概述 DML(Data Manipulation Language 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录. DML的主要语句(操作) Insert语句:向数据表张插入一条记录. Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是…
概述 一般来说数据库结构一经设计,不能轻易更改,因为更改DDL(Data Definition Language)操作代价很高,所以在进行数据库结构设计时需要谨慎. 但是业务发展是未知的,特别是那些变化很大的业务,所以不可避免的需要修改数据库结构,本文主要对MySQL5.6+ InnoDB存储引擎字段的修改进行探讨. 对于不同的场景,所使用的方式也会大不相同,尤其是修改百万级,千万级的表字段时,要特别注意. DDL操作类型 数据库结构的DDL操作总体来说有如下几种: 索引操作(Index Ope…
在Oracle数据库中,如何查找,定位一张表最后一次的DML操作的时间呢? 方式有三种,不过都有一些局限性,下面简单的解析.总结一下. 1:使用ORA_ROWSCN伪列获取表最后的DML时间 ORA_ROWSCN伪列是Oracle 10g开始引入的,可以查询表中记录最后变更的SCN.然后通过SCN_TO_TIMESTAMP函数可以将SCN转换为时间戳,从而找到最后DML操作时SCN的对应时间.但是,默认情况下,每行记录的ORA_ROWSCN是基于Block的,除非在建表的时候开启行级跟踪. SE…
查询test表DML操作的最后时间的语句: select max(ora_rowscn),to_char(scn_to_timestamp(max(ora_rowscn)),'yyyy-mm-dd hh24:mi:ss') from test; 查询test表DDL操作的最后时间的语句: select TO_CHAR(LAST_DDL_TIME,'YYYY-MM-DD HH24:MI:SS') FROM dba_objects where object_name='ACT_COMMISSION'…