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

【MySQL】基础操作(DDL,DML,DCL,DQL)

安装教程自行搜索,网上有很多

  • 用户名设置为 root
  • 密码设置为 123456
  • 可以不这样设置,但要记好用户名密码,相关的代码也要自行更改

打开命令提示符程序(win+R打开输入cmd回车)

输入:mysql -uroot -p
回车输入密码即可进入命令行环境,显示:mysql>show databases;  -查看有哪些数据库
use 数据库名  -使用某个数据库
show tables  -查看数据库内有哪些表
exit  -退出MySQL的命令行环境

上述的一些基础命令即SQL语句

在命令提示符里这样敲比较麻烦

我们使用图形化软件DBeaver:Download | DBeaver Community

下载好后一路下一步即可,如要更改路径自行更改

SQL语法特征

  • SQL大小写不敏感
  • SQL可以单行或多行书写,最后以 ; 号结束
  • SQL支持注释:
单行注释:-- 注释内容(--后面一定要有一个空格)
单行注释:# 注释内容(#后面可以不加空格,推荐加上)
多行注释:/* 注释内容 */

数据定义-DDL(Data Definition Language)

SHOW DATABASES;                            # 查看数据库
USE 数据库名称;                             # 使用数据库
CREATE DATABASE 数据库名称 [CHARSET UTF8];  # 创建数据库 []表示可选的,实际使用时删去
DROP DATABASE 数据库名称;                   # 删除数据库
SELECT DATABASE();                         # 查看当前使用的数据库SHOW TABLES; # 查看表(需要先选择数据库)
# 创建表
CREATE TABLE 表名称(列名称 列类型,列名称 列类型,......
);
# 示例:
create table student(id int,name varchar(10),age int
);
# 删除表
DROP TABLE 表名称;
DROP TABLE IF EXISTS 表名称;

数据操纵-DML(Data Manipulation Language)

# 数据插入
# 基础语法:
INSERT INTO[(1,2,...,列N)] VALUES(1,2,...,值N)[,(1,2,...,值N),......];
# 比较抽象,我们来看示例:
insert into student(id) values(101),(102),(103);
insert into student(name,age) values('张三',18),('李四',19),('王五',20);
# SQL中只支持单引号
insert into student values(201,'阿尼亚',8),(202,'哇酷哇酷',10);
# 列的设置可以省略,但后面的values必须与创建的一一对应# 数据删除
# 基础语法:
DELETE FROM 表名称 [WHERE 条件判断];
# 示例:
delete from student where id=101;
delete from student where age<18;# 数据更新
# 基础语法:
UPDATE 表名 SET=[WHERE 条件判断];
# 示例:
update student set name='黄昏' where id=102;
update student set age=22; # 没有where语句会把所有的更改

where条件判断可以使用"and"(且),“or”(或);条件也可以组合用括号括起来

数据控制-DCL(Data Control Language)

用户管理

--查询用户
select * from user;
--创建用户
create user '用户名'@'主机名' identified by '密码';
--修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
--删除用户
drop user '用户名'@'主机名';

权限分类

  1. 数据库级别权限:控制用户对整个数据库的操作权限,如CREATE、DROP、ALTER等。
  2. 表级别权限:控制用户对某个表的操作权限,如SELECT、INSERT、UPDATE、DELETE等。
  3. 列级别权限:控制用户对某个表的特定列的操作权限,如SELECT、UPDATE等。
  4. 存储过程/函数权限:控制用户对存储过程/函数的执行权限,如EXECUTE等。

权限控制

GRANT:授权命令GRANT允许用户授予其他用户对数据库对象的访问权限,例如SELECT、INSERT、UPDATE、DELETE等权限。在此基础上,可以限制被授权用户对数据库对象的访问范围,即限定被授权用户对哪些表、视图、存储过程等对象有权访问。

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';-- 授予 SELECT 权限给 user1 用户
GRANT SELECT ON table1 TO user1;-- 授予 INSERT、UPDATE、DELETE 权限给 user2 用户
GRANT INSERT, UPDATE, DELETE ON table2 TO user2;-- 查看用户有哪些权限
show grants for '用户名'@'ip地址';-- 授予用户所有权限
GRANT ALL PRIVILEGES ON table_name TO user_name;-- 授予角色所有权限
GRANT ALL PRIVILEGES ON table_name TO role_name;
GRANT role_name TO user_name;
-- 即授权角色role_name对表table_name进行所有操作,并将该角色授权给用户user_name

