数据库:MySQL 指令大全(备忘清单)

文章目录

    • 入门
      • 介绍
      • 登录MySQL
      • 常用的
        • 数据库 Database
        • 表 Table
        • Proccess
      • 查看 MySQL 信息
      • 退出MySQL会话
      • 备份
    • MySQL 示例
      • 管理表格
      • 从表中查询数据
      • 从多个表查询
      • 使用 SQL 约束
      • 修改数据
      • 管理视图
      • 管理触发器
        • WHEN
        • EVENT
        • TRIGGER_TYPE
      • 管理索引
    • MySQL 数据类型
      • Strings
      • Date & time
      • Numeric
    • 函数
      • 聚合函数
      • 数学函数
      • 日期和时间函数
      • 字符串函数
      • 高级函数

本备忘单旨在快速理解 MySQL 所涉及的主要概念,提供了最常用的SQL语句,供您参考。

参考:

  • SQL 基础教程 (w3school.com.cn)
  • SQL 语句教程 (1keydata.com)
  • 21分钟 MySQL 基础入门 (jaywcjlove.github.io)

入门

介绍

MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成,如下所示的一个表格


    name ▼ 键            ▼ 列(col)
┌┈┈┈┈┬┈┈┈┈┈┈┈┈┬┈┈┈┈┈┈┬┈┈┈┈┈┈┈┐
┆ id ┆ name   ┆ uid  ┆ level ┆  ◀ 表头header
├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
┆  1 ┆ mysql  ┆ 03     ┆
├┈┈┈┈┼┈┈┈┈┈┈┈┈┤┈┈┈┈┈┈┤┈┈┈┈┈┈┈┤
┆  2 ┆ redis  ┆ 121     ┆  ◀ 行 row
└┈┈┈┈┴┈┈┈┈┈┈┈┈┴┈┈┈┈┈┈┴┈┈┈┈┈┈┈┘redis ▲ 值

  • 表头(header) 每一列的名称
  • 列(col) 具有相同数据类型的数据的集合
  • 行(row) 每一行用来描述某个人/物的具体信息
  • 值(value) 行的具体信息,每个值与该列数据类型相同
  • 键(key) 用来识别某个特定的人/物的方法,有唯一性

登录MySQL

# 默认用户名<root>,-p 是密码,
# ⚠️参数后面不需要空格
mysql -h 127.0.0.1 -u <用户名> -p<密码>
mysql -D 数据库名 -h 主机名 -u 用户名 -p
mysql -h <host> -P <端口号> -u <user> -p [db_name]
mysql -h <host> -u <user> -p [db_name]

常用的

数据库 Database
:-:-
CREATE DATABASE db ;创建数据库
SHOW DATABASES;列出数据库
USE db;切换到数据库
CONNECT db ;切换到数据库
DROP DATABASE db;删除数据库
表 Table
:-:-
SHOW TABLES;列出当前数据库的表
SHOW FIELDS FROM t;表的列表字段
DESC t;显示表格结构
SHOW CREATE TABLEt;显示创建表sql
TRUNCATE TABLEt;删除表中的所有数据
DROP TABLEt;删除表格
Proccess
:-:-
show processlist;列出进程
kill pid;杀死进程

查看 MySQL 信息

# 显示当前mysql的version的各种信息
mysql> status;
# 显示当前mysql的version信息
mysql> select version(); 
# 查看 MySQL 端口号
mysql> show global variables like 'port';

退出MySQL会话

mysql> exit 

退出 quit;\q; 一样的效果

备份

创建备份

mysqldump -u user -p db_name > db.sql

导出不带架构的数据库

mysqldump -u user -p db_name --no-data=true --add-drop-table=false > db.sql

恢复备份

mysql -u user -p db_name < db.sql

MySQL 示例

管理表格

创建一个包含三列的新表

CREATE TABLE t (id    INT,name  VARCHAR DEFAULT NOT NULL,price INT DEFAULT 0PRIMARY KEY(id)
);

从数据库中删除表

DROP TABLE t ;

向表中添加新列

ALTER TABLE t ADD column;

从表中删除列c

ALTER TABLE t DROP COLUMN c ;

添加约束

ALTER TABLE t ADD constraint;

删除约束

ALTER TABLE t DROP constraint;

将表从t1重命名为t2

ALTER TABLE t1 RENAME TO t2;

将列 c1 重命名为 c2

ALTER TABLE t1 CHANGE c1 c2 datatype;
ALTER TABLE table_name RENAME COLUMN c1 TO c2;

将列c1的数据类型改为datatype

ALTER TABLE t1 MODIFY c1 datatype;

