Web学习_SQL注入_认识数据库

数据库的定义

数据库是结构化信息或数据(一般以电子形式存储在计算机系统 中)的有组织的集合,通常由数据库管理系统 (DBMS)来控制。在现实中,数据、DBMS 及关联应用一起被称为数据库系统,通常简 称为数据库。 简单来说,数据库就是一个由一批数据构成的有序集合,这个集合通常被保存为一个或多个彼此相关的文件。

数据库可分为:

关系型数据库:以行和列的形式将数据存储在一系列的表中,支 持用户便捷地访问、管理、修改、更新、控制和组织数据。支持 使用结构化查询语言 (SQL) 来编写和查询数据。有:MySQL、 Oracle、Microsoft SQL Server、Access等。

非关系型数据库:不是传统意义上的数据库,是一种数据结构化存储方法的集合,可以是文档或者键值对。有:MongoDb、 Redis、HBase等。

数据库管理系统:

数据库管理系统(Database Management System,简称DBMS) 是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安 全保障、备份等基础功能。它充当数据库与其用户或程序之间的接 口,允许用户检索、更新和管理信息的组织和优化方式。此外, DBMS 还有助于监督和控制数据库,提供各种管理操作,例如性能 监视、调优、备份和恢复。 常见的数据库软件或 DBMS 有 MySQL、Microsoft Access、 Microsoft SQL Server、FileMaker Pro、Oracle Database 和 dBASE。

数据库软件:

数据库软件旨用于创建、编辑和维护数据库文件及记录,帮助用户 更轻松地执行文件和记录创建、数据录入、数据编辑、更新和报告 等操作。除此之外,数据库软件还能处理数据存储、备份和报告以 及多路访问控制和安全性等问题。随着当今数据盗窃日益频繁,数 据库安全性已变得至为重要。数据库软件有时也称为“数据库管理系 统” (DBMS)。 数据库软件支持用户以结构化形式存储数据然后访问数据,能够极 大简化数据管理。它一般会提供图形界面来简化数据创建和管理, 在某些情况下,用户可以使用数据库软件来自行构建数据库。

结构化查询语言:

结构化查询语言(Structured Query Language),简称SQL,是一种 特殊目的的编程语言。SQL是一种数据库查询和程序设计语言,用 于存取数据以及查询、更新和管理关系数据库系统;同时也是数据 库脚本文件的扩展名。 目前几乎所有的关系数据库都使用 SQL 编 程语言来查询、操作和定义数据,进行数据访问控制。 无论用什么编程语言(Java、Python、C++……)编写程序,只要 涉及到操作关系数据库,比如,一个电商网站需要把用户和商品信 息存入数据库,或者一个手机游戏需要把用户的道具、通关信息存 入数据库,都必须通过SQL来完成。

数据库结构:

一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录。 我们可以通过MySQL客户端连接数据库管理系统DBMS,然后通过 DBMS操作数据库。可以使用SQL语句,通过数据库管理系统操作 数据库,以及操作数据库中的表结构及数据。

数据库和电子表格的区别:

数据库和电子表格(例如 Microsoft Excel)都可以便捷地存储信息,两者的主要区别包括:

存储和操作数据的方式

谁可以访问数据

可以存储多少数据

 从一开始,电子表格就是专门针对单一用户而设计的,其特性也反 映了这一点。电子表格非常适合不需要执行太多高度复杂的数据操 作的单一用户或少数用户。另一方面,数据库的设计是为了保存大 量有组织的信息,有时是海量的。数据库允许多个用户同时使用高 度复杂的逻辑和语言,快速、安全地访问和查询数据。

思考:为什么需要数据库

因为应用程序需要保存用户的数据,比如Word需要把用户文档 保存起来,以便下次继续编辑或者拷贝到另一台电脑。 要保存用户的数据,一个最简单的方法是把用户数据写入文 件。例如,要保存一个班级所有学生的信息,可以将数据写入 一个CSV文件: id,name,gender,score

1, 小明,M,90

2, 小红,F,95

3, 小军,M,88

4, 小丽,F,88

如果要保存学校所有班级的信息,可以写入另一个CSV文件。 但是,随着应用程序的功能越来越复杂,数据量越来越大,如 何管理这些数据就成了大问题: 读写文件并解析出数据需要大量重复代码; 从成千上万的数据中快速查询出指定数据需要复杂的逻辑。 如果每个应用程序都各自写自己的读写数据的代码,一方面效率低,容易出错,另一方面,每个应用程序访问数据的接口都 不相同,数据难以复用。 所以,数据库作为一种专门管理数据的软件就出现了。应用程序不需要自己管理数据,而是通过数据库软件提供的接口来读 写数据。至于数据本身如何存储到文件,那是数据库软件的事情,应用程序自己并不关心。

MySQL数据库

