惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
D
DataBreaches.Net
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
L
LangChain Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
Recent Announcements
Recent Announcements
Jina AI
Jina AI
G
Google Developers Blog
腾讯CDC
博客园_首页
博客园 - 【当耐特】

博客园 - ssnice

AI使用总结 常见问题汇总 mysql出现 You can't specify target table 'xx' for update in FROM clause 0.000 sec 常见linux命令 nlog sqlserver 定时自动备份 sqlserver 常见语法 mysql 常用命令(linux) mysql 连接数 最大并发数 windows mysql 主从同步 windows mysql8 安装 VS2022安装后,使用VS2019打开项目,出现无法找到.NET SDK的问题解决 Asp .Net Mvc5 缓存 DataBase First创建数据库 OpenXML_导入Excel到数据库 Linq/List/Array/IEnumerable等集合操作 js中substring/substr和C#中Substring的用法 Code First研究学习2_基本的错误及解决方法 C#中静态构造函数含义及使用
mysql基础语法
ssnice · 2021-11-20 · via 博客园 - ssnice

快捷键【MySQL Workbench】

1.执行整篇sql脚本: Ctrl+ Shift + Enter

2.执行当前行: Ctrl + Enter

3.注释/取消注释: Ctrl + /

关闭mysql安全更新模式【执行更新语句时,不能通过非主键条件更新,则执行如下语句关闭安全模式】

SET SQL_SAFE_UPDATES = 0;
SET SQL_SAFE_UPDATES = 1;
SELECT
    COLUMN_TYPE,
    CONCAT(
        'public ',
        CASE
    WHEN LEFT (COLUMN_TYPE, 3) = 'int' THEN
        'int'
    WHEN LEFT (COLUMN_TYPE, 7) = 'tinyint' THEN
        'byte'
    WHEN LEFT (COLUMN_TYPE, 8) = 'smallint' THEN
        'short'
    WHEN LEFT (COLUMN_TYPE, 6) = 'bigint' THEN
        'long'
    WHEN LEFT (COLUMN_TYPE, 5) = 'float' THEN
        'float'
    WHEN LEFT (COLUMN_TYPE, 5) = 'double' THEN
        'double'
    WHEN LEFT (COLUMN_TYPE, 7) = 'decimal' THEN
        'decimal'
    WHEN LEFT (COLUMN_TYPE, 4) = 'char' THEN
        'string'
    WHEN LEFT (COLUMN_TYPE, 7) = 'varchar' THEN
        'string'
    WHEN LEFT (COLUMN_TYPE, 4) = 'text' THEN
        'string'
    WHEN LEFT (COLUMN_TYPE, 8) = 'datetime' THEN
        'DateTime'
    WHEN LEFT (COLUMN_TYPE, 4) = 'time' THEN
        'DateTime'
    WHEN LEFT (COLUMN_TYPE, 4) = 'date' THEN
        'DateTime'
    ELSE
        COLUMN_TYPE
    END,
    ' ',
    COLUMN_NAME,
    '{get;set;}'
    )
FROM
    information_schema. COLUMNS
WHERE
    table_name = '表名称'  
AND table_schema = '数据库名称';

mysql里分页一般用limit来实现

1. select* from article LIMIT 1,3

2. select * from article LIMIT 3 OFFSET 1

上面两种写法都表示取2,3,4三条条数据

当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量,例如

select* from article LIMIT 1,3 就是跳过1条数据,从第2条数据开始取,取3条数据,也就是取2,3,4三条数据

当 limit后面跟一个参数的时候,该参数表示要取的数据的数量

例如 select* from article LIMIT 3  表示直接取前三条数据,类似sqlserver里的top语法。

当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量 。

例如select * from article LIMIT 3 OFFSET 1 表示跳过1条数据,从第2条数据开始取,取3条数据,也就是取2,3,4三条数据

show full processlist   /*查看当前处于连接未关闭状态的进程列表*/

下面针对每列做下介绍:

Id:链接mysql 服务器线程的唯一标识,可以通过kill来终止此线程的链接。

User:当前线程链接数据库的用户

Host:显示这个语句是从哪个ip 的哪个端口上发出的。可用来追踪出问题语句的用户

db: 线程链接的数据库,如果没有则为null

Command: 显示当前连接的执行的命令,一般就是休眠或空闲(sleep),查询(query),连接(connect)

Time: 线程处在当前状态的时间,单位是秒

State:显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个 sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成

Info: 线程执行的sql语句,如果没有语句执行则为null。这个语句可以使客户端发来的执行语句也可以是内部执行的语句

由于Command的状态大部分都是sleep对我们分析问题没什么作用,所以我们可以通过如下语句来排除sleep状态的线程:

-- 查询非 Sleep 状态的链接,按消耗时间倒序展示,自己加条件过滤
select id, db, user, host, command, time, state, info
from information_schema.processlist
where command != 'Sleep'
order by time desc 

这样就过滤出来哪些是正在工作的,然后按照消耗时间倒叙展示,排在最前面的,极大可能就是有问题的链接了,然后查看 info 一列,就能看到具体执行的什么 SQL 语句了,针对分析