当前位置: 首页 > news >正文

MySQL:增删改查、临时表、授权相关示例

目录

概念

数据完整性

主键

数据类型

精确数字

近似数字

字符串

二进制字符串

日期和时间

MySQL常用语句示例

SQL结构化查询语言

显示所有数据库

显示所有表

查看指定表的结构

查询指定表的所有列

创建一个数据库

创建表和列

插入数据记录

查询数据记录

修改表中数据

在mysql内修改root用户登录mysql的密码

在终端修改mysql的root用户登录密码

克隆

删除

delete

truncate

临时表

授权

授权用户

授权远程用户

查看指定账户的授权

撤销指定账户授权

Windows通过Navicat连接MySQL服务器


概念

数据完整性

数据的正确性

  • 数据完整性
    • 每一行必须是唯一的实体(每个实体必须唯一)
  • 域完整性
    • 检查每一列是否有效
  • 引用完整性
    • 确保所有表中数据的一致性,不允许引用不存在的值
  • 用户定义的完整性
    • 指定特定的业务规则

主键

  • 用于唯一标识表中的行数据
  • 由一个或多个字段组成
  • 具有唯一性
  • 不允许取空值(NULL)
  • 一个表只能有一个主键

数据类型

精确数字

近似数字

字符串

二进制字符串

日期和时间


MySQL常用语句示例

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言用于存取数据以及查询、更新和管理关系数据库系统。

SQL结构化查询语言

  • DDL数据定义语言
    • create
    • drop(针对数据库对象)
    • alter
  • DML数据操纵语言
    • insert
    • update
    • delete(针对表中的记录)
  • DQL数据查询语言
    • select
    • show
    • describe
  • DCL数据控制语言
    • grant
    • revoke
    • commit(事务)
    • rollback(回滚)

首先登录数据库,以便进行下一步实验

[root@localhost ~]# mysql -uroot -p
Enter password: 输入密码

显示所有数据库

在登录进数据库后,可以使用show databases;来列出所有数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
  • information_schema:数据库本身所需的信息(库、表信息)
  • mysql:程序运行时所需要的数据,主要是用户认证的信息

显示所有表

需要在数据库内输入show tables才能生效

进入mysql数据库
mysql> use mysql    # 不用加分号结尾
mysql> show tables;

查看指定表的结构

查看user表的结构

mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |      

查询指定表的所有列

这里使用select语句查询user表的所有列,\G表示以垂直方式显示,代替默认的水平方式,水平方式输出会看起来很杂乱

mysql> select * from user\G;

创建一个数据库

create 类型 名称

mysql> create database auth;
Query OK, 1 row affected (0.00 sec)
mysql> use auth;    # 更改当前操作的数据库为auth
Database changed

创建表和列

使用create语句创建名为users表并添加两列数据

DEFAULT ' ':该列默认为空(这里表示密码默认为空)

创建完后,可以使用show tables;查看该表

mysql> create table users (user_name char(16) not null, user_passwd char(48) default '', primary key(user_name));
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| users          |
+----------------+

插入数据记录

在users表的指定列中插入信息

insert语法:insert into 表名 (列名1, 列名2) values (值1, 值2);

mysql>use auth;
mysql>insert into users(user_name, user_passwd) values ('tom', '123456')
mysql>insert into users(user_name, user_passwd) values ('jerry', '654321');

查询数据记录

查询users表中所有列,以及添加where过滤指定列的所有信息

mysql> select * from auth.users;
+-----------+-------------+
| user_name | user_passwd |
+-----------+-------------+
| jerry     | 654321      |
| tom       | 123456      |
+-----------+-------------+mysql> select user_name, user_passwd from auth.users where user_name='tom';
+-----------+-------------+
| user_name | user_passwd |
+-----------+-------------+
| tom       | 123456      |
+-----------+-------------+

修改表中数据

修改auth数据库中users表中的user_name为tom的行中的user_passwd列的值为000,并且使用加密算法加密该值

然后使用select语句查询,可以看到user_passwd列的值被加密了

mysql> update auth.users set user_passwd=password('000') where user_name='tom';
mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| jerry     | 654321                                    |
| tom       | *B66FEB4CF5216D971C066EB920EC03B27A5A3F40 |
+-----------+-------------------------------------------+
在mysql内修改root用户登录mysql的密码

更新mysql库下user表中的authentication_string列,调用password对密码进行加密,where条件为root用户

使用flush privileges;命令重新加载授权表,使当前对授权的更改生效,而无需重新启动MySQL服务。

mysql> update mysql.user set authentication_string=password('123456') where user='root';
mysql> flush privileges;
[root@localhost ~]# mysql -uroot -p
Enter password: 输入刚才设置的密码
mysql>
成功登录
在终端修改mysql的root用户登录密码
[root@localhost ~]# mysqladmin -uroot -p123456 password 'pwd123'
[root@localhost data]# mysql -uroot -p
Enter password: 输入密码
mysql>

