【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) 后面 𝑛 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点…...

设计模式学习笔记 - 回顾总结:在实际软件开发中常用的设计思想、原则和模式
概述 本章,先来回顾下整个专栏的知识体系,主要包括面向对象、设计原则、编码规范、重构技巧、设计模式五个部分。 面向对象 相对于面向过程、函数式编程,面向对象是现在最主流的编程范式。纯面向过程的编程方法,现在已经不多见了…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...