mysql中,权限是系统内定的一些“名词”(单词),大约30个,每个权限表示“可以做什么工作”。

则分配权限就是相当于让某个用户可以做哪些工作。

主要权限如下:

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

创建用户

语法形式:

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

说明:

1,创建的用户需同时指定该用户可以在哪个地址进行登录。

其中“%”代表“任何地址”。

2,用户创建之后,自动在mysql的user表中添加了一条记录,但该用户还没有权限。

删除用户

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

修改用户密码

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

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

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

权限分配

增加权限:

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

说明:

1权限名就是:’select’, ‘update’, ‘delete’,等等。其中ALL 表示“所有权限”,或all privileges也一样

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

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

某数据库名.*表示该数据库中的所有对象——这个商业上常用。

3,identified by ‘密码’用于给一个用户在此时修改密码,不写也可以,那就不修改密码。

4,但同时该语句也可以创建用户(如果不存在),但此时identified by ‘密码’必须写。

删除权限

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

表示从某个用户身上“取消”某些权限(也许还保留了其他权限)。

事务控制语言(DTL)

什么是事务

通常,在此之前,我们说,一条语句使用一个分号(;)来结束,并得到执行。

那么我们说,这个“一次性执行”的过程,可以称为“一个事务”。

简单来说,“一条sql语句,就是一个事务”。

则:

数据库(自然包括mysql数据库)中的事务,是指,可以将“多条语句”的执行,当作“一条语句”来看到的一种内部机制。

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

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

事务的特点

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

一致性:让数据保持逻辑上的“合理性”,比如:一个商品出库时,既要让商品库中的该商品数量减1,又要让对应用户的购物车中的该商品加1;

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

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

事务模式:就是让每条执行语句是否当作“一个事务”来看到的设定项。

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

事务的基本实现流程:

1,声明事务开始:start transaction;

2, 设定多条要执行的具体语句,比如:insert, update, delete, select。。。其实就是执行,只是这些执行的语句,并不“生效”——其只是内存状态下的执行,而不是物理状态的执行。

3,判断是否需要执行该些语句:if( 判断是否有错误){//执行——才针对执行了物理性改变——即生效。

commit;

}

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

rollback;

}

判断是否有错误通常分这两种环境:

1,如果是cmd中,直接观察是否出错。

2,如果是php程序中,那就需要使用 mysql_error()函数来判断是否有错。

一个事务有多条语句,如果全部正确,则commit,如果有其中任意一条或一条以上发生错误,则rollback;

mysql编程

基本语法形式

语句块模式:

在mysql编程中,begin....end;基本代替了原来编程语句中的{...}语法。

但又有所区别:

一个bigin...end;块,可以给定一个“标识符”,并且可以使用leave语句来“退出”该语句块。

基本流程控制语句:

if语句:

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

while循环语句:

mysql中的变量

变量它有一定的使用场景限制(其实包括前面的流程控制语句也这样):

在通常的执行各种create,insert,delete,update,select等语句的“环境”中,并不使用常规变量,也不能使用流程控制语句。

其实,这些语句只能在编程环境中用——通常的增删改查,可以称为命令环境。

常规mysql命令环境,可以执行:增删改查

编程环境:存储函数中,存储过程中,触发器中。

普通变量的声明语法:

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

变量的赋值语法:

set 变量名 = 变量值

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

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

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

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

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

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

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

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

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

总结---两种变量:

普通变量:不带@符,直接写名字,必须先声明,后使用(赋值之类),只能用于编程环境

会话变量:带@符,无需声明,直接使用(先赋值),可以用于2种环境。

存储函数

调用形式:

跟系统函数的调用形式一样,直接使用名字,并带括号,以及根据需要带实参。

比如:

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

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

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

存储过程

存储过程就是一个没有返回值数据值的“函数”。

虽然存储过程不返回单个数据值,但可以“返回”结果集——这里的返回起始就是select语句的正常结果表现。

定义形式:

其中,

in,out,inout用于修饰一个形参的“数据流向”:

in:只作为外部输入数据,调用环境传入存储过程内部,默认值。

out:只作为输出数据,即存储过程传出到调用环境。

inout:具有双重。

存储过程调用形式:

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

删除:drop procedure [if exists] 存储过程名;

触发器

什么叫触发器:

就是mysql中的一种“一触即发”的机器(机制)。

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

通常就这几个情形:

对某个数据表的增(或删或改)之前(或之后)。//每个表可见只有6种情形。

触发器内部也跟存储过程或存储函数一样,属于“编程环境”。

定义形式:

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

begin

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

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

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

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

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

数据库---数据控制语言(DCL)

标签:观察   一致性   for   case语句   数据表   创建用户   数据库mysql   http   代码

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://www.cnblogs.com/1301694f/p/8452674.html

