MySQL

2019-10-12 Views

跟mysql相关的一些笔记

查看状态信息

mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.6.40, for Linux (x86_64) using  EditLine wrapper

Connection id:		1
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.6.40 MySQL Community Server (GPL)
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	latin1
Conn.  characterset:	latin1
UNIX socket:		/var/run/mysqld/mysqld.sock
Uptime:			10 min 17 sec

Threads: 1  Questions: 10  Slow queries: 0  Opens: 67  Flush tables: 1  Open tables: 60  Queries per second avg: 0.016
--------------

查看数据库物理文件存放位置

mysql> show global variables like "%datadir%";
+---------------+------------+
| Variable_name | Value      |
+---------------+------------+
| datadir       | /usr/data/ |
+---------------+------------+
1 row in set (0.00 sec)

查看编码方式

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

查看版本

select version();

查看数据库以及表的大小

# 切换到information_schema数据库
use `information_schema`;

# 查看数据库的大小
SELECT
	concat( round( sum( data_length / 1024 / 1024 ), 2 ), 'MB' ) AS DATA 
FROM
TABLES 
WHERE
	table_schema = 'DB_NAME';

# 查看表的大小
SELECT
	concat( round( sum( data_length / 1024 / 1024 ), 2 ), 'MB' ) AS DATA 
FROM
TABLES 
WHERE
	table_schema = 'DB_NAME' 
	AND table_name = 'TABLE_NAME';

时间

格式

  • %S, %s 两位数字形式的秒( 00,01, ..., 59)
  • %I, %i 两位数字形式的分( 00,01, ..., 59)
  • %H 两位数字形式的小时,24 小时(00,01, ..., 23)
  • %h 两位数字形式的小时,12 小时(01,02, ..., 12)
  • %k 数字形式的小时,24 小时(0,1, ..., 23)
  • %l 数字形式的小时,12 小时(1, 2, ..., 12)
  • %T 24 小时的时间形式(hh:mm:ss)
  • %r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)
  • %p AM或PM
  • %W 一周中每一天的名称(Sunday, Monday, ..., Saturday)
  • %a 一周中每一天名称的缩写(Sun, Mon, ..., Sat)
  • %d 两位数字表示月中的天数(00, 01,..., 31)
  • %e 数字形式表示月中的天数(1, 2, ..., 31)
  • %D 英文后缀表示月中的天数(1st, 2nd, 3rd,...)
  • %w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, ..., 6=Saturday)
  • %j 以三位数字表示年中的天数( 001, 002, ..., 366)
  • %U 周(0, 1, 52),其中Sunday 为周中的第一天
  • %u 周(0, 1, 52),其中Monday 为周中的第一天
  • %M 月名(January, February, ..., December)
  • %b 缩写的月名( January, February,...., December)
  • %m 两位数字表示的月份(01, 02, ..., 12)
  • %c 数字表示的月份(1, 2, ...., 12)
  • %Y 四位数字表示的年份
  • %y 两位数字表示的年份
  • %% 直接值“%”
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 21 DAY),'%Y-%m-%d') # 格式化

DATE_SUB(NOW(), INTERVAL 1 DAY) # 前一天

DATE_ADD(NOW(), INTERVAL 1 DAY) # 后一天

UNIX_TIMESTAMP(NOW()) # 转成时间戳

FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())) # 时间戳转成默认的时间格式:'%Y-%m-%d %H:%i:%s'

获取某个表的所有字段

SELECT
	COLUMN_NAME 
FROM
	information_schema.COLUMNS 
WHERE
	table_name = 'your_table_name' 
AND table_schema = 'your_db_name';

△