MySQL 相关

MySQL相关知识

一、表类型分析(MyISAMInnoDB的区别)

1.存储结构

MyISAM:每个MyISAM在磁盘上存储成三个文件,每一个文件的名字均以表名开始。扩展名支出文件类型。.frm文件存储表定义,.MYDmydata)文件存储表的数据,.MYImyindex)文件存储表的索引

InnoDB:所有的表都存储在一个数据文件中(也有可能是多个文件,或者是独立的表文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2G

2.存储空间

MyISAM:可以被压缩,存储空间较小。支持三种不同的存储格式:静态表、动态表、压缩表

InnoDB:需要更多的内存和存储,会在主内存中建立其专用的缓冲池用来高速缓冲数据和索引,但是不支持全文索引

3.事务支持(事务的四大特性:原子性,一致性,隔离性,持久性)

MyISAM:强调的是性能,每次查询均具有原子性,其执行速度比InnoDB类型更快,但是不提供事务支持

InnoDB:提供事务支持,外部键等高级数据库功能,是具有事务(commit)、回滚(rollback)和崩溃修复功能(crash recovery capabilities)的事务安全(transcation-safe)型表

4.CURD增删改查操作(createupdatereaddelete

MyISAM:如果执行大量的select操作,MyISAM是更好的选择,因为不支持行级锁,但是在增删的时候效率就会差好多,因为MyISAM支持表级锁。相反的是InnoDB支持行级锁但是不支持表级锁,所以删除插入的时候只需要锁定行就行,效率比较MyISAM高。

InnoDB:如果执行大量的insertupdate,处于对于性能的考虑,应该使用InnoDB

Delete从性能上来看InnoDB更优秀,但是delete from table的时候,InnoDB不会重新建立表,而是一行一行的删除,所以在InnoDB表上如果要清空保存有大量数据的表,最好使用truncate table命令

5.外键

MyISAM:不支持

InnoDB:支持

二、数据库的特点

1.数据结构化,具有完整性:防止数据库中存在不符合语义的数据及不正确的数据

2.数据的共享性高、冗余度低、易扩展

3.数据独立性高

4.数据有DBMS统一管理和控制

 

三、数据库的优化

1.选取最适合的字段属性,尽可能减少定义字段的长度,把字段设置为NOT NULL ,但是省份这些可选的字段,尽量设置成EUNM枚举类型字段

2.使用联合(union)来代替手动创建的临时表

3.使用事务处理,保证数据的完整性和安全性

4.合理使用查询语句,尽量避免全表扫描

5.建立索引

6.使用外键

7.https://blog.csdn.net/u014649204/article/details/24126871

四、SQL注入原理及如何防止SQL注入攻击

1.SQL注入原理

SQL命令扎入到web表单然后提交到所在页面请求(查询字符串),从而达到欺骗服务器执行恶意的SQL命令语句。它是利用现有的应用程序,将SQL语句插入到数据库中执行,所以执行的时候并非按照设计者原先意图的SQL语句进行执行查询。

2.SQL注入攻击产生的原因

程序并没有非常细致的过滤用户输入的数据,从而导致非法数据进入系统。SQL注入可以分为平台层注入和代码注入,平台层注入主要是由不安全的数据库配置和系统的漏洞造成的,代码注入主要是因为程序员卫队输入数据进行细致安全的检测。使得SQL注入攻击通过嵌入的方式放在了合法的HTTP提交请求中从而达到攻击者的某种意图。

3.基本步骤

基本步骤:

一、找到注入点;

 

二、判断当前表的字段;

三、用联合语句查看哪几位是有效位;

四、查看当前数据库中有哪些表;

五、查看表中有哪些属性;

六、查看表中具体的数据信息。

 

 

 

posted @ 2019-02-23 16:45  名字到底要多长  阅读(232)  评论(0编辑  收藏  举报