【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) 后面 𝑛 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点…...
设计模式学习笔记 - 回顾总结:在实际软件开发中常用的设计思想、原则和模式
概述 本章,先来回顾下整个专栏的知识体系,主要包括面向对象、设计原则、编码规范、重构技巧、设计模式五个部分。 面向对象 相对于面向过程、函数式编程,面向对象是现在最主流的编程范式。纯面向过程的编程方法,现在已经不多见了…...
tao-8k嵌入模型实测:Xinference免配置部署,长文本处理效率翻倍
tao-8k嵌入模型实测:Xinference免配置部署,长文本处理效率翻倍 1. 引言:长文本嵌入的工程挑战 在自然语言处理领域,文本嵌入模型扮演着至关重要的角色。它们将文本转换为高维向量表示,为语义搜索、文档聚类、问答系统…...
2026年局部放电检测技术:全场景应用效能分析与绝缘诊断演进报告
摘要在2026年全球能源互联网纵深发展的背景下,电力系统及关键基础设施的绝缘安全已由“被动响应”全面转向“主动预警”。局部放电(Partial Discharge, PD)检测作为绝缘诊断的“哨兵”技术,其在多元化场景中的表现已成为衡量电力运…...
Joy-Con Toolkit开源工具:Switch手柄深度定制与性能优化方案
Joy-Con Toolkit开源工具:Switch手柄深度定制与性能优化方案 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit Joy-Con Toolkit是一款面向任天堂Switch玩家的开源手柄管理工具,提供专业级传…...
终极指南:如何用 PHP Steam API 包轻松集成 Steam 游戏数据
终极指南:如何用 PHP Steam API 包轻松集成 Steam 游戏数据 【免费下载链接】Steam A composer package to make use of the steam web api. 项目地址: https://gitcode.com/gh_mirrors/stea/Steam 想要在你的 PHP 或 Laravel 应用中集成 Steam 游戏数据吗&a…...
ARM开发板也能玩转电子相册?手把手教你用GEC6818和Linux驱动LCD屏
ARM开发板上的电子相册实战:从Linux驱动到触摸交互的全解析 在嵌入式开发领域,将一块裸板变成能与人交互的智能设备,这种创造过程总是令人着迷。今天我们要探讨的,是如何让一块GEC6818 ARM开发板变身为一台功能完整的电子相册。这…...
通过WireShark与WinHex从pcap数据流中提取并修复损坏的JPG图片
1. 从pcap文件中筛选JPG数据流 当你拿到一个网络抓包文件(pcap格式),里面可能混杂着各种网络流量数据。要从中提取出图片文件,首先得学会用WireShark这个神器来筛选目标数据。我处理过不少类似的案例,发现很多新手容易…...
7个突破瓶颈技巧:开源字体高效应用指南
7个突破瓶颈技巧:开源字体高效应用指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在数字设计与开发领域,选择合适的字体常常让创作者陷入两难——商业字体…...
Ender3V2S1切片器脚本配置指南:优化3D打印效果的完整教程
Ender3V2S1切片器脚本配置指南:优化3D打印效果的完整教程 【免费下载链接】Ender3V2S1 This is optimized firmware for Ender3 V2/S1 3D printers. 项目地址: https://gitcode.com/gh_mirrors/en/Ender3V2S1 Ender3V2S1是一款备受欢迎的3D打印机,…...
CertMagic故障恢复终极指南:如何从证书失效中快速恢复的10个关键步骤
CertMagic故障恢复终极指南:如何从证书失效中快速恢复的10个关键步骤 【免费下载链接】certmagic Automatic HTTPS for any Go program: fully-managed TLS certificate issuance and renewal 项目地址: https://gitcode.com/gh_mirrors/ce/certmagic CertMa…...
3款高效AI答题工具助力B站硬核会员试炼
3款高效AI答题工具助力B站硬核会员试炼 【免费下载链接】bili-hardcore bilibili 硬核会员 AI 自动答题脚本,直接调用 B 站 API,非 OCR 实现 项目地址: https://gitcode.com/gh_mirrors/bi/bili-hardcore B站硬核会员试炼要求用户在100道专业题目…...
