SQL Fiddle(在线执行SQL语句的网站)css
- http://www.sqlfiddle.com/
MySQLhtml
MySQL :: MySQL 5.7 Reference Manual :: 13 SQL Statement Syntaxmysql
- https://dev.mysql.com/doc/refman/5.7/en/sql-syntax.html
mySQL(关系型数据库管理系统)_百度百科面试
- https://baike.baidu.com/item/mySQL/471251?fr=aladdin
MySQL 教程 | 菜鸟教程正则表达式
- http://www.runoob.com/mysql/mysql-tutorial.html
面试总结之Database / SQL - 浩然119 - 博客园sql
MySQL知识点总结数据库
MySql语句大全:建立、受权、查询、修改等segmentfault
- http://blog.csdn.net/evankaka/article/details/45580845
一份很是完整的MySQL规范安全
MySQL 索引原理及设计 - 数据库开发性能优化
- https://mp.weixin.qq.com/s/1MNj9v3IfKR9FUiA92mXFA
- https://icell.io/how-mysql-index-works/
终于把MySQL索引的那些事儿说清楚了
图解MySQL索引--B-Tree(B+Tree)
MySQL索引和SQL调优手册
这种 SQL 写法会致使索引失效?
我想说:MySQL的join真的很弱
史上最全SQL优化方案 - CSDN云计算
- https://mp.weixin.qq.com/s/x5oguwfTC8fhqzFfR4Fpug
12 条 MySQL 优化技巧 - 数据分析与开发
- https://mp.weixin.qq.com/s/ykvH4HEGbG7FPG4AtnXwqQ
MySQL数据库优化
- https://mp.weixin.qq.com/s/eBHM3YQ2vAZAN6xiY5fxWw
- https://segmentfault.com/a/1190000018631870
MySQL性能优化之神技
SQL 性能优化梳理
MySQL慢查询记录原理和内容解析
MySQL EXPLAIN结果集分析 - 附带大量案例
亿级用户的分布式数据存储解决方案
架构秘笈:移花接木。使用MySQL模拟Redis
8种常被忽视的SQL错误用法 - 数据库开发
- https://mp.weixin.qq.com/s/6_M-Z-XimG8DgkVW85-6Hw
- https://yq.aliyun.com/articles/72501
10种常见的MySQL错误,你可中招?
- MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
- 如下为在MySQL数据库中查询数据通用的 SELECT 语法:SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ] [LIMIT N]
- 你能够经过OFFSET指定SELECT语句开始查询的数据偏移量。默认状况下偏移量为0。
- 你可使用 LIMIT 属性来设定返回的记录数。
- WITH ROLLUP 能够实如今分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
- 咱们可使用 coalesce 来设置一个能够取代 NUll 的名称
- 咱们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,可是当提供的查询条件字段为 NULL 时,该命令可能就没法正常工做。为了处理这种状况,MySQL提供了三大运算符:关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
- IS NULL: 当列的值是 NULL,此运算符返回 true。
- IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
- <=>: 比较操做符(不一样于=运算符),当比较的的两个值为 NULL 时返回 true。
- 在 MySQL 中,NULL 值与任何其它值的比较(即便是 NULL)永远返回 false,即 NULL = NULL 返回false 。
- MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。
- MySQL 一样也支持其余正则表达式的匹配, MySQL中使用 REGEXP 操做符来进行正则表达式匹配。
- 下表中的正则模式可应用于 REGEXP 操做符中。
模式 |
描述 |
^ |
匹配输入字符串的开始位置。若是设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 以后的位置。 |
$ |
匹配输入字符串的结束位置。若是设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 以前的位置。 |
. |
匹配除 "\n" 以外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。 |
[...] |
字符集合。匹配所包含的任意一个字符。例如, '[abc]' 能够匹配 "plain" 中的 'a'。 |
[^...] |
负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 能够匹配 "plain" 中的'p'。 |
p1|p2|p3 |
匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 |
* |
匹配前面的子表达式零次或屡次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 |
+ |
匹配前面的子表达式一次或屡次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
{n} |
n 是一个非负整数。匹配肯定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',可是能匹配 "food" 中的两个 o。 |
{n,m} |
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
|
- MySQL 事务主要用于处理操做量大,复杂度高的数据。好比说,在人员管理系统中,你删除一我的员,你即须要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操做语句就构成一个事务!
- 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
- 事务处理能够用来维护数据库的完整性,保证成批的 SQL 语句要么所有执行,要么所有不执行。
- 事务用来管理 insert,update,delete 语句
- 通常来讲,事务是必须知足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会立刻执行 COMMIT 操做。所以要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。
- 一、事务的原子性:一组事务,要么成功;要么撤回。
- 二、稳定性 :有非法数据(外键约束之类),事务撤回。
- 三、隔离性:事务独立运行。一个事务处理后的结果,影响了其余事务,那么其余事务会撤回。事务的100%隔离,须要牺牲速度。
- 四、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 选项 决定何时吧事务保存到日志里。
- 若是须要修改字段类型及名称, 你能够在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
- 有四种方式来添加数据表的索引:你可使用 SHOW INDEX 命令来列出表中的相关的索引信息。能够经过添加 \G 来格式化输出信息。
- ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是惟一的,且不能为NULL。
- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句建立索引的值必须是惟一的(除了NULL外,NULL可能会出现屡次)。
- ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现屡次。
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。
- 你也可使用 SHOW TABLES 或 SHOW DATABASES 语句来获取数据库和数据表列表。
- 如下命令语句能够在 MySQL 的命令提示符使用,也能够在脚本中 使用,如PHP脚本。
命令 |
描述 |
SELECT VERSION( ) |
服务器版本信息 |
SELECT DATABASE( ) |
当前数据库名 (或者返回空) |
SELECT USER( ) |
当前用户名 |
SHOW STATUS |
服务器状态 |
SHOW VARIABLES |
服务器配置变量 |
- MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列。
- 如下咱们将统计表中 first_name 和 last_name的重复记录数:SELECT COUNT(*) as repetitions, last_name, first_name FROM person_tbl GROUP BY last_name, first_name HAVING repetitions > 1;
- 若是你须要读取不重复的数据能够在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。你也可使用 GROUP BY 来读取数据表中不重复的数据:SELECT last_name, first_name FROM person_tbl GROUP BY (last_name, first_name);
- 固然你也能够在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。
- 若是您经过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题。所谓SQL注入,就是经过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
- 防止SQL注入,咱们须要注意如下几个要点:
- 1.永远不要信任用户的输入。对用户的输入进行校验,能够经过正则表达式,或限制长度;对单引号和 双"-"进行转换等。
- 2.永远不要使用动态拼装sql,可使用参数化的sql或者直接使用存储过程进行数据查询存取。
- 3.永远不要使用管理员权限的数据库链接,为每一个应用使用单独的权限有限的数据库链接。
- 4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
- 5.应用的异常信息应该给出尽量少的提示,最好使用自定义的错误信息对原始错误信息进行包装
- 6.sql注入的检测方法通常采起辅助软件或网站平台来检测,软件通常采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS能够有效的防护SQL注入,XSS攻击等。