热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL8.0的用户管理与DDL语言

一、用户管理;概念:指的就是管理MySQL数据库中数据的操作权限创建用户:语法:createuser用户名;测试:查询用户:语法:select*fromuser;查看用户部分信息:


一、用户管理;

概念:指的就是管理MySQL数据库中数据的操作权限



  1. 创建用户:语法:create user 用户名 ;

    测试:查询用户:语法:select * from user;

    查看用户部分信息:select (这里写你要查看内容的名字) from user;

    删除用户(慎用):drop user 用户名;



  2. 给新用户设置密码:#ALTER USER 用户 IDENTIFIED WITH mysql_native_password BY ‘密码’;

    刷新配置:flush privileges;



  3. 设置权限:grant…on…to…;

    这里我们给zs这个用户给予了db_xiaoli中所有表的权限的所有权限;

    新增权限:INSERT; 删除权限:DELETE

    修改权限: UPDATE 查询权限:SELECT;登录权限:USAGE

    全部权限:ALL 所有表:*



  4. 回收权限:revoke … from …;

    注意:回收权限不能单独回收某一个权限 ,只能把这个用户对于这个表的所有权限(ALL)回收;再去给予他某些权限进行权限的限制!!!



  5. 查看某个用户的权限:show grants for 某用户;



扩展:四大层级权限:这里我们拿mysql默认数据库做示例:user表(用户层权限)db表(数据库层权限),tables_priv表(表层权限),columns_priv表(字段层权限)。

6. 数据库引擎:

查看数据库引擎语句:SHOW ENGINES;

如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择

如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率

如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive

使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能



二、DDL语言(数据定义语言)

概念:DDL(data defination language)数据库定义语言,主要是建表、删除表、修改表字段等操作

1. 库的管理

创建:create database [if not exists]库名;

使用库:use 库名:

库的删除:DROP DATABASE IF EXISTS 库名;

2. 表的管理:

创建表;

create table 表名(

列名 列的类型【(长度) 约束】,

列名 列的类型【(长度) 约束】,

列名 列的类型【(长度) 约束】,



列名 列的类型【(长度) 约束】

)

表的修改:

alter table 表名 add|drop|modify|change column 列名 【列类型 约束】;

修改列名:

修改列类型或约束;

添加列:alter table 表名 add column 列名 类型 [first|after 字段名];

删除列:alter table 表名 drop column 列名;

修改表名;alter table 旧表名 rename [to] 新表名;

复制表:create table 表名 like 旧表;

删除表:drop table [if exists] 表名;

查看表的结构:desc 表名;

3. 常见约束:

NOT NULL: 非空,该字段的值必值

UNIQUE: 唯一,该字段不可重复

DEFAULT : 默认,该字段的值不用手动插入有默认值

CHECK : 检查 ,mysql不支持

PRIMARY KEY : 主键,该字段的值不可重复,并且非空,,一个表必须有一个主键 unique+ not null

FOREIGN KEY : 外键,该字段的值引用了另外的表的字段
注意:NOT NULL + UNIQUE != PRIMARY KEY;

主键和唯一:



  1. 区别:

    一个表至多有一个主键,但可以有多个唯一

    主键不容许空,唯一可以为空

  2. 相同点:

    都具有唯一性

    都支持组合键,但不推荐

外键

1.用于限制两个表的关系,从表的字段值引用了主表的某字段值

2.外键列和主表的被引用列要求类型一致,意义一样,名称无要求

3.主表的被引用列要求是一个key(一般就是主键)

4.插入数据,先插入主表

修改表时添加或删除约束

非空

添加非空

alter table 表名 modify column 字段名 字段类型 not null;

删除非空

alter table 表名 modify column 字段名 字段类型;

默认

添加默认

alter table 表名 modify column 字段名 字段类型 default 值;

删除默认

alter table 表名 modify column 字段名 字段类型 ;

主键

添加主键

alter table 表名 add【 constraint 约束名】 primary key(字段名);

删除主键

alter table 表名 drop primary key;

唯一

添加唯一

alter table 表名 add【 constraint 约束名】 unique(字段名);

删除唯一

alter table 表名 drop index 索引名;

外键

添加外键

alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列);

删除外键

alter table 表名 drop foreign key 约束名;

4. 自增长列

特点:

不用手动插入值,可以自动提供序列值,默认从1开始,步长为1

auto_increment_increment

如果要更改起始值:手动插入值

如果要更改步长:更改系统变量

set auto_increment_increment=值;

一个表至多有一个自增长列

自增长列只能支持数值型

自增长列必须为一个key

创建表时设置自增长列

create table 表(

字段名 字段类型 约束 auto_increment

)



推荐阅读
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
author-avatar
千语千寻2012_501
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有