MySQL高级管理

news2024/12/24 10:28:46

目录

一、指定主键的一种方式

1.1高级操作

 1.2数据表高级操作,克隆表

1.2.1 克隆表名

 1.2.2备份表内容

 1.3复制表

1.4删除指令

方法一:

方法二:

删除速度

二、创建临时表

 三、MySQL中6种常见的约束

3.1创建主表

3.2创建从表

 3.3为主表test01添加一个主键约束。主键名建议以"PK_”开头。

 3.4为从表test02表添加外键,并将test02表的hobid字段和test04表的hobid字段建立外键关联。 外键名建议以"FK_”开头。

3.5使用查询表语句结构命令查看外键关联

3.6 插入新的数据记录时,要先主表再从表

3.7删数数据记录时,要先从表再主表

3.8如果要删除外键约束字段先删除外键约束,再删除外键名

四、数据库用户管理

4.1、新建用户

 4.1查看用户信息

 4.3重命名指定

4.4 删除用户

​编辑4.5 修改当前密码

4.6修改其他用户密码

 4.7忘记root密码

五、数据库用户授权


一、指定主键的一种方式

1.1高级操作

use school;
create table if not exists info (
 #指定主键的第二种方式
id int(4) zerofill primary key auto_increment, 
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));

#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建

#int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001

#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增; 自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且 添加失败也会自动递增一次

#unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键

#not null:表示此字段不允许为NULL

 1.2数据表高级操作,克隆表

create table yyy2 like yyy;    #复制格式,通过LIKE方法,复制yyy表结构生成yyy2表
insert into yyy2 select * from yyy;      #备份内容

克隆表,将数据表的数据记录生成到新的表中
CREATE TABLE test02 (SELECT * from test);   #复制test 表数据到test02中

show create table test02\G    #获取数据表的表结构、索引等信息
SELECT * from test02;

1.2.1 克隆表名

create table 【table_bak】 like 【table】;    
#复制格式,通过LIKE方法,复制table表结构生成table_bak表

 1.2.2备份表内容

insert into 【table_bak】 select * from 【table】;      #备份内容

 1.3复制表

CREATE TABLE test02 (SELECT * from test);   #复制test 表数据到test02中

show create table test02\G    #获取数据表的表结构、索引等信息
SELECT * from test02;

 

1.4删除指令

清空表,删除表内的所有数据

方法一:

delete from 表名;

#DELETE清空表后,返回的结果内有删除的记录条目; DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除 所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。

方法二:

truncate table 表名;

#TRUNCATE清空表后,没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立, 因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后, ID会从1开始重新记录

删除速度

drop> truncate > delete

安全性 delete 最好

二、创建临时表

临时表创建成功之后,使用SHOWTABLES命令是看不到创建的临时表的,临时表会在连接退出 后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除 临时表。

PS:无法创建外键

CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[, ...]
[, PRIMARY KEY (主键名)]);
create temporary table 表名 (
id int(4) zerofill primary key auto_ increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));
insert into xxx values (1,'zhangsan',123456,'running') ;
select * from test03;
show tables;
quit
select * from 表名;

场景

1.可做测试环境使用 比如删除大量数据的时候,可以创建临时表 做一个复杂删除

2、需求要今天所有的注册王者荣耀的新号码

 三、MySQL中6种常见的约束

主键约束(primary key)

外键约束(foreign key)

非空约束(not null)

唯一性约束(unique [key|index])

默认值约束(default)

自增约束(auto_increment)

外键的定义:如果同一个属性字段x在表一中是主键,而在表二中不是主键, 则字段x称为表二的外键。

创建外键约束作用(误删,修改),保证数据的完整性和一致性。

主键表和外键表的理解 

1)以公共关键字作主键的表为主键表(父表、主表)

(2)以公共关键字作外键的表为外键表(从表、外表)

注意:与外键关联的主表的字段必须设置为主键。

要求从表不能是临时表, 主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。

3.1创建主表

create table test01 (hobid int(4),hobname varchar(50));

3.2创建从表

create table test02 (id int(4) primary key auto_increment,
name varchar(10),age int(3),hobid int(4)) ;

 3.3为主表test01添加一个主键约束。主键名建议以"PK_”开头。

alter table test01 add constraint PK_hobid primary key (hobid);

 3.4为从表test02表添加外键,并将test02表的hobid字段和test04表的hobid字段建立外键关联。 外键名建议以"FK_”开头。

alter table test05 add constraint FK_hob foreign key (hobid) references 
test01 (hobid);

3.5使用查询表语句结构命令查看外键关联

show create table test02;


desc test01;
desc test02;

3.6 插入新的数据记录时,要先主表再从表

insert into test01 values(1,'runing');
insert into test02 values(1,'zhangsan',18,1);

3.7删数数据记录时,要先从表再主表

drop tables test01;
drop tables test02;

3.8如果要删除外键约束字段先删除外键约束,再删除外键名

show create table test02;
alter table test02 drop foreign key FK_hob;
alter table test02 drop key FK_hob;
desc test02;

四、数据库用户管理

4.1、新建用户

CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];

 '用户名':指定将创建的用户名.

'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用

localhost,允许任意主机登录 可用通配符% 

‘’密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密; 若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文'; 若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)

CREATE USER 'zhang'@'localhost' IDENTIFIED BY '123456';
SELECT PASSWORD('abc123');
CREATE USER 'user2'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';

 4.1查看用户信息

创建后的用户保存在mysql 数据库的user表里

USE mysql;
SELECT User,authentication_string,Host from user;

 4.3重命名指定

RENAME USER 'zhang'@'root' TO 'user1'@'localhost';

4.4 删除用户

DROP USER 'user1'@'localhost' ;

4.5 修改当前密码

SET PASSWORD = PASSWORD('abc123');

4.6修改其他用户密码

SET PASSWORD FOR 'user2'@'localhost' = PASSWORD('abc123T');

 4.7忘记root密码

忘记root密码的解决办法

修改/etc/my.cnf 配置文件,

免密登陆mysql

vim /etc/my.cnf

[mysqld] skip-grant-tables #添加,使登录mysql不使用授权表

systemctl restart mysqld

mysql #直接登录

然后使用SQL语句修改密码

UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root';

FLUSH PRIVILEGES;

quit mysql -u root -pabc123

PS:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务

五、数据库用户授权

授予权限

grant 提权

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];

grant all privileges on . to 'taotao'@'%' identified by '123456';

#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select, insert, update”。使用"all"表示所有权限,可授权执行任何操作。

#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符""。 例如,使用“kgc."表示授权操作的对象为school数据库中的所有表。

#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.xyw.com"、“192. 168.80.%”等。

#IDENTIFIED BY:用于设置用户连接数据库时所使用的密码字符串。 在新建用户时,若省略“IDENTIFIED BY"部分,则用户的密码将为空。

#允许用户zhangsan在本地查询school数据库中所有表的数据记录, 但禁止查询其他数据库中的表的记录。 GRANT select ON school.* TO 'zhangsan'@'localhost' IDENTIFIED BY 'abc123';

#允许用户lisi在所有终端远程连接mysql,并拥有所有权限。 GRANT ALL [PRIVILEGES] ON . TO 'lisi'@'%' IDENTIFIED BY '123456';

flush privileges; #刷新权限

quit

mysql -u zhangsan -pabc123 use xyw; show tables; . select * from yyy;

查看权限

mysql -u root -pabc123 SHOW GRANTS FOR 用户名@来源地址;

SHOW GRANTS FOR 'lisi'@'%';

撤销权限 REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;

REVOKE ALL ON . FROM 'lisi'@'%';

SHOW GRANTS FOR 'lisi'@'%'; #USAGE权限只能用于数据库登陆,不能执行任何操作; USAGE权限不能被回收,即REVOKE不能删除用户。 flush privileges;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Docker异常篇]解决Linux[文件异常]导致开机Docker服务无法启动

文章目录 一:场景复现二:解决思路2.1: 对比其他节点docker配置2.2:试着修改为正常节点配置2.2:根据上面异常显示,不一定是配置不对,可能是文件系统有损坏 三:解决 -> 执行命令 mo…

【机器学习算法】奇异值分解(SVD)

文章目录 奇异值分解(SVD)1.理论部分1.1特征分解(ED)1.2 奇异值分解(SVD)求解U和V求解Σ 2.应用部分2.1图像压缩2.2图像数据集成分分析2.3 数据降维(PCA的一种解法) Reference 奇异值分解(SVD) 奇异值分解(Singular Value Decomposition) 是矩阵低秩分解的一种方法,…

太猛了!Web安全漏洞批量扫描框架