克隆

利用users表克隆一个名为user01的表,但是克隆后的新表是没有内容的

mysql> create table user01 like auth.users;mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| user01         |
| users          |
+----------------+

将users表的内容全部插入到user01新表中

mysql> insert into user01 select * from auth.users;mysql> select * from user01;
+-----------+-------------+
| user_name | user_passwd |
+-----------+-------------+
| tom       | 123456      |
+-----------+-------------+

删除

delete

使用delete from 表名 where 列名来删除指定行

如果不在结尾加where,是删除指定的表。可以自由搭配

mysql> delete from auth.users where user_name='jerry';mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| tom       | *B66FEB4CF5216D971C066EB920EC03B27A5A3F40 |
+-----------+-------------------------------------------+

truncate

mysql> truncate table user01;mysql> select * from user01;
Empty set (0.00 sec)
  • truncate table 表名;
    • 功能:truncate table用于快速且高效地删除表中的所有数据,但保留表的结构(即表定义)。
    • 操作:它是一个DDL(数据定义语言)命令,不是一个事务,并且不能通过回滚来恢复删除的数据。
    • 速度:由于不记录删除的每一行数据,而是直接释放数据页,因此truncate table操作通常比delete from更快。
  • delete from 表名;
    • 功能:delete from用于从表中删除指定的行数据。
    • 操作:它是一个DML(数据操作语言)命令,它可以作为一个事务来执行,并且可以通过事务回滚来撤销删除操作。
    • 记录:delete from操作会将每一行删除操作的记录写入事务日志,并且在执行时会触发触发器(如果有的话)。
  • 延续id的区别
    • 如果使用delete清除一个表后,添加新内容的id会延续之前的id。
    • 而使用truncate清除一个表后,添加新内容的id会还原,从1开始。

临时表

临时表用于临时存放一些数据,如果退出mysql管理系统,再进来就找不到在临时表中存储的数据了

mysql> create temporary table test(id int(10) not null auto_increment, name char(116) character set utf8 collate utf8_bin not null primary key (id));
mysql> insert into test (name) values ('tom');
mysql> select * from test;
+----+------+
| id | name |
+----+------+
|  1 | tom  |
+----+------+

退出后,再进入。找不到test临时表

mysql> quit[root@localhost data]# mysql -uroot -p
Enter password: 输入密码mysql> select * from test;
ERROR 1046 (3D000): No database selected

授权

授权是一组权限的集合,比如授权select命令给某个用户,这里select就是一个角色,只是这个角色的名称叫select

权限是单个的,但是授权这个操作是将一组权限的集合分配给用户

比如使用 grant select on 库名.表名 to '用户名'@'localhost'; 是授予指定用户可以在指定数据库中的指定表中执行select的权限

授权用户

指定tom用户在本机只能使用select语句查询访问auth库中的所有表

mysql> grant select on auth.* to 'tom'@'localhost' identified by '123456';

这里的localhost表示授权本机

根据需求和实际情况也可以写成IP地址或网段,网段的格式在主机部分要写成%(192.168.10.%)或允许所有主机('root'@'%'

此时查询mysql库中的user表可以看到刚刚授权的tom用户的授权信息被生成出来了,此时退出mysql

mysql> select * from mysql.user\G;
*************************** 4. row ***************************Host: localhost    # 允许该用户在什么地方登录User: tom    # 账号名# 省略部分信息plugin: mysql_native_password    # 当你对该用户设置密码时,利用该插件对密码进行加密authentication_string: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9    # 加密过的密码password_expired: Npassword_last_changed: 2024-07-23 22:02:46password_lifetime: NULLaccount_locked: Nmysql> exit

在终端使用tom账户也可以登录了

再使用select语句查询授权过的auth库内的表,可以查询

如果查询别的库的信息,就不行了

[root@localhost ~]# mysql -utom -p123456
mysql>
mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| tom       | *B66FEB4CF5216D971C066EB920EC03B27A5A3F40 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)mysql> select * from mysql.user;
ERROR 1142 (42000): SELECT command denied to user 'tom'@'localhost' for table 'user'

授权远程用户

指定授权任何主机(%)都可以使用root用户登录mysql,并且拥有所有库的所有表的访问权限

这里的123456密码,是远程主机登录的密码,而不是本地主机登录的密码

mysql> grant all on *.* to root@'%' identified by '123456';
mysql> flush privileges;

在102主机安装MySQL客户端

[root@localhost ~]# yum -y install mysql
[root@localhost ~]# mysql -uroot -p123456 -h 192.168.10.101 -P 3306
MySQL [(none)]>

查看指定账户的授权

使用show命令查看指定账户的权限

