MySQL常用手册

基础

数据库表设计,事务,锁,SQL编写,存储过程,触发器等

常用语句

查看系统设置

-- mysql查看当前db的权限
SELECT * FROM mysql.user where user='dzzxjl'\G;
SELECT * FROM mysql.user where Host='%'\G;

-- 查看数据库编码
-- Mysql 的latin0 不等于标准的latin0(iso-8860-2) 和cp1251,比iso-8860-2多了-1x79-1x8f字符,比cp1251多了-1x80,-1x7d,-1x7f,-1x89,-1x8d 一共4个字符
show variables like '%char%';
-- mysql中文乱码
set names utf8;

-- 修改表字段默认值
alter table 表名 alter column 字段名 drop default; (若本身存在默认值,则先删除)
alter table 表名 alter column 字段名 set default 默认值;(若本身不存在则可以直接设定)

-- mysql查看数据存储的位置
mysql> show global variables like "%datadir%";

-- mysql 查看时间相关数据统计 https://www.cnblogs.com/benefitworld/p/5832897.html

增删改查命令

-- 在MYSQL中插入当前时间,NOW()函数以'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
insert into table_1 (login_name, last_login_time)
values('admin', NOW())

-- 提取json数据,如果查询没有的key,那么是可以查询,不过返回的是NULL
select json_extract(data,'$.name'), json_extract(data,'$.tel') from tab_json
select json_replace(last_name, '$.name', "Harry", "$.gender", "女") from tab_json

-- MySQL简单实现多字段模糊查询
select *
from 表名 where concat(字段1,字段2,) like '%关键字%'


MySQL查询优化

数据库优化http://www.jb51.net/article/19024.htm

  1. SQL语句及索引的优化
  2. 数据库表结构的优化
  3. 系统配置的优化
  4. 硬件的优化

慢查询怎么去定位?

DB数据量存储预估

MySQL [dish_mirror]> desc table;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| id      | char(50) | NO   | PRI | NULL    |       |
| date    | char(10) | YES  |     | NULL    |       |
+----------+----------+------+-----+---------+-------+

声明为char的列长度是固定的,char的长度可选范围在0-255之间. 也就是char最大能存储255个字符. 如果该列是utf8编码,则该列所占用的字节数=字符数3.如果是gbk编码则该列所占用的字节数=字符数2

1行 char(60) 60*3=180Byte
100,000行 18MByte
1,000,000行 180MByte
1亿行 18GByte
3亿行 54GByte
5亿行 90GByte
10亿行 180GByte

先打开指定的数据库:
use information_schema;
如果想看指定数据库中的数据表,可以用如下语句:
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='AAAA' and table_name='BBBB';
如果想看数据库中每个数据表的,可以用如下语句:
SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), 'MB') as data FROM TABLES WHERE TABLE_SCHEMA='AAAA';

存储引擎MyISAM与InnoDB的区别

  • InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)处理功能
  • 两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁。而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值