目录
一:数据库的基本介绍:
数据库管理系统,专门用来存储数据(datebase) ;
存数据在服务器的硬盘上,最小的存储单位是文件,但是管理文件的方式就不同了。网站数据管理这些就不适合用word,表格等去存储数据了。客户端特别多的时候一些简单存储数据的工具就用不了了。
所以就研发了数据库管理系统,app(mysql、oracle、db2)php来连接数据库,然后返回到客户端。数据库管理系统可以准确的去发送数据,想要什么数据就发送什么数据,有一套专门管理数据的方式。(通过id等)该管理系统还可以允许多个(数据库)客户端同时访问和允许多个php文件(不同网站)同时调用数据。cs架构的软件。
把数据库管理系统(服务端)安装在服务器上,数据库客户端就可以通关自己的方式去使用同一个数据库。让数据进行加工处理(可以发送数据操作指令)
数据库为服务器上的硬盘。
客户端得给服务端下发指令即(sql 结构化查询语句)来控制数据库。不同的数据库的sql语句也有区别,不是完全互通的。
二:数据库的分类:(数据库管理工具)
关系型数据库:合并相同的信息,信息出处理较慢,会建立处理库的连接,排查相关的数据,但是占用的内存会少,把同样的信息存在同一张表里。
oracle数据库:
Mysql数据库:DBA数据库管理员。社区和企业版
MariaDB数据库:性能比Mysql的好,衍生出来的,开源的。
SQL Server数据库:微软的数据库
ACCess数据库:office办公软件,小的数据库。
sqlite数据库:
postgresql数据库:
非关系型数据库:比如快手视频等没有任何关系的视频。直接看视频,没有太多关联的数据,注重效率。一般都是两者相混合起来。
Memcached:完全依赖内存存储,有分布式功能。
Redis:支持持久化。
MongDb:高新能等
三:如何打开数据库
找到这个php下的文件夹,因为php下面本身就有mysql数据库,我尝试安装了虚拟机的数据库,但是一直没有成功,那就看看本机的数据库把,但是建议不用乱动本机数据库的内容,可以创建一个自己的数据库来练练。
在这个上面的文件框中输入cmd,前提是php里面的数据库的打开的状态。并且已经建立了数据库。
输入这条指令并且输入密码就可以打开自己的数据库了。密码在php中查看。
四:MySQl的基本语法:
centos是默认安装了数据库的,查看数据库:rpm -qa|grep mariadb
但是数据库得安装新的才可以去操作。
操作单元
库:mysql当数据量大的时候,会给每个网站去建立不同的库,在网站操作的时候只会调用相应的数据库。
表:相当于表头,存的是记录值。
记录(行数据):信息叫做的记录
Mysql的基本操作(增删改查):
1:show databases; //查看库
2:CREATE DATABASE (库的名称) //创建新的库。
库在磁盘上对于一个文件夹: cd 到/var/lib/mysql/
3:use mysql; //进入到某一个数据库中。use wordpress //进入到wordpress这个库中。
4:服务端对应的指令,你在客户端查看的。
5:show tables; //查看表。
6:select * from 表的名字(user); //查看表
7:select User,Password,Host form user; //查看表里面的相应列的数据,中间的是表的内容即列的名称。在磁盘上都有对应的文件去保存相应的数据。
8:CREATE DATABASE 数据库名 charset utf8; //给数据库指定编码。
9:create table 表名称 //创建表 有数据的前提条件下才可以去创建。
10:drop table 表名称 //删除表
11:select User,Password,Host form user limit 1; //查看表中的第一条数据
12://查看前2条数据。
13: select User,Password,Host form user limit 1,2 //查看中间两条记录,解释从索引为一的往下查看2行数据。表里面有索引记录值,第一行为0。包含一。
14: mysql -u root -p //用该指令在cmd命令行去切换到mysql里面去输入指令。
15:netstat -lntup //查看mysql是否启动
五:mysql授权:
在mysql中可以创建用户,可以给用户授予一定的权限。为了防止数据库被恶意或者无意篡改,所以数据库都有密码。所以就进行了分库,只能让一个网站去操作自己的网站
mysql一般情况下不允许远程登陆root的,root用户就是可以创建一个库并且给用户授权。
创建用户并且给用户授权。losthost只能本机登陆。
grant 操作(增删改查.all 是授予所有的权限)on 库名.表名 to 用户名@'192.168.195.%'identified by '123456' //授权操作的基本语法.其中%号指的是全部的意思,就是任意,也可以整个IP都是%。identified 是指定登陆的密码。on 是对谁来操作的意思。*代表所有的意思,所有库,所有表。
下边举例子。
1:grant all on . to root@'192.168.195.%' identified by '123456'; //允许用户在192这一ip地址段去远程登陆root用户。授权的同时,就创建了root这一用户。
2:grant all on wordpress.* to wordpress@'192.168.61.%' identified by '123456'; //将wordpress这个表里面的数据都分配给wordpress这个用户。创建后只能看到自己的库。
3:grant all on wordpress.t1 to jaden@'192.168.195.%' identified by '123'; //把wordpress这个库里面的t1表的所有权限分给jaden这个用户。顺便也创建了一个jaden用户。
4:all可以换成更加细致的权限。比如。select是查看权限,update是修改权限,delete是删除权限
5:这里我们学习单独创建用户的方法。
①creat user wang@'%' identified by '123' //单独创建用户,但是没有任何权利。
②grant all on wordpress.* to wang@'%' //给用户授权。
③drop user wang@'%' //删除用户的操作。
6:查看用户的信息:
slect user, password,host form user; //查看user里面的用户数量。
show grants for wang@'%'; //查看用户wang的权限。
7:给wang用户授权;
grant all on wordpress.* to wang@'%' //给wang用户授予wordpress所有权限。
8:revoke select on wordpress.* form wang@'%' //删除查询权限。update更新权限,delete删除权限等, 可以换的。
六:root等用户的密码修改
1:set password for root@localhost = password('123'); //修改root用户密码为123,就是在本机登陆的密码。
2:set password for root@‘192.168.195.%’ = password(‘123’) //@后面写的是哪个主机,就是user表里面对应的Host地址。
3:mysql -u wordpress -p123456 -h (写Host地址)在终端去登陆用户。
七:mysql里面的表的操作
在表数据进行存储的时候会定义数据类型,把数据分类,方便以后对数据的加工。表的列存储的数据类型的不同,类型得自己去设置。
int 年龄 计算
float 余额 计算(5.2)是整数5位,小数为2位
char 身份证密码 展示字符串的拼接必须标明字节的长度。
text 商品描述小说等多行信息。
enum 枚举 多选一 固定选项,比如京东的选择商品。
date 1970.1.10:0:到现在的截止时间时间等一般存储时间戳。
boolen 布尔类型的值
1:在创建表的时候就可以给表指定几行几列,各各列的数据类型是什么。
create table t1(id int,name char(10),price float(5.2));
2:desc t1 //查看表的结构,框架,field(表名)type Null等都是限制条件,只是看到表的结构。
3:insert into t1 value(1,"jaden",22.52) //向表内插入数据,value是插入一行表,()表示插入的数据,插入的数据数据类型得是和表的数据类型符合。
4:select *form t1; //查看t1表里面的所有的数据。
5:select name,price form t1 //查看表里面的name列和price列。
6: insert into t1 values(2,"jaden",22.52),(3,"xxx",54.15); //插入多条记录
7: insert into t1(id,name) value(4,"xxx"); //当插入的数据在部分不知道的情况下,可以通过指定来指定一部分的数据然后没有插入的数据就是NULL(可以通过增加表的条件来时它可以为空或者不可以为空)
8:可以通过增加表的条件来时它可以为空或者不可以为空 可以在创建表的时候来约束条件,来对填表的条件进行限制。
约束条件为: not null //该数据不能为空。
creat table t2 (id int,name char(10),phone char(11) not null);
//输入的phone不能为空。不然会报错。
default //default 100 是默认值为100的意思,在插入数据的时候没有写该数据时候默认的值。
unique //唯一不允许出现重复的值
auto_increment //自增
primary key //每个表里面只有一列为主建列,带上面的空,唯一,自增等属性。
unsigned //只能存正整数,默认的时候存的是正数和负数。
9:show create table t3 //查看MySQL真正创建表的时候,所执行的数据,就是在后台处理的时候的指令,你自己输入的指令是简化的。
10:当字符集不支持中文的时候输入中文的表的时候就会发送错误。在9中查看表的详细数据。通过在创建表的时候弄限制条件来让它可以去进行utf-8编码。
//create table t4(id int,title char(10),name char (10))default charest=utf8 //不用加-,而且对于限制条件加在表里面,对于所有的表的限制条件就加在表的外面。
11:展示表的限制条件如同库一样
//select * from t1 limit 1,3; //和索引值一样的意思。
//select * from t1 limit 2;
12改表:
13.desc t1 //查看表结构
14.alter table t1 modify name char (20) //该表的限制条件,修改字节的输入长度。
15.alter table t1 add age int; //增加一列新的数据,增加了年龄这一列的数据。默认加到最后一列
16:alter table t1 drop age; //删除表。
17:alter table t1 add age int first //把年龄列加到第一行去。
18:alter table t1 add age int after name; //把t1表插到name列的后面。
八:mysql里面表的行操作操作:or and 都可以用。
1:select * form t1 where name= 'wang'; //查询wang这一行的所有的数据。where指定查询的数据的位置。
2:delete from t5 where name='wang' and id=4; //删除name 是wang的这一行数据;and可以多添加删选。或者or也可以。
3:delete form t5; //删除t5表里面的所有的数据。
4:update t2 set phone='666666' //该表的数据。
5:update t2 set price=‘666666.6’ where name='wang'; // 仅仅去修改price下的wang的数据。指定修改的地方。
6:char和varchar的区别。前者的数据大小不变后面的数据大小随着数据而定,但是效率低。
九:对sql注入漏洞了解
SQL注入是一种常见的Web安全漏洞,形成的主要原因是web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。
注入产生的原因是后台服务器在接收相关参数时未做好过滤直接带入到数据库中查询,导致可以拼接执行构造的SQL语句。
web分为前端和后端,后端去处理数据,并且把数据存储到mysql里面。通过sql语句进行查寻数据,这些在1中已经说了数据库的理解了。
危害:
1:数据库信息泄露,root用户密码的获取
2:网站可能会被篡改,把这个库给增删改查。
3:放病毒木马,传播恶意软件
4:服务器被远程操控。
5:硬盘数据损害
常见的方式:
1:在url里面去?id 进行get传参。
2:http请求头
3:post传参。在输入用户密码的那个地方
4:cookie值