REVOKE命令:允许用户撤销已经授予其他用户的访问权限。同样地,用户可以限定撤销哪些对象的访问权限。

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';-- 撤销 user1 对 table1 的 SELECT 权限
REVOKE SELECT ON table1 FROM user1;-- 撤销 user2 对 table2 的全部权限
REVOKE ALL PRIVILEGES ON table2 FROM user2;-- 撤销角色role_name对表table_name的所有操作,并将该角色从用户user_name中撤销
REVOKE ALL PRIVILEGES ON table_name FROM role_name;
REVOKE role_name FROM user_name;

DENY关键字用于限制用户或角色对某些数据库对象的访问权限,语法如下:

DENY permission [, permission] ON object TO {user | role | PUBLIC} [, {user | role | PUBLIC}] [WITH GRANT OPTION]

具体来说,它可以阻止用户或角色对某个表、视图、存储过程等对象的SELECT、INSERT、UPDATE、DELETE等操作。

其中,permission表示要限制的权限,可以是SELECT、INSERT、UPDATE、DELETE等;object表示要限制访问的对象,可以是表、视图、存储过程等;user或role表示要限制的用户或角色,PUBLIC表示所有用户或角色;WITH GRANT OPTION表示允许被授权的用户或角色再次授权。

-- 禁止用户Alice对表employee的SELECT和UPDATE操作
DENY SELECT, UPDATE ON employee TO Alice

COMMIT和ROLLBACK命令,用于控制事务处理。COMMIT命令用于提交当前的事务,将修改保存到数据库中,而ROLLBACK则用于回滚当前事务,将所有修改都撤销回去。

-- 开始一个事务
BEGIN;-- 执行一些 SQL 操作
INSERT INTO table1 (col1, col2) VALUES ('value1', 'value2');-- 提交事务
COMMIT;-- ---------------------------------------------------------
-- 开始一个事务
BEGIN;-- 执行一些 SQL 操作
INSERT INTO table1 (col1, col2) VALUES ('value1', 'value2');-- 回滚事务
ROLLBACK;

数据备份

  • 导出数据(请在登录mysql数据库之前进行)
# 导出powernode这个数据库中所有的表
mysqldump powernode > e:/powernode.sql -uroot -p1234 --default-character-set=utf8# 导出powernode中emp表的数据
mysqldump powernode emp > e:/powernode.sql -uroot -p1234 --default-character-set=utf8
  • 导入数据第一种方式:(请在登录mysql之前进行)
# 现在登录mysql状态下新建一个数据库
create database powernode;
# 在登录mysql之前执行以下命令
mysql powernode < e:/powernode.sql -uroot -p1234 --default-character-set=utf8
  • 导入数据第二种方式:(请在登录mysql之后操作)
create  database powernode;
use powernode;
source d:/powernode.sql

数据查询-DQL(Data Query Language)

# 数据查询
# 基础语法:
SELECT 字段列表|* FROMWHERE 条件判断;
# 示例:
select id,name from student;
select * from student; #展示所有字段列表的内容
select * from student where name='黄昏';/*分组聚合
基础语法:SELECT 字段|聚合函数 FROM 表 WHERE 条件判断 GROUP BY 列;
聚合函数:
SUM(列) 求和
AVG(列) 求平均值
MIN(列) 求最小值
MAX(列) 求最大值
COUNT(列|*) 求数量
*/
select gender,avg(age) from student group by gender; #按性别分组并把性别和性别对应分组的平均年龄查询/*结果排序
可以对查询的结果使用 ORDER BY 关键字指定某个列进行排序
在后面加 ORDER BY ... [ASC|DESC]
默认ASC 升序ORDER BY 语句也可以使用多个字段来进行排序,当排序的第一个字段相同的情况下,再按照第二个字段进行排序
ORDER BY 后面跟多个字段时,字段之间使用英文逗号隔开,优先级是按先后顺序而定
*/
select * from student where age>20 order by age asc;/*结果分页限制
可以对查询的结果使用 LIMIT 关键字指定显示条数
在后面加 LIMIT n[,m]
*/
select * from student limit 5; #只展示5条数据
select * from student limit 10,5; #从第10条开始,向后取5条/*查询不重复记录
语法:
select distinct 字段 from 表名;
#distinct必须放在最开头
#distinct只能使用需要去重的字段进行操作
#distinct去重多个字段时,含义是:几个字段同时重复时才能会过滤,会默认按左边第一个字段为依据
*/
select distinct hobbid from CLASS1;/*设置别名
在MySQL查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,方便操作,增强可读性格式:
列的别名:select 字段 as 字段别名 表名;
表的别名:select 别名.字段 from 表名 as 别名;
as可以省略使用场景:
对复杂的表进行查询时,别名可以缩短查询语句的长度
多表相连查询的时候(通俗易懂,简短sql语句)注意:在为表设置别名时,要保证别名不能与数据库中其他表的名称冲突
*/
select address as 地区 from CLASS1; # 将address字段设置别名为"地区"显示# 查询表的记录的数量,以别名显示:以address分组,查询表数据内容,以别名"次数"显示
select address,count(*) as 次数 from CLASS1 group by address;# 利用as,将查询的数据导入到另一个表内
create table CLASS2 as select * from CLASS1;
select * from CLASS1;
select * from CLASS2;
/*
此处as起到的作用:
创建了一个新表,并定义表结构,插入表数据
但是"约束"没有完全复制过来,但是如果原表设置了主键,那么附表的:default字段会默认设置了一个0
*/

