MySQL之数据库相关操作学习笔记(一)
数据库相关操作
数据库表创建
定义逻辑库、数据表
- DML
- 添加
- 修改
- 删除
- 查询
- DCL
- 用户
- 权限
- 事务
- DDL
- 逻辑库
- 数据表
- 视图
- 索引
DCL (Data Control Language) 示例
DCL(数据控制语言)主要用于控制数据库用户的访问权限和管理事务。DCL 主要包含两类语句:用户和权限管理语句,以及事务管理语句。
1. 用户管理
创建用户
创建一个新的数据库用户:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
删除用户
删除一个数据库用户:
DROP USER 'newuser'@'localhost';
修改用户密码
修改用户的密码:
ALTER USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';
2. 权限管理
授予权限
授予用户对某个数据库的所有权限:
GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost';
授予用户对某个表的特定权限:
GRANT SELECT, INSERT, UPDATE ON mydatabase.mytable TO 'newuser'@'localhost';
撤销权限
撤销用户对某个数据库的所有权限:
REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'newuser'@'localhost';
撤销用户对某个表的特定权限:
REVOKE SELECT, INSERT, UPDATE ON mydatabase.mytable FROM 'newuser'@'localhost';
刷新权限
刷新权限表,使权限变更生效:
FLUSH PRIVILEGES;
查看权限
查看用户的权限:
SHOW GRANTS FOR 'newuser'@'localhost';
3. 事务管理
事务管理用于确保数据库操作的原子性、一致性、隔离性和持久性(ACID)。
开始事务
开始一个事务:
START TRANSACTION;
提交事务
提交当前事务,使所有更改永久生效:
COMMIT;
回滚事务
回滚当前事务,撤销所有未提交的更改:
ROLLBACK;
设置保存点
设置一个事务的保存点,可以部分回滚到该保存点:
SAVEPOINT savepoint_name;
回滚到保存点
回滚到指定的保存点:
ROLLBACK TO SAVEPOINT savepoint_name;
释放保存点
释放指定的保存点,使其无法再回滚:
RELEASE SAVEPOINT savepoint_name;
示例操作
示例 1:创建用户并授予权限
-- 创建用户
CREATE USER 'alice'@'localhost' IDENTIFIED BY 'alice123';-- 授予对整个数据库的所有权限
GRANT ALL PRIVILEGES ON mydatabase.* TO 'alice'@'localhost';-- 刷新权限
FLUSH PRIVILEGES;-- 查看权限
SHOW GRANTS FOR 'alice'@'localhost';
示例 2:管理事务
-- 开始事务
START TRANSACTION;-- 插入数据
INSERT INTO users (username, email) VALUES ('bob', 'bob@example.com');-- 更新数据
UPDATE users SET email = 'bob@newdomain.com' WHERE username = 'bob';-- 设置保存点
SAVEPOINT before_delete;-- 删除数据
DELETE FROM users WHERE username = 'bob';-- 回滚到保存点
ROLLBACK TO SAVEPOINT before_delete;-- 提交事务
COMMIT;
这些示例展示了如何使用 DCL 语句来管理 MySQL 数据库中的用户、权限和事务。通过掌握这些操作,可以有效地控制数据库的访问权限和确保数据的一致性和完整性。
DDL (Data Definition Language) 示例
DDL(数据定义语言)用于创建、修改和删除数据库对象,包括逻辑库、数据表、视图和索引等。以下是针对逻辑库、数据表、视图和索引的常见 DDL 操作示例。
1. 逻辑库
创建逻辑库
CREATE DATABASE mydatabase;
删除逻辑库
DROP DATABASE mydatabase;
2. 数据表
创建数据表
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100),created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
修改数据表
添加新的列:
ALTER TABLE users ADD COLUMN age INT;
修改列的数据类型:
ALTER TABLE users MODIFY COLUMN email VARCHAR(255);
删除列:
ALTER TABLE users DROP COLUMN age;
删除数据表
DROP TABLE users;
3. 视图
创建视图
CREATE VIEW user_emails AS
SELECT username, email FROM users;
删除视图
DROP VIEW user_emails;
4. 索引
创建索引
在单个列上创建索引:
CREATE INDEX idx_username ON users (username);
在多个列上创建复合索引:
CREATE INDEX idx_username_email ON users (username, email);
删除索引
DROP INDEX idx_username ON users;
示例操作
示例 1:创建逻辑库和数据表
-- 创建逻辑库
CREATE DATABASE mydatabase;-- 使用逻辑库
USE mydatabase;-- 创建数据表
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100),created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
示例 2:创建视图和索引
-- 创建视图
CREATE VIEW user_emails AS
SELECT username, email FROM users;-- 创建索引
CREATE INDEX idx_username ON users (username);
通过这些示例,你可以学习如何使用 DDL 操作来管理数据库的逻辑库、数据表、视图和索引。掌握这些基本操作能够有效地设计和维护数据库结构,以满足应用程序的需求。
DML (Data Manipulation Language) 示例
DML(数据操纵语言)用于对数据库中的数据进行增、删、改、查操作。以下是关于添加、修改、删除和查询数据的 DML 操作示例。
1. 添加数据
单行添加数据
INSERT INTO users (username, email) VALUES ('john', 'john@example.com');
批量添加数据
INSERT INTO users (username, email)
VALUES ('alice', 'alice@example.com'),('bob', 'bob@example.com'),('charlie', 'charlie@example.com');
2. 修改数据
更新单行数据
UPDATE users SET email = 'new_email@example.com' WHERE username = 'john';
批量更新数据
UPDATE users SET email = 'new_email@example.com' WHERE id > 10;
3. 删除数据
删除单行数据
DELETE FROM users WHERE username = 'john';
删除多行数据
DELETE FROM users WHERE id > 10;
4. 查询数据
查询所有数据
SELECT * FROM users;
查询特定数据
SELECT * FROM users WHERE username = 'alice';
查询特定列
SELECT username, email FROM users;
查询排序结果
SELECT * FROM users ORDER BY created_at DESC;
查询分页结果
SELECT * FROM users LIMIT 10 OFFSET 20;
示例操作
示例 1:添加数据
-- 单行添加数据
INSERT INTO users (username, email) VALUES ('john', 'john@example.com');-- 批量添加数据
INSERT INTO users (username, email)
VALUES ('alice', 'alice@example.com'),('bob', 'bob@example.com'),('charlie', 'charlie@example.com');
示例 2:修改数据
-- 更新单行数据
UPDATE users SET email = 'new_email@example.com' WHERE username = 'john';-- 批量更新数据
UPDATE users SET email = 'new_email@example.com' WHERE id > 10;
示例 3:删除数据
-- 删除单行数据
DELETE FROM users WHERE username = 'john';-- 删除多行数据
DELETE FROM users WHERE id > 10;
示例 4:查询数据
-- 查询所有数据
SELECT * FROM users;-- 查询特定数据
SELECT * FROM users WHERE username = 'alice';-- 查询特定列
SELECT username, email FROM users;-- 查询排序结果
SELECT * FROM users ORDER BY created_at DESC;-- 查询分页结果
SELECT * FROM users LIMIT 10 OFFSET 20;
通过这些示例,你可以学习如何使用 DML 操作对数据库中的数据进行添加、修改、删除和查询操作。这些基本操作是数据库应用开发中的常见需求,掌握它们能够有效地管理和操作数据库中的数据。
相关文章:
MySQL之数据库相关操作学习笔记(一)
数据库相关操作 数据库表创建 定义逻辑库、数据表 DML 添加修改删除查询 DCL 用户权限事务 DDL 逻辑库数据表视图索引 DCL (Data Control Language) 示例 DCL(数据控制语言)主要用于控制数据库用户的访问权限和管理事务。DCL 主要包含两类语句&…...
【Node】node的Events模块(事件模块)的介绍和使用
文章目录 简言EventsPassing arguments and this to listeners 向监听器传递参数Asynchronous vs. synchronous 异步和同步Handling events only once 只一次处理事件Error events 错误事件Capture rejections of promises 捕捉拒绝承诺的情况Class: EventEmitter 事件类Event:…...
C#中字节数组(byte[])末尾继续添加字节的示例
方法一:使用List 使用List可以很容易地在末尾添加字节,然后如果需要,可以将其转换回byte[]。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Lin…...
Socket编程学习笔记之TCP与UDP
Socket: Socket是什么呢? 是一套用于不同主机间通讯的API,是应用层与TCP/IP协议族通信的中间软件抽象层。 是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面&#…...
JavaScript第九讲BOM编程的练习题
前言 上一节有BOM的讲解,有需要的码客们可以去看一下 以下是一个结合了上述BOM(Browser Object Model)相关内容的练习题及其源代码示例: 练习题: 编写一个JavaScript脚本,该脚本应该执行以下操作&#…...
JavaScript 中创建函数的多种方式
在 JavaScript 中,可以通过多种方式创建函数。每种方式都有其特定的用途、优点和缺点,以及适用的使用场景。以下是几种常见的创建函数的方式及其详细说明。 1. 函数声明(Function Declaration) 示例 function add(a, b) {retur…...
对称二叉树[简单]
优质博文:IT-BLOG-CN 一、题目 给你一个二叉树的根节点root, 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出…...
判断GIF类型并使用ImageDecoder解析GIF图
一、判断是否为GIF图片类型 在JavaScript中,判断用户上传的文件是否为GIF文件类型时,通常可以通过检查文件的type属性或文件的拓展名来判断,但是由于文件拓展名可以轻易被用户修改,type属性是由浏览器根据文件拓展名猜测得出的&a…...
数组对象数据修改后页面没有更新,无法进行编辑,校验失效问题
在 Vue 中,当你通过 Object.assign 或其他方式修改了对象中的某个属性时,Vue 并不会触发组件重新渲染,因此表单中的 input 框无法及时更新。这可能导致在修改表单数据后,页面没有更新,而且表单校验也失效的情况。这是因…...
什么是低代码?有什么特点?
低代码是一种高效的软件开发方法,它允许开发者通过图形化界面和预构建的代码块,以最小化传统手写代码的方式快速构建应用程序。这种方法旨在加速应用程序的开发周期,同时降低技术门槛和成本。以下是根据驰骋低代码设计者的观念与主张…...
Kafka 消息保留时长由 24 小时变更为 72 小时的影响分析
目录 Kafka 消息保留时长由 24 小时变更为 72 小时的影响分析Kafka 消息存储机制保留时长对生产速度的影响保留时长对消费速度的影响底层分析与优化建议附加:将 Kafka 消息保留时长从 24 小时更改为 72 小时后,CPU 使用率从 40% 上升到 70% 的现象1. 增加…...
MySQL A表的字段值更新为B表的字段值
MySQL A表的字段值更新为B表的字段值 准备数据表 create table person (id int unsigned auto_increment comment 主键 primary key,uuid varchar(32) not null comment 系统唯一标识符32个长度的字符串,mobile varchar(11) null comment 中国国内手机号,nickn…...
TCP 建链(三次握手)和断链(四次握手)
TCP 建链(三次握手)和断链(四次挥手) 背景简介建链(三次握手)断链(四次挥手)序号及标志位延伸问题为什么建立连接需要握手三次,两次行不行?三次握手可以携带数…...
SpringBoot集成JOOQ加Mybatis-plus使用@Slf4j日志
遇到个问题记录下,就是SpringBoot使用Mybatis和Mybatis-plus时可以正常打印日志,但是JOOQ的操作日志确打印不出来? 下面的解决方法就是将JOOQ的日志单独配置出来,直接给你们配置吧! 在项目的resources目录下创建日志…...
浅谈JavaScript中的对象赋值
目录 常见的对象赋值方式 直接赋值和对象扩展(浅拷贝)两种赋值方式区别 区别 联系 常见的对象赋值方式 1. 直接赋值:this.info this.deviceInfo,将一个对象的引用赋给另一个变量,它们引用同一个对象。 2. 对象扩…...
Java面试题-集合
Java面试题-集合 1、什么是集合?2、集合和数组的区别是什么?3、集合有哪些特点?4、常用的集合类有哪些?5、List, Set, Map三者的区别?6、说说集合框架底层数据结构?7、线程安全的集合…...
从当当网批量获取图书信息
爬取当当网图书数据并保存到本地,使用request、lxml的etree模块、pandas保存数据为excel到本地。 爬取网页的url为: http://search.dangdang.com/?key{}&actinput&page_index{} 其中key为搜索关键字,page_index为页码。 爬取的数据…...
python爬虫之JS逆向——网页数据解析
目录 一、正则 1 正则基础 元字符 基本使用 通配符: . 字符集: [] 重复 位置 管道符和括号 转义符 转义功能 转义元字符 2 正则进阶 元字符组合(常用) 模式修正符 re模块的方法 有名分组 compile编译 二、bs4 1 四种对象 2 导航文档树 嵌套选择 子节点、…...
VL53L4CX TOF开发(2)----修改测距范围及测量频率
VL53L4CX TOF开发.2--修改测距范围及测量频率 概述视频教学样品申请完整代码下载测距范围测量频率硬件准备技术规格系统框图应用示意图生成STM32CUBEMX选择MCU串口配置IIC配置 XSHUTGPIO1X-CUBE-TOF1app_tof.c详细解释测量频率修改修改测距范围 概述 最近在弄ST和瑞萨RA的课程…...
C++之noexcept
目录 1.概述 2.noexcept作为说明符 3.noexcept作为运算符 4.传统throw与noexcept比较 5.原理剖析 6.总结 1.概述 在C中,noexcept是一个关键字,用于指定函数不会抛出异常。如果函数保证不会抛出异常,编译器可以进行更多优化,…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
