mysql update语句

MySQL 8.0新增特性详解【华为云技术分享】

久未见 提交于 2019-12-04 13:34:30
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/devcloud/article/details/91802620 欢迎添加华为云小助手微信(微信号: HWCloud002 或 HWCloud003 ),输入关键字“ 加群 ”,加入华为云线上技术讨论群;输入关键字“ 最新活动 ”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 1. MySQL8.0的版本历史 2016-09-12第一个DM(development milestone)版本8.0.0发布 2018-04-19第一个GA(General Availability)版本开始,8.0.11发布 2018-07-27 下一个GA版本,8.0.12发布 2018-10-22 下一个GA版本,8.0.13发布 2019-01-21 下一个GA版本,8.0.14发布 最新的GA版本为8.0.15,于2019-02-01发布 最近待GA的版本为8.0.16, 8.0.17, 从中可以看出,大概每1~3个月一个版本。 2. MySQL8.0中新增的特性 事务性数据字典 数据字典表以InnoDB表存储字典数据,位于mysql数据库下,对外不可见。有专门的表空间mysql.idb,位于数据目录下

CHAR与VARCHAR详解

﹥>﹥吖頭↗ 提交于 2019-12-04 13:31:10
前言: 前面写过一篇介绍int类型的文章,一直想写一篇介绍字符串字段类型的文章,一直拖着也没思路要怎么下手。最近多关注了下这方面的文章,决定还是把拖了好久的文章了结了吧。本篇文章主要会介绍字符串类型char及varchar的用法及区别。 本文实验环境为MySQL 5.7.23版本,存储引擎为Innodb,sql_mode采用严格模式,字符集是utf8。 ▍1.CHAR类型介绍 我们平时使用char类型定义字段时,往往会指定其长度M,即char(M)。其实M指的是字符数,即这个字段最多存储多少个字符,M可不指定,默认为1,范围是[0,255],单个字母、数字、中文等都是占用一个字符。utf8字符集下一个中文字符占用3个字节。下面我们简单测试下: # 假设以如下建表语句创建测试表 CREATE TABLE `char_tb1` ( `col1` char DEFAULT NULL, `col2` char(5) DEFAULT NULL, `col3` char(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; # 进入数据库查询建表语句如下 发现char(M) M可不指定,默认为1 mysql> show create table char_tb1\G *************************** 1. row *

2.MySQL(二)

冷暖自知 提交于 2019-12-04 13:23:46
数据之表操作 1.创建表 语法:CREATE TABLE table_name (column_name column_type); create table student( -> id INT NOT NULL AUTO_INCREMENT, -> name CHAR(32) NOT NULL, -> age INT NOT NULL, -> regiiter_date DATE, -> PRIMARY KEY(id) -> ); auto_increment 表示:自增1。写入内容为空时,默认从1,2,3...往下填充写入表格中。primary key: 表示约束(不能重复且不能为空); 加速查找not null: 不为空查看表show tables; -->查看有哪些表desc student; --> 查看student表的信息show create table student; -->查看表student创建的信息 2.删除表 #drop table 表名 drop table student; 3.修改表 添加列:alter table 表名 add 列名 类型 删除列:alter table 表名 drop column 列名 修改列: alter table 表名 modify column 列名 类型; -- 类型 alter table 表名 change

MySql高级-笔记

为君一笑 提交于 2019-12-04 11:36:51
一 索引、事务、锁 索引:相当于书的目录 优点:查询速度快 缺点:占用存储空间大,维护和创建有成本,存储方式是树结构 索引使用: create index myindex on table(name);//创建索引 名:myindex 表名:table 列名:name show index from table;//查询 table表所有创建的索引 drop index myindex on table;//删除 table表的myindex索引 explain select * from table where name = 'abc';//分析SQL语句是否使用索引 事务:一个最小的不可再分的工作单元 4大特征:原子性(A) 一致性(C) 隔离性(I) 持久性(D) 4隔离级别: 读未提交 读已提交 可重复读 串行化 事务使用: start transaction;//开始事务 commit;//提交事务 rollback;//回滚事务 锁:多线程并发访问某一资源触发机制 乐观锁:先拿数据,再锁定. 乐观心态 悲观锁:先锁定,再拿数据. 悲观心态 共享锁 允许其他进行读取数据 不允许修改 排它锁 不允许对改数据任何操作 等待释放再解除 锁的粒度: 行锁 < 页锁 < 表锁 页锁最为常用 二 存储过程 存储过程:SQL的封装与重用 优点:安全,提高性能,降低程序与数据库的交流

MySQL数据库开发的36条原则