mysql> show grants for 'tom'@'localhost';
+-----------------------------------------------+
| Grants for tom@localhost                      |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'tom'@'localhost'       |
| GRANT SELECT ON `auth`.* TO 'tom'@'localhost' |
+-----------------------------------------------+

撤销指定账户授权

首先确保是有mysql管理权的用户登录mysql,比如root

如果完成了上方的操作,要执行这里的命令记得exit退出,换成root用户登录进mysql

这里使用revoke语句从'tom'@'localhost'用户上撤销在auth数据库下所有表的所有权限

revoke的语法: revoke 权限 on 库名.表名 from '用户名'@'地址'; 

这里的权限就是你授权的权限,比如select、insert、update、delete等

[root@localhost ~]# mysql -uroot -p
Enter password: 输入密码
mysql> revoke all on auth.* from 'tom'@'localhost';

Windows通过Navicat连接MySQL服务器

前提是授权时将地址设为指定IP或%

在计算机管理开启MySQL服务

软件内左上角连接 ——》MySQL

主机IP填为MySQL服务器的IP,密码填为在MySQL服务器设置的

然后可以在左边列表看到连接的MySQL服务器

相关文章:

MySQL:增删改查、临时表、授权相关示例

目录 概念 数据完整性 主键 数据类型 精确数字 近似数字 字符串 二进制字符串 日期和时间 MySQL常用语句示例 SQL结构化查询语言 显示所有数据库 显示所有表 查看指定表的结构 查询指定表的所有列 创建一个数据库 创建表和列 插入数据记录 查询数据记录 修…...

初识git工具~~上传代码到gitee仓库的方法

目录 1.背景~~其安装 2.gitee介绍 2.1新建仓库 2.2进行相关配置 3.拉取仓库 4.服务器操作 4.1克隆操作 4.2查看本地仓库 4.3代码拖到本地仓库 4.4关于git三板斧介绍 4.4.1add操作 4.4.2commit操作 4.4.3push操作 5.一些其他说明 5.1.ignore说明 5.2git log命令 …...

Redis知识点总价

1 redis的数据结构 2 redis的线程模型 1) Redis 采用单线程为什么还这么快 之所以 Redis 采用单线程(网络 I/O 和执行命令)那么快,有如下几个原因: Redis 的大部分操作都在内存中完成,并且采用了高效的…...

大语言模型-GPT-Generative Pre-Training

一、背景信息: GPT是2018 年 6 月由OpenAI 提出的预训练语言模型。 GPT可以应用于复杂的NLP任务中,例如文章生成,代码生成,机器翻译,问答对话等。 GPT也采用两阶段的训练过程,第一阶段是无监督的方式来预训…...

mybatis批量插入、mybatis-plus批量插入、mybatis实现insertList、mybatis自定义实现批量插入

文章目录 一、mybatis新增批量插入1.1、引入依赖1.2、自定义通用批量插入Mapper1.3、把通用方法注册到mybatisplus注入器中1.4、实现InsertList类1.5、需要批量插入的dao层继承批量插入Mapper 二、可能遇到的问题2.1、Invalid bound statement 众所周知,mybatisplus…...

Springboot项目的行为验证码AJ-Captcha(源码解读)

目录 前言1. 复用验证码2. 源码解读2.1 先走DefaultCaptchaServiceImpl类2.2 核心ClickWordCaptchaServiceImpl类 3. 具体使用 前言 对于Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目…...

【初阶数据结构篇】时间(空间)复杂度

文章目录 算法复杂度时间复杂度1. 定义2. 表示方法3. 常见时间复杂度4.案例计算分析冒泡排序二分查找斐波那契数列(递归法)斐波那契数列(迭代法) 空间复杂度案例分析冒泡排序斐波那契数列(递归法)斐波那契数…...

C# 设计模式分类

栏目总目录 1. 创建型模式(Creational Patterns) 创建型模式主要关注对象的创建过程,包括如何实例化对象,并隐藏实例化的细节。 单例模式(Singleton):确保一个类只有一个实例,并提…...

前端模块化CommonJS、AMD、CMD、ES6

在前端开发中,模块化是一种重要的代码组织方式,它有助于将复杂的代码拆分成可管理的小块,提高代码的可维护性和可重用性。CommonJS、AMD(异步模块定义)和CMD(通用模块定义)是三种不同的模块规范…...

论文阅读:(DETR)End-to-End Object Detection with Transformers

论文阅读:(DETR)End-to-End Object Detection with Transformers 参考解读: 论文翻译:End-to-End Object Detection with Transformers(DETR)[已完结] - 怪盗kid的文章 - 知乎 指示函数&…...

react中路由跳转以及路由传参

一、路由跳转 1.安装插件 npm install react-router-dom 2.路由配置 路由配置:react中简单的配置路由-CSDN博客 3.实现代码 // src/page/index/index.js// 引入 import { Link, useNavigate } from "react-router-dom";function IndexPage() {const …...

