delete

Mysql 删除数据表的三种方式详解

自闭症网瘾萝莉.ら 提交于 2020-02-03 11:54:21
用法: 1、当你不再需要该表时, 用 drop; 2、当你仍要保留该表,但要删除所有记录时, 用 truncate; 3、当你要删除部分记录或者有可能会后悔的话, 用 delete。 删除程度可从强到弱如下排列: 1. drop table tb; drop 是直接将表格删除,无法找回。例如删除 user 表: drop table user; 2. truncate (table) tb; truncate 是删除表中所有数据,但不能与where一起使用; TRUNCATE TABLE user; 3. delete from tb (where); delete 也是删除表中数据,但可以与where连用,删除特定行; -- 删除表中所有数据 delete from user; -- 删除指定行 delete from user where username ='Tom'; truncate 和 delete 的区别: 1. 事物 truncate删除后不记录mysql日志,因此不可以rollback,更不可以恢复数据;而 delete 是可以 rollback ; 原因:truncate 相当于保留原mysql表的结果,重新创建了这个表,所有的状态都相当于新的,而delete的效果相当于一行行删除,所以可以rollback; 2. 效果 效率上 truncate 比

PLSQL——09、触发器

萝らか妹 提交于 2020-02-03 09:59:14
触发器 trigger 触发器是一种特殊的过程,它的执行是由一系列事件触发的。这些事件有用户登录注销事件,DML语句执行事件等等。我们常用的就是DML触发器, 事件的精确粒度可以是表级或行级。 trigger的实际应用非常广泛,例如A表有数据DML操作,就可以在A表上做个触发器,将数据协同更新到B表。 我们也经常用触发器来做审计。 触发器可分为: database 触发器 :审计,例如记录用户登录和退出的信息等 schema 用户触发器 :可以用于:禁用DDL、禁止某个IP登录 DML触发器(表级 和 行级) :表级 DML前(before) DML后(after) ;行级 更新每一行触发一次 (before|after),行级带有for each row关键字 创建触发器语法 CREATE OR REPLACE TRIGGER trigger_name {BEFORE|AFTER|INSTEAD OF} EVENTs ON TABLE_NAME [for each row] declare ... begin ... end; {BEFORE|AFTER|INSTEAD OF} 触发器在事件执行之前或之后触发,还有一种替代触发器 EVENTs 不同类型的触发器有不同的事件,例如DML触发器 update or delete or insert ON TABLE_NAME

SpringCloud(五) 使用Ribbon进行Restful请求

余生颓废 提交于 2020-02-02 08:56:18
写在前面 本文由markdown格式写成,为本人第一次这么写,排版可能会有点乱,还望各位海涵。 主要写的是使用Ribbon进行Restful请求,测试各个方法的使用,代码冗余较高,比较适合初学者,介意轻喷谢谢。 前提 一个可用的Eureka注册中心(文中以之前博客中双节点注册中心,不重要) 一个连接到这个注册中心的服务提供者 一个ribbon的消费者 注意:文中使用 @GetMapping 、 @PostMapping 、 @PutMapping 、 @DeleteMapping 等注解需要升级 spring-boot-starter-parent版本到1.5.9.REALEASE以上(1.3.7.RELEASE版本没有这些注解) 建议:每个微服务应用都有自己的 spring-boot-maven-plugin 和 maven-compiler-plugin 并指定jdk编译版本为1.8 ,指定方式如下,pom.xml中添加 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins<

spring boot单元测试之RestTemplate(三)——api详解

被刻印的时光 ゝ 提交于 2020-02-02 08:14:31
本篇内容来自翟永超的《Springcloud微服务实战》,转载请注明。 一、GET请求 在RestTemplate中,对GET请求可以通过如下两个方法进行调用实现。 第一种:getForEntity函数。 该方法返回的是ResponseEntity,该对象是Spring对HTTP请求响应的封装,其中主要存储了HTTP的几个重要元素,比如HTTP请求状态码的枚举对象HttpStatus(也就是我们常说的404、500这些错误码)、在它的父类HttpEntity中还存储着HTTP请求的头信息对象HttpHeaders以及泛型类型的请求体对象。 比如下面的例子,就是访问USER-SERVER服务的/user请求,同时最后一个参数didi会替换url中的{1}占位符,而返回的ResponseEntity对象中的body内容类型会根据第二个参数转换为String类型。 RestTemplaterestTemplate=newRestTemplate(); ResponseEntity<String>responseEntity=restTemplate.getForEntity("http://USERSERVICE/user?name={1}",String.class,"didi"); Stringbody=responseEntity.getBody();

Spring Boot快速入门(二):http请求

ⅰ亾dé卋堺 提交于 2020-02-01 18:05:04
一、准备 postman :一个接口测试工具 创建一个新工程 选择web 不会的请看 Spring Boot快速入门(一):Hello Spring Boot 二、开始 新建java类RequestCtrl 1.添加一个all方法,使用@RequestMapping注解,可以处理所有的http请求 @RestController//这是一个控制器并只返回数据不寻找视图 public class RequestCtrl { @RequestMapping("/")//将本方法映射到/ public String all(String name, Integer age)//接受2个参数,name和age { return "这里是all\n" + "name: " + name + "\n" + "age: " + age; } } requestMapping的作用可以简单理解为给方法加个地址,让别人能访问 通过源码可以看出@RestController是@Controller和ResponseBody的结合注解 @Controller 表明这是一个控制器,将会返回数据或者页面 @ResponseBody 表明只会返回数据,Spring Boot默认将数据使用jaskson序列化为json返回 JSON(JavaScript Object Notation, JS 对象标记)

