写在前面:这篇文章我将来介绍关于数据库的一些基础知识以及一些数据库的基本操作,帮助各位零基础小伙伴们快速入门数据库的操作知识,这里我们以MySQL做介绍
建议这篇文章和另外一篇文章一起食用,效果更佳
001:数据库初识
文章开头,我们来想一个问题:什么是数据库?
我们想想前面一篇文章,现在加入你写了一个简单的网页,然后你实现了登录等的操作,但是,如果你想要在这个网站上实现查询数据或者存储数据操作,你该如何实现呢?这就是我们要学到的数据库的作用了,很显然,数据库就是用来存储数据的仓库
结构:库 表 字段 记录
库由表组成,表由字段和记录组成
比如这样的图,dvwa就是一个库,guestbook就是一个表,表就有点像 Excel里的一个表,然后就是字段,字段就像是你在Excel表里面建立的一个表头,比如名字,年龄啊什么的,记录就是你在这个表里对应的表头下填充的数据
比如这样,姓名这个就是字段,夏辰就是字段里面的记录,这一整个就是一张表
002: 数据库结构改变
下面我们使用命令行来操作:
常用查询命令:
show databases 查看有什么库
show tables 查看有什么表
use 库名 进入某一个库
desc 表名 查看表的结构
查询之前我们要先登录,命令是:mysql -u用户名 -p密码 一般用户名是root,密码也是root
查询命令要以;结束
现在我们来选中库,比如test:use test;
然后我们查看表,顺便看看里面的字段内容 show tables; desc data;
这里name是名字,varchar是字符类型,int是整数类型,key是字段的约束条件
通过这些命令我们可以查看自己表的结构,然后我们该如何改变表的结构呢?再来看几个命令:
create database 库名 --建立数据库操作
drop database 库名 --删除数据库操作
create table 表名(字段名 字段类型,字段名2 字段类型...) ---创建表
drop table 表名 --删除表
alter table 表名 add 字段名 字段类型 --添加字段名
alter table 表名 drop 字段名 --删除字段名
alter table 表名 change 旧字段名 新字段名 新类型 --修改表内字段名
库中可以没有表,但是表里面不能没有字段名
下面我们来建一个库名,比如说就叫xiachen
(有的小伙伴在这里可能会出错,这个时候你可能是已经进入了某个库中,使用show databases;退出来就行)
然后建一个表名叫information,字段就给name varchar(255),age int(8),weight int(20);
(建表的时候要先进入库哦)
删除库、表、字段的命令小伙伴们可以自己尝试哦
下面我们再来看看如何向表里面添加字段,以及如何修改字段:
到这里我们就学会如何去查看库、表、字段和库、表的增删、字段的增、删、改、查了
003:增删改查
这里我们来学习对数据的操作
插入数据:
insert into 表名 values(值,值) //这种是依次插入
insert into 表名(列名1,列名2) value(值1,值2) //指定插入的字段
查询语句:
select *from 表名 where 条件
select 1字段名 from 表名 where 条件
修改数据:
update 表名 set 列名 = 新列值 where 列名=旧列值
update 表名 set 列名 =新列值,列名=新列值 where 列名=旧列值
删除数据:
delete from 表名 where 列名=列值
现在我们来向表里面插入数据:
如果我们采用 insert into 表名 values(值,值) 这种方式的话,那么我们输入的数据会被依次插入,而且这里我们有多少的字段就要填多少个值,否则就会报错:
还是我们之前建立的表:
发现报错
如果我们采用 insert into 表名(列名1,列名2) value(值1,值2) 这种方式,那么我们就可以指定某一个字段名,向那个字段里面插入数据,小伙伴们可以自行尝试
现在我们来看看查询语句:
再来看看更改语句:
值得注意的是,如果我们没有限制条件,这里就会自动更新一个字段的全部,像这样
还可以这样操作:
删除操作小伙伴们就自行尝试吧。
004:运算符和结果处理
这里讲讲我们常用的查询数据的处理方法:
结果排序:
order by 1 排序第一个字段
order by 字段名 排序写了字段名的字段
默认来说是升序的[asc],也可以改成降序[desc]
分页:
limit n,m 从第n行开始,取m行数据
多行数据一起输出:
gruop_concat()
为了方便演示,我建了一张新的表:
现在我们分别对name、age字段进行排序试试:
这里我也使用了limit 1,3,他表示的是从第一行开始,输出三行的数据,还有将几行数据在一行输出:
模糊查询:
like %a% 查询包含a的所有值
like a% 查询a开头的所有值
like %a 查询a结尾的所有值
休眠函数:
sleep() 服务器进入摸鱼模式,故意拖几秒返回数据
查询当前所在库:
select database();
数学运算符号:
+ - * / % 它和php中没有区别
逻辑运算符:
and or not
可以看到,当and两边条件都为真的时候,才会输出,而or只要一边条件为真,就会输出
好了,想要了解更多的小伙伴可以自己去百度一下更多的用法
005:联合查询和子查询
联合查询:
union 将两个语句的结果一起输出 ,重复的不输出
union all 将两个查询语句的结果一起输出,重复的也输出
要注意的是,这里要满足相同列数的条件
子查询:
在原本的SQL语句中写小括号,优先执行一个查询语句
如果说,在真实环境中,这里的列数不相等怎么办呢?
其实我们还可以用select name,weight,null union select *from info
这种添加空格的方式进行输出
看不懂的小伙伴建议百度自行学习
006:PHP与数据库的连接
在PHP速成文章中我们搭建了一个简单的登录页面,这次我们把数据库加进去来试试:
PHP的核心就在于操作数据库
我们来看看这几个函数:
mysqli_connect(链接地址,账号,密码,库名)
$conn=mysql_connect('localhost','root','root','xiachen')
mysqli_select_db(连接,库名)
mysqli_select_db($conn,'xiachen');
mysqli_query(连接,执行SQL语句)
$sql=insert into info value(88,'php')
mysqli_query($conn,$sql)
我们再phpstudy根目录创建一个22.php文件,然后写上:
<?php
mysqli_connect('localhost','root','rot','xiachen');
?>
这里是一个错误的密码:
可以看到我们的页面会报错,改一下:
输入正确的密码后页面正常
我们再来写这样的代码:
<?php
$conn=mysqli_connect('localhost','root','root','xiachen');
mysqli_select_db($conn,'xiachen');
//可以把变量conn理解为管道,也就是你操作的对象,你需要通过它操作数据库
$sqli='insert into info value(\'php\',66)';
mysqli_query($conn,$sqli);
?>
然后查询数据库发现我们填进去的php,66都被填入了数据库
这里的$sqli后面就是用来操作数据库的
$result=mysqli_query($conn,$sqli);
mysqli_fetch_array($result); //将数据库执行的结果转化为数组
学习了前面的知识,我们还要知道如何将数据库的数据进行输出呢?这里就有一个函数,mysqli_fetch_array他的作用是将数据转化成数组,小伙伴们可以使用var_dump输出看看
007:建站
学习了这么多,我们就来检验一下之前的学习成果吧。
这里我们搭建一个小网站,要求可以实现账号的注册登录功能,下面一起来做做吧
首先来写一个前端,要写什么呢?我们需要做两个框,一个是输入账号的框,一个是输入密码的框,还要有一个提交和一个注册按钮对不对?
新建一个index.php文件,我们来写这样一串代码:
<form action='dl.php' method='POST'> //将数据提交到dl.php文件里面
欢迎使用后台管理界面</br>
账号<input type='text' name='zhanghao'/></br> //账号输入框
密码<input type='password' name='mima'/></br> //密码输入框
<input type='submit' value='提交'/> //提交按钮
<button><a href='zhuce.html'>注册</a></button> //注册按钮,会自动跳转到zhuce.html页面
</form>
产生效果如下:
然后我们先来写后端登录代码:
<?php
$username=$_POST['zhanghao']; //将账号的值赋给变量$username
$password=$_POST['mima']; //将密码的值赋给变量$password
$conn=mysqli_connect('localhost','root','root','denglu'); //连接数据库
$sqli="select *from houtai where username='$username' and password=$password";//执行查询语句
$result=mysqli_query($conn,$sqli); //连接sqli
$ensure=mysqli_fetch_array($result); //将查询结果转换成数组
if($ensure['username']==$username and $ensure['password']==$password) //登录验证
{
echo '登录成功';
}
else
{
echo '登录失败';
}
?>
这里我们再连接之前首先要在数据库里新建一个denglu库,然后建一个houtai表,写上username,password字段
我们填上数据:
下面来登录看看:
登录功能写完了,下面我们再来看看注册功能:
新建一个文件zhuce.html
<form action='zhuce.php' method='POST'>
欢迎使用注册界面</br>
账号<input type='text' name='username'/></br>
密码<input type='password' name='password'/></br>
<input type='submit' value='注册'>
</form>
然后新建一个文件zhuce.php
<?php
$username=$_POST['username'];
$password=$_POST['password'];
$conn=mysqli_connect('127.0.0.1','root','root','denglu');
if($username==' ' and $password==' ')
{
echo '请重新输入';
}
else if($username and $password)
{
$sqli="insert into houtai(username,password) value('$username',' $password')";
$result=mysqli_query($conn,$sqli);
echo '注册成功';
}
else
{
echo '输入错误,请重新输入';
}
?>
下面我们看看效果:
我们注册一个账号比如admin 123
查询可以看到成功写入数据库:
然后我们再来登录看看:
登录成功
建站是不是很简单,小伙伴们自己尝试一下吧