当前位置: 首页 > 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>…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...