目录
主流数据库简介
DBMS(数据库系统管理系统)
数据库系统(Database System),是由数据库及其管理软件组成的系统。
数据库系统DBS(Data Base System,简称DBS)通常由软件、数据库和数据管理员组成。
其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。
典型的网站体系结构
数据库模型
数据库元素之间的关系,提供了用于组织数据的框架
事务持久性:数据在事务处理前后应保持一致与持久。
容错与恢复:当发生硬件或软件故障时,应能够保持原始状态
多用户共享:数据应该都能够被多用户同时访问且不危及数据的完整性,即数据加锁
安全控制:包括访问控制、完整性检查和视图定义等。
数据库分类
早期比较流行的数据库模型有三种,分别为层次式数据库、网络式数据库和关系型数据库。而在当今的互联网中,最常用的数据库模型主要是两种,即关系型数据库和非关系型数据库。
关系型数据库关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。通过SOL结构化查语句存储数据,保持数据一致性,遵循ACID理论 (ACID,指数据库事务正确执行的四个基本要素的缩写包含:原子性 (Atomicity)、一致性 (Consistency)隔离性 (Isolation)、持性(Durability))。.
关系型数据库的典型产品: MySQL、SQLServer、Oracle等非关系型数据库非关系型数据库也被成为NoSOL数据库,NOSOL的本意是“Not 0lnly SOL”指的是非关系型数据库而不是“NoSOL"的意思,因此,NOSOL的产生并不是要彻底地否定非关系型数据库,而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。NOSOL典型产品: memcached (纯内存)、redis(持久化缓存)、mongodb (文档的数据库)
主流数据库
Microsoft SQL Server
SQL Server 是Microsoft 公司推出的关系型数据库管理系统具有使用方便可伸缩性好与相关软件集成程度高等优点从旧版本的个人电脑到运行Microsoft Windows server 的大型多处理器的服务器都可以使用
MySQL
MySQL是现在非常流行的的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
Oracle数据库
是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
PostgreSQL
PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)稳定性极强,用于安全地存储数据
Memcaced
Memcaced是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的web应用,最初版本由LiveJoumal的Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用户都在使用它来架构主机的大负载网站或提升主机的高访问网站的响应速度。
Memcached是一种纯内存缓存系统,把经常存取的对象或数据缓存在memcached的内存中,这些被缓存的数据被程序通过API的方式被读取,memcached里面的数据就像一张巨大的hash表数据以key-value对的方式存在。
Memcached之反射拒绝服务攻击技术.
Redis
redis也是一个key-value型存储系统。但redis支持的存储value类型相对更多,包括string(字符串)、list(链表)、set (集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作。
Redis未授权访问漏洞
MongoDB
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富最像关系数据库的。它支持的数据结构非常松散,是类似ison的bson格式,因此可以存储比较复杂的数据类型。
Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB远程代码注入漏洞
数据库接口语言
开放式数据接口(ODBC)
ODBC:一般指开放数据库连接 (Open DatabaseConnectivity,ODBC)是为解决异构数据库间的数据共享而产生的。
ODBC为异构数据库访问提供统一接口,允许应用程序以SOL为数据存取标准,存取不同DBMS管理的数据使应用程序直接操纵DB中的数据,免除随DB的改变而改变。用ODBC可以访问各类计算机上的DB文件,甚至访问如Excel表和ASCII数据文件这类非数据库对象。
JAVA数据库连接(JDBC)
JDBC(Java DataBase Connectivityjava数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
IDBC提供了一种基准,据此可以构建更高级的工具和接口使数据库开发人员能够编写数据库应用程序
可扩展标记语言(XML)
XML是万维网联盟(W3C)用于结构化文本文件的标准,以使数据的格式和数据本身可以在内部网和互联网之间共享XML的格式可以用中性的格式表示数据,独立于数据库,应用,以及底层的DBMS
对象链接与嵌入数据库(OLEDB)
OLEDB(OLEDB)是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化查语言 (SQL)能力还具有面向其他非SQL数据类型的通路。
ActiceX 数据对象 (ADO)
ActiveX 是一个开放的集成平台,为开发人员、 用户和 Web生产商提供了一个快速而简便的在Internet 和Intranet 创建程序集成和内容的方法。 使用 Activex.可轻松方便的在 Web页中插入 多媒体效果、 交互式对象、以及复杂程序,创建用
户体验相当的高质量多媒体CD-ROM。
根据微软权威的软件开发指南MSDN (Microsoft Developer Network)的定义ActiveX插件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。
CVE-2012-0158漏洞: MSCOMCTLOCX漏模块是ofce解析activex控件用到的一个动态库,如果一个office文档中包含activeX这类控件元素的话,比如按钮、列表树形控件等,当文档通过office打开时MSCOMCTL.OCX就会被自动载入ofice程序的进程空间被调用来解析和显示控件。
MySQL数据库连接方法
1、命令行下连接:[root@host]# mysql -u root -p
3、PHP连接: mysqli_connect(host,username,password,dbname,port,socket)
3、第三方软件连接
识别数据库方法
识别数据库方法
盲跟踪Web应用技术不同数据库SQL语句差异
非盲跟踪报错、直接查询
报错信息:
MySQL报错信息:
MSSQL报错信息
Oracle报错信息:
利用字符串连接方式去匹配数据库产品:
数据库版本查询
Mssqlselect @@version
MySQLselect version() / select @ @version
Oracle select banner from $version
Postgresql select version()
Oracle版本查询
Mysql版本查询
Mssql版本查询
数据库版本在字符串处理时的区别
根据网页编程语言去判断
常见的搭配:ASP和NET: Microsoft SQL Server
PHP: MySQL、PostgreSQL
Java: Oracle、MySQL
SQL语法基础
用于与关系型数据库交互的标准 SQL 命令有
CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP
分为三组
1.数据定义(Create、Drop)
2.数据操纵(Select、Insert、Update、Delete)
3.数据控制(Grant、Revoke)
SQL基本操作:
CUD=Create 创建
CREATE DATABASE testdb;
CREATE TABLE table name(column name column_type)
J=Update 更改
JPDATE table_name SET field1=new-value1,field2=new-value2 [WHERE Clause]
D=Delete 删除
[WHERE ClauseDELETE FROM table name
SQL基本操作
创建数据库college
创建数据库college中的表offices
向数据库college中的表offices中添加数据
修改表offices中的某一行的数据
删除表offices中的某一行数握
SQL高级操作:
排序,分组,限定条数
排序 order by
SELECTFROM test table ORDER BY userid;分组group bySELECT name,COUNT() FROM test table GROUP BY name限定条数limit
SELECT *FROM test table limit 010
SELECT FROM test_table limit 1,5;组合使用SELECTFROM test table LIMIT 050RDER BY userid;
(1) order by用法:用来确定字段数
order by:要是后面跟着的数字超出了字段数的时候,则会报错!通过这个可以确定字段数。
(2)limit用法
select *from table limit m,n 其中m是指记录开始的index,从0开始,表示第一条记录n是指从第m+1条开始,取n条
两个参数:
第一个是偏移量,第二个是数目
select * from employee limit 3,7;// 返回4-11行
selectfrom employee limit 3,1;// 返回第4行
一个参数
selectfrom employee limit 3;// 返回前3行
(3)group by语句:
根据(by)一定的规则进行分组(Group)。
作用:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
注意:group by 是先排序后分组;
group by 必须有“聚合函数”sum()、count()、avg()来配合才能使用
当查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:
1.执行wherexx对全表数据做筛选,返回第1个结果集
2.针对第1个结果集使用group by分组,返回第2个结果集
3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。
4.针对第3个结集执行havingxx进行筛选,返回第4个结果集
5.针对第4个结果集排序
(4)联合查询union
因为查询语句构造问题,可直接否认掉之前的查询,执行一个全新的语句来执行”需严注意的是查询的列应当和之前对应。