删除表中的所有数据

TRUNCATE TABLE t;

从表中查询数据

从表中查询列c1、c2中的数据

SELECT c1, c2 FROM t

查询表中的所有行和列

SELECT * FROM t

查询数据并使用条件筛选行

SELECT c1, c2 FROM t
WHERE condition

查询表中的不同行

SELECT DISTINCT c1 FROM t
WHERE condition

按升序或降序对结果集排序

SELECT c1, c2 FROM t
ORDER BY c1 ASC [DESC]

跳过行的偏移并返回下n行

SELECT c1, c2 FROM t
ORDER BY c1 
LIMIT n OFFSET offset

使用聚合函数对行进行分组

SELECT c1, aggregate(c2)
FROM t
GROUP BY c1

使用HAVING子句筛选组

SELECT c1, aggregate(c2)
FROM t
GROUP BY c1
HAVING condition

从多个表查询

内部连接 t1 和 t2

SELECT c1, c2 
FROM t1
INNER JOIN t2 ON condition

左连接t1和t1

SELECT c1, c2 
FROM t1
LEFT JOIN t2 ON condition

右连接t1和t2

SELECT c1, c2 
FROM t1
RIGHT JOIN t2 ON condition

执行完全外部连接

SELECT c1, c2 
FROM t1
FULL OUTER JOIN t2 ON condition

生成表中行的笛卡尔积

SELECT c1, c2 
FROM t1
CROSS JOIN t2

执行交叉连接的另一种方法

SELECT c1, c2 
FROM t1, t2

使用INNER Join子句将t1连接到自身

SELECT c1, c2
FROM t1 A
INNER JOIN t1 B ON condition

使用SQL运算符,合并两个查询中的行

SELECT c1, c2 FROM t1
UNION [ALL]
SELECT c1, c2 FROM t2

返回两个查询的交集

SELECT c1, c2 FROM t1
INTERSECT
SELECT c1, c2 FROM t2

从另一个结果集中减去一个结果集

SELECT c1, c2 FROM t1
MINUS
SELECT c1, c2 FROM t2

使用模式匹配%查询行_

SELECT c1, c2 FROM t1
WHERE c1 [NOT] LIKE pattern

查询列表中的行

SELECT c1, c2 FROM t
WHERE c1 [NOT] IN value_list

查询两个值之间的行

SELECT c1, c2 FROM t
WHERE  c1 BETWEEN low AND high

检查表中的值是否为NULL

SELECT c1, c2 FROM t
WHERE  c1 IS [NOT] NULL

使用 SQL 约束

将c1和c2设置为主键

CREATE TABLE t(c1 INT, c2 INT, c3 VARCHAR,PRIMARY KEY (c1,c2)
);

将c2列设置为外键

CREATE TABLE t1(c1 INT PRIMARY KEY,  c2 INT,FOREIGN KEY (c2) REFERENCES t2(c2)
);

使c1和c2中的值唯一

CREATE TABLE t(c1 INT, c1 INT,UNIQUE(c2,c3)
);

确保c1>0和c1>=c2中的值

CREATE TABLE t(c1 INT, c2 INT,CHECK(c1> 0 AND c1 >= c2)
);

c2列中的设置值不为NULL

CREATE TABLE t(c1 INT PRIMARY KEY,c2 VARCHAR NOT NULL
);

修改数据

在表格中插入一行

INSERT INTO t(column_list)
VALUES(value_list);

在表格中插入多行

INSERT INTO t(column_list)
VALUES (value_list), (value_list),;

将行从t2插入t1

INSERT INTO t1(column_list)
SELECT column_list
FROM t2;

更新列c1中所有行的新值

UPDATE t
SET c1 = new_value;

更新列c1、c2中与条件匹配的值

UPDATE t
SET c1 = new_value, c2 = new_value
WHERE condition;

删除表中的所有数据

DELETE FROM t;

删除表中的行子集

DELETE FROM t
WHERE condition;

管理视图

创建由c1和c2组成的新视图

CREATE VIEW v(c1,c2) 
AS
SELECT c1, c2
FROM t;

使用选中选项创建新视图

CREATE VIEW v(c1,c2) 
AS
SELECT c1, c2
FROM t;
WITH [CASCADED | LOCAL] CHECK OPTION;

创建递归视图

CREATE RECURSIVE VIEW v 
AS
select-statement -- anchor part
UNION [ALL]
select-statement; -- recursive part

创建临时视图

CREATE TEMPORARY VIEW v 
AS
SELECT c1, c2
FROM t;

删除视图

DROP VIEW view_name;

管理触发器

创建或修改触发器