C++ STL set_symmetric_difference

一&#xff1a;功能 给定两个集合A&#xff0c;B&#xff1b;求出两个集合的对称差&#xff08;只属于其中一个集合&#xff0c;而不属于另一个集合的元素&#xff09;&#xff0c;即去除那些同时在A&#xff0c;B中出现的元素。 二&#xff1a;用法 #include <vector>…...

postman请求响应加解密

部分接口&#xff0c;需要请求加密后&#xff0c;在发动到后端。同时后端返回的响应内容&#xff0c;也是经过了加密。此时&#xff0c;我们先和开发获取到对应的【密钥】&#xff0c;然后在postman的预执行、后执行加入js脚本对明文请求进行加密&#xff0c;然后在发送请求&am…...

数据集,批量更新分类数值OR批量删除分类行数据

数据集批量更新分类OR删除分类行数据 import osdef remove_class_from_file(file_path, class_to_remove):"""从YOLO格式的标注文件中删除指定类别的行记录&#xff0c;并去除空行。:param file_path: YOLO标注文件路径:param class_to_remove: 需要删除的类别…...

一款功能强大的视频编辑软件会声会影2023

会声会影2023是一款功能强大的视频编辑软件&#xff0c;由加拿大Corel公司制作&#xff0c;正版英文名称为‌Corel VideoStudio。它具备图像抓取和编修功能&#xff0c;可以处理和转换多种视频格式&#xff0c;如‌MV、‌DV、‌V8、‌TV和实时记录抓取画面文件。会声会影提供了…...

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署LivePortrait :通过缝合和重定向控制实现高效的肖像动画制作

目录 项目论文介绍 论文中实际开展的工作 非扩散性的肖像动画 基于扩散的肖像动画 方法论 基于Ubuntu的部署实践开始 1. 克隆代码并准备环境 2. 下载预训练权重 3. 推理 快速上手 驱动视频自动裁剪 运动模板制作 4. Gradio 界面 5. 推理速度评估 社区资源 政安…...

在Spring项目中使用Maven和BCrypt来实现修改密码功能

简介 在数字时代&#xff0c;信息安全的重要性不言而喻&#xff0c;尤其当涉及到个人隐私和账户安全时。每天&#xff0c;无数的用户登录各种在线服务&#xff0c;从社交媒体到银行账户&#xff0c;再到电子邮件和云存储服务。这些服务的背后&#xff0c;是复杂的系统架构&am…...

RedHat8安装Oracle19C

RedHat8安装Oracle19C 1、 更新yum源 更新yum源为阿里云镜像源&#xff1a; # 进入源目录 cd /etc/yum.repos.d/ # 删除 redhat 默认源 rm redhat.repo # 下载阿里云的centos7源 curl -O http://mirrors.aliyun.com/repo/Centos-8.repo # 替换 Centos-8.repo 中的 $releasev…...

React系列面试题

大家好&#xff0c;我是有用就点赞&#xff0c;有用就扩散。 1.React的组件间通信都有哪些形式&#xff1f; 父传子&#xff1a;在React中&#xff0c;父组件调用子组件时可以将要传递给子组件的数据添加在子组件的属性中&#xff0c;在子组件中通过props属性进行接收。这个就…...

C#:通用方法总结—第6集

大家好&#xff0c;今天继续介绍我们的通用方法系列。 下面是今天要介绍的通用方法&#xff1a; &#xff08;1&#xff09;这个通用方法为SW查找草图数量 /// <summary> /// 查找草图数量 /// </summary> /// <param name"doc2"></param>…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化

一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一&#xff0c;是基于哈希表的Map接口非同步实现。它允许使用null键和null值&#xff08;但只能有一个null键&#xff09;&#xff0c;并且不保证映射顺序的恒久不变。与Hashtable相比&#xff0c;Hash…...

C++11 constexpr和字面类型:从入门到精通

文章目录 引言一、constexpr的基本概念与使用1.1 constexpr的定义与作用1.2 constexpr变量1.3 constexpr函数1.4 constexpr在类构造函数中的应用1.5 constexpr的优势 二、字面类型的基本概念与使用2.1 字面类型的定义与作用2.2 字面类型的应用场景2.2.1 常量定义2.2.2 模板参数…...

宠物车载安全座椅市场报告:解读行业趋势与投资前景

一、什么是宠物车载安全座椅&#xff1f; 宠物车载安全座椅是一种专为宠物设计的车内固定装置&#xff0c;旨在保障宠物在乘车过程中的安全性与舒适性。它通常由高强度材料制成&#xff0c;具备良好的缓冲性能&#xff0c;并可通过安全带或ISOFIX接口固定于车内。 近年来&…...