php学习 13 数据库的操作--mysql编程

一、数据控制语言

    数据控制语言,就是对mysql的用户及其权限进行管理的语句;

  1.用户管理

    用户数据所在位置

      在mysql中的所有用户,都存储在系统数据库mysql中的user表中;

      

    创建用户

      形式: create user  ‘用户名’@‘允许登录的地址/服务器’  identified  by ‘密码’;

      说明:

        1.允许登录的地址服务器就是允许该设定的位置,来使用该设定的为用户名和密码登录,其他位置不行

        2.可见,mysql的安全什么验证需要三个信息。

      

      

    删除用户

      drop  user  ‘用户名’@‘允许登录的地址或服务器名’;

      

    修改用户密码

      修改自己的密码:

        set password = password(‘密码’);

      

      修改他人的密码(要有权限):

        set password  for ‘用户名’@‘允许登录的地址’ = password(‘密码’);

         

  2.权限管理

    权限是什么呢?

      mysql数据库,将其中所能做的所有事情,都分门别类分配到大约30个权限中去了,其中每个权限都是一个“单词”而已!比如:

        select  代表可以查询数据;

        update  代表可以修改的数据;

        delete  代表可以删除数据;

        ......

      其中有一个权限叫做all,其代表所有权限

      

      另一个表现形式:

      

    授予权限

      形式:

        grant  权限列表  on 某库.某对象  to  ‘用户名’@‘登录位置’ [identified by ‘密码‘];

      说明:

        1.权限列表就是多个权限的名词,相互之间逗号分开;

        2.某库.某对象,表示给指定的某个数据库的某个下级单位附权;

        3.identified by 可以省略,如果不省略,就可以表示赋权限的同时也去修改它的密码;但是该用户不存在,此时就是在创建一个新用户,密码就必须要设置了。

      

      

    剥夺权限

      形式:

        revoke  权限列表  on  某库.某对象  from ‘用户名’@‘允许登录的位置’;

         

二、事务控制语言

  1.什么叫做“事务”

    事物就是来保证多条增删改语句的执行的一致性:要么执行,要么不执行,只有这两种情况;    

  2.事务的特点

    原子性:一个事物中的所有语句,应该做到:要么全做,要么一个都不做;

    一致性:让数据保持逻辑上的‘合理性’,比如:在一个商品出库的时候,既让商品库中的该商品数量-1,又要让对应用户的购物车中的该商品+1;

    隔离性:如果多个事物同时并发执行,但每个事物就像各自独立执行一样;

    持久性:一个事物执行成功,则对数据来说应该是一个明确的硬盘数据更改(而不仅仅是内存中的变化)。

  3.事务模式

    事务模式是指:

      在我们的cmd命令行模式中,是否开启了“一条语句就是一个事务”的这个开关;

      默认情况下,这个模式是开启的,称为“自动提交模式”;

        set autocommit = 1;

        这样之后,每条增删改语句,就会立即生效;

      我们可以把它关闭,那就是‘人为提交模式’------即需要人为提交;

        set autocommit = 0;

      在这样更改之后,所有增删改语句,都必须使用commit时候才能生效;

      

      

      

  4.事务执行的基本流程

    1.开启一个事物

      start transaction;//这里也可以写成begin

    2.执行多条增删改语句;

    3.判断这些语句执行的结果情况,并进行提交或回滚;

        if(没有出错){

          commit;//这里是提交事务;此时就是一次性完成;

        }else{

          rollback;//回滚事务;此时就是全部撤销;

        }

      