CREATE OR MODIFY TRIGGER trigger_name
WHEN EVENT
ON table_name TRIGGER_TYPE
EXECUTE stored_procedure;
WHEN
:-:-
BEFORE在事件发生前调用
AFTER事件发生后调用
EVENT
:-:-
INSERT为INSERT调用
UPDATE调用UPDATE
DELETE调用DELETE
TRIGGER_TYPE
:-:-
FOR EACH ROW-
FOR EACH STATEMENT-

管理索引

在t表的c1和c2上创建索引

CREATE INDEX idx_name 
ON t(c1,c2);

在t表的c3、c4上创建唯一索引

CREATE UNIQUE INDEX idx_name
ON t(c3,c4)

删除索引

DROP INDEX idx_name ON t;

MySQL 数据类型

Strings

--
CHARString (0 - 255)
VARCHARString (0 - 255)
TINYTEXTString (0 - 255)
TEXTString (0 - 65535)
BLOBString (0 - 65535)
MEDIUMTEXTString (0 - 16777215)
MEDIUMBLOBString (0 - 16777215)
LONGTEXTString (0 - 429496­7295)
LONGBLOBString (0 - 429496­7295)
ENUMOne of preset options
SETSelection of preset options

Date & time

Data TypeFormat
DATEyyyy-MM-dd
TIMEhh:mm:ss
DATETIMEyyyy-MM-dd hh:mm:ss
TIMESTAMPyyyy-MM-dd hh:mm:ss
YEARyyyy

Numeric

--
TINYINT xInteger (-128 to 127)
SMALLINT xInteger (-32768 to 32767)
MEDIUMINT xInteger (-8388608 to 8388607)
INT xInteger (-2147­483648 to 214748­3647)
BIGINT xInteger (-9223­372­036­854­775808 to 922337­203­685­477­5807)
FLOATDecimal (precise to 23 digits)
DOUBLEDecimal (24 to 53 digits)
DECIMAL“­DOU­BLE­” stored as string

函数

聚合函数

函数解释
SUM()计算一列值的总和
AVG()计算一列值的平均值
COUNT()计算行数,可选择性地忽略NULL值
MAX()找出一列的最大值
MIN()找出一列的最小值

数学函数

函数解释示例语法结果
ABS(x)返回数值的绝对值ABS(-5)5
ROUND(x,y)四舍五入到指定的小数位数,y为小数位数,默认为0ROUND(3.1415,2)3.14
FLOOR(x)向下取整至最接近的整数FLOOR(3.7)3
CEIL(x)向上取整至最接近的整数CEIL(3.3)4
SQRT(x)返回一个数的平方根SQRT(16)4
MOD(x,y)返回x除以y的余数MOD(10,3)1
RAND([seed])返回0到1之间的随机数,可选种子值RAND()RAND(123)0.345…

日期和时间函数

函数解释
NOW()返回当前日期和时间
CURDATE()返回当前日期
CURTIME()返回当前时间
DATE_FORMAT()格式化日期时间输出
DATEDIFF()计算两个日期之间相差的天数
STR_TO_DATE()将字符串转换为日期格式

字符串函数

函数解释示例语法结果
CONCAT(s1,s2,...)连接两个或更多字符串CONCAT('Hello, ','World!')‘Hello, World!’
LOWER(str)转换为小写LOWER('HELLO')‘hello’
UPPER(str)转换为大写UPPER('world')‘WORLD’
TRIM(str)去除字符串两端空格TRIM(' Hello ')‘Hello’
LEFT(str,len)提取字符串左侧的若干字符LEFT('Hello', 3)‘Hel’
RIGHT(str,len)提取字符串右侧的若干字符RIGHT('Hello', 2)‘lo’
SUBSTR(str,pos,len)提取字符串中的一部分SUBSTR('Hello', 2, 3)‘ell’
REPLACE(str,from_str,to_str)替换字符串中的部分文本REPLACE('Hello', 'l', 'L')‘HeLLo’

高级函数

