码迷,mamicode.com
首页 > 数据库 > 详细

mysql控制语句

时间:2018-02-01 23:10:22      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:sts   变量赋值   数据   命令行   回滚   ret   php   控制   cti   

mysql中的用户信息都存储在系统数据库mysql的user表中

创建用户:

create  user  ‘用户名’@’允许其登录的地址’  identified  by  ‘密码’;

注:创建的用户需同时指定该用户可以在哪个地址进行登录(例:localhost) ,“%”代表任何地址

删除用户:

drop user ‘用户名’@’允许其登录的地址’;

修改用户密码:

修改自己密码: set  password = password(‘新密码’);

修改他人密码(必须有修改权限):

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

分配权限:、

grant 权限名1,权限名2, ....  on  数据库名.对象名 to  ‘用户名’@’允许其登录的地址’  identified by

注:1.ALL 表示“所有权限”

  2.对象名:就是一个数据库中“装”的东西,表是最常见的,也可以是视图,存储过程,存储函数等。

  其中:*.*表示所有数据中的所有对象

  3.密码可以不写

  4.如果用户不存在密码必须写

删除权限:

  revoke  权限名1,权限名2, ....  on  数据库名.对象名 from  ‘用户名’@’允许其登录的地址’ ;

事务:

  “事务”是一种可以保证“多条语句一次性执行完成”或“一条都不执行”的机制。

用法:

  事务可以看作是一个“容器”,将多条语句,放入该容器,最后,只要一个命令行,来决定其中的所有语句是否“执行”。

运用场景:

现在,test1突然需要一笔钱,买iPhone6,向test2借钱4000。

银行转账:

  第一步: update  cunkuan  set 存款=存款-4000  where id=2;

  第一步做完,突然断电了!

  第二步: update  cunkuan  set 存款=存款+4000  where id=1;

  则如果没有事务,就可能发生这种事情(惨案)。

特点:

  mysql默认安装好之后,其事务模式是:一条语句当作一个事务。

事务设定:

  set  autocommit = 0;           //false,关闭该模式,即此时不再是一条语句一个事务了。

  //结果是:必须使用commit语句才能够生效。

注意:autocommit的设置值,只是影响通常情况下都每条语句的默认行为(自动提交还是等着commit提交)

判断流程

  if( 判断是否有错误){

  //执行——才针对执行了物理性改变——即生效。

  commit;

 }

  eslse{

  //回滚——不执行任何语句。

  rollback;

 }

mysql编程:

  if语句:与php中用法类似

  case语句:(类似php中的switch)

  while循环语句:

  [标识符,用于退出] while 条件 do

    语句块

  end whilep[标识符,用于退出]

MySQL变量

  普通变量的声明语法:

  declare 变量名 变量类型 [default 初始值]

变量的赋值语法

  set 变量名 = 变量值

mysql还有一种变量形式,可以称为“会话变量”

  会话变量的形式为:  @变量名;

  会话变量无需单独声明,而是直接赋值就可以,类似php

  会话变量的赋值:  set  变量名 = 值;

  会话变量可以在普通命令行环境中或编程环境中使用。

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

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

语法3:select @变量名 := 表达式;#此语句会给该变量赋值,同时还会作为一个select语句输出“结果集”

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

MySQL函数

  create function 函数名 (形参 类型)

  returns 返回类型

  begin

    语句块;

    return  值;

  end;

调用:

  select  3, now(), f1();   //f1为自定义的存储函数。

  select  3, now(), f2(3, ‘abc’,  @v1);  //带3个实参,其中@v1是一个前面赋值了的变量。

删除函数:

  drop function [if exists] 存储函数名;

实际,在php中,其实是这样:

  $sql = “call   pro1(8, ‘dd‘) ”;

  mysql_query( $sql );

触发器:

  其实只是预先定义好的一段代码。该段代码无需人工调用,而是会在‘预计’好的某个情形下自动执行。

定义:

  create  trigger  触发器名字  before(或after)  insert(或update或delete)  on  表名 for  each  row begin

注:要执行的代码,语句块,编程环境,但这里也不能使用select语句。

在触发器内部,其中有两个关键字具有特定含义和数据获取作用:

new:代表新插入的一条数据,在insert事件的时候有效。

old:代表旧的一条数据,在update或delete的时候有效。

删除触发器: drop trigger 触发器名

mysql控制语句

标签:sts   变量赋值   数据   命令行   回滚   ret   php   控制   cti   

原文地址:https://www.cnblogs.com/diverman/p/8401379.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!