开学前的快乐------小白的MySQL最基本使用操作学习记录

Posted 敲代码的xiaolang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开学前的快乐------小白的MySQL最基本使用操作学习记录相关的知识,希望对你有一定的参考价值。


前言

通过mysql的学习,使其与php进一步结合。本文中的MySQL准确来讲应该是MariaDB,不过MySQL写起来更方便,所以就统一写成MySQL了。


MySQL基础

MySQL是什么?

数据库是“按照数据结构来组织、存储和管理数据的仓库”。数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务。
优点

1.数据库按一定的数据模型组织、描述和存储
2.可为各种用户共享
3.冗余度较小、节省存储空间
4.易扩展,编写有关数据库的应用程序

初始环境

之前笔者简易写过mysql的搭建: 从入坑到不放弃-----centos7系统软件安装方法及网站环境搭建,但是今天学习时,发现写的还是不够严谨,因为笔者使用的是centos7系统,似乎已经不支持mysql了,参考这篇文章: CentOS 7为什么放弃了MySQL,而改使用MariaDB?,其实具体原因我也不清楚,既然好像不适合,那么我们换一下就好了。
如果你装过mysql之类的东东,我们先卸载,而且要卸载干净,方法: Centos7 完全卸载mysql

安装

 yum -y install mariadb-server mariadb //安装扩展包
 systemctl start mariadb //启动服务
mysql -u root //登录数据库
systemctl enable mysqld //开机自启

然后我们安装完进入数据库后,使用命令:

show databases;

搭建完成后是这个样子的:

初次使用show databases的时候,出现问题,就是没有任何数据库出现,解决方案:show databases没有任何数据库出现,mysql的使用
之后又遇到了一个问题,就是感觉出不去了,而且前面也乱七八糟的:

解决方案:MySQL命令输错,命令行出现 ‘>,而不是箭头->

可算整完了。。。
然后我们正式进入学习模式:



成功信息

MySQL命令

登陆命令

mysql -h host_name -uuser_name -ppassword
// -h :当连接MySQL服务器不在同台主机时,填写主机名或IP地址
   -u:登录MySQL的用户名
   -p∶登录MySQL的密码
注意:密码如果写在命令行的时候一定不能有空格

建议使用下面的第二种写法,因为安全性高,别人搞渗透的时候,使用history命令也是不会找到你的密码的,要是用第一种,你的密码就暴露在了别人的眼中~

常用命令

显示所有数据库: show databases;
选定默认数据库:use dbname;
显示默认数据库中所有表: show tables;
放弃正在输入的命令:lc
显示命令清单:h
退出mysql程序:lq
查看MySQL服务器状态信息:ls



数据类型

感谢菜鸟大大的总结(我懒得作图了。。。关键人家总结的还蛮不错)
连接:https://www.runoob.com/mysql/mysql-data-types.html


SQL基础语句

建立数据库

create database 数据库名
//创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建它的适当权限,则此语句失败

我们创建一个冰冰的数据库:

建立数据表

CREATE TABLE table_name (column_name column_type);
//create table表名(
       列名1 列类型 [<列的完整性约束>],
       列名2 列类型 [<列的完整性约束>],
....);

//在当前数据库下新创建一个数据表,列类型为表示该列的数据类型。


显示表结构

mysql> desc test_table;
// 用于显示表的创建结构查看表test_table的表结构


删除数据表

DROP TABLE table_name ;


删库

drop database <数据库名>;
//务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。
//以后为删库跑路做准备 ~ ~ ~ 这里就不演示了

更改表结构

alter table表名action;

add 列名建表语句 [first | after列名]
可以为表添加一列,如果没指定first或者after,则在列尾添加—列,否则在指定列添加新列。
add primary key (列名)
为表添加一个主键,如果主键已经存在,则出现错误。
modify列名<建表语句>[first | after列名]
可以更改列类型和列名称,如果原列的名字和新列的名字相同。
drop列名
可以删除一列。
rename as新表名
更改表名。