函数解释示例语法结果
BIN(x)返回 x 的二进制编码,x 为十进制数。BIN(2)10
BINARY(s)将字符串 s 转换为二进制字符串。BINARY 'RUNOOB''RUNOOB'(显示效果,实际存储为二进制)
CASE复合条件函数,根据条件返回不同结果。CASE WHEN 1 > 0 THEN '1 > 0' WHEN 2 > 0 THEN '2 > 0' ELSE '3 > 0' END'1 > 0'
CAST(x AS type)转换数据类型。CAST('2017-08-29' AS DATE)2017-08-29
COALESCE(expr1, expr2, …, expr_n)返回第一个非空表达式的值。COALESCE(NULL, NULL, 'runoob.com', NULL, 'google.com')'runoob.com'
CONNECTION_ID()返回当前连接的唯一ID。CONNECTION_ID()4292835(示例值)
CONV(x, f1, f2)将 f1 进制数转换为 f2 进制数。CONV(15, 10, 2)1111
CONVERT(s USING cs)转换字符串 s 的字符集为 cs。CHARSET(CONVERT('ABC' USING gbk))gbk
CURRENT_USER()返回当前用户。CURRENT_USER()guest@%
DATABASE()返回当前数据库名。DATABASE()runoob
IF(expr, v1, v2)条件表达式,expr 为真则 v1,否则 v2。IF(1 > 0, '正确', '错误')'正确'
IFNULL(v1, v2)如果 v1 不为 NULL,则返回 v1,否则返回 v2。IFNULL(NULL, 'Hello Word')'Hello Word'
ISNULL(expression)判断表达式是否为 NULL。ISNULL(NULL)1
LAST_INSERT_ID()返回最近生成的 AUTO_INCREMENT 值。LAST_INSERT_ID()6(示例值)
NULLIF(expr1, expr2)若 expr1 等于 expr2,则返回 NULL,否则返回 expr1。NULLIF(25, 25)NULL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35307.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeRobot源码剖析——对机器人各个动作策略的统一封装:包含ALOHA ACT、Diffusion Policy、VLA模型π0

前言 过去2年多的深入超过此前7年&#xff0c;全靠夜以继日的勤奋&#xff0c;一天当两天用&#xff0c;抠论文 抠代码 和大模型及具身同事讨论&#xff0c;是目前日常 而具身库里&#xff0c;idp3、π0、lerobot值得反复研究&#xff0c;故&#xff0c;近期我一直在抠π0及l…

ISP--Gamma Correction

文章目录 现象Gamma产生的原因CRT属性导致人眼的亮度特性 gamma校正LUT法线性插值法模拟gamma法 现象 从上往下看左侧黑色块黑得越来越严重&#xff0c;对比度也在逐渐加深。此时灰阶的高亮区获得的数据位变少&#xff0c;暗区获得的数据位变多&#xff0c;暗区细节会更多。但是…

光谱相机识别瓶子材质的技术原理和应用案例

一、技术原理 ‌光谱特征差异识别‌ 不同材质的塑料&#xff08;如PET、PP、PE等&#xff09;因化学结构差异&#xff0c;在近红外或可见光波段会呈现独特的光谱反射曲线。例如&#xff0c;高光谱相机通过分析数百个窄波段的光谱数据&#xff0c;可生成每种材质的“光谱指纹”…

某快餐店用户市场数据挖掘与可视化

1、必要库的载入 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns2、加载并清洗数据 # 2.1 加载数据 df pd.read_csv(/home/mw/input/survey6263/mcdonalds.csv)# 2.2 数据清洗 # 2.2.1 检查缺失值 print(缺失值情况&#xff1a;) print(df.isn…

MySQL 衍生表(Derived Tables)

在SQL的查询语句select …. from …中&#xff0c;跟在from子句后面的通常是一张拥有定义的实体表&#xff0c;而有的时候我们会用子查询来扮演实体表的角色&#xff0c;这个在from子句中的子查询会返回一个结果集&#xff0c;这个结果集可以像普通的实体表一样查询、连接&…

Electron使用WebAssembly实现CRC-16 MAXIM校验

Electron使用WebAssembly实现CRC-16 MAXIM校验 将C/C语言代码&#xff0c;经由WebAssembly编译为库函数&#xff0c;可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-16 MAXIM格式校验的方式。 CRC-16 MAXIM校验函数WebAssembly源文件 C语言实…

HTB 学习笔记 【中/英】《前端 vs. 后端》P3

&#x1f4cc; 这篇文章讲了什么&#xff1f; 介绍了 前端&#xff08;客户端&#xff09; 和 后端&#xff08;服务器端&#xff09; 的区别。解释了 全栈开发&#xff08;Full Stack Development&#xff09;&#xff0c;即前端后端开发。介绍了 前端和后端常用的技术。讨论…

SpringBoot集成ElasticSearch实现支持错别字检索和关键字高亮的模糊查询

文章目录 一、背景二、环境准备1.es8集群2.Kibana3.Canal 三、集成到SpringBoot1.新增依赖2.es配置类3.建立索引4.修改查询方法 四、修改前端 一、背景 我们在开发项目的搜索引擎的时候&#xff0c;如果当数据量庞大、同时又需要支持全文检索模糊查询&#xff0c;甚至你想做到…

