
数据库
Geffin
欲戴王冠,必承其重
展开
-
BOSS:你连什么是 SQL 注入都不知道,我怎么给你加薪?
1 什么是 SQL 注入? 所谓 SQL 注入,便是指黑客将 SQL 代码嵌入在输入参数之中,在未经过滤的情况下直接拼接到 SQL 语句之中进行解析并执行的一种攻击方法。 2 一个 SQL 注入的简单例子 我们来模拟一个登录场景,大家平时登录网站什么之类的需要啥呢?没错,账号密码!于是,我们的登录界面一般都是这个样子。。。 当我们输入账号密码按下回车之后,会向后台返回账号密码两个参数。 ht...原创 2020-03-18 11:22:00 · 2890 阅读 · 4 评论 -
数据库入门之学习《MySQL实战45讲》第41讲-第45讲笔记
《MySQL实战45讲》第41讲 怎么最快地复制一张表? 怎么在两张表中拷贝数据 如果可以控制对源表的扫描行数和加锁范围很小的话,我们简单地使用 insert … select 语句即可实现。当然,为了避免对源表加读锁,更稳妥的方案是先将数据写到外部文本文件,然后再写回目标表。这时,有两种常用的方法。 mysqldump 方法 一种方法是,使用 mysqldump 命令将数据导出成一组 INSER...原创 2019-07-17 20:20:46 · 430 阅读 · 0 评论 -
数据库入门之学习《MySQL实战45讲》第36讲-第40讲笔记
《MySQL实战45讲》第36讲 为什么临时表可以重名? 内存表与临时表 内存表,指的是使用 Memory 引擎的表,建表语法是 create table …engine=memory。这种表的数据都保存在内存里,系统重启的时候会被清空,但是表结构还在。除了这两个特性看上去比较“奇怪”外,从其他的特征上看,它就是一个正常的表。 而临时表,可以使用各种引擎类型 。如果是使用 InnoDB 引擎或者...原创 2019-07-16 18:29:53 · 855 阅读 · 0 评论 -
数据库入门之学习《MySQL实战45讲》第31讲-第35讲笔记
《MySQL实战45讲》第31讲 误删数据后除了跑路,还能怎么办? 误删数据分类 使用 delete 语句误删数据行; 使用 drop table 或者 truncate table 语句误删数据表; 使用 drop database 语句误删数据库; 使用 rm 命令误删整个 MySQL 实例。 误删行 如果是使用 delete 语句误删了数据行,可以用 Flashback 工具通过闪回把数...原创 2019-07-14 01:32:07 · 418 阅读 · 2 评论 -
数据库入门之学习《MySQL实战45讲》第26讲-第30讲笔记
《MySQL实战45讲》第26讲 备库并行复制模型 其实,所有的多线程复制机制,都是要把只有一个线程的 sql_thread,拆成多个线程 coordinator 就是原来的 sql_thread,不过现在它不再直接更新数据了,只负责读取中转日志和分发事务。真正更新日志的,变成了 worker 线程。 coordinator分发时遵守的规则 不能造成更新覆盖。这就要求更新同一行的两个事务...原创 2019-06-15 13:09:14 · 317 阅读 · 0 评论 -
数据库入门之学习《MySQL实战45讲》第6讲-第10讲笔记
《MySQL实战45讲》第6讲 MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。 全局锁 顾名思义,全局锁就是对整个数据库实例加锁。当整个库处于只读状态的时候,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。 全局锁的典型使用场景是,做全库逻辑备份。也就是把整库每个表都 select 出来存成文本。 表级锁 My...原创 2019-05-31 23:54:07 · 360 阅读 · 0 评论 -
数据库入门之学习《MySQL实战45讲》第16讲-第20讲笔记
《MySQL实战45讲》第16讲 如何显示随机信息 mysql> select word from words order by rand() limit 3; 该方法比较简单,但是需要使用临时表,同时需要执行排序操作。 MySQL 的表是用什么方法来定位“一行数据”的 如果把一个 InnoDB 表的主键删掉,是不是就没有主键,就没办法回表了? 其实不是的。如果你创建的表没有主键,或者把一...原创 2019-06-01 19:30:38 · 472 阅读 · 0 评论 -
数据库入门之学习《MySQL实战45讲》第21讲-第25讲笔记
《MySQL实战45讲》第21讲 加锁规则 该加锁规则,包含了两个“原则”、两个“优化”和一个“bug”: 原则 1:加锁的基本单位是 next-key lock。希望你还记得,next-key lock 是前开后闭区间。 原则 2:查找过程中访问到的对象才会加锁。 优化 1:索引上的等值查询,给唯一索引加锁的时候,next-key lock 退化为行锁。 优化 2:索引上的等值查询,向右遍历时...原创 2019-06-12 20:56:27 · 454 阅读 · 0 评论 -
数据库入门之学习《MySQL实战45讲》第1讲-第5讲笔记
《MySQL实战45讲》第1讲 MySQL 的基本架构 MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层:包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL的大多数核心服务功能,以及所有的内置函数,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 存储引擎层:负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、...原创 2019-05-28 21:55:27 · 1012 阅读 · 13 评论 -
数据库入门之学习《MySQL实战45讲》第11讲-第15讲笔记
《MySQL实战45讲》第11讲 使用前缀索引的优势 使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本。 使用前缀索引的问题 使用前缀索引可能会增加扫描行数,这会影响到性能。 使用前缀索引就用不上覆盖索引对查询性能的优化了。 字符串字段创建索引的方法 直接创建完整索引,这样可能比较占用空间; 创建前缀索引,节省空间,但会增加查询扫描次数,并且不能使用覆盖索引; 倒...原创 2019-05-31 17:08:54 · 304 阅读 · 0 评论 -
数据库入门(2)--MySQL基础知识
什么是存储过程?有哪些优缺点? 存储过程是一些预编译的SQL语句。更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。存储过程是一个预编译的代码块,执行效率比较高,一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信...原创 2019-05-27 20:54:05 · 359 阅读 · 0 评论 -
数据库入门之SQL基础总结
1 创建一个数据库 CREATE DATABASE databasename 2 删除一个数据库 drop database dbname 3 创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 4 删除表 DROP TABLE tablename 5 增加列 Alt...原创 2019-05-27 20:17:39 · 600 阅读 · 0 评论