MySQL 是一种开源的基于SQL 的关系数据库管理系统。它专门针对 Web 应用进行设计和优化,可以在任何平台上运行。 互联网的兴起带来许多新的和不同的需求,MySQL 开始成为 Web 开发人员以及基于 Web 的应用的首选平台。它可以处理数以百万计 的查询和数以千计的事务,因此对于需要管理大量资金转账的电子 商务企业来说,MySQL 是一个受欢迎的选择。 目前全球许多顶级的互联网网站和基于 Web 的应用均采用 MySQL 作为 DBMS,例如 Airbnb、Uber、LinkedIn、Facebook、Twitter 和 YouTube。

安装:

PHPStudy 内置了 MySQL 数据库,启动了 PHPStudy 里的 MySQL 即可(单独安装会在安装完成后自动在后台运行)。

连接mysql数据库:

所有程序或者网站想要使用数据库,第一步就是连接到数据库。

方法一

使用 MySQL命令行这个工具连接MySQL,在 phpstudy\PHPTutorial\MySQL\bin目录下执行 mysql -uroot -p然后输入密码(root)进行认证,如果密码正确即可连接到MySQL服务器。

方法二

除了使用 MySQL命令行连接数据库之外,还有各种各样的数据库连接软件,比如MySQL Front、phpMyAdmin等。 进入phpStudy安装目录里的PHPTutorial\SQL-Front文件夹,双击 SQL-Front.exe即可启动该程序。

然后点击属性,输入Host、端口、用户、密码确定后打开即可登录到MySQL数据库。(这里我已经操作过了)。下图左侧分即是MySQL数据库中存在的数据库(其中部分为用户导入的数据库)。

方法三

以上方法是用户对数据库进行连接、管理,如果是网站如何连接数据库呢?以php语言开发的网站为例

<?php
 header("Content-Type: text/html;charset=utf-8");
 $servername = "localhost";
 $username = "root";
 $password = "root";
 // 创建连接
$conn = mysqli_connect($servername, $username, 
$password);
 // 检测连接
if (!$conn) {
 die("Connection failed: " . 
mysqli_connect_error());
 }
 echo "连接成功";
 ?>

数据库操作

数据库操作是指对数据库上的数据进行的一系列操作,包括读取数 据、写数据、更新或修改数据、删除数据等,可以使用增、删、 改、查概括。 但是应用程序对数据库进行操作的第一步首先就是要选中数据库。

连接数据库

方法一

在MySQL 命令行使用 show databases; 查看所有的数据库,使用 use database; 进行选择, database 为你想要选择的数据库名。 选中了之后所有的操作都是针对于选中的数据库,如果想要对其它 数据库进行操作,需要重新使用use命令选择其它数据库。

方法二

如果是在图形化的MySQL连接工具,只需要鼠标选中即可对被选中的数据库进行操作

方法三

如果是在php里,可以使用 mysqli_select_db函数对数据库进行选择

<?php
 header("Content-Type: text/html;charset=utf-8");
 $con = mysqli_connect("localhost", "root", "root");
 if (!$con)
  {
 die('Could not connect: ' . 
mysqli_connect_error());
  }
 $db_selected = mysqli_select_db($con,"dvwa");
 if (!$db_selected)
  {
 die ("Can\'t use test_db : " . 
mysqli_connect_error());
  }else{
 echo "你已选择dvwa数据库";
  }
 mysqli_close($con);

向数据库插入数据(增)

一个网站涉及到向数据库插入数据的功能有:新用户注册、留言、 评论等。

语法格式:insert into 表名(字段1,字段2,.......)values(值1,值 2,.......);

Example:

向dvwa数据库下的guestbook数据表插入数据

insert into guestbook(comment,name)

values('welcome','hello');

在网站里如何向数据库插入内容呢?其实语句是相同的,比如dvwa 靶场里的XSS (WWW\DVWA\vulnerabilities\xss_s\source)里的代码第16行,就是向数据库插入内容的代码

修改数据库的数据(改)

一个网站涉及到向数据库修改数据的功能有:

修改个人信息等。

语法格式:

update 表名 set 字段名=“值” 【where条件】;

注:where条件可选

区别:使用where条件,只会修改满足条件的行(记录);不使用where条件,会把字段的所有的值进行修改

Example:

update guestbook set comment='I love study'; update guestbook set comment='I love study' where name='daxuesheng';

向数据库查询数据(查)

一个网站涉及到向数据库查询数据的功能有:

查看个人信息、查看留言信息等。

语法格式:

select * from 表名; select */字段 from 表名 【where条件】;

 星号(*)为通配符,表示所有

where条件可选

Example:

select * from guestbook;

 select comment_id from guestbook;

 select * from guestbook where comment_id=1;

 select comment from guestbook where comment_id=1;

 删除数据库的数据(删)

一个网站涉及到向数据库删除数据的功能有:

删除用户、删除留言 等。

语法格式:

delete from 表名 where 条件;                      #注意:这里where是必须带上的。

Example:

 delete from guestbook where comment_id=2;

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值