
MySQL
HeatDeath
Learn by doing!
展开
-
SQL 中的通配符
最近在写 sql 遇到的场景是 只匹配某个出现一次的字符以前经常用的 % 是没办法搞定的所以顺便复习了一下 SQL 中的通配符SQL 通配符 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。SQL 通配符必须与 LIKE 运算符一起使用。在 SQL 中,可使用以下通配符:通配符 描述% ...原创 2018-08-20 15:19:09 · 962 阅读 · 0 评论 -
MySQL 设置自动添加创建时间,自动更新 更新时间 的方法
CREATE TABLE `mytesttable` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `createtime` datetime DEFAULT CURRENT_TIMESTAMP, `updatetime` datetime DEFAULT CURRENT_TIMESTAMP O...原创 2018-04-16 10:41:35 · 3584 阅读 · 0 评论 -
MySQL 更新符合查询条件的第一条记录、更新根据创建时间降序排列的第一条记录
update table_name set col_1=xxx where col_2=yyy limit 1更新符合指定条件的第一条记录UPDATE table_nameset col_1=1112WHERE id=(select temp.id from (select id from table_name WHERE col_2=xxx order by create_tim...原创 2018-03-27 11:26:03 · 12828 阅读 · 2 评论 -
MySQL 1093 You can't specify target table for update in FROM c 的解决办法
/* [Err] 1093 - You can't specify target table 't' for update in FROM clause */update t_area set parent_name = (select name from t_area where parent_id = id);执行SQL语句时出现这个错误。原因是在更新这个表和数据时又查询了它,而查询的...原创 2018-03-27 11:21:37 · 4353 阅读 · 0 评论 -
MySQL 1248 - Every derived table must have its own alias 的解决办法
这句话的意思是说每个派生出来的表都必须有一个自己的别名我的Mysql语句是:select count(*) from (select * from dede_spacemoney group by sid) ;当我执行到这里的时候就抛出了这个异常,原来我进行嵌套查询的时候子查询出来的的结果是作为一个派生表来进行上一级的查询的,所以子查询的结果必须要有一个别名把MySQL语句改成...原创 2018-03-27 11:17:51 · 1352 阅读 · 0 评论 -
预编译语句(Prepared Statements)介绍,以MySQL为例
预编译语句(Prepared Statements)介绍,以MySQL为例 1. 背景本文重点讲述MySQL中的预编译语句并从MySQL的Connector/J源码出发讲述其在Java语言中相关使用。注意:文中的描述与结论基于MySQL 5.7.16以及Connect/J 5.1.42版本。2. 预编译语句是什么通常我们的一条sql在db接收到最终执行完毕返...转载 2018-03-26 19:29:18 · 1607 阅读 · 0 评论 -
MySQL 查询结果中增加字段的方法
例如我查出来的结果:| 字段1 | 字段2 || 值1 | 值2 |我想要在结果集中增加一个字段,这个字段是表中没有的,值是固定的,例如:| 字段1 | 字段2 | 新增字段 || 值1 | 值2 | 值固定 |假设你的表名为tab1,只有字段为a,b,想在查询结果中新增字段c(固定值为100),可以这样写:SELECT T.*,100 as c...转载 2018-03-20 10:01:24 · 8514 阅读 · 1 评论 -
MySQL 数据类型 DATETIME 与 TIMESTAMP 的区别
首先 DATETIM和TIMESTAMP类型所占的存储空间不同,前者8个字节,后者4个字节,这样造成的后果是两者能表示的时间范围不同。前者范围为1000-01-01 00:00:00 ~ 9999-12-31 23:59:59,后者范围为1970-01-01 08:00:01到2038-01-19 11:14:07。所以可以看到TIMESTAMP支持的范围比DATATIME要小,容易出现超出的情况...转载 2018-03-13 20:09:06 · 303 阅读 · 0 评论 -
Mysql DATETIME 类型的字段设置默认值为 NOW() 的方法
两种方式,但是要求 MySQL 版本为 5.6+`registerDate` datetime NOT NULL DEFAULT NOW() COMMENT '注册时间'`registerDate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间'1、Mysql 5.5 DATETIME类型的字段设置默认值为NO...原创 2018-03-22 17:47:41 · 16161 阅读 · 0 评论 -
MySQL 中 MyISAM、InnoDB 的区别有哪些?
作者:Oscarwin 链接:https://www.zhihu.com/question/20596402/answer/211492971 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。区别:1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begi...转载 2018-03-11 00:57:44 · 274 阅读 · 0 评论 -
修改 MySQL 字符集为 utf8 的方式
参考资料:1、(原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题) http://www.ha97.com/5359.html2、MYSQL 字符集问题 http://www.blogjava.net/wldandan/archive/2007/09/04/142669.html...原创 2018-03-02 10:37:41 · 428 阅读 · 0 评论 -
MySQL 添加外键错误 1452 的解决办法
仔细观察后才发现该表中有一字段是外键,它参照了另外一张表的主键。出现错误的原因是:插入外键的数据在另一张表的主键中不存在。解决方法当然,很简单了,插入另一张表中主键存在的数据呗。。。。。1、MySql外键关联Foreign key及error 1452 http://xuehu2009.iteye.com/blog/571138...原创 2018-03-15 10:53:12 · 11499 阅读 · 0 评论 -
MySQL 使用自增ID(int)主键和UUID(varchar)作为主键的优劣比较
总结(1)单实例或者单节点组:经过500W、1000W的单机表测试,自增ID相对UUID来说,自增ID主键性能高于UUID,磁盘存储费用比UUID节省一半的钱。所以在单实例上或者单节点组上,使用自增ID作为首选主键。(2)分布式架构场景:20个节点组下的小型规模的分布式场景,为了快速实现部署,可以采用多花存储费用、牺牲部分性能而使用UUID主键快速部署;20到200个节点组的中...原创 2018-04-06 14:42:07 · 20316 阅读 · 0 评论 -
MySQL 使用 ON UPDATE CURRENT_TIMESTAMP 自动更新 timestamp
`create_time` timestamp not null default current_timestamp comment '创建时间', `update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',当执行update操...原创 2018-04-06 14:46:07 · 33153 阅读 · 5 评论 -
MySQL alter table 的使用方法
ALTER TABLE table_nameALTER COLUMN column_name datatype1、SQL ALTER TABLE 语句 http://www.runoob.com/sql/sql-alter.html原创 2018-05-24 16:44:33 · 2416 阅读 · 0 评论 -
MySQL 索引的查看创建和删除
MySQL索引的创建、删除和查看MySQL索引的查看创建和删除此文转自http://blogold.chinaunix.net/u3/93470/showart_2001536.html1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速...转载 2018-05-08 18:13:34 · 244 阅读 · 0 评论 -
Mysql 主键索引、唯一索引、普通索引、全文索引、组合索引的区别
Mysql主键索引、唯一索引、普通索引、全文索引、组合索引的区别MySQL索引原理及慢查询优化 Mysql索引概念:说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目...原创 2018-05-08 18:12:07 · 918 阅读 · 0 评论 -
Linux 下 MySQL 的常用命令
启动数据库设置初始密码启动数据库设置初始密码这一小节介绍在Mac OS、Linux、Windows上启动关闭重启MySQL服务,以及部分图形化界面对服务的操控。安装完成后,可以使用 service 命令启动 mysql 服务,在Mac上service命令不存在。命令行启动关闭重启MySQL服务在命令行终端启动 MySQL 非常方便,下面大概介绍几个平台通过命令启动服务的方法。...转载 2018-05-14 17:11:12 · 621 阅读 · 0 评论 -
Data source rejected establishment of connection, message from server: "Too many connections"
Data source rejected establishment of connection, message from server: “Too many connections”数据库连接不够用的解决办法;1、mysql 最大链接数 max_connections 设置 http://blog.51cto.com/12927979/20475372、MySQL Da...原创 2018-05-14 17:10:01 · 1405 阅读 · 0 评论 -
MySQL 查看版本的方法
1、Mysql查看版本号的五种方式介绍 https://blog.youkuaiyun.com/kaifeng2988/article/details/524968112、如何查看MySQL的版本? https://blog.youkuaiyun.com/xiyang_1990/article/details/55803516...原创 2018-05-07 16:44:32 · 2081 阅读 · 0 评论 -
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded
问题: 连接Docker启动的mysql出现:ERROR 2059 (HY000): Authentication plugin ‘caching_sha2_password’ cannot be loaded C:\mysqldata>mysql -h 127.0.0.1 -P 13306 -uroot -p Enter password: ** ERROR ...原创 2018-05-07 15:56:32 · 6331 阅读 · 0 评论 -
MySQL 几种日期时间类型之间的区别
Mysql 建表时,日期时间类型选择mysql(5.5)所支持的日期时间类型有:DATETIME、 TIMESTAMP、DATE、TIME、YEAR。几种类型比较如下:日期时间类型占用空间日期格式最小值最大值零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-...转载 2018-05-13 14:34:16 · 2249 阅读 · 0 评论 -
MySQL 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
1235 - This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery’MySQL5.1中子查询是不能使用LIMIT的, 会报错: “This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME sub...原创 2018-05-18 11:43:16 · 1153 阅读 · 0 评论 -
MySQL 查询已建好数据表的建表 SQL 语句
SHOW CREATE TABLE table_name就这样嗯http://bbs.chinaunix.net/thread-1010615-1-1.html原创 2018-05-04 16:42:40 · 13224 阅读 · 1 评论 -
MySQL 中的唯一索引
唯一索引:① 关于 Null 允许 Null,允许多个 Null② 关于空值(空字符串)(Empty String)允许空字符串,但不允许重复参考资料:1、MySQL 唯一性约束与 NULL https://yemengying.com/2017/05/18/mysql-unique-key-null/...原创 2018-05-10 16:22:40 · 1793 阅读 · 0 评论 -
使用 Navicat 连接 MySQL ,已存在的数据库中 comment 中文信息乱码的解决办法
编辑连接,在高级中设置编码格式为 utf-8 即可参考 https://jingyan.baidu.com/article/eae07827b65f911fed54855a.html原创 2018-02-01 16:56:51 · 4707 阅读 · 0 评论 -
MySQL 5.7 报错 ERROR 1054 (42S22): Unknown column 'password' in 'field list' 的解决办法
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'MySQL 5.7 之前的版本修改密码使用的语句是UPDATE user SET Password=PASSWORD('yourpassword') where USER='root';5.7 之后的版本应该使用update mysql.user set原创 2018-01-15 16:46:28 · 2764 阅读 · 0 评论 -
解决 Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)的方法
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)一个亲测有效的解决办法解决不能通过mysql .sock连接MySQL问题 这个问题主要提示是,不能通过 ‘/tmp/mysql .sock’连到服务器,一些mysql 安装方原创 2018-01-15 16:21:47 · 118086 阅读 · 9 评论 -
熄灯之后的学习——再读《MySQL必知必会》(9)|| 创建计算字段
字段field :基本与列 column 的意思相同。经常互换使用,不过数据库列一般称为列,而属于字段通常用在计算字段的连接上。拼接concatenate:将值联结到一起构成单个值。MySQL 中使用Concat() 函数来拼接两个列。对比: concat() 拼接串,即把多个串连接起来形成一个较长的串。 concat() 需要一个或者多个指定的串,各个串之间用逗号分隔。rtrim() 函数可以原创 2017-04-28 00:30:06 · 844 阅读 · 0 评论 -
熄灯之后的学习——再读《MySQL必知必会》(10)|| 使用数据处理函数
文本处理函数日期和时间处理函数数值处理函数原创 2017-04-28 00:33:16 · 697 阅读 · 1 评论 -
熄灯之后的学习——再读《MySQL必知必会》(7)|| 通配符过滤
通配符 wildcard :用来匹配值得一部分的特殊字符。 搜索模式 search pattern :由字面值、通配符或两者组合构成的搜索条件。 为了在搜索子句中使用通配符,必须使用 LIKE 操作符。在搜索串中, % 表示任何字符出现任意次数。 根据 MySQL 的配置方式,搜欧式可以是区分大小写的。如果区分大小写,’jet%’ 与 JetPack 1000 将不匹配。 通配符可在搜原创 2017-04-25 23:38:22 · 407 阅读 · 0 评论 -
在windows10环境下远程连接阿里云Ubunutu下MySQL的方法
在阿里云上安装好mysql后 执行 ~# vim /etc/mysql/mysql.conf.d/mysqld.cnf 命令,修改绑定的 ip重启 mysql 的服务 ~# service mysql restart进去 mysql ~# mysql -u root -p授予任意 ip(%) 地址的 user 用户 使用 pwd 密码所有权限在所有表上grant all privileges原创 2017-04-23 11:41:00 · 1667 阅读 · 0 评论 -
熄灯之后的学习——再读《MySQL必知必会》(6)|| 数据过滤
操作符: 用来联结或改变 where 子句中的子句的关键字。使用 and 操作符给 where 子句附加条件:使用 or 操作符指示检索任一匹配条件:计算次序: 任何时候使用具有 and 和 or 操作符的 where 子句时,都应该使用 圆括号明确地分组操作符in操作符 用来指定条件范围,范围中的每个条件都可以进行匹配。 in 取合法值的由逗号分隔的清单,全都包括在圆括号中。not 在 where原创 2017-04-19 00:04:53 · 636 阅读 · 0 评论 -
熄灯之后的学习——再读《MySQL必知必会》(4)|| 排序数据
子句(clause): SQL语句由子句构成,有些子句是必须的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。order by xxx 指定以 xxx 列进行排序按多个列排序: 只要指定列名,列名之间用逗号分开即可。在按多个列进行排序的时候,排序完全按所规定的顺序进行。降序排序: 必须指定 DESC 关键字。 DESC 只应用到直接位于其前面的列名 想要在多个列上降序排列,必须对原创 2017-04-18 23:29:10 · 386 阅读 · 0 评论 -
熄灯之后的学习——再读《MySQL必知必会》(5)|| 过滤数据
搜索条件(过滤条件): 只检索所需数据需要指定的。 where子句在表名 (from子句)之后给出,在同时使用 order by 和 where 子句的时候,应该让 order by 位于 where 之后。检查单个值:不匹配检查范围检查空值检查原创 2017-04-18 23:51:28 · 471 阅读 · 0 评论 -
熄灯之后的学习——再读《MySQL必知必会》(3)
SQL 语句不区分大小写多条 SQL 语句必须以 ; 进行分隔多数 SQL 人员认为,将 SQL 语句分成多行更容易阅读和调试SELECT * FROM TABLENAME; 返回名为 TABLENAME 的表的所有列的数据,也可以选择单个列或多个列(多个列的时候,每个列,名用 , `分隔开) * 是通配符检索不同的行SELECT DISTINCT * FROM TABLENAME原创 2017-04-14 00:38:23 · 522 阅读 · 0 评论 -
使用Navicat导入《MySQL必知必会》书上用例数据库的方法
在 Navicat 中新建一个名为 mysqk_crash_course 的数据库 此数据库初始为空接着将下载好的的 sql 文件导入完成:再导入另一个 sql 文件:完成:大功告成:书中用例sql文件下载地址原创 2017-04-14 00:44:12 · 2072 阅读 · 1 评论 -
熄灯之后的学习——再读《MySQL必知必会》(2)
命令用 ; 结束,仅仅按 Enter 不执行命令输入 help 或 \h 获得帮助输入 quit 或者 exit 退出命令行程序关键字(key word):作为 MySQL 语言组成部分的一个保留字SHOW DATABASES; 返回可用数据库的一个列表。USE DATABASENAME; 使用名为 DATABASENAME 的数据库,该语句不返回任何结果。SHOW TABLES; 获得一个原创 2017-04-14 00:17:59 · 578 阅读 · 0 评论 -
熄灯之后的学习——再读《MySQL必知必会》(1)
熄灯之后一边看视频,一边 coding 实在麻烦,遂熄灯之后改学习其他内容数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)。表(table):某种特定类型数据的结构化清单。模式(schema):关于数据库和表的布局及特性。列(column):表中的一个字段。所有表都是由一个或多个列组成的。数据类型(datatype):所容许的数据的类型。行(row):表中的一个记录。主原创 2017-04-13 00:28:50 · 507 阅读 · 0 评论 -
查看 MySQL 版本的方式
Mysql查看版本号的五种方式介绍mysql> status; -------------- mysql Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1 Connection id:3 Current database: Current user: root@localhost SSL转载 2017-10-22 23:35:22 · 861 阅读 · 0 评论