参考博文:

https://blog.csdn.net/qq_47128897/article/details/130377479

https://blog.csdn.net/m0_63947499/article/details/131086846

https://blog.csdn.net/weixin_46370595/article/details/129102156

https://blog.csdn.net/zyy1020075955/article/details/127012772

相关文章:

【MySQL】基础操作(DDL,DML,DCL,DQL)

安装教程自行搜索&#xff0c;网上有很多 用户名设置为 root密码设置为 123456可以不这样设置&#xff0c;但要记好用户名密码&#xff0c;相关的代码也要自行更改 打开命令提示符程序(winR打开输入cmd回车) 输入&#xff1a;mysql -uroot -p 回车输入密码即可进入命令行环境…...

工厂自动化升级改造(3)-Modbus与MQTT的转换

什么是MQTT,Modbus,见下面文章 工厂自动化升级改造参考(01)--设备通信协议详解及选型-CSDN博客文章浏览阅读608次,点赞9次,收藏6次。>>特点:基于标准的以太网技术,使用TCP/IP协议栈,支持高速数据传输和局域网内的设备通信。>>>特点:跨平台的通信协议,…...

InnoDB 事务处理机制

文章目录 前言1. 事务处理挑战1.1 事务机制处理的问题1.2 并发事务带来的问题 2. InnodDB 和 ACID 模型2.1 Innodb Buffer Pool2.2 Redo log2.3 Undo log2.4 应用案例 3. 隔离级别和锁机制3.1 事务隔离级别3.1.1 READ UNCOMMITTED3.1.2 READ COMMITTED3.1.3 REPEATABLE READ3.1…...

Thymeleaf

替代jsp 功能&#xff1a;服务器渲染&#xff08;就是将服务器的数据展示在网页上&#xff09; 1、MVC概念 model 模型 javaBean(User/Book/Order...) View视图 html 服务器的动态数据 Controller控制器 Servlet MVC是在表述层开发运用的一种设计理念。主张把封装数据…...

网络学习(一)|深入了解API网关:定义、功能和关键术语

文章目录 定义主要功能关键术语 定义 API 网关&#xff08;API Gateway&#xff09;是一个核心的服务架构组件&#xff0c;用于管理、路由和保护对后端服务的访问。它充当了系统内外的接口&#xff0c;负责接收来自客户端的请求&#xff0c;并将其路由到相应的后端服务&#x…...

基于yolov8+flask搭建一个web版本的网页模型预测系统

测试环境&#xff1a; anaconda3python3.8 torch1.9.0cu111 ultralytics8.2.2 首先我们将训练好的权重放在weights目录下面 并将名字改成yolov8n.pt&#xff0c;如果不想改可以在代码app.py都把路径改过来即可。然后我们打开 python app.py之后看到 我们点击选择文件支持图…...

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第8章 安装编译所需要的依赖包

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…...

牛客热题:合并二叉树

牛客热题&#xff1a;二叉树与双向链表> &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题…...

conda 常用20个命令