我们向刚才的baby里面添加一行性别的数据:

插入记录

INSERT [INTO]<表名>[列名] VALUES<值列表>
//如果表名后面没写字段名,则默认是向所有的字段添加值,另外字符串值应该用"′或""引号括起来


插入多行数据

INSERT INTO<表名>[列名]VALUES(<列名值>),(<列名值>),(<列名值>)...

更新数据行

UPDATE<表名>SET<列名=更新值>[WHERE<更新条件>]
//where子句是判断语句,用来设定条件,限制只更新匹配的行,如果不带where子句,则更新所有行数据


删除记录

DELETE FROM <表名> [WHERE<删除条件>]
//此语句删除表中的行,如果不带where子句,则删除整个表中的记录,但是表不被删除



查询

SELECT column_name,column_name
FROM table_name;

或者

SELECT * FROM table_name;


PHP与MySQL的结合

为什么要结合?

MySQL是一款广受欢迎的数据库,由于它是开源的半商业软件,所以市场占有率高,而且PHP具有强大的数据库支持能力。

PHP访问MySQL的一般步骤

数据库函数

笔者写一些基础的函数,写多了意义也不大,详细数据库函数可以参考:https://www.runoob.com/mysql/mysql-functions.html
mysql_connect( )

mysql_connect('hostname ';'username' ;'password');
// 连接数据库的函数

mysql_select_db( )

mysql_select_db ( string数据库名[,resource link_identifier] );
或 mysql_query("use数据库名"[,resource link_identifier]);
// 选择数据库

我们写一个新的留言板,这次把mysql加进去,让他更有灵魂。


我们本地访问一下,数据库连接成功了:

然后我们选择要使用的数据库:

然后访问:

错误记录
使用mysql_select_db.php和mysql_connect.php均无反应,加载出来的是空白界面。
解决方案:

# yum -y install php-mysql
# yum install php-mysql php-gd
 //先安装php与mysql的扩展
# systemctl restart httpd.service
# systemctl restart mariadb.service
//重启阿帕奇和数据库的服务

mysql_query( )

mysql_query(string query [,resource link_identifier])
//对数据库中的表进行操作
//如果SQL语句是查询指令select,成功则返回查询后的结果集,失败则返回"false” 
//如果SQL语句是insert、delete、update等操作指令,成功则返回"true”,失败则返回"false"

本地访问:

可以发现数据库中有了新增的信息:

mysql_fetch_array( )
从数组结果集中获取信息

mysql_fetch_array(data,array_type)
//data:资源类型的参数,要传入的是由mysql_query)函数返回的数据指针
//array_type: 可选,规定返回哪种结果

mysql_fetch_odject()
获取查询结果集中的数据

mysql_fetch_odject( data)
//返回的是一个对象,该函数只能通过字段名来访问数组。


返回的结果为:

???这是个啥,啊!玛卡巴卡,知道了!

array(6)
{
[0]=> string(3) “520”
[“id”]=> string(3) “520”
[1]=> string(8) “bingbing”
[“name”]=> string(8) “bingbing”
[2]=> string(5) “women”
[“sex”]=> string(5) “women”
}
// 对比下面的图片,发现只是输出了第一行的数据,然后, [0]=> string(3) "520"就好比我们正常理解中的数组, [“id”]=> string(3) “520” 就如同一个关联的数组,与一些属性相关联。


我们如果感觉不方便查看,可以使用循环进行输出:

PHP文件

在PHP中,可以在服务器执行PHP文件之前在该文件中插入一个文件的内容
如果一个文件中对应的功能已经写好了,那么想要在其他PHP文件中使用,必须要保证该文件中的代码都进入到里面,而且彼此间有关联才可,也就是文件包含。

include
直接看一个栗子:
我们写两个php代码

<?php
	$a=1;
	$b=3;
?>
// include.php
<?php
	include 'include.php';
	echo $a+$b;
?>
// include2.php

查看结果:

注意: include不是函数,而是语言结构。

