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

MySQL之数据库相关操作学习笔记(一)

数据库相关操作

数据库表创建

定义逻辑库、数据表
  1. DML
    1. 添加
    2. 修改
    3. 删除
    4. 查询
  2. DCL
    1. 用户
    2. 权限
    3. 事务
  3. DDL
    1. 逻辑库
    2. 数据表
    3. 视图
    4. 索引

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] 输出&#xf…...

判断GIF类型并使用ImageDecoder解析GIF图

一、判断是否为GIF图片类型 在JavaScript中,判断用户上传的文件是否为GIF文件类型时,通常可以通过检查文件的type属性或文件的拓展名来判断,但是由于文件拓展名可以轻易被用户修改,type属性是由浏览器根据文件拓展名猜测得出的&a…...

数组对象数据修改后页面没有更新,无法进行编辑,校验失效问题

在 Vue 中,当你通过 Object.assign 或其他方式修改了对象中的某个属性时,Vue 并不会触发组件重新渲染,因此表单中的 input 框无法及时更新。这可能导致在修改表单数据后,页面没有更新,而且表单校验也失效的情况。这是因…...

什么是低代码?有什么特点?

低代码是一种高效的软件开发方法,它允许开发者通过图形化界面和预构建的代码块,以最小化传统手写代码的方式快速构建应用程序。这种方法旨在加速应用程序的开发周期,同时降低技术门槛和成本。以下是根据驰骋低代码设计者的观念与主张&#xf…...

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# 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息&#xff0…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

Python学习(8) ----- Python的类与对象

Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...