守給你的承諾、 提交于 2019-12-04 11:33:13
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/devcloud/article/details/100173405 欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003), 验证通过后,输入关键字“加群” ,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 前言 这些原则都是经历过实战总结而成 每一条原则背后都是血淋淋的教训 这些原则主要是针对数据库开发人员,在开发过程中务必注意 总是在灾难发生后,才想起容灾的重要性; 总是在吃过亏以后,才记得曾有人提醒过。 一、核心原则 1.尽量不在数据库做运算 俗话说:别让脚趾头想事情,那是脑瓜子的职责 作为数据库开发人员,我们应该让数据库多做她所擅长的事情: 尽量不在数据库做运算 复杂运算移到程序端CPU 尽可能简单应用MYSQL 举例: 在mysql中尽量不要使用如:md5()、Order by Rand()等这类运算函数 2.尽量控制单表数据量 大家都知道单表数据量过大后会影响数据查询效率,严重情况下会导致整个库都卡住 一般情况下,按照一年内单表数据量预估: 纯INT不超过1000W 含CHAR不超过500W 同时要尽量做好合理的分表

关于MySQL InnoDB 锁行还是锁表

*爱你&永不变心* 提交于 2019-12-04 11:08:10
http://www.cnblogs.com/mingxuan/archive/2011/10/11/2207560.html 关于mysql的锁行还是锁表,这个问题,今天算是有了一点头绪,mysql 中 innodb是锁行的,但是项目中居然出现了死锁,锁表的情况。为什么呢?先看一下这篇文章。 做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设 id=1 的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为 Select restnum from book where id =1 ; #1 -- 如果 restnum 大于 0 ,执行 update Update book set restnum=restnum-1 where id=1 ; #2 Select restnum from book where id =1 ; #3 -- 如果 restnum 大于 0 ,执行 update Update book set restnum=restnum-1 where id=1; #4 这样,第二个人执行到 select 语句的时候就会处于等待状态直到第一个人执行 commit 。从而保证了第二个人不会读到第一个人修改前的数据。 问题就来了,当 2 个人同时来借的时候,有可能第一个人执行 select 语句的时候

mysql 5.6配置

﹥>﹥吖頭↗ 提交于 2019-12-04 11:06:32
简洁版: [client] port = 3306 socket = /weyeedata/mysql/run/mysql.sock [mysqld] innodb_buffer_pool_size = 512M #log_bin = 1 expire_logs_days = 7 basedir = /usr/local/mysql datadir = /weyeedata/mysql/data port = 3306 bind = 0.0.0.0 server_id = 1 socket = /weyeedata/mysql/run/mysql.sock innodb_file_per_table = 1 skip_name_resolve = 1 #binlog_format = row log_error = /weyeedata/mysql/logs/mysql-error.log slow_query_log = 1 long_query_time = 1 slow_query_log_file = /weyeedata/mysql/logs/mysql-slow.log join_buffer_size = 128M sort_buffer_size = 2M read_rnd_buffer_size = 2M max_connections = 10000 sql

大数据-Linux下使用yum安装MySQL

自闭症网瘾萝莉.ら 提交于 2019-12-04 11:05:37
Linux下使用yum安装MySQL Linux下使用yum安装MySQL,以及启动、登录和远程访问MySQL数据库。 1 安装mysql 1.1 查看有没有安装过 yum list installed mysql* rpm -qa | grep mysql* 1.2 查看有没有安装包 yum list mysql* 1.3 安装mysql客户端 yum install mysql 1.4 安装mysql 服务器端 yum install mysql-server yum install mysql-devel 2 启动和停止服务 2.1 数据库字符集设置 mysql配置文件/etc/my.cnf中加入default-character-set=utf8 2.2 启动mysql服务 service mysqld start或者/etc/init.d/mysqld start 2.3 设置开机启动 chkconfig --add mysqld chkconfig mysqld on 2.4 查看开机启动设置是否成功 chkconfig --list | grep mysql* mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 2.5 停止服务的命令 service mysqld stop 3 mysql授权访问权限 mysql -uroot -p #

大数据-mysql的用法

人盡茶涼 提交于 2019-12-04 11:04:53
mysql的用法 1 #登录数据库 mysql –h localhost –u root -p; mysql –u root -p 2 #修改密码 mysqladmin -uroot -pold password new; 3 #显示数据库 show databases; 4 #显示数据表 show tables; 5 #选择数据库 use examples; 6 mysql授权访问权限 mysql -uroot -p #(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root123456' WITH GRANT OPTION; FLUSH PRIVILEGES; 7 #创建数据库并设置编码utf-8 多语言 create database `examples` default character set utf8 collate utf8_general_ci; 8 #删除数据库 drop database examples; 9 #创建表 create table test( id int(10) unsigned zerofill not null auto_increment, email varchar(40) not null

mysql update获取主键

我怕爱的太早我们不能终老 提交于 2019-12-04 10:53:43
mysql update获取主键 <pre> SET @update_id := 0; UPDATE mobantestinfo1 SET info2 = 'value', id = (SELECT @update_id := id) WHERE info1 = '23a' LIMIT 1; SELECT @update_id; </pre> 大致思路就是首先声明一个用户变量 @update_id ,之后在update数据时要多更新一个字段,就是将当前主键值更新为当前主键值(其实就是没更新),更新主键字段并不是目的,只是为了将当前主键值赋值给@update_id,就是这句: ( SELECT @update_id := id ) 如果是PDO只能分开运行mysql语句 变量多个用户之间是不会共享的 比如1个用户存了变量 还有个变量读取变量是为空的 来源: https://www.cnblogs.com/newmiracle/p/11856281.html