【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 '用户名'@'主机名';
权限分类
- 数据库级别权限:控制用户对整个数据库的操作权限,如CREATE、DROP、ALTER等。
- 表级别权限:控制用户对某个表的操作权限,如SELECT、INSERT、UPDATE、DELETE等。
- 列级别权限:控制用户对某个表的特定列的操作权限,如SELECT、UPDATE等。
- 存储过程/函数权限:控制用户对存储过程/函数的执行权限,如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 字段列表|* FROM 表 WHERE 条件判断;
# 示例:
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)
安装教程自行搜索,网上有很多 用户名设置为 root密码设置为 123456可以不这样设置,但要记好用户名密码,相关的代码也要自行更改 打开命令提示符程序(winR打开输入cmd回车) 输入: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 功能:服务器渲染(就是将服务器的数据展示在网页上) 1、MVC概念 model 模型 javaBean(User/Book/Order...) View视图 html 服务器的动态数据 Controller控制器 Servlet MVC是在表述层开发运用的一种设计理念。主张把封装数据…...
网络学习(一)|深入了解API网关:定义、功能和关键术语
文章目录 定义主要功能关键术语 定义 API 网关(API Gateway)是一个核心的服务架构组件,用于管理、路由和保护对后端服务的访问。它充当了系统内外的接口,负责接收来自客户端的请求,并将其路由到相应的后端服务&#x…...
基于yolov8+flask搭建一个web版本的网页模型预测系统
测试环境: anaconda3python3.8 torch1.9.0cu111 ultralytics8.2.2 首先我们将训练好的权重放在weights目录下面 并将名字改成yolov8n.pt,如果不想改可以在代码app.py都把路径改过来即可。然后我们打开 python app.py之后看到 我们点击选择文件支持图…...
【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第8章 安装编译所需要的依赖包
RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…...
牛客热题:合并二叉树
牛客热题:二叉树与双向链表> 📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题…...
conda 常用20个命令
conda常用20个命令 这些命令涵盖了Conda环境管理和包管理的常用功能,可帮助你有效地管理Python环境和软件包。 创建环境: conda create --name myenv这个命令用于创建一个名为myenv的新环境。你可以在--name后面指定环境的名称,并在其后加上…...
Git泄露(续)
接上一篇补充 git config --global user.name " " git config --global user.email 邮箱地址 配置用户名和邮箱 git commit 使其处于交互区,没有使用 -m,默认用vim 来编辑和提交信息 输入要提交的内容,然后按ESC建回到命令…...
clickhouse卸载与安装
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS),来自于俄罗斯本土搜索引擎企业Yandex公司。它是为处理大规模数据集而设计的,并提供高性能和低延迟的查询支持。 注意:此教程的运…...
npm install [Error]
npm install 依赖的时候报错 依赖版本问题的冲突,忽视即可 使用 npm install --legacy-peer-deps...
Redisson分布式锁全解析:从基础到红锁,锁定高并发解决方案
1. 介绍Redisson和分布式锁的概念 1.1 Redisson简介 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid, IMDG)。它不仅提供了对分布式和可伸缩数据结构的支持,还提供了多种分布式服务,包括但不限于分布式锁、集合、映射、计…...
RocketMQ-Dashboard 控制台使用详解
1 安装部署 具体部署启动请参考:RocketMQ从安装、压测到运维一站式文档_rocketmq benchmark压测-CSDN博客 RocketMq的dashboard,有运维页面,驾驶舱,集群页面,主题页面,消费者页面,生产者页面&…...
JSP+SQL学生成绩管理系统
Java版本:1.8 数据库:MySQL 框架:Spring Spring MVC MyBatis 服务器:Tomcat 前端解析框架:Thymeleaf 开发工具:Idea 2017 版本管理工具:Maven 版本控制工具:GitHub 经过对系统的需…...
5G工业路由器实现驾考科目三实时监控与远程控制
5G驾考路由器的应用主要体现在智能驾考系统中,其优势包括提高考试安全性、效率和规范性,同时杜绝违规行贿作弊的行为。 在驾考系统中,5G工业路由器是数据传输的桥梁设备。车载设备如摄像头、定位系统、硬盘录像机、传感器等,通过串…...
基于微信小程序+JAVA Springboot 实现的【智慧乡村旅游服务平台】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)
项目名称 项目名称: 基于微信小程序的智慧乡村旅游服务平台的设计与实现 项目技术栈 该项目采用了以下核心技术栈: 后端框架/库: Java SSM框架数据库: MySQL前端技术: 微信开发者工具、uni-app其他技术:…...
图片中的表格转成word用什么工具好?
2024年5月16日,周四上午 我推荐用免费的腾讯OCR表格识别v3体验网站 用手机文档模式拍下并转成黑白后,成功识别的概率还是非常大的 OCR Demo (tencent.com)https://ocrdemo.cloud.tencent.com/识别成功后,复制识别结果并粘贴到word文档里面就…...
P1305 新二叉树
题目描述 输入一串二叉树,输出其前序遍历。 输入格式 第一行为二叉树的节点数 𝑛。(1≤𝑛≤26) 后面 𝑛 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点…...
设计模式学习笔记 - 回顾总结:在实际软件开发中常用的设计思想、原则和模式
概述 本章,先来回顾下整个专栏的知识体系,主要包括面向对象、设计原则、编码规范、重构技巧、设计模式五个部分。 面向对象 相对于面向过程、函数式编程,面向对象是现在最主流的编程范式。纯面向过程的编程方法,现在已经不多见了…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 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…...