mysql数据库存储多语言_数据库---数据控制语言(DCL)相关推荐

  1. Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作

    Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

  2. mysql数据控制语言_mysql数据控制语言DCL(Data Control Language)-数据库

    编辑推荐: 本文来自于网络,主要介绍了mysql数据控制语言DCL的创建.删除.修改用户密码.授予权限等代码编写. #创建用户 create user '用户名'@'允许登录的地址' identifi ...

  3. MySQL中存储具有不定列的数据-EAV模型

    当需要在MySQL中存储具有不定列的数据时,一种常见的解决方案是使用EAV(Entity-Attribute-Value)模型.EAV模型允许灵活地存储不同实体的不同属性,适用于属性数量不确定的情况. ...

  4. 04 数据控制语言DCL

    数据控制语言DCL DCL 关键词 示例 DCL 数据库中往往包含了非常重要的数据,可以通过访问控制来确保数据的安全.数据控制语言DCL可以为我们指定的用户授予一定的权限,或者从指定的用户处召回指定的 ...

  5. mysql数据库设计四大范性_数据库篇-mysql详解( 四 )之范式与数据高级骚操作

    标题.png 一 : 主键 primary key,主要的键. 一张表只能有一个字段可以使用对应的键, 用来唯一的约束该字段里面的数据, 不能重复: 这种称之为主键.一张表只能有最多一个主键 操作 增 ...

  6. mysql修改字段占用磁盘_给数据减肥 让MySQL数据库跑的更快

    [IT168 专稿]在数据库优化工作中,使数据尽可能的小,使表在硬盘上占据的空间尽可能的小,这是最常用.也是最有效的手段之一.因为缩小数据,相对来说可以提高硬盘的读写速度,并且在查询过程中小表的内容处 ...

  7. mysql表之间怎么联动_数据库之间的数据联动调整方法、装置及系统的制作方法...

    数据库之间的数据联动调整方法.装置及系统的制作方法 [技术领域] [0001]本发明涉及一种信息处理技术领域,特别是涉及一种数据库之间的数据联动调整方法.装置及系统. [背景技术] [0002]随着信 ...

  8. (一)SQL语言_数据库_学习笔记

    一.数据库基础 1.定义: Database:A database is an organized collection of data,stored and accessed electronica ...

  9. mysql sql 限制条数据类型_数据库的数据类型和约束条件

    存储引擎: 不同的数据应该有不同的处理机制 mysql存储引擎: Innodb:现在版本默认的存储引擎 myisam:mysql老版本的存储引擎 memory:内存引擎(数据全部存在内存中)也叫临时的 ...

最新文章

  1. OPENCV图像轮廓检测
  2. Exynos4412裸机开发——中断处理
  3. BCC实例(如何修改NS解析方式为百度智能云解析) - 解答篇
  4. django 允许跨域请求
  5. 【clickhouse】ClickHouse之DBA运维宝典
  6. TensorFlow学习笔记——TensorFlow入门
  7. 对PostgreSQL中bufmgr.c 中 bufs_to_lap的初步理解
  8. 计算机网络按拓扑结构可以划分为,计算机网络按拓扑结构分为哪些
  9. btc、usdt 根据交易hash计算手续费
  10. 从猎豹移动到瑞幸咖啡,看中国企业在海外的信誉破产
  11. esp32~MP3音频文件学习,app架构
  12. 阿里云服务器安装jdk8版本
  13. java获取浏览器url_java 打开浏览器 url
  14. 怎样优雅劝退他人做自媒体?
  15. 用最生动的语言重现经典!听我细细道来冯·诺依曼体系结构
  16. Unity3D使用经验总结 优点篇
  17. 路漫漫其修远兮,吾将上下而求索——小酌重构系列[0]开篇有益
  18. 关于《构建之法》第四章和第十七章的问题
  19. C++ 线程里面延时1秒的技巧
  20. PS 学习笔记 11--画笔工具

热门文章

  1. 暗藏 15 年,Linux 惊曝 3 大 Bug 直取 root 权限!
  2. 祝贺!吴晟成为 Apache 软件基金会首位中国董事!
  3. 赠书 | 如何建设数据中台?看这份企业数据能力测评就够了!
  4. 软件工程师如何应对面试的可怕“反乌托邦世界”?
  5. 9 个小技巧让你的 if else 看起来更优雅!
  6. 从青铜到王者,来聊聊 Synchronized 底层实现原理 | 原力计划
  7. 来!喝杯可乐!让你秒懂 MVP 架构模式 | 原力计划
  8. 超实用!Google AutoML 图像分类模型全在这!
  9. Web 爬虫现已合法?
  10. 10 月全国程序员工资统计,一半以上的职位 5 个月没招到人!