麒麟系统使用-安装 SQL Developer

文章目录 前言一、基础准备1.基本环境2.相关包下载 二、进行相关配置1.配置JAVA2.配置SQL Developer 总结 前言 作为我国自主研发的操作系统&#xff0c;麒麟系统在使用时需要考虑安装相应的app。尽管麒麟系统是基于linux开发&#xff0c;可由于版本的一些差异&#xff0c;麒麟…

PrimeTime:timing_report_unconstrained_paths变量

相关阅读 PrimeTimehttps://blog.csdn.net/weixin_45791458/category_12900271.html?spm1001.2014.3001.5482 PrimeTime自Q-2019.12版本起引入了timing_report_unconstrained_paths变量&#xff08;默认值为false&#xff09;&#xff0c;该变量控制是否在使用report_timing命…

洛谷 P1115 最大子段和(前缀和详解)c++

题目链接&#xff1a;P1115 最大子段和 - 洛谷 1.题目分析 2.算法原理 解法&#xff1a;利用前缀和 思考&#xff1a;如何求出以a[i]为结尾的所有子区间中最大的子段和 假设 i 等于5&#xff0c;以 a[ i ] 为结尾的区间一共是五段&#xff08;黑色线条部分&#xff09;&#…

JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3+ 2025 版免费体验方案

JetBrains&#xff08;全家桶: IDEA、WebStorm、GoLand、PyCharm&#xff09; 2024.3 2025 版免费体验方案 前言 JetBrains IDE 是许多开发者的主力工具&#xff0c;但从 2024.02 版本起&#xff0c;JetBrains 调整了试用政策&#xff0c;新用户不再享有默认的 30 天免费试用…

【数据分析】数据筛选与访问行列元素3

访问元素 .loc属性可以通过传入index的值访问行数据。 .loc属性允许传入两个参数&#xff0c;分别是index的值和columns的值&#xff0c;参数间用“逗号”隔开&#xff0c;这样便可以访问数据中的元素。 1. 访问单个元素 访问单个元素比较简单&#xff0c;只需要通过它的in…

C++ std::list超详细指南:基础实践(手搓list)

目录 一.核心特性 1.双向循环链表结构 2.头文件&#xff1a;#include 3.时间复杂度 4.内存特性 二.构造函数 三.list iterator的使用 1.学习list iterator之前我们要知道iterator的区分 ​编辑 2.begin()end() 3.rbegin()rend() 四.list关键接口 1.empty() 2. size…

【免费】2004-2017年各地级市进出口总额数据

2004-2017年各地级市进出口总额数据 1、时间&#xff1a;2004-2017年 2、来源&#xff1a;城市年鉴 3、指标&#xff1a;进出口贸易总额 4、范围&#xff1a;286个地级市 5、指标说明&#xff1a;进出口总额是指一个国家在特定时期内&#xff08;通常为一年&#xff09;所…

谈谈 undefined 和 null

*** 补充 null 和 ‘’

【第15届蓝桥杯】软件赛CB组省赛

个人主页&#xff1a;Guiat 归属专栏&#xff1a;算法竞赛真题题解 文章目录 A. 握手问题&#xff08;填空题&#xff09;B. 小球反弹&#xff08;填空题&#xff09;C. 好数D. R格式E. 宝石组合F. 数字接龙G. 爬山H. 拔河 正文 总共8道题。 A. 握手问题&#xff08;填空题&…

【计算机视觉】工业表计读数(2)--表计检测

1. 简介 工业表计&#xff08;如压力表、电表、气表等&#xff09;在工控系统、能源管理等领域具有重要应用。然而&#xff0c;传统人工抄表不仅工作量大、效率低&#xff0c;而且容易产生数据误差。近年来&#xff0c;基于深度学习的目标检测方法在工业检测中展现出极大优势&…

提示词工程(Prompt Engineering)

https://www.bilibili.com/video/BV1PX9iYQEry 一、懂原理&#xff0c;要知道 为什么有的指令有效&#xff0c;有的指令无效为什么同样的指令有时有效&#xff0c;又是无效怎么提升指令有效的概率 大模型应用架构师想什么&#xff1f; 怎样能更准确&#xff1f;答&#xff1…

从Instagram到画廊:社交平台如何改变艺术家的展示方式

从Instagram到画廊&#xff1a;社交平台如何改变艺术家的展示方式 在数字时代&#xff0c;艺术家的展示方式正在经历一场革命。社交平台&#xff0c;尤其是Instagram&#xff0c;已经成为艺术家展示作品、与观众互动和建立品牌的重要渠道。本文将探讨社交平台如何改变艺术家的…