详细的PHP文件包含参考:https://www.runoob.com/php/php-includes.html

留言板(初级)

我们创建一个留言板的数据库:

MariaDB [liuyanban]>  create table bingbing(id int auto_increment primary key,title varchar(30),content tinytext);
// int auto_increment primary key 自增长key值
// tinytext 短文本字符串

然后我们进行前端的编写:

然后对add.php,也就是往数据库里面添加数据的PHP代码进行编写:



然后我们下面需要两件事情,一是让留言显示在一打开的界面上,二是如何调用数据库,并且达到优化的效果,这里就可以用到PHP文件的相关知识,我们可以把调用数据库那一堆给弄到一个文件里面去,我们先写数据库的php文件:

然后把上面的代码引用到前后端当中:
先让留言在前端显示:

然后在后端中引用:

最后本地访问一下:


然后就出现乱码,查阅资料,发现是编码格式的问题,然后查阅大量解决方案,解决方案是:https://www.cnblogs.com/zenmeshini/p/8148939.html,但是! 笔者当时好像发现没有什么用处,后来又在度娘的不断搜索下,有位博主的博文写出了关键部分:
https://blog.csdn.net/daijiguo/article/details/78102622,
截一下关键部分:

也就是我们创建好的这些,他们的编码方式是不会再变的了,只有你新建一个数据库,才会沿用新设置的配置
笔者简单再建一个 “可爱” 的数据库:

然后建个新的表,查看编码形式:

代码总结

把上述留言板代码附在下面:

//index.php文件
<html>
<head>
	<title>留言板</title>
</head>
<body>
<form action="add.php" method="POST">
	<p>title :</p>
	<input type="text" name="title"></input>
	<p>content :</p>
	<textarea cols="60" rows="9" name="content"></textarea>
	<br>
	<input type="submit" value="提交"></input>
	<br>
</body>
</html>

<?php
	include 'conn.php';
	$sql = 'select * from bingbing';
	$result = mysql_query($sql);
	while($rows = mysql_fetch_array($result))
	{
		echo 'id : '.$rows['id'].' <br>';
		echo 'title : '.$rows['title'].'<br>';
		echo 'connect :'.$rows['content'].'<br>';
	}
	mysql_close($conn);
?>

//add.php文件
<?php
	include 'conn.php';
	
	if(empty($_POST['title']) ||empty($_POST['content']))
{
	echo '<script>alert("请输入标题或者内容");window.history.back(-1);</script>';
}
	else
{
	$title = $_POST['title'];
	$content = $_POST['content'];
	$sql = "insert into bingbing(title,content) values('$title','$content')";
	$result = mysql_query($sql);
	if($result)
	{
		echo '<script>alert("留言成功");window.history.back(-1);</script>';
	}
	mysql_close($conn);
}
?>

//conn.php文件
<?php
	$server = 'localhost';
	$username = 'root';
	$password = 'xiaolang';
	$db = 'liuyanban';
	$conn = mysql_connect($server, $username, $password);
	if(!$conn)
	{
		echo '连接失败!';
		exit(0);
	}
	$select = mysql_select_db($db,$conn);
	if(!$select)
	{
		echo '数据库选择失败!';
		exit(0);
	}
?>

总结

感觉mysql的东西还是很多的,这里只是写了很基础的东西,笔者优化了文章排版,每一步都尽量配图解释,让没学过这部分知识的小白更好的理解,也方便自己日后查阅回顾。

实际学习中,每个人都可能由于所选配置环境不同,从而出现各种问题,最好的办法就是上网查阅,然后记录下来。

以上是关于开学前的快乐------小白的MySQL最基本使用操作学习记录的主要内容,如果未能解决你的问题,请参考以下文章

UOJ136 开学前的作文

小白开学Asp.Net Core 《十》

大学一年之后竟如此。。。开学前的挣扎

大学一年之后竟落到如此地步。。。开学前的挣扎

二月の宁静(春节快乐!)

软件工程概论总结