数据库、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,一经查实,立即删除!

相关文章

可能 delphi7 下稳定的最后一版本 GDIPLUS

可能 delphi7 下稳定的最后一版本 GDIPLUS 可能 delphi7 下稳定的最后一版本 GDIPLUS万一的 blog 说"终于, Delphi XE2 携带 GDI 库了使用了较早的 http://www.progdigy.com"但这个网址已经下不了了,而 http://www.bilsen.com/gdiplus 的又要 delphi2009 以后版本,另…

ajax背景、ajax对象、ajax状态、ajax与http、ajax请求数据接口、同步与异步、ajax请求XML数据、封装ajax函数、artTemplate简介、同源策略和跨域请求、JSONP

AJAX简介&#xff1a; ajax背景&#xff1a; 1.AJAX(Asynchronous JavaScript And Xml)异步的 JavaScript 和 XML:ajax是浏览器提供的一套API&#xff0c;最早出现在谷歌浏览器&#xff0c;是在浏览器端进行网络编程(发送请求、接收响应)的技术方案。它可以使我们通过JavaScr…

我的第一个项目(人力资源管理之报表管理)

2014年暑期实习老师要求的是人力资源管理系统&#xff0c;组队后组长分配给的任务是报表管理。 我做的报表管理&#xff0c;主要的功能是用户输入查询的时间区间和查询部门&#xff0c;然后将数据据库返回的数据显示在浏览器上。用户可以选择是否生成excel表格&#xff08;表格…

jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)

jQuery中使用ajax&#xff1a; 在jQuery中使用ajax首先需要引入jQuery包&#xff0c;其引入方式可以采用网络资源&#xff0c;也可以下载包到项目文件中&#xff0c;这里推荐下载包到文件中&#xff1b;市面上有多个版本的jQuery库&#xff0c;这里到官网&#xff1a;https://…

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

POJ 1201

d[i]表示在[0,i]这个区间内一共选了d[i]个数 对于每个为[ai,bi]的区间&#xff0c;你必须在这个区间上至少取ci个不同的整数&#xff0c;用d[i]如何表示&#xff1f; d[ bi ]-d[ ai-1 ] > ci Edge:(ai-1 -> bi) val ci 另外&#xff1a; 0<d[i]-d[i-1]<1 对应边Ed…

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

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

*[topcoder]IncrementingSequence

http://community.topcoder.com/stat?cproblem_statement&pm12107 此题想了半天&#xff0c;当时瞥到了Greedy&#xff0c;所以就想着贪心&#xff0c;最后的方法又纸上画了一下应该是对的。就是排序后依次看是不是满足要求。证明就是如果对数字X&#xff0c;有a和b都能够…

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

在浏览器端调试代码并直接修改原文件&#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…

JavaScript和jQuery的学习

还有12天就要回学校了&#xff0c;我的假期计划还能实现吗&#xff1f;在这12天里&#xff0c;需要把JavaScript和jQuery学完。我知道这两个技术对于前端网页开发非常重要。前期把HTML和CSS学完了&#xff0c;学的不是特别深&#xff0c;只是简单的过一下&#xff0c;自认为HTM…

bootstrap中语义化标签、字体风格、文本布局、列表排列、特殊字体颜色及特殊背景颜色

语义化标签&#xff1a; bootstrap中提供一些语义化标签&#xff0c;它们自带样式&#xff0c;这里介绍几个样式比较明显的语义化标签&#xff1a; <!-- 1.bootstrap中mark标签定义一个有淡黄色背景的文本 --> <p><mark>hello</mark></p><!…

asp.net使用MVC4框架基于NPOI做导出数据到Excel表

NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。NPOI是构建在POI 3.x版本之上的&#xff0c;它可以在没有安装Office的情况下对Word/Exc…

bootstrap中表格、修饰图片、浮动、背景框、提示框及关闭提示框、元素淡入淡出及jQuery中操作类名

表格&#xff1a; bootstrap中用类定义了几个风格的表格&#xff0c;使用时给table标签加上类名即可&#xff0c;具体如下&#xff1a; 类名描述.table基础表格&#xff1a;标题加粗&#xff0c;只有水平的淡灰色边框线条&#xff0c;没有垂直方向的线条.table-striped条纹表…

系统数据监控

系统数据监控。 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; using Arch.CFramework.CLoggingAdapter; using Ctrip.Mobile.AppDownload.Utility;namespace Ctrip.Mobile.AppD…

bootstrap中单个按钮、按钮组、徽章、进度条

单按钮&#xff1a; 背景按钮&#xff1a;bootstrap提供了具有特殊意义背景的按钮样式&#xff0c;使用时只需给自己的按钮(button、input、a)加bootstrap提供的类名即可&#xff0c;其具体如下&#xff1a; 类名描述.btn基本按钮&#xff1a;灰色、有高度、宽度自适应、没有…

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;我们一步步来&…

bootstrap中分页、面包屑导航、列表组、卡片、下拉菜单、折叠

分页&#xff1a; 分页功能是当遇到数据很多时&#xff0c;如果都放到一个页面上&#xff0c;那么找起来很不方便&#xff0c;而且不利于性能。此时采用分页功能就能很好的优化用户体验&#xff0c;可是如果自己开发分页功能&#xff0c;那么就会影响开发效率&#xff0c;boot…

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

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