update

mysql的外键探讨

こ雲淡風輕ζ 提交于 2019-12-06 11:12:56
在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。 一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强。关于完整性,关连性我举个例子,大家就会明白了。 有二张表,一张是用户表,一张是订单表: 1,如果我删除了用户表里的用户,那么订单表里面根这个用户有关的数据,就成了无头数据了,不完整了。 2,如果我在订单表里面,随便插入了一条数据,这个订单在用户表里面,没有与之对应的用户。这样数据也不完整了。 如果有外键的话,就方便多了,可以不让用户删除数据,或者删除用户的话,通过外键同样删除订单表里面的数据,这样也能让数据完整 外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; 二,使用foreign key,遵守以下几点规则 1,有外键约束的表,必须是innodb型 2,外键约束的二个表,本来就相关系的表,并且要有索引关系,如果没有,创建外键时也可以创建索引。 3,不支持对外键列的索引前缀。这样的后果之一是BLOB和TEXT列不被包括在一个外键中,这是因为对这些列的索引必须总是包含一个前缀长度。 4,mysql外键的名子在数据库内要是唯一的 三,创建foreign key的语法规则 外键的定义语法: [CONSTRAINT

MySQL外键关联(创世纪新篇)

耗尽温柔 提交于 2019-12-06 11:11:17
数据库外键 01.mysql> show create table country\G 02.*************************** 1. row *************************** 03. Table: country 04.Create Table: CREATE TABLE `country` ( 05. `country_id` smallint(5) unsigned NOT NULL auto_increment, 06. `country` varchar(50) NOT NULL, 07. `last_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, 08. PRIMARY KEY (`country_id`) 09.) ENGINE=InnoDB DEFAULT CHARSET=utf8 10.1 row in set (0.01 sec) 11. 12.mysql> show create table city\G 13.*************************** 1. row *************************** 14. Table: city 15.Create Table:

1-1 ubuntu配置 --- ubuntu开发环境搭建

混江龙づ霸主 提交于 2019-12-06 10:53:28
这篇文章就没什么技术含量了,只是从官网拷过来后,稍加整理的...仅供我自己参考... 1-1 ubuntu配置 --- ubuntu开发环境搭建 1-3 ubuntu开发环境搭建 一.准备工作 ubuntu server安装好后,为保证速度,最好先替换源,并做一些简单配置 (一)源 #cp /etc/apt/sources.list /etc/apt/sources.list_old #vim /etc/apt/sources.list #香港 deb http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ precise main restricted deb-src http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ precise main restricted deb http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ precise-updates main restricted deb-src http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ precise-updates main restricted deb http://ftp.cuhk.edu.hk/pub/Linux/ubuntu/ precise universe deb-src http:

idea中tomcat的On Upate Action 与 On Frame Deactivation配置

怎甘沉沦 提交于 2019-12-06 10:27:33
On Upate Action 与 On Frame Deactivation 这两个选项的设置,依赖于项目的部署方式 是war包 还是 exploded , 只讲exploded模式下的设置,因为这个用的最多,开发模式,开发完成后 直接用maven的 package命令打包就行了,所以用的最多的也是最灵活的就是exploded 开发模式。exploded模式实际运行的就是target目录下的kao文件夹。 注意: 在tomcat设置中Deployment要使用exploded模式的war包。只有exploded模式下才会有update classes and resources这项 。 redeployed ----- 重新部署,发布到tomcat里,不重启tomcat,而是把原来的删掉,然后重新发布; restart server ----- 重启tomcat update resources ---- 更新静态的资源,比如 html,js,css 等 运行模式和调试模式都是立即生效。 update classes and resources ---- 更新 java,jsp和静态资源 (1. java 修改后,会被编译成.class 然后覆盖到target/kao文件夹下,IDE调试模式的情况下,立即生效。IDE运行模式下,不立即生效,需要redeployed才可生效。 On

java报错 pom.xml第一行报\"org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project...

本小妞迷上赌 提交于 2019-12-06 10:14:57
https://www.cnblogs.com/appium/p/11168441.html 新建Maven项目时,每个pom文件第一行都报错。 一.问题分析 原因就是你的maven的配置文件不是最新的 二.解决方案 1.更新eclipse中的maven插件 1、Help——>Install New SoftWare 2.点击 Add,添加配置信息 name为 MavenArchiver Location中输入 http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-mavenarchiver/0.17.2/N/LATEST/ PS:点击 next 前,将 eclipse Install 窗口右下角的 Contact all update sites during install to find required software 选项取消掉。 一直next confirm 安装更新 提示重启eclipse 然后再右键项目maven update project 新建Maven项目时,每个pom文件第一行都报错。 一.问题分析 原因就是你的maven的配置文件不是最新的 二.解决方案 1.更新eclipse中的maven插件 1、Help——>Install New SoftWare 2.点击 Add,添加配置信息 name为

触发器

匆匆过客 提交于 2019-12-06 09:52:50
触发器 概念 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在 check 约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如: update 、 insert 、 delete 这些操作的时候,系统会自动调用执行该表上对应的触发器。 SQL Server 2005 中触发器可以分为两类: DML 触发器和 DDL 触发器,其中 DDL 触发器它们会影响多种数据定义语言语句而激发,这些语句有 create 、 alter 、 drop 语句。 DML 触发器分为: 1 after 触发器(之后触发) A insert 触发器 B update 触发器 C delete 触发器 2 instead of 触发器 (之前触发) 其中 after 触发器要求只有执行某一操作 insert 、 update 、 delete 之后触发器才被触发,且只能定义在表上。而 instead of 触发器表示并不执行其定义的操作( insert 、 update 、 delete )而仅是执行触发器本身。既可以在表上定义 instead of 触发器,也可以在视图上定义。

sql

試著忘記壹切 提交于 2019-12-06 08:54:51
import pymysql con = pymysql.connect(host="127.0.0.1",user="root",passwd="root",db="test") cursor = con.cursor() sql = "insert into test2(name,gender) select distinct name,gender from test1;" cursor.execute(sql) con.commit() cursor.close() con.close()   name和gender同时不同才会取出。字段名称可以不一致,但是顺序绝对不能错。 sql = "alter table test1 alter moren set default 0;" # 设置默认值,但是之前的数据不会发生变更    sql = "update test1 set moren=0;" # 原有数据全部设置为0    sql = "update test1 set moren=1,gender2='女';" # 设置多列    sql = "update test1 set moren=6 where name='张三';" # 条件更新    来源: https://www.cnblogs.com/realadmin/p/11974254.html

Mybatis 常用标签

风格不统一 提交于 2019-12-06 08:40:19
MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 1、<if> 主要用于sql语句拼接(很简单)如示例 2、<choose,when,otherwise> 有些时候,我们不想用到所有的条件语句,而只想从中择其一二。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。 结构如下: <choose> <when test=" ** "> <when> <otherwise> </otherwise> </choose> 3<where,set> <update id="updateAuthorIfNecessary"> update Author set <if test="username != null">username=#{username},</if> <if test="password != null">password=#{password},</if> <if test="email != null">email=#{email},</if> <if test="bio != null">bio=#

myql的锁

早过忘川 提交于 2019-12-06 08:20:48
本文主要涉及以下几个个部分: 1. 为什么要加锁 2. 锁的分类 3. 常见语句的加锁分析 4. 如何分析死锁 5. 如何预防死锁 先列出本地的运行环境 数据库版本是5.7,隔离级别是Repeatable-Read(可重复读),不同的数据库版本和隔离级别对语句的执行结果影响很大。所以需要说明版本和隔离级别 一、为什么要加锁 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中加锁是为了保证数据库的一致性。 数据库有ACID原则,其中I是隔离性, 脏读:读未提交的数据 不可重复读:读已修改的数据 虚读:读提交了插入/删除的数据 事务隔离机制 和标准SQL规范相比,MySQL中可重复读解决了幻读,实现了串行化隔离级别的功能,同时没有严重影响并发。是通过加锁、阻止插入新数据,来解决幻读的。 二、锁的分类 锁 我们听说过读锁、写锁、共享锁、互斥锁、行锁等等各种名词,简单对这些锁进行了分类。 锁的分类 加锁机制: 1、乐观锁:先修改,保存时判断是够被更新过,应用级别 2、悲观锁:先获取锁,再操作修改,数据库级别 锁粒度: 表级锁:开销小,加锁快,粒度大,锁冲突概率大,并发度低,适用于读多写少的情况。 页级锁:BDB存储引擎 行级锁:Innodb存储引擎,默认选项 兼容性: S锁,也叫做读锁、共享锁,对应于我们常用的 select * from users where id

常用mysql命令大全

孤街醉人 提交于 2019-12-06 08:03:33
常用的MySQL命令大全 连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>。 2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样) 3、退出MYSQL命令: exit (回车)。 修改密码 格式:mysqladmin -u用户名 -p旧密码 password 新密码 1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令: mysqladmin -uroot -password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 2、例2:再将root的密码改为djg345。 mysqladmin -uroot -pab12 password djg345 增加新用户。(注意:和上面不同