关注【Hack分享吧】公众号,回复关键字【230528】获取下载链接 工具介绍 一个应用于web安全领域的漏洞批量扫描框架,可被应用于但不限于如下场景: 0Day/1Day全网概念验证(在没有测试环境(各种商业、闭源软件)或懒得搭建测试环境的情况下&…

D. Binary String Sorting

Problem - 1809D - Codeforces 思路:最后得到的结果就是前面是一串0后面是一串1,那么我们可以枚举分界点,如果枚举到i,那么就将1~i变为0,将i1变为1,我们发现如果一个1在1~i中,如果他是第i-1个,那…

Redis进阶底层原理-Cluster集群底层

Redis实现高可用的方案有很多中,先了解下高可用和分区的概念: 高可用是指系统在面对硬件故障、网络故障、软件错误等意外问题时,仍能给客户端提供正常的服务,尽量的减少服务的阻塞、终端现象。在高可用的方案中一般会采用冗余备份…

《洛谷深浅》第五章---数组与数据批量存储

文章目录 前言一、小鱼比可爱二、小鱼的数字游戏三、冰雹猜想四、校门外的树五、旗鼓相当的对手六、旗鼓相当的对手总结 前言 本节主要学习一维数组 和 多维数组 后边的知识我觉得 可以试着了解并不要求你掌握这么难的题目 因为ACM更多都是思维题目 所以这里把重要的题目掌握就…

【多线程系列-03】深入理解java中线程的生命周期,任务调度

多线程系列整体栏目 内容链接地址【一】深入理解进程、线程和CPU之间的关系https://blog.csdn.net/zhenghuishengq/article/details/131714191【二】java创建线程的方式到底有几种?(详解)https://blog.csdn.net/zhenghuishengq/article/details/127968166【三】深入…

基于树莓派实现的IO-Link 项目

IO-Link 协议 (IEC 61131-9) 是从传感器或执行器到 IO-Link 主站的串行半双工点对点连接。目前IO-Link 的硬应已经越来越普及。国外产品以巴鲁夫为代表。如何开发IO-link 产品?可以参考国外的一些开源项目。 国外有人开发了开发一个IO-Link主…

soundfile torchaudio 读取音频文件

soundfile 和 torchaudio 读取音频文件后的数据格式不同,前者是numpy,后者是tensor。前者读取后可以直接用于一些python的基础函数输入,后者用于pytorch的一些函数的应用。两者互换用途时候需要进行格式转换。 import soundfile as sf impor…

智能指针使用及详细解析

文章目录 智能指针概念为什么使用智能指针智能指针使用智能指针的常用函数get() 获取智能指针托管的指针地址.reset() 重置智能指针托管的内存地址,如果地址不一致,原来的会被析构掉 auto_ptrunique_ptrshared_ptr**shared_ptr的原理**引用计数的使用构造…

Gradle 构建工具 #5 又冲突了!如何理解依赖冲突与版本决议?

⭐️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 [BaguTree Pro] 知识星球提问。 Gradle 作为官方主推的构建系统,目前已经深度应用于 Android 的多个技术体系中,例如组件化开发、产物构建、单元测试等…

STM32(HAL库)驱动SHT30温湿度传感器通过串口进行打印

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 软件IIC引脚配置 2.3 串口外设配置 2.4 项目生成 3、KEIL端程序整合 3.1 串口重映射 3.2 SHT30驱动添加 3.3 主函数代 3.4 效果展示 1、简介 本文通过STM32F103C8T6单片机通过HAL库…

Spring Batch之读数据库——JdbcCursorItemReader之自定义RowMapper(三十七)

一、自定义RowMapper 详情参考我的另一篇博客: Spring Batch之读数据库——JdbcCursorItemReader(三十五)_人……杰的博客-CSDN博客 二、项目实例 1.项目框架 2.代码实现 BatchMain.java: package com.xj.demo28;import org.springfram…

代码随想录第27天 | 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和

455.分发饼干 /*** param {number[]} g* param {number[]} s* return {number}*/ var findContentChildren function(g, s) {let a0let b0let count0g.sort((a,b)>a-b)s.sort((a,b)>a-b)while(a<g.length&&b<s.length){if(s[b]>g[a]){countba}else{b}…

STM32(HAL库)软件IIC驱动OLED

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 软件IIC引脚配置 2.3 项目生成 3、KEIL端程序整合 3.1 OLED驱动添加 3.3 主函数代 3.4 效果展示 1、简介 本文通过STM32F103C8T6单片机&#xff08;HAL库&#xff09;通过软件IIC方式…

java linux服务器环境搭建

安装 jdk 下载jdk: wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24http%3A%2F%2Fwww.oracle.com%2F; oraclelicenseaccept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f…

Kubespray v2.22.1 在线部署 kubernetes v1.26.5 集群

文章目录 1. 介绍2. 预备条件3. 配置 hostname4. yum5. 下载介质5.1 git 下载5.2 下载 kubespray v2.22.1 6. 编写 inventory.ini7. 配置互信8. 安装 ansible9. 关闭防火墙10. 安装 docker11. 配置内核参数12. 启动容器 kubespray13. 部署14. 配置连接集群 1. 介绍 kubespray​…

Ubuntu18.04 安装vscode 配置C#编译器

环境&#xff1a; ubuntu 18.04 依赖库&#xff1a; SDK .net-7 安装对象&#xff1a; vscode 在终端&#xff1a; ./dotnet-install.sh --channel 7.0 遇见如下提示&#xff1a; dotnet&#xff1a;未找到命令 如下操作&#xff1a; 下载–解压–安装 wget https://pa…

Python 自学 day04 函数为参数传递, 匿名函数, 文件操作

1. 函数作为参数传递 &#xff08;类似C 函数指针&#xff09; def func(x):mm x(1,2);#print(f"mm的值是{mm}")return mmdef add(x,y): #加法return xy def reduce(x,y): # 减法return x-ydef ride(x,y): # 乘法return x*ydef divide(x,y): #带有小数点除法…

详解DDPG算法:解决对大量的超参数、随机重启、任务环境敏感问题,完成月球着陆器,双足机器人demo、以及超参数调优教学

0.demo展示 当我复现强化学习算法 DDPG 时,我发现论文中缺少必要的实现细节,例如:Gamma、噪声方差、最大训练步数等参数的取值。此外,在我调整参数,成功完成某次训练后,当我对随机种子进行修改,发现训练时长有很大变化,甚至有时候无法完成训练。更别提把在某个任务上 w…