索引 排序检索的数据 SQL 过滤 vs. 应用程序过滤 简单 Where 补充:大小写敏感. BETWEEN. IS NULL Sorting Retrieved Data mysql> SELECT * -> FROM manga -> ORDER BY manga_name; +----------+-----------------------+-------------------+--------------+ | manga_id | manga_name | manga_…
之前 manipulate 表里的数据,现在则是 manipulate 表本身. INDEX 创建多列构成的主键 自动增长的规定 查看上一次插入的自增 id 尽量用默认值替代 NULL 外键不可以跨引擎 添加字段与删除字段 & 定义外键 复杂表结构的修改 删除表与修改表名 非常工整的 . .模范脚本: CREATE TABLE customers ( cust_id int NOT NULL AUTO_INCREMENT, cust_name ) NOT NULL , cust_address…
INDEX Updating Data The IGNORE Keyword Deleting Data Faster Deletes Guidelines for Updating and Deleting Data Updating Data UPDATE customers SET cust_name = 'The Fudds', cust_email = 'elmer@fudd.com' ; To delete a column's value, you can set it to NU…
INDEX BAD EXAMPLE Improving Overall Performance Inserting Multiple Rows INSTEAD OF Inserting a Single Row Inserting Retrieved Data BAD EXAMPLE INSERT INTO Customers VALUES(NULL, 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA', ', 'USA', NULL,…
索引 理解 GROUP BY 过滤数据 vs. 过滤分组 GROUP BY 与 ORDER BY 之不成文的规定 子查询 vs. 联表查询 相关子查询和不相关子查询. 增量构造复杂查询 Always More Than One Solution As explained earlier in this chapter, although the sample code shown here works, it is often not the most efficient way to perf…
索引 AND. OR 运算顺序 IN Operator VS. OR NOT 在 MySQL 中的表现 LIKE 之注意事项 运用通配符的技巧 Understanding Order of Evaluation 与大多数编程语言一样, AND 比 OR 有更高的优先级. Using Parentheses in WHERE Clauses Whenever you write WHERE clauses that use both AND and OR operators, use parent…
终于结束这本书了,最后两章的内容在官方文档中都有详细介绍,简单过一遍.. 首先是数据备份,最简单直接的就是用 mysql 的内置工具 mysqldump MySQL 8.0 Reference Manual  /  Backup and Recovery  /  Using mysqldump for Backups  /  Dumping Data in SQL Format with mysqldump 导入也巨简单,因为导出文件是 .sql 直接用 source 就 ok 了. 另外,需要…
限制用户的操作权限并不是怕有人恶意搞破坏,而是为了减少失误操作的可能性. 详细文档:https://dev.mysql.com/doc/refman/8.0/en/user-account-management.html 关于用户的信息都存储在 mysql 数据库下的 user 表中,查看所有用户名: mysql> USE mysql; mysql> SELECT user FROM user; +------------------+ | user | +------------------…
Globalization and Localization When discussing multiple languages and characters sets, you will run into the following important terms: Character sets are collections of letters and symbols. Encodings are the internal representations of the members o…
InnoDB 支持 transaction ,MyISAM 不支持. 索引: Changing the Default Commit Behavior SAVEPOINT 与 ROLLBACK TO COMMIT 与 ROLLBACK When working with transactions and transaction processing, there are a few keywords that'll keep reappearing. Here are the terms you…
推荐看这篇mysql 利用触发器(Trigger)让代码更简单 以及 23.3.1 Trigger Syntax and Examples 感觉有点像 Spring 里的 AOP 我们为什么需要触发器? -- 因为我们希望当某件事情发生的时候另外一些事情自动发生.. 例如 在向某张表插入数据的时候,同时向另外一张表插入数据. “向某张表插入数据” 就是事件(导火线),而“向另外一张表插入数据” 就是我们希望自动发生的事情(被触发的事情). 可是为什么不自己手动“ 先向某表插入数据,再向另外一张表…
mysql中游标的使用案例详解(学习笔记)这篇讲得相当直白好懂了. 索引: cursor 基础讲解 mysql 循环 书上的整合代码 cursor 基础讲解 cursor 有点类似于 JDBC 中的 ResultSet ,允许我们在执行 SELECT 之后,一行一行地 FETCH 数据. 它只能被用在存储过程中!如果把存储过程比作函数,cursor 只能在这个函数体中(存储过程的内部)定义.打开.关闭,一旦存储过程执行完毕,它将不再存在(可以把 cursor 理解为一个局部变量). 定义一个 c…
以前写过类似的东西,用来自动生成数据. 你可以将 Stored Procedure 理解为可以重复使用的批处理文件. Stored Procedure 非常有用,我们应该尽可能地去使用它. 那么,应用 Stored Procedure 有什么好处呢? 封装过程,简化复杂的操作 代码重用.共用,所有人都用同一个存储过程,减少出错的可能 简化变更管理,如果业务逻辑发生改变,修改存储过程就可以了,上层软件甚至不需要知道发生了什么改变. 提高性能,存储过程比单条执行要快 MySQL 语言让存储过程更加强…
INDEX 由于性能.智能结果等多方面原因,在搜索文本时,全文搜索一般要优于通配符和正则表达式,前者为指定列建立索引,以便快速找到对应行,并且将结果集智能排序.启用查询扩展可以让我们得到未必包含关键字的相关行,启用布尔模式可以让我们指定搜索内容不应包含的单词.各个关键词的权重等. 全文索引使用说明. 不要在导入数据前进行全文索引. WARNING 不是所有数据库引擎都支持全文搜索.MyISAM 支持全文索引,InnoDB 不支持全文索引. PS. 据说 MySQL 5.6 以上版本的 InnoD…
INDEX UNION Rules WHERE VS. UNION UNION VS. UNION ALL Sorting Combined Query Results UNION Rules As you can see, unions are very easy to use. But a few rules govern exactly which can be combined: A UNION must be comprised of two or more SELECT statem…
记文档还是相当重要的! 索引 假名的三个用途 自交(Self Joins) 自然交(Natural Joins) Outer Joins Using Table Aliases Using aliases for column names and calculated fields To shorten the SQL syntax To enable multiple uses of the same table within a single SELECT statement 自交 像下面这…
索引 理解相关表. foreign key JOIN 与保持参照完整性 关于JOIN 的一些建议,子查询 VS. 联表查询 我发现MySQL 的官方文档里是有教程的. SQL Tutorial - W3Schools The SQL Tutorial for Data Analysis | SQL Tutorial - Mode Analytics Understanding Relational Tables The key here is that having multiple occur…
索引 正则表达式:MySQL only supports a small subset of what is supported in most regular expression implementations 计算字段,应用程序计算 VS. 数据库计算,Concat. 假名 + - * / 测试 算数. 函数表达式 MySQL 函数. API 聚集函数示例 Using MySQL Regular Expressions → 默认大小写不敏感 mysql> SELECT '312HEWQKH…
索引 查看表.文档操作 检索必须知道的两件事 数据演示由谁负责 通配符.非必要不用 检索不同的行 限制结果集.分页查找 运用数据库.表全名 命令后加分号对于很多 DBMS 都不是必要的,但是加了也没有坏处 Learning About Databases and Tables Learning More About SHOW In the mysql command-line utility, execute command HELP SHOW; to display a list of all…
索引 database table schema Primary Key MySQL 书的第一章介绍一些基本的概念.理解数据库是掌握 MySQL 非常重要的一个部分. 第二章简单介绍了 MySQL 以及若干个 MySQL工具,熟练掌握 mysql Command-Line Utility 就行了. database The term database is used in many different ways, but for our purposes a database is a coll…
索引 视图是啥 为什么需要视图 使用视图的规则 如何使用视图 视图应用实例 别用视图更新数据! 视图是啥 理解视图的最佳方式就是看下面这个例子. SELECT cust_name, cust_contact FROM customers, orders, orderitems WHERE customers.cust_id = orders.cust_id AND orderitems.order_num = orders.order_num AND prod_id = 'TNT2'; 上面的请…
mysql 查询数据时按照A-Z顺序排序返回结果集 $sql = "SELECT * , ELT( INTERVAL( CONV( HEX( left( name, 1 ) ) , 16, 10 ) , 0xB0A1, 0xB0C5, 0xB2C1, 0xB4EE, 0xB6EA, 0xB7A2, 0xB8C1, 0xB9FE, 0xBBF7, 0xBFA6, 0xC0AC, 0xC2E8, 0xC4C3, 0xC5B6, 0xC5BE, 0xC6DA, 0xC8BB, 0xC8F6, 0xCB…
一台MySQL服务器突然Crash了,检查进程 ps -ef | grep -i mysql 发现mysqld进程已经没有了, 检查错误日志时发现MySQL确实Crash了.具体如下所示: 注意日志中的时间: 09:49:52 UTC是UTC时间(协调世界时间) , 加上8小时就是东八区的时间17:45:52,日志前段是UTC时间,后面又是系统时间.这个需要注意! 09:49:52 UTC - mysqld got signal 11 ; This could be because you hi…
最近有台服务器的MySQL经常crash,为了进一步定位问题,开启了mysql core file功能,开启步骤如下,供参考 [开启步骤] 1. my.cnf文件中增加2个配置选项 [mysqld] core_file [mysqld_safe] core-file-size=unlimited 2.修改系统参数,配置suid_dumpable echo 1 >/proc/sys/fs/suid_dumpable 3.重启mysql服务,配置生效 service mysql restart [生…
事情是这样的,最近领导给了一个新的需求,要求在一张订单表中统计每个人第一次和第二次购买的时间间隔,最后还需要按照间隔统计计数,求出中位数等数据. 由于MySQL不想Oracle那般支持行号.中位数等,所以怎么在表中统计处数据成为了关键 订单表结构,主要包含字段如下 id.订单号.购买人id.下单时间.商品信息字段.购买人信息字段等 1.为了方便后续统计,我的想法是构建了一张中间表,只存储一些关键字段,如购买人id,下单时间,订单号,以及购买的第几次,结构如下图: 字段解释:fans_id:购买人…
背景 近期线上MySQL 5.7.20集群不定期(多则三周,短则一两天)出现主库mysql crash.触发主从切换问题,堆栈信息如下: 从堆栈信息可以明显看出,在调用 try_acquire_lock_impl 时触发的crash. 分析 在官方Bug库未搜到类似问题,转而从代码库入手,搜到对应的BUG -- 8bc828b982f678d6b57c1853bbe78080c8f84e84: BUG#26502135: MYSQLD SEGFAULTS IN MDL_CONTEXT::TRY_…
遇到一种情况,对数字进行排序的时候,出现NULL在数字后面的情况,现在的需求是NULL排在前面然后才是升序的排数字 [Oracle 结论] order by colum asc 时,null默认被放在最后order by colum desc 时,null默认被放在最前nulls first 时,强制null放在最前,不为null的按声明顺序[asc|desc]进行排序nulls last 时,强制null放在最后,不为null的按声明顺序[asc|desc]进行排序 [MySql 结论]ord…
Thinkphp用exp表达式执行mysql语句,查询某字段不为空is not null,自动增值 Thinkphp 的文档经常不够完整的表达MYSQL的各种组合,is not null在thinkphp中就不能用“=” 或者简单的eq等来表示.TP支持MYSQL不为空的array编写方式:$data = D('tablename');$map = array();$map['pic'] = array('exp','is not null');其中的exp表示MYSQL的表达式查询,支持各种M…
Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?先上两种实现方式的实例:$querys["house_type_image"] = array('NEQ','NULL'); //判断字段不为空//$querys["house_type_image"] = array('exp','is not null');//其中的exp表示MYSQL的表达式查询,支持各种MYSQL语句的添加-----------------…
本文源码:GitHub·点这里 || GitEE·点这里 一.高性能索引 1.查询性能问题 在MySQL使用的过程中,所谓的性能问题,在大部分的场景下都是指查询的性能,导致查询缓慢的根本原因是数据量的不断变大,解决查询性能的最常见手段是:针对查询的业务场景,设计合理的索引结构. 2.索引使用原则 索引的使用并不是越多越好,而是针对业务下的查询场景,不断的改进和优化,例如电商系统中用户订单的场景,假设存在如下表结构: CREATE TABLE `ds_user` ( `id` int(11) NO…