三、mysql编程

  1.mysql编程语句中语句块包含符

    mysql语句中的语句包含符其实就相当于js或者php中的大括号;

        [标示符] begin

          要执行的语句.......

        end [标示符]

      举例: if(条件判断)

            begin

              //......

            end;

          end if;

              

  2.流程控制语句

    if语句

      

    case语句

      它相当于php中的switch;

      

    loop循环语句

      

    while循环

      

    repeat 循环

      

    leave语句

      leave 标示符;

      其作用是用来退出begin...end结构或其他局有标示符的结构。   

  3.mysql中的变量

    mysql中,有两种变量形式;

    普通变量:不带“@”符号;

      定义形式:

        delare  变量  类型名 [default 默认值];//普通变量必须先这样定义;

      赋值形式:

        set  变量名 = 值;

      取值就直接使用变量名;

      使用“场所”:只能在“编程环境”中使用;

        什么是编程环境?只有3个:

          1.定义函数的内部;

          2.定义存储过程的内部;

          3.定义触发器;

     会话变量:带“@”符号:

       定义形式:

         set  @变量名 = 值; //跟php类似,无需定义,直接赋值;

       基本上在任何地方都可以使用

     变量赋值有如下形式:

       语法1(针对普通变量)

          set  变量名 = 表达式; 此语法中的变量必须先使用declare声明

       语法2(针对会话变量)

          set  变量名 = 表达式; 此方式无需要declare语法声明,而是直接赋值,类似php定义变量并赋值。

       语法3(针对会话变量)

          select @ 变量名 = 表达式;#此一举会给变量赋值,同时会作为一个select语句输出结果集;

       语法4(针对会话变量)

          select 表达式 into @变量名;此句虽然看起来是select语句,但其实并不输出结果集,而只是给变量赋值。

      

  4.存储(函数)过程procedure

    函数,也被说成“储存函数”,其实就是js或者php中所述的函数,但是其唯一的区别就是:这里的函数必须有一个返回值;

    定义形式:

      

    注意:

      在函数内部,可以使用各种变量和流程控制的使用;

      在函数内部,也可以有各种增删改语句;

      在函数内部,不可以有select或其他“返回结果集”的查询类语句;

      

    调用形式

      跟调用内部函数一样,比如:

      select now();

      或如果在编程语句中:

      

    删除函数

      drop  function 函数名;

    存储过程 procedure

      存储过程,其本质还是函数-----但是:不能有返回值

      定义形式:

        

      说明:

        in:用于设定该变量是用来接受实参数据的,即传入数据;默认不写就是in

        out:用于设定该变量是用来“存储存储过程中的数据”的,即传出,即函数中必须对他赋值;

        inout:是in 和out 的结合,具有双向作用;

        对于,out和in设定,对应的实参,就是“必须”是一个变量,因为该变量是用于“传出传入数据”;

    调用存储过程

      call 存储过程名(实参1,实参2......)

      它应该是在“非编程环境中”调用,即增删改查的场景下:

      举例:

        创建一个存储过程

        该存储过程的目标就是将三个数据存入数据表中;并返回该表的值

      

      举例(使用in ,out, inout)

      

        

    删除存储过程

      drop procedure  存储过程名;

  5.在php中使用存储函数或者存储过程的示意

      

  6.触发器

    含义

    触发器,也就是预先定义好的编程代码(跟存储过程和存储函数一样),并右一个名字。它不能调用,而是在某个表发生某个事件(增删改)的时候会自动调用起来。

    定义形式

        create trigger 触发器名  触发时机 触发事件  on  表名  for  each  row as

        begin

        //触发的语句

        end;

    说明:触发时机只有两个:before   ,after

        触发事件,只有三个:insert,update,delete

       在某个表进行insert 之前或之后,回去执行其中写好 的代码;即每个表只有6个情形会可能调用该触发器;

      通常,触发器用于对某个表进行增删改操作的时候,需要同时去做另外一件事的情形;

      在触发器的内部,有两个关键字代表某种特殊的含义,可以用于获取有关数据:

      new  它代表当前正要执行的insert或update的时候的“新行”数据;通过他,可以获取这一新行数据的任意一个字段的值,形式为:

      set @vq = new.id//获得该新插入获update行的id字段值

      old:它代表当前正要执行的delete的时候的“旧行”数据,通过它,可以获取这一旧行数据的任意一个字段的值,形式为:

       set @va = old.id //获得该新插入获update行的id字段的值(前提是有id)     

      

        

        

 

时间: 2024-11-08 20:21:33

php学习 13 数据库的操作--mysql编程的相关文章

MySQL学习——有关数据库的操作语句

MySQL学习——有关数据库的操作语句 摘要:本文主要学习了使用DDL语句对数据库进行操作的方法. 创建数据库 语法 1 create database [if not exists] 数据库名 2 [default] character set 字符集名 3 [default] collate 校对规则名; 实例 1 mysql> create database if not exists demo 2 -> default character set utf8 3 -> defaul

MySQL数据库学习2 - 数据库的操作

一.系统数据库 二.创建数据库 三.数据库相关操作 四.了解内容 一.系统数据库 执行如下命令,查看系统库 show databases; information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等 performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件.锁等现象 mysql: 授权库,主要存储系统用户的权限信息 test: M

mysql数据库----python操作mysql ------pymysql和SQLAchemy

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import pymysql 4 5 # 创建连接 6 conn = pymysql.connect(

python学习之数据库mariadb操作

数据库简介数据库分类关系型数据库:指采用了关系模型来组织数据的数据库.关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织.主流的关系型数据库有:Oracle.Microsoft SQL Server.MySQL.PostgreSQL,SQLite.MariaDB(MySQL的一个分支)Microsoft Access.SAP.非关系型数据库:指非关系型的,分布式的,以键值对存储且结构不固定,可以减少一些时间和空间的开销.非关系型数据库都是针对某些特定的

数据库-python操作mysql(pymsql)

pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同 一:安装pymysql pip3 install pymysql 二:使用pytmysql # -*- coding:utf-8 -*- __author__ = 'shisanjun' import pymysql #创建连接 conn=pymysql.connect(host="192.168.0.121",port=3306,user="admin",password=&qu

【PHP+MySQL学习笔记】php操作MySQL数据库中语句

1.连接 MYSQL 服务器的函数 mysql_connect();<?php $con = mysql_connect("localhost","root","123456");if (!$con){ die('Could not connect: ' . mysql_error());}?> 2.选择数据库 <?php mysql_select_db("david", $con);?> 3.执行SQ

学习简单数据库表操作(Mysql)1

以orcl实例下,person表为例: 1.登录mysql: mysql安装路径下,bin目录,打开命令窗口,输入mysql -u用户名 -p密码; 2.显示所有实例,show databases; 3.进入orcl实例,use orcl; 4.显示person表字段信息,desc person; 5.修改字段描述,alter table person change pid PID int(11) not null; 6.修改表名,alter table person rename to peo

学习简单数据库表操作(Mysql)2

以orcl实例下,person表为例: 1.登录mysql: mysql安装路径下,bin目录,打开命令窗口,输入mysql -u用户名 -p密码; 2.显示所有实例,show databases; 3.进入orcl实例,use orcl; 4.显示person表字段信息,desc person; 5.修改字段描述,alter table person change pid PID int(11) not null; 6.修改表名,alter table person rename to peo

python基础教程学习笔记---(7)python操作mysql

1.基本介绍: python标准数据库接口为python DB-API,它为开发人员提供了数据库应用编程接口,可以支持mysql.Oracle.MSSQL.Sybase等多种数据库,不同的数据库需要下载不同的DB-API模块. DBI-API是一个规范,它定义了一系列必须的对象和数据库存取方式,以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口. python DB-API的使用流程是: ①引入API模块:②获取与数据库的连接:③执行SQL语句:④关闭数据库连接. 2.什