update

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语句打开使用即可。 如果不明确游标是否关闭

mysql之触发器trigger

非 Y 不嫁゛ 提交于 2020-02-01 08:24:09
触发器(trigger):监视某种情况,并触发某种操作。 触发器创建语法四要素:1. 监视地点(table) 2. 监视事件(insert/update/delete) 3. 触发时间(after/before) 4. 触发事件(insert/update/delete) 语法: create trigger triggerName after/before insert/update/delete on 表名 for each row #这句话在mysql是固定的 begin sql语句; end; 注:各自颜色对应上面的四要素。 首先我们来创建两张表: #商品表 create table g (   id int primary key auto_increment,   name varchar(20),   num int ); #订单表 create table o (   oid int primary key auto_increment,   gid int, much int ); insert into g(name,num) values('商品1',10),('商品2',10),('商品3',10); 如果我们在没使用触发器之前:假设我们现在卖了3个商品1,我们需要做两件事 1.往订单表插入一条记录 insert into o(gid,much)

SpringBoot 数据篇之使用JDBC

我只是一个虾纸丫 提交于 2020-02-01 03:50:46
SpringBootTutorial :: Data :: Jdbc 简介 API execute update query 实战 配置数据源 完整示例 引申和引用 简介 Spring Data 包含对 JDBC 的存储库支持,并将自动为 CrudRepository 上的方法生成 SQL。对于更高级的查询,提供了 @Query 注解。 当 classpath 上存在必要的依赖项时,Spring Boot 将自动配置 Spring Data 的 JDBC 存储库。它们可以通过 spring-boot-starter-data-jdbc 的单一依赖项添加到项目中。如有必要,可以通过将 @EnableJdbcRepositories 批注或 JdbcConfiguration 子类添加到应用程序来控制 Spring Data JDBC 的配置。 更多 Spring Data JDBC 细节,可以参考 Spring Data JDBC 官方文档 。 API spring-boot-starter-data-jdbc 引入了 spring-jdbc ,其 JDBC 特性就是基于 spring-jdbc 。 而 spring-jdbc 最核心的 API 无疑就是 JdbcTemplate ,可以说所有的 JDBC 数据访问,几乎都是围绕着这个类去工作的。 Spring 对数据库的操作在

python中的集合

别说谁变了你拦得住时间么 提交于 2020-01-31 08:36:28
集合 创建集合 集合数据的特点 集合的常见操作 一、创建集合 创建集合使用{}或set(),但是如果要创建空集合只使用set(),因为{}用来创建空字典 s1 = { 10 , 20 , 30 , 50 , 60 } print ( s1 ) #{10, 50, 20, 60, 30} s12 = { 10 , 20 , 30 , 50 , 60 , 10 } print ( s12 ) #{10, 50, 20, 60, 30} s3 = set ( 'sdfghj' ) print ( s3 ) #{'h', 'f', 'd', 'j', 'g', 's'} #集合没有顺序,不支持下标,没有重合数据,去重 #2创建空集合 :set() s4 = set ( ) print ( type ( s4 ) ) #<class 'set'> 集合数据的特点 集合没有顺序 集合不支持下标操作 集合要去重(没有重复的数据) 二、集合的常见操作 增加 add() s1 = { 10 , 20 } s1 . add ( 100 ) s1 . add ( 10 ) print ( s1 ) #{100, 10, 20} 因为集合有去重功能,所以,当向集合内追加上网数据是当前集合已有数据的话,则不进行任何操作 update() 追加的数据是序列 s1 = { 10 , 20 } s1 .

外键、表与表之间的关系

六眼飞鱼酱① 提交于 2020-01-30 22:50:26
今日学习总结: 一、外键:用来建立两张表之间的关系 外键的约束的条件: 需要先提前建立被关联表 级联更新级联删除 1、一对多 2、多对多 3、 一对一 注意:mysql中 没有 多对一 1. 一对多 01、创建两张表:必须先建立被关联表,再建立关联表 dep: # 被关联表: create table dep( id int primary key auto_increment, # 主键+自增 dep_name varchar(16), dep_desc varchar(255) ); emp: # 关联表: create table emp( id int primary key auto_increment, name varchar(16), age int, gender enum('male', 'female', 'others') default 'male', dep_id int not null, foreign key(dep_id) references dep(id) # 外键:foreign key(dep_id) 。references dep 表示关联 被关联表 02、插入数据: 必须先插入被关联表(dep)的数据,再插入关联表(emp)的数据 # dep: insert into dep(dep_name, dep_desc) values(