【C++知识】浅谈关于C++的内存管理

巧了我就是萌 提交于 2020-02-01 16:39:08
浅谈关于C++的内存管理 目录 浅谈关于C++的内存管理 1、内存管理的预备工具 malloc/free函数 new/delete表达式 array new/array delete placement new allocator分配器 2、内存管理 1、内存管理的预备工具 malloc/free函数 void* p1=malloc(512); //分配512个字节 free(p1); 对于malloc,它进行分配的内存块,除了需要申请的必要内存空间外,上下各有一个cookie,一共占8个字节,用来记录当前内存块的大小,而整个内存块的大小应该是16的倍数,所以可能还会额外增添一些其他内存空间,所以整个下来,当需要多次申请内存时,就会造成大量的内存空间浪费。 new/delete表达式 complex<int>* p2=new complex<int>; delete p2; new:实际上分为三个步骤:1) 分配内存 ,调用operator new函数,而operator new函数实际上就是调用malloc分配内存;2) 类型转换 ,对于分配内存后返回的变量进行转换成指针类型,因为new需要返回一个指针类型;3) 自动调用构造函数 。 delete:1)自动调用析构函数;2)释放内存,调用operator delete函数,而operator

触发器

本小妞迷上赌 提交于 2020-02-01 08:26:32
触发器的作用是使某些语句在事件发生时自动执行,只支持 delete,insert,update语句。 1.查看触发器 show triggers; 2.创建触发器 需要给出4条信息:唯一的触发器名(建议),触发器关联的表,触发器响应的某些语句,触发器何时执行(前或后) create trigger 触发器名 时间(before或after) 操作(insert,delete,update) on 表名 for each row 触发器程序体(可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句) 3.删除触发器 drop trigger 触发器名 注:触发器不能更新或覆盖,要修改的话只能删除然后重新创建 4.实使用触发器 ① insert 触发器 在insert触发器的代码内,可以引用一个名为new的虚拟表,访问被插入的行; 在before insert触发器中,new虚拟表中的值可以被更新(允许更改被插入的值); 对于auto_increment列,new虚拟表在insert执行之前包含0,在insert执行之后包含新的自动生成值。 例: create trigger neworder after insert on orders for each row select new.order_num; 分析: 创建一个名为neworder的触发器

MYSQL:基础——触发器

百般思念 提交于 2020-02-01 08:26:01
MYSQL:基础——触发器引入触发器 触发器   如果你想要某条语句(或某些语句)在事件发生时自动执行。比如: 每当订购一个产品时,都从库存数量中减去订购的数量;无论何时删除一行,都在某个存档表中保留一个副本。就需要用到触发器。    触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句 (或位于BEGIN和END语句之间的一组语句): DELETE; INSERT; UPDATE; 说明:    其他MySQL语句不支持触发器。 只有表才支持触发器、视图不支持,临时表也不支持 。 创建触发器   触发器用CREATE TRIGGER 语句创建, 一条伪代码如下 : CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name     //触发器名称 trigger_time trigger_event //触发时间 触发事件 ON tbl_name FOR EACH ROW   [trigger_order] trigger_body  其中参数的可选项如下: trigger_time: { BEFORE | AFTER } trigger_event: { INSERT | UPDATE | DELETE } trigger_order: { FOLLOWS | PRECEDES } other

MySQL(十二)游标和触发器

纵然是瞬间 提交于 2020-02-01 08:24:57
一、游标 定义: 存储在MySQL服务器上的数据库查询,是一种被select语句检索出来的结果集。 作用: 方便在检索出来的结果集中前进或后退一行或多行。 游标主要用于交互式应用;MySQL中的游标只能用于存储过程(和函数)。 1、创建游标 游标使用declare语句创建;declare命名游标,并定义响应的select语句,根据需要带where和其他子句;例如: create procedure processorders() begin declare ordernumbers CURSOR for select order_num from orders; end; 这个存储过程中,declare定义和命名了游标ordernumbers,存储过程处理完成后,游标消失(因为它局限于存储过程内)。 2、打开和关闭游标 游标使用open cursor语句来打开,例如: open ordernumbers; 在处理open语句时执行查询,存储检索出的数据以供浏览和滚动; 游标处理完成时,使用close语句关闭,例如: close ordernumbers; close释放游标使用的所有内部内存和资源,因此在每个游标不在需要时都应该关闭。 PS: 一个游标关闭后,如果没有重新打开,则不能使用;但如果该游标被声明过,则不需要再次声明,用open语句打开使用即可。 如果不明确游标是否关闭

Zabbix历史数据清理

亡梦爱人 提交于 2020-02-01 03:38:54
特别提醒: a、文中测试的Zabbix版本为 3.0.3 。 b、清理数据属于高危操作,请在测试环境中验证后再执行线上操作!!! 1、统计数据库中每个表所占的空间: mysql> SELECT table_name AS "Tables",   round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB"   FROM information_schema.TABLES   WHERE table_schema = 'zabbixdb'   ORDER BY (data_length + index_length) DESC; 2、清理zabbix一周之前的历史数据: !/bin/bash User="zabbixuser" Passwd="zabbixpass" Date=`date -d $(date -d "-7 day" +%Y%m%d) +%s` #取7天之前的时间戳 $(which mysql) -u${User} -p${Passwd} -e " use zabbixdb; DELETE FROM history WHERE 'clock' < $Date; optimize table history; DELETE FROM history_str WHERE 'clock' < $Date