conda常用20个命令 这些命令涵盖了Conda环境管理和包管理的常用功能&#xff0c;可帮助你有效地管理Python环境和软件包。 创建环境&#xff1a; conda create --name myenv这个命令用于创建一个名为myenv的新环境。你可以在--name后面指定环境的名称&#xff0c;并在其后加上…...

Git泄露(续)

接上一篇补充 git config --global user.name " " git config --global user.email 邮箱地址 配置用户名和邮箱 git commit 使其处于交互区&#xff0c;没有使用 -m&#xff0c;默认用vim 来编辑和提交信息 输入要提交的内容&#xff0c;然后按ESC建回到命令…...

clickhouse卸载与安装

ClickHouse是一个用于联机分析&#xff08;OLAP&#xff09;的列式数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;来自于俄罗斯本土搜索引擎企业Yandex公司。它是为处理大规模数据集而设计的&#xff0c;并提供高性能和低延迟的查询支持。 注意&#xff1a;此教程的运…...

npm install [Error]

npm install 依赖的时候报错 依赖版本问题的冲突&#xff0c;忽视即可 使用 npm install --legacy-peer-deps...

Redisson分布式锁全解析:从基础到红锁,锁定高并发解决方案

1. 介绍Redisson和分布式锁的概念 1.1 Redisson简介 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid, IMDG)。它不仅提供了对分布式和可伸缩数据结构的支持&#xff0c;还提供了多种分布式服务&#xff0c;包括但不限于分布式锁、集合、映射、计…...

RocketMQ-Dashboard 控制台使用详解

1 安装部署 具体部署启动请参考&#xff1a;RocketMQ从安装、压测到运维一站式文档_rocketmq benchmark压测-CSDN博客 RocketMq的dashboard&#xff0c;有运维页面&#xff0c;驾驶舱&#xff0c;集群页面&#xff0c;主题页面&#xff0c;消费者页面&#xff0c;生产者页面&…...

JSP+SQL学生成绩管理系统

Java版本&#xff1a;1.8 数据库&#xff1a;MySQL 框架&#xff1a;Spring Spring MVC MyBatis 服务器&#xff1a;Tomcat 前端解析框架&#xff1a;Thymeleaf 开发工具&#xff1a;Idea 2017 版本管理工具&#xff1a;Maven 版本控制工具&#xff1a;GitHub 经过对系统的需…...

5G工业路由器实现驾考科目三实时监控与远程控制

5G驾考路由器的应用主要体现在智能驾考系统中&#xff0c;其优势包括提高考试安全性、效率和规范性&#xff0c;同时杜绝违规行贿作弊的行为。 在驾考系统中&#xff0c;5G工业路由器是数据传输的桥梁设备。车载设备如摄像头、定位系统、硬盘录像机、传感器等&#xff0c;通过串…...

基于微信小程序+JAVA Springboot 实现的【智慧乡村旅游服务平台】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称&#xff1a; 基于微信小程序的智慧乡村旅游服务平台的设计与实现 项目技术栈 该项目采用了以下核心技术栈&#xff1a; 后端框架/库&#xff1a; Java SSM框架数据库&#xff1a; MySQL前端技术&#xff1a; 微信开发者工具、uni-app其他技术&#xff1a…...

图片中的表格转成word用什么工具好?

2024年5月16日&#xff0c;周四上午 我推荐用免费的腾讯OCR表格识别v3体验网站 用手机文档模式拍下并转成黑白后&#xff0c;成功识别的概率还是非常大的 OCR Demo (tencent.com)https://ocrdemo.cloud.tencent.com/识别成功后&#xff0c;复制识别结果并粘贴到word文档里面就…...

P1305 新二叉树

题目描述 输入一串二叉树&#xff0c;输出其前序遍历。 输入格式 第一行为二叉树的节点数 &#x1d45b;。(1≤&#x1d45b;≤26) 后面 &#x1d45b; 行&#xff0c;每一个字母为节点&#xff0c;后两个字母分别为其左右儿子。特别地&#xff0c;数据保证第一行读入的节点…...

设计模式学习笔记 - 回顾总结:在实际软件开发中常用的设计思想、原则和模式

概述 本章&#xff0c;先来回顾下整个专栏的知识体系&#xff0c;主要包括面向对象、设计原则、编码规范、重构技巧、设计模式五个部分。 面向对象 相对于面向过程、函数式编程&#xff0c;面向对象是现在最主流的编程范式。纯面向过程的编程方法&#xff0c;现在已经不多见了…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...