update mysql row (You can't specify target table 'x' for update in FROM clause)

房东的猫 提交于 2020-01-30 18:53:02
sql语句(update/delete都会出现此问题) update x set available_material_id = null where id not in (select id from x where additional_info = 1); mistake 大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表。 You can't specify target table 'x' for update in FROM clause mysql5.7解决办法 update x left join x xx on x.id = xx.id and xx.additional_info = 1 set available_material_id = null where xx.id is null; 老办法(有人说5.7已经不能用了) 原始: DELETE FROM tempA WHERE tid IN ( SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age ) 改造后 DELETE FROM tempA WHERE tid NOT IN ( SELECT t.tid FROM ( SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age

大数据量下高并发同步的讲解(不看,保证你后悔)

两盒软妹~` 提交于 2020-01-30 04:30:44
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。 为了更好的理解并发和同步,我们需要先明白两个重要的概念: 同步和异步 1、同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到 返回的值或消息后才往下执行其它的命令。 异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回 值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。 同步在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复,否则他不往下执行(死心眼)。 异步在一定程度上可以看做是多线程的(废话,一个线程怎么叫异步),请求一个方法后,就不管了,继续执行其他的方法。 同步就是一件事,一件事情一件事的做。 异步就是,做一件事情,不引响做其他事情。 例如:吃饭和说话,只能一件事一件事的来,因为只有一张嘴。 但吃饭和听音乐是异步的,因为,听音乐并不引响我们吃饭。 对于Java程序员而言,我们会经常听到同步关键字synchronized,假如这个同步的监视对象是类的话,那么如果当一个对象

Java内置方式处理高并发

点点圈 提交于 2020-01-30 04:11:42
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。 为了更好的理解并发和同步,我们需要先明白两个重要的概念: 同步和异步 1、同步和异步的区别和联系   所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到 返回的值或消息后才往下执行其它的命令。 异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回 值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。 同步在一定程度上可以看做是单线程,这个线程请求一个方法后就待这个方法给他回复,否则他不往下执行(死心眼)。 异步在一定程度上可以看做是多线程的(废话,一个线程怎么叫异步),请求一个方法后,就不管了,继续执行其他的方法。    同步就是一件事,一件事情一件事的做。 异步就是,做一件事情,不引响做其他事情。 例如:吃饭和说话,只能一件事一件事的来,因为只有一张嘴。 但吃饭和听音乐是异步的,因为,听音乐并不引响我们吃饭。 对于Java程序员而言,我们会经常听到同步关键字synchronized,假如这个同步的监视对象是类的话,那么如果当一个对象

ubuntu apt-get update执行0%

老子叫甜甜 提交于 2020-01-30 01:01:06
问题描述 1.apt-get update 执行很慢 2.ping 外网网站很慢,无论是域名还是ip 原因是我从学校回家,网络换了。 解决办法 更换DNS 1.临时修改 vi /etc/resolv.conf,去掉原来的dns 在域名解析的时候会根据nameserver的顺序去查询,因为服务器是LAN和WAN都通过dhcp获取地址,resolvconf在设置naneserver的时候把内网的IP设置在最前面了。 可能是我路由器上的dns不好使,所以ping的很慢 然后直接就可以使用这个dns,但是重启后设置清空。 查看文件/etc/resolv.conf内容,发现这是一个链接文件 也可以通过修改文件 sudo vim /etc/resolvconf/resolv.conf.d/head,在该文件前面直接添加使用的dns服务器 然后把原先的dns删除,或放到后面。 2.永久修改 修改文件/etc/network/interfaces dns - nameserver xx . xx . xx . xx dns - nameserver xxx . xxx . xx . xx 或 dns - nameservers xxx . xxx . xxx . xxx xxx . xxx . xx . xxx 执行更新: resolvconf - u 来源: CSDN 作者: 吃数据的猴子 链接