mysql基础语法

快捷键【MySQL Workbench】
1.执行整篇sql脚本: Ctrl+ Shift + Enter
2.执行当前行: Ctrl + Enter
3.注释/取消注释: Ctrl + /
 
关闭mysql安全更新模式【执行更新语句时,不能通过非主键条件更新,则执行如下语句关闭安全模式】
SET SQL_SAFE_UPDATES = 0;
 
打开mysql安全更新模式
SET SQL_SAFE_UPDATES = 1;
 
1.mysql数据库生成poco实体模型
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 = '数据库名称';
 
2.分页语法(limit和offset用法)
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三条数据
 
3.资源查询
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 语句了,针对分析 

4.连接字符串参数解析

posted @ 2021-11-20 18:56  ssnice  阅读(49)  评论(0编辑  收藏  举报