飞道的博客

数据库、MySQL介绍及安装流程、SQL语句中增删改查、SQL注入、通过php操作数据库

283人阅读  评论(0)

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,如:

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.修改临时密码:由于临时密码不便于记忆,因此一般会将数据库的密码修改为自己熟记的,其方法是:SET PASSWORD = ‘kuhai123’; 注意:这个修改数据库密码的语句是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/

SQL语句:

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

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> 
    查询多个表关联的数据:select *
    					 from users
    					 inner join student on users.id = student.id;//查询users和student中id相同的数据。

通过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联系笔者删除。
笔者:苦海


转载:https://blog.csdn.net/weixin_46758988/article/details/116368575
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场