数据库、MySQL介绍及安装流程、SQL语句中增删改查、SQL注入、通过php操作数据库,plugin ‘caching_sha2_password加密规则,分表查询

MySQL数据库:

数据库:

存放数据的仓库,用来按照特定的结构去组织和管理我们的数据,有数据库就可以更加方便的储存数据;

数据库只是存储数据的一种手段,最终数据是存放在硬盘中的,只是存放的格式不同于文本文件。

我们选择MySQL,MySQL只是数据库中的一种;一个Excel表格就可以看做一个数据库。

下载MySQL:

在开发领域我们存储数据一般使用专门的数据库服务器提供的数据服务,如果要让自己的电脑可

以提供数据库服务,那么就需要安装特定的服务器软件,如:Oracle 、MySQL 、SQL Server,这里采用MySQL数据库,下载地址:https://dev.mysql.com/downloads/mysql/;将下载地址复制到浏览器回车选择对应版本的MySQL安装包,如:
在这里插入图片描述
点击download后会跳出一个登陆选项,此时仅仅点击如图所示即可:
在这里插入图片描述
安装MySQL流程:

将MySQL安装包下载并放到C盘中T文件夹(这里建议放到C盘,否则配置可能会有点麻烦),解压之后按照下面步骤依次进行:

1.以管理员权限运行cmd,如下图:
在这里插入图片描述
2.cd定位到当前MYSQL文件的bin目录下:
在这里插入图片描述
3.紧接着在命令窗口键入:mysqld --install ,命令安装MySQL(如果这里提示:找不到vcruntime140_1.dll,那么你需要安装 微软常用运行库合集,不知道的可以百度,或联系笔者找资源),如:
在这里插入图片描述
4.初始化数据库:紧接着在命令窗口键入:mysqld --initialize --console 命令,此时会得到一个随机密码Akrw#Jbve1(f,记住这个密码供修改密码时使用,如:(初始化成功后mysql文件夹中会多个data文件夹)
在这里插入图片描述
5.启动MySQL服务:在左下角搜索 服务应用 后找到MySQL启动,或者在命令窗口继续输入:net start MySQL 回车,如:
在这里插入图片描述
6.登陆MySQL服务:继续在命令窗口键入:mysql -u root -p 回车后输入临时密码再回车,root为数据库名,如:
在这里插入图片描述
输入临时密码后如图所示则表示登陆成功,若提示:Access denied for user ‘root’@‘localhost’ (using password: YES)则一般为密码输入错误:
在这里插入图片描述
7.修改临时密码:由于临时密码不便于记忆,因此一般会将数据库的密码修改为自己熟记的,其方法是进入数据库后键入:ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘自己的密码’; 注意:这个修改数据库密码的语句是SQL语句,后面记得加封号,否则修改失败,之后使用SQL语句exit退出MySQL用新密码登陆,如:
在这里插入图片描述
8.使用SQL语句操作数据库中的数据:下面会详细介绍SQL语句,这里只需要知道exit表示退出数据库即可。

9.关闭MySQL服务:在命令行使用exit退出SQL环境后键入:net stop mysql命令,如:
在这里插入图片描述
10.卸载MySQL服务:停止mysql服务后,在命令行键入:sc delete mysql 回车删除MySQL服务,之后再删除安装包。
MySQL的REPL环境对数据库的基本操作:

	List of all MySQL commands:Note that all text commands must be first on line and end with ';'?         (\?) Synonym for `help'.clear     (\c) Clear the current input statement.connect   (\r) Reconnect to the server. Optional arguments are db and host.delimiter (\d) Set statement delimiter.ego       (\G) Send command to mysql server, display result vertically.exit      (\q) Exit mysql. Same as quit.go        (\g) Send command to mysql server.help      (\h) Display this help.notee     (\t) Don't write into outfile.print     (\p) Print current command.prompt    (\R) Change your mysql prompt.quit      (\q) Quit mysql.rehash    (\#) Rebuild completion hash.source    (\.) Execute an SQL script file. Takes a file name as an argument.status    (\s) Get status information from the server.system    (\!) Execute a system shell command.tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.use       (\u) Use another database. Takes database name as argument.charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.warnings  (\W) Show warnings after every statement.nowarning (\w) Don't show warnings after every statement.resetconnection(\x) Clean session context.For server side help, type 'help contents'

MySQL数据可视化工具:

为了方便管理数据库中的数据,我们一般选择数据库的可视化工具来管理数据。常见的数据库可视化工具有:Navicat Premium,它是一个付费软件,可免费使用几天,下载地址为:http://www.navicat.com.cn/download/navicat-premium, 使用方法建议阅读官方文档:http://www.navicat.com.cn/products/navicat-premium,实际开发中推荐使用;

若只是简单管理一下数据库,那么推荐使用免费的:SQLyog,若想要使用请阅读官方文档:https://sqlyog.en.softonic.com/

提示:使用sqlyog链接数据库时常常会出现链接失败,这里有两个原因,1.服务器端口号没有开通(到服务器控制台开通3306端口号即可);2.新版mysql中加密规则不一致,会报错:plugin 'caching_sha2_password,如果是加密规则错误,需要修改加密规则,具体如下步骤:
1.cmd输入密码进入mysql后,继续键入命令:use mysql;命令连接权限数据库
2.继续键入命令:select user,host,plugin from user;查看user对应的host及加密规则
3.继续键入命令:
SQL语句:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123123123fgv';修改加密规则,注意@前后用户名和主机应该是上面查询到的表中一一对应的,否则更改失败且报错,123123123fgv为自己的密码
4.继续键入命令:flush privileges;刷新权限,看到ok则更新成功,退出数据库即可。
.5执行完上面步骤后,如果还是不能成功,如果确保端口号开通成功的情况下,继续执行命令:update user set host = '%' where user = ‘root’;后再次flush privileges;刷新权限即可。

数据库的基本概念:数据库服务软件和数据的仓库。

sql语句中的注释是:-- ,特别提醒:查询语句返回的是第一个结果集,而增删改语句返回的是一个受影响的行数。

SQL语句中的增删改查:

	基本查询数据语句:select * from users;---不知道表里有什么数据的时候使用*通配符,不建议使用通配符,因为会全表扫描降低效率select id from users;select id, title, name from `users`;select `id`,`title`,`name` from `users`;---为了区分关键字使用反引号把要查询的名字引起来。select `foo` from users;---查询表中没有的字面量,返回所查询的字面量新增数据语句:insert into users values (null,`esd`,`码子`,`14`,`0`);---这里写null的原因是为了撑开某项(id项)insert into users value (null,`esd`,`码子`,`14`,`0`);insert into users (title,name,age,gender) value ('CEO','麦子',18,50);---如果不想撑开id这个项,而且不报错的情况下可以用前后括号一一对应。    子语句:意思是不能单独执行,必须配合 删除 修改 查询语句。例如:删除语句:delete from users;---删除表中的所有数据。delete from users where title = 'ufo';--where语句可以配合and或者是or使用。delete from users where title = 'ufo' and id = 2;delete from users where title = 'ufo' or id = 3;delete from users where title = 'cyh' and id > 1;delete from users where id in (1, 2, 3, 4);---指定id在1,2,3,4中。delete from users where id = 1 or 1 = 1;//需要注意:这里id条件表示1或者1=1,此时where条件失效,会删除掉所有的users数据,这种现象叫SQL注入,实际开发中应该避免这种情况的出现,其解决方法介绍一种:在客户端要求只输入数字类型或者服务端如php中使用(int)转整数,不允许输入字符串型,单纯的数字是无法进行SQL注入的。修改语句:update users set title ='CEO';---修改所有数据的title为CEO。update users set title ='CEO' where id in (1, 2, 3, 4);update users set title ='CEO'`name`='张三'`age`='18' where id = 2;---更新多个数据时,用逗号隔开。  常见的查询函数:count()函数:select count(id) from users;select count(具体的值) from users;---count()函数一般时查询具体的值select count(1) as count from users;---使用as使得列的名字更加明确,这里列的名字是count。select max(id) from users;---查询id的最大值;select min(id) from users;---查询id的最小值;select avg(id) from users;---求id的平均值;分页查询语句:select * from users limit 2;---limit这个函数只传一个参数时,是限制的取几条数据,默认取前面的几条数据。select * from users limit 32;---limit函数传两个参数时,第一个参数表示越过前(3)几条数据取(2)几条数据。分页查询规律:skip = (page-1)*length----越过的数据条数limit <skip> , <length> 分页查询常和order by 搭配使用,表示以什么字节排序,语句后面什么也不写表示默认升序asc,降序desc,如:order by time desc;//表示以time字节降序排序。查询一个表中关联另一个表中某字节的所有数据:inner join 表示关联,on 后面跟上关联表相互之间的关系select *from usersinner join student on users.id = student.id;//查询users表中users的id和student表中id相同的所有数据。查询一个表中关联另一个表中某字节的一些数据:表名后面跟 点和字节名 表示某表的具体字节select users.id,users.name,student.agefrom usersinner join student on users.id = student.idinner join person on person.id = users.id;//查询users表中id和student表及person表中id相同的users中的id、name、age	//根据某个字段分组且根据另一个字段的最大值显示每一组某系字段的数据:
SELECT id,pid,D1,D2,`subTime` FROM `data` WHERE `subTime` IN ( SELECT MAX(`subTime`) FROM `data` GROUP BY pid) AND pid IN (60,61)	特别注意:下面只能查到两个字段的值:
SELECT pid,MAX(D1) FROM `data` WHERE pid IN (60,61) GROUP BY pid;	// 分表查询:第一个from()小括号中应该是一个变量,根据数据库中有几个对应的表再生成查询的语句,多个表用union all或union连接,中间as 名称不能丢,这样可以查询多个相同类型的表中的所有数据:
SELECT * FROM ((SELECT * FROM test1) UNION ALL (SELECT * FROM test2)) AS result WHERE timer > '2020-01-12' AND timer < '2022-9-23' ORDER BY timer DESC;	// 查同一张表中第一条数据和最后一条数据:常用于计算一段时间区间数据的递增值(提示:SQL Serve不支持此语句,SQL server可以将两条语句写为同一个,中间用空格连接,此时会有两条影响结果,拿到影响结果即可,其中limit在某些数据库中不支持)
SELECT * FROM (SELECT * FROM `cumulative_62` WHERE pid=62 ORDER BY id ASC LIMIT 0,1) AS `a` UNION SELECT * FROM (SELECT * FROM `cumulative_62` WHERE pid=62 ORDER BY id DESC LIMIT 0,1) AS `b`	 

在这里插入图片描述

通过php操作数据库:

实际开发中是通过后端语言对数据库进行操作的,这里使用php操作MySQL的基本流程如下:

	 //1.建议php与MySQL的连接桥梁:mysqli_connect(数据库ip地址,用户名,密码,数据库名称),如:$connection = mysqli_connect('127.0.0.1','root','kuhai123','test');//2.设置字符编码:查询中文时会遇到编码问题,因此在查询之前需要使用:mysqli_set_charset(连接对象,编码格式)设置,如:mysqli_set_charset($connection,'utf8');// 开发中通常会判断是否连接数据库成功,若果在确保连接成功的情况下可以省略此判断,如:if(!$connection){exit('连接数据库失败');}else{exit('连接数据库成功');};//3.操作数据库://mysqli_query(连接地址,'查询语句')得到的是一个对象,这个对象可以被一行一行的拿数据,如:$query=mysqli_query($connection,'select id from users;');//因为$query中的数据是以对象的方式一条一条的储存的,要想拿到一条数据,就要使用mysqli_fetch_assoc(查询返回的对象)对$query进行操作,默认只会拿到第一条数据,想要拿到多条就的执行多次此语句,通常使用遍历,如:$row=mysqli_fetch_assoc($query);var_dump($row);$row=mysqli_fetch_assoc($query);var_dump($row);//受影响行数:当需要知道查询是否成功时,可以使用mysqli_affected_rows(连接桥梁对象)返回桥梁上受影响的函数,如:$nth = mysqli_affected_rows($connection);var_dump($nth);//4.释放查询数据集:当对一个数据操作完后,应该使用:mysqli_free_result(数据集对象)释放空间,如:mysqli_free_result($query);//5.拆桥:在3操作数据库中可能会同时查询多个数据,当所有数据查询完毕后需要将这个桥梁关闭,如:mysqli_close($connection);

提示:实际开发中可能会遇到各种错误,此时需要根据实际情况作出处理;当数据库的信息错误时会提示错误信息,如果不想让这个提示信息出现在客户端,可以修改php配置文件php.ini中的display_errors=‘off’;或者在mysqli_connect前面加@符号,如:@mysqli_connect();

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chartjs和echartsjs库简介

chart.js和echarts.js: 尽管我们已经掌握了canvas绘图和SVG矢量图&#xff0c;在实际开发中我们依旧不会使用canvas和SVG&#xff0c;因为考虑到开发成本&#xff0c;一般会采用相关的图表库进行辅助开发&#xff0c;市面上常用的图表库有chart.js和echarts.js&#xff1b;如果…

弱智的我

【你能看到多少个人头? 】 0—4张: 弱智; 5—8张: 一般人; 9—11张: 特别感性; 11—13张: 精神分裂. 晕倒, 我是弱智的...就看到一个人头...转载于:https://www.cnblogs.com/zhangzujin/p/3877222.html

typecho和wordpress模板了解、开发流程介绍、前台后台前端后端区分

网站模板搭建网站&#xff1a; 使用网站模板搭建网站很简单&#xff0c;只需要将相关文件放到你自己的服务器上面&#xff0c;之后在进行相关的配置即可。这里给大家介绍两款网站模板&#xff1a; typecho&#xff1a; 是一个轻量高效&#xff0c;简单操作就能搭建网站的模板…

在浏览器端调试代码并直接修改原文件、移动端虚拟键盘中实现搜索按钮

在浏览器端调试代码并直接修改原文件&#xff1a; 此调试方法可以避免在浏览器调试完代码后在到原文件手动修改代码的弊端&#xff0c;其具体方法如下&#xff1a; 1.先将要调试的页面在浏览器&#xff08;Google&#xff09;打开&#xff0c;这里小编打开桌面test文件夹中的…

Bootstrap简介、下载bootstrap及引入文件说明、响应式容器和满屏容器、栅格系统

Bootstrap简介&#xff1a; Bootstrap是Twitter&#xff08;推特&#xff09;开发的&#xff0c;目前最受欢迎的前端开源框架&#xff0c;基于jQuery用于开发HTML、CSS、JavaScript&#xff0c;简洁灵活&#xff0c;常用于开发响应式布局及移动端开发。其中文官方文档&#xf…

openerp child_of操作符深度解析

child_of 此操作符&#xff0c;从代码来看&#xff0c;等价于&#xff1a; [(x,child_of,id)] > x.prarent_left >id.parent_left && x.parent_left < id.parent_right , 求x&#xff08;的集合&#xff09;。 为了形象的说明&#xff0c;我们一步步来&…

当ASP.NET Forms验证方式遭遇苹果IOS

一、问题出现 我在用ASP.NET MVC4做微信开发的时候&#xff0c;用Forms验证方式做为authentication。 一般都是在web.config加&#xff1a; <authentication mode"Forms" ><forms loginUrl"~/Account/Login" name"webcookies" sliding…

bootstrap中轮播图、模态框、提示框/弹出框、滚动监听、弹性布局、响应式flex、多媒体对象

轮播图&#xff1a; bootstrap封装了轮播图的功能&#xff0c;其具体如下&#xff1a; 类名描述.carousel创建一个轮播图块的容器&#xff0c;实质是做布局用&#xff1b;且此容器应该有一个di属性&#xff0c;其属性值提供给下面左右按钮href锚点值&#xff0c;用于左右按钮…

node简介及安装、下载及运行hexo

node简介&#xff1a; 1.node.js的可以打开服务端的黑盒子及高级前端(Vue、React 、Angular)的学习&#xff0c;例如&#xff1a;文件的读写、网络服务的构建、网络通信等。 2.node.js是操作服务器的一种工具&#xff0c;构建于Chrome的v8引擎之上&#xff0c;可以操作服务器…

Repository 仓储,你的归宿究竟在哪?(一)-仓储的概念

写在前面 写这篇博文的灵感来自《如何开始DDD(完)》&#xff0c;很感谢young.han兄这几天的坚持&#xff0c;陆陆续续写了几篇有关于领域驱动设计的博文&#xff0c;让园中再次刮了一阵“DDD探讨风”&#xff0c;我现在不像前段时间那样“疯狂”了&#xff0c;写博文需要灵感&a…

浏览器基础知识

Web浏览器的主要功能是展示网页资源&#xff0c;即请求服务器并将结果展示在窗口中。工作原理大概如下&#xff1a; 地址栏输入URL 浏览器根据输入的URL查找域名的IP地址&#xff0c;DNS查找过程如下&#xff1a; 浏览器缓存——浏览器会缓存DNS记录一段时间&#xff0c;不同浏…

喜用神最正确的算法_各种电磁仿真算法的优缺点和适用范围(FDTD, FEM和MOM等)...

从实际工程应用的角度谈一下我对这几种算法的理解。先说结论&#xff0c;FDTD算的快但是不精确&#xff0c;可以用来算电大尺寸的物体&#xff0c;要是一个物体的尺寸大于10个波长&#xff0c;一般的服务站是跑不动FEM的&#xff0c;那必须得用FDTD了。FEM最经典的电磁仿真软件…

护士资格证延续注册WEB服务调用失败_服务熔断

熔断机制是应对服务雪崩效应的一种微服务链路保护机制&#xff0c;当扇出链路的某个微服务不可用或者响应时间太长时&#xff0c;会进行服务的降级&#xff0c;进而熔断该节点微服务的调用&#xff0c;快速返回”错误”的响应信息。当检测到该节点微服务响应正常后恢复调用链路…

db2 删除索引_MYSQL进阶——索引

索引模型hash索引hash索引主要适用于等值查询的场景&#xff0c;排序&#xff0c;模糊搜索等场景并不适用有序数组有序数组可用于非等值查询&#xff0c;排序等场景&#xff0c;但是由于写数据时需要对数组中的元素进行位移&#xff0c;所以一般用于静态数据的场景二叉树二叉树…

react 导航条选中颜色_调整安卓手机的颜色以更好地查看一切

并非所有人都有相同的区分颜色的能力。我们对屏幕上色彩配置的需求甚至口味可能会因人而异。幸运的是&#xff0c;Android为我们提供了多种本地工具&#xff0c;能够调整手机的颜色。我们的手机显示数百万种音调&#xff0c;这些音调是由屏幕配置或终端如何解释从某些应用程序接…

linux进程调度之 FIFO 和 RR 调度策略

转载 http://blog.chinaunix.net/uid-24774106-id-3379478.html linux进程调度之 FIFO 和 RR 调度策略 2012-10-19 18:16:43分类&#xff1a; LINUX 作者&#xff1a;manuscola.beangmail.com 博客地址&#xff1a;bean.blog.chinaunix.net 最近花了10几天的时间&#xff0…

echarts 获取点击的y轴数值_有机磷酸催化对醌的不对称直接加成反应合成轴手性芳基醌类化合物...

有机磷酸催化对醌的不对称直接加成反应合成轴手性芳基醌类化合物本文作者&#xff1a;Summer轴手性联芳基二醇骨架广泛存在于天然产物、生物活性分子、有用的手性配体以及催化剂中(Figure 1a)&#xff0c;因此&#xff0c;轴手性联芳基二醇化合物的合成受到广泛关注且已经取得了…

H264解码的一个測试程序

网上看到的一个H264视频格式的解码測试程序&#xff0c;能够用来參考其逻辑流程。 代码例如以下&#xff1a; Test_Display_H264(){ in_fd open(H264_INPUT_FILE, O_RDONLY); //video file open fstat(in_fd, &s); …

spring框架 web开发_go语言web开发框架学习:Iris框架讲解(一)

Golang介绍Go语言是谷歌推出的一种全新的编程语言&#xff0c;可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说&#xff1a;我们之所以开发Go&#xff0c;是因为过去10多年间软件开发的难度令人沮丧。谷歌资深软件工程师罗布派克(R…

linux终端的背景_如何在终端显示图像缩略图 | Linux 中国

lsix 是一个简单的命令行实用程序&#xff0c;旨在使用 Sixel 图形格式在终端中显示缩略图。-- Sk不久前&#xff0c;我们讨论了 Fim[1]&#xff0c;这是一个轻量级的命令行图像查看器应用程序&#xff0c;用于从命令行显示各种类型的图像&#xff0c;如 bmp、gif、jpeg 和 png…