zoukankan      html  css  js  c++  java
  • mysql控制语句

    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 触发器名

  • 相关阅读:
    html-----018----HTML Web Server/HTML URL 字符编码
    html-----017
    SQL Server 2008 R2评估期已过的解决办法和sqlserver 服务器打不开问题
    Eclipse快捷键大全
    with递归
    PIVOT使用
    SSH框架搭建
    更换开发环境后设置Tomcat和jdk版本
    MyBatis 一对多和多对一关联查询
    MyBatis 使用接口增删改查和两表一对一级联查询
  • 原文地址:https://www.cnblogs.com/diverman/p/8401379.html
Copyright © 2011-2022 走看看