searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

MySQL数据库总结

2023-05-25 07:19:16
10
0

1. mysql数据类型

主要包括以下五大类:

  • 整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT
  • 浮点数类型:FLOAT、DOUBLE、DECIMAL
  • 字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB
  • 日期类型:Date、DateTime、TimeStamp、Time、Year
  • 其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等
1.1 整型

MySQL数据类型

含义(有符号)

tinyint(m)

1个字节 范围(-128~127)

smallint(m)

2个字节 范围(-32768~32767)

mediumint(m)

3个字节 范围(-8388608~8388607)

int(m)

4个字节 范围(-2147483648~2147483647)

bigint(m)

8个字节 范围(+-9.22*10的18次方)

取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。

int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。

1.2 浮点型(float 和 double)

MySQL数据类型

含义

float(m,d)

单精度浮点型 8位精度(4字节) m总个数,d小数位

double(m,d)

双精度浮点型 16位精度(8字节) m总个数,d小数位

设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。整数部分最大是3位,如果插入数12.123456,存储的是12.1234,如果插入12.12,存储的是12.1200.

1.3 定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

1.4 字符串(char、varchar、text)

MySQL数据类型

含义

char(n)

固定长度,最多255个字符

varchar(n)

固定长度,最多65535个字符

tinytext

可变长度,最多255个字符

text

可变长度,最多65535个字符

mediumtext

可变长度,最多2的24次方-1个字符

longtext

可变长度,最多2的32次方-1个字符

char和varchar

1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。

2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。

3.char类型的字符串检索速度要比varchar类型的快。

varchar和text

1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。

2.text类型不能有默认值。

3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

1.5 二进制类型(_Blob)

_BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。 2._BLOB存储的数据只能整体读出。 3._TEXT可以指定字符集,_BLO不用指定字符集。

1.6 日期时间类型

MySQL数据类型

含义

date

日期 '2008-12-2'

time

时间 '12:25:36'

datetime

日期时间 '2008-12-2 22:06:44'

timestamp

自动存储记录修改时间

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

1.7 数据类型的属性

MySQL关键字

含义

NULL

数据列可包含NULL值

NOT NULL

数据列不允许包含NULL值

DEFAULT

默认值

PRIMARY KEY

主键

AUTO_INCREMENT

自动递增,适用于整数类型

UNSIGNED

无符号

CHARACTER SET name

指定一个字符集

1.8 MySQL的数据类型长度和范围

各数据类型及字节长度一览表:

数据类型

字节长度

范围或用法

Bit

1

无符号[0,255],有符号[-128,127],备注:BIT和BOOL布尔型都占用1字节

TinyInt

1

整数[0,255]

SmallInt

2

$无符号[0,65535],有符号[-32768,32767]$

MediumInt

3

$无符号[0,2^24-1],有符号[-223,223-1]]$

Int

4

$无符号[0,2^32-1],有符号[-231,231-1]$

BigInt

8

$无符号[0,2^64-1],有符号[-263 ,263 -1]$

Float(M,D)

4

单精度浮点数。提醒:这里的D是精度,如果D<=24则为默认的FLOAT,如果D>24则会自动被转换为DOUBLE型。

Double(M,D)

8

双精度浮点。

Decimal(M,D)

M+1或M+2

未打包的浮点数,用法类似于FLOAT和DOUBLE,提醒:如果在ASP中使用到Decimal数据类型,直接从数据库读出来的Decimal可能需要先转换成Float或Double类型后再进行运算。

Date

3

以YYYY-MM-DD的格式显示,比如:2009-07-19

Date Time

8

以YYYY-MM-DD HH:MM:SS的格式显示,比如:2009-07-19 11:22:30

TimeStamp

4

以YYYY-MM-DD的格式显示,比如:2009-07-19

Time

3

以HH:MM:SS的格式显示。比如:11:22:30

Year

1

以YYYY的格式显示。比如:2009

Char(M)

M

定长字符串

VarChar(M)

M

变长字符串,要求M<=255

Binary(M)

M

类似Char的二进制存储,特点是插入定长不足补0

VarBinary(M)

M

类似VarChar的变长二进制存储,特点是定长不补0

Tiny Text

Max:255

大小写不敏感

Text

Max:64K

大小写不敏感

Medium Text

Max:16M

大小写不敏感

Long Text

Max:4G

大小写不敏感

TinyBlob

Max:255

大小写敏感

Blob

Max:64K

大小写敏感

MediumBlob

Max:16M

大小写敏感

LongBlob

Max:4G

大小写敏感

Enum

1或2

最大可达65535个不同的枚举值

Set

可达8

最大可达64个不同的值

Geometry

   

Point

   

LineString

   

Polygon

   

MultiPoint

   

MultiLineString

   

MultiPolygon

   

GeometryCollection

   

使用建议

  • 在指定数据类型的时候一般是采用从小原则,比如能用TINY INT的最好就不用INT,能用FLOAT类型的就不用DOUBLE类型,这样会对MYSQL在运行效率上提高很大,尤其是大数据量测试条件下。
  • 不需要把数据表设计的太过复杂,功能模块上区分或许对于后期的维护更为方便,慎重出现大杂烩数据表
  • 数据表和字段的起名字也是一门学问
  • 设计数据表结构之前请先想象一下是你的房间,或许结果会更加合理、高效
  • 数据库的最后设计结果一定是效率和可扩展性的折中,偏向任何一方都是欠妥的

2. mysql常用的系统表

以MySQL5.7为例, 默认的数据库有4个:

information_schema, 具有 61个表, 它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。

mysql, 具有31个表; mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。(常用的,在mysql.user表中修改root用户的密码)。

performance_schema,具有87个表; 主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。MySQL5.7默认是开启的。

sys, 具有1个表, 100个视图. (MySQL5.6没有该库) sys库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。

2.1 information_schema部分表说明
  • SCHEMATA:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
  • TABLES:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
  • COLUMNS:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。
  • STATISTICS:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。
  • USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。
  • SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。
  • TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。
  • COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。
  • CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。
  • COLLATIONS:提供了关于各字符集的对照信息。
  • COLLATION_CHARACTER_SET_APPLICABILITY:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。
  • TABLE_CONSTRAINTS:描述了存在约束的表。以及表的约束类型。
  • KEY_COLUMN_USAGE:描述了具有约束的键列。
  • ROUTINES:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
  • VIEWS:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。
  • TRIGGERS:提供了关于触发程序的信息。必须有super权限才能查看该表。

举例:通过 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 表查询约束关系

SELECT CONSTRAINT_NAME,TABLE_NAME,REFERENCED_TABLE_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE CONSTRAINT_SCHEMA= 'employees'  AND REFERENCED_TABLE_NAME IS NOT NULL;

2.2 performance_schema部分表说明

PERFORMANCE_SCHEMA这个功能默认是关闭的。需要设置参数: performance_schema 才可以启动该功能,这个参数是静态参数,只能写在my.cnf 中 不能动态修改。

  • setup_table: 设置表,配置监控选项。
  • current_events_table:记录当前那些thread 正在发生什么事情。
  • history_table:发生的各种事件的历史记录表
  • summary_table:对各种事件的统计表
  • setup_consumers\ Setup_instruments:描述各种事件, 设置哪些事件能够被收集
  • setup_instruments:描述这个数据库下的表名以及是否开启监控。
  • setup_timers:描述 监控选项已经采样频率的时间间隔
  • Threads:监控服务器所有连接
  • Performance_timers:设置一些监控信息, 指定mysql服务可用的监控周期,CYCLE表示按每秒检测2603393034次, 目前 performance-schema 只支持 ‘wait’ 时间的监控,代码树上 wait/ 下的函数都可以监控到。
2.3 msyql部分表说明

在mysql数据库中,有mysql_install_db脚本初始化权限表,存储权限的表有:

  • user: 用户列、权限列、安全列、资源控制列
  • db : 用户列、权限列
2.4 sys部分表说明
  • sys_config : 系统配置表
  • host : 以IP分组相关的统计信息
  • innodb: innodb buffer 相关信息
  • io : 数据内不同维度展的IO相关的信息
  • memory : 以IP,连接,用户,分配的类型分组及总的占用显示内存的使用
  • metrics : DB的内部的统计值
  • processlist : 线程相关的信息(包含内部线程及用户连接)
  • ps_ : 没有工具统计的一些变量(没看出来存在的价值)
  • schema : 表结构相关的信息,例如: 自增,索引, 表里的每个字段类型,等待的锁等等
  • session : 用户连接相关的信息
  • statement : 基于语句的统计信息(重店)
  • statements_ : 出错的语句,进行全表扫描, 运行时间超长,排序相等(重点)
  • user_ : 和host_开头的相似,只是以用户分组统计
  • wait : 等待事件,比较专业,难看懂。
  • waits : 以IP,用户分组统计出来的一些延迟事件,有一定的参考价值。

3. mysql的常用命令

3.1 show命令
  • desc 表名; // 表信息
  • show columns from 表名; // 表字段
  • describe 表名; // 表信息
  • show create table 表名; // 表创建语句
  • show create database 数据库名; // 显示数据库 信息
  • show table status from 数据库名; // 数据库状态
  • show tables或show tables from database_name; // 显示当前数据库中所有表的名称
  • show databases; // 显示mysql中所有数据库的名称
  • show processlist; // 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
  • show table status; // 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间
  • show columns from table_name from database_name; // 显示表中列名称
  • show columns from database_name.table_name; // 显示表中列名称
  • show grants for user_name@localhost; // 显示一个用户的权限,显示结果类似于grant 命令
  • show index from table_name; // 显示表的索引 show status;解释:显示一些系统特定资源的信息,例如,正在运行的线程数量
  • show variables; // 显示系统变量的名称和值 show privileges;解释:显示服务器所支持的不同权限
  • show create database database_name ; // 显示create database 语句是否能够创建指定的数据库
  • show create table table_name; // 显示create database 语句是否能够创建指定的数据库
  • show engies; // 显示安装以后可用的存储引擎和默认引擎。
  • show innodb status ; // 显示innoDB存储引擎的状态
  • show logs; // 显示BDB存储引擎的日志
  • show warnings; //显示最后一个执行的语句所产生的错误、警告和通知
  • show errors; // 只显示最后一个执行语句所产生的错误
3.2 SELECT命令
  • SELECT SUBSTRING_INDEX( HOST, ':', 1 ) AS ip,count( * ) FROM information_schema.PROCESSLIST GROUP BY ip //查看当前数据库的各IP连接数
  • SELECT @@CHARACTER_SET_DATABASE //查看数据库字符集
  • SELECT DATABASE() //查看当前数据库
  • SELECT VERSION( ) //查看数据库版本信息
3.3 其他命令
  • SET GLOBAL FOREIGN_KEY_CHECKS=0 //禁用约束
  • SET GLOBAL FOREIGN_KEY_CHECKS=1 //启用约束

4. mysql的常见函数

 

0条评论
0 / 1000
孙****雷
2文章数
0粉丝数
孙****雷
2 文章 | 0 粉丝
孙****雷
2文章数
0粉丝数
孙****雷
2 文章 | 0 粉丝
原创

MySQL数据库总结

2023-05-25 07:19:16
10
0

1. mysql数据类型

主要包括以下五大类:

  • 整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT
  • 浮点数类型:FLOAT、DOUBLE、DECIMAL
  • 字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB
  • 日期类型:Date、DateTime、TimeStamp、Time、Year
  • 其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等
1.1 整型

MySQL数据类型

含义(有符号)

tinyint(m)

1个字节 范围(-128~127)

smallint(m)

2个字节 范围(-32768~32767)

mediumint(m)

3个字节 范围(-8388608~8388607)

int(m)

4个字节 范围(-2147483648~2147483647)

bigint(m)

8个字节 范围(+-9.22*10的18次方)

取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。

int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。

1.2 浮点型(float 和 double)

MySQL数据类型

含义

float(m,d)

单精度浮点型 8位精度(4字节) m总个数,d小数位

double(m,d)

双精度浮点型 16位精度(8字节) m总个数,d小数位

设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。整数部分最大是3位,如果插入数12.123456,存储的是12.1234,如果插入12.12,存储的是12.1200.

1.3 定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

1.4 字符串(char、varchar、text)

MySQL数据类型

含义

char(n)

固定长度,最多255个字符

varchar(n)

固定长度,最多65535个字符

tinytext

可变长度,最多255个字符

text

可变长度,最多65535个字符

mediumtext

可变长度,最多2的24次方-1个字符

longtext

可变长度,最多2的32次方-1个字符

char和varchar

1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。

2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。

3.char类型的字符串检索速度要比varchar类型的快。

varchar和text

1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。

2.text类型不能有默认值。

3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

1.5 二进制类型(_Blob)

_BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。 2._BLOB存储的数据只能整体读出。 3._TEXT可以指定字符集,_BLO不用指定字符集。

1.6 日期时间类型

MySQL数据类型

含义

date

日期 '2008-12-2'

time

时间 '12:25:36'

datetime

日期时间 '2008-12-2 22:06:44'

timestamp

自动存储记录修改时间

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

1.7 数据类型的属性

MySQL关键字

含义

NULL

数据列可包含NULL值

NOT NULL

数据列不允许包含NULL值

DEFAULT

默认值

PRIMARY KEY

主键

AUTO_INCREMENT

自动递增,适用于整数类型

UNSIGNED

无符号

CHARACTER SET name

指定一个字符集

1.8 MySQL的数据类型长度和范围

各数据类型及字节长度一览表:

数据类型

字节长度

范围或用法

Bit

1

无符号[0,255],有符号[-128,127],备注:BIT和BOOL布尔型都占用1字节

TinyInt

1

整数[0,255]

SmallInt

2

$无符号[0,65535],有符号[-32768,32767]$

MediumInt

3

$无符号[0,2^24-1],有符号[-223,223-1]]$

Int

4

$无符号[0,2^32-1],有符号[-231,231-1]$

BigInt

8

$无符号[0,2^64-1],有符号[-263 ,263 -1]$

Float(M,D)

4

单精度浮点数。提醒:这里的D是精度,如果D<=24则为默认的FLOAT,如果D>24则会自动被转换为DOUBLE型。

Double(M,D)

8

双精度浮点。

Decimal(M,D)

M+1或M+2

未打包的浮点数,用法类似于FLOAT和DOUBLE,提醒:如果在ASP中使用到Decimal数据类型,直接从数据库读出来的Decimal可能需要先转换成Float或Double类型后再进行运算。

Date

3

以YYYY-MM-DD的格式显示,比如:2009-07-19

Date Time

8

以YYYY-MM-DD HH:MM:SS的格式显示,比如:2009-07-19 11:22:30

TimeStamp

4

以YYYY-MM-DD的格式显示,比如:2009-07-19

Time

3

以HH:MM:SS的格式显示。比如:11:22:30

Year

1

以YYYY的格式显示。比如:2009

Char(M)

M

定长字符串

VarChar(M)

M

变长字符串,要求M<=255

Binary(M)

M

类似Char的二进制存储,特点是插入定长不足补0

VarBinary(M)

M

类似VarChar的变长二进制存储,特点是定长不补0

Tiny Text

Max:255

大小写不敏感

Text

Max:64K

大小写不敏感

Medium Text

Max:16M

大小写不敏感

Long Text

Max:4G

大小写不敏感

TinyBlob

Max:255

大小写敏感

Blob

Max:64K

大小写敏感

MediumBlob

Max:16M

大小写敏感

LongBlob

Max:4G

大小写敏感

Enum

1或2

最大可达65535个不同的枚举值

Set

可达8

最大可达64个不同的值

Geometry

   

Point

   

LineString

   

Polygon

   

MultiPoint

   

MultiLineString

   

MultiPolygon

   

GeometryCollection

   

使用建议

  • 在指定数据类型的时候一般是采用从小原则,比如能用TINY INT的最好就不用INT,能用FLOAT类型的就不用DOUBLE类型,这样会对MYSQL在运行效率上提高很大,尤其是大数据量测试条件下。
  • 不需要把数据表设计的太过复杂,功能模块上区分或许对于后期的维护更为方便,慎重出现大杂烩数据表
  • 数据表和字段的起名字也是一门学问
  • 设计数据表结构之前请先想象一下是你的房间,或许结果会更加合理、高效
  • 数据库的最后设计结果一定是效率和可扩展性的折中,偏向任何一方都是欠妥的

2. mysql常用的系统表

以MySQL5.7为例, 默认的数据库有4个:

information_schema, 具有 61个表, 它提供了访问数据库元数据的方式。什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。

mysql, 具有31个表; mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。(常用的,在mysql.user表中修改root用户的密码)。

performance_schema,具有87个表; 主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。MySQL5.7默认是开启的。

sys, 具有1个表, 100个视图. (MySQL5.6没有该库) sys库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。

2.1 information_schema部分表说明
  • SCHEMATA:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
  • TABLES:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
  • COLUMNS:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。
  • STATISTICS:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。
  • USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。
  • SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。
  • TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。
  • COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。
  • CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。
  • COLLATIONS:提供了关于各字符集的对照信息。
  • COLLATION_CHARACTER_SET_APPLICABILITY:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。
  • TABLE_CONSTRAINTS:描述了存在约束的表。以及表的约束类型。
  • KEY_COLUMN_USAGE:描述了具有约束的键列。
  • ROUTINES:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
  • VIEWS:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。
  • TRIGGERS:提供了关于触发程序的信息。必须有super权限才能查看该表。

举例:通过 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 表查询约束关系

SELECT CONSTRAINT_NAME,TABLE_NAME,REFERENCED_TABLE_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE CONSTRAINT_SCHEMA= 'employees'  AND REFERENCED_TABLE_NAME IS NOT NULL;

2.2 performance_schema部分表说明

PERFORMANCE_SCHEMA这个功能默认是关闭的。需要设置参数: performance_schema 才可以启动该功能,这个参数是静态参数,只能写在my.cnf 中 不能动态修改。

  • setup_table: 设置表,配置监控选项。
  • current_events_table:记录当前那些thread 正在发生什么事情。
  • history_table:发生的各种事件的历史记录表
  • summary_table:对各种事件的统计表
  • setup_consumers\ Setup_instruments:描述各种事件, 设置哪些事件能够被收集
  • setup_instruments:描述这个数据库下的表名以及是否开启监控。
  • setup_timers:描述 监控选项已经采样频率的时间间隔
  • Threads:监控服务器所有连接
  • Performance_timers:设置一些监控信息, 指定mysql服务可用的监控周期,CYCLE表示按每秒检测2603393034次, 目前 performance-schema 只支持 ‘wait’ 时间的监控,代码树上 wait/ 下的函数都可以监控到。
2.3 msyql部分表说明

在mysql数据库中,有mysql_install_db脚本初始化权限表,存储权限的表有:

  • user: 用户列、权限列、安全列、资源控制列
  • db : 用户列、权限列
2.4 sys部分表说明
  • sys_config : 系统配置表
  • host : 以IP分组相关的统计信息
  • innodb: innodb buffer 相关信息
  • io : 数据内不同维度展的IO相关的信息
  • memory : 以IP,连接,用户,分配的类型分组及总的占用显示内存的使用
  • metrics : DB的内部的统计值
  • processlist : 线程相关的信息(包含内部线程及用户连接)
  • ps_ : 没有工具统计的一些变量(没看出来存在的价值)
  • schema : 表结构相关的信息,例如: 自增,索引, 表里的每个字段类型,等待的锁等等
  • session : 用户连接相关的信息
  • statement : 基于语句的统计信息(重店)
  • statements_ : 出错的语句,进行全表扫描, 运行时间超长,排序相等(重点)
  • user_ : 和host_开头的相似,只是以用户分组统计
  • wait : 等待事件,比较专业,难看懂。
  • waits : 以IP,用户分组统计出来的一些延迟事件,有一定的参考价值。

3. mysql的常用命令

3.1 show命令
  • desc 表名; // 表信息
  • show columns from 表名; // 表字段
  • describe 表名; // 表信息
  • show create table 表名; // 表创建语句
  • show create database 数据库名; // 显示数据库 信息
  • show table status from 数据库名; // 数据库状态
  • show tables或show tables from database_name; // 显示当前数据库中所有表的名称
  • show databases; // 显示mysql中所有数据库的名称
  • show processlist; // 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
  • show table status; // 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间
  • show columns from table_name from database_name; // 显示表中列名称
  • show columns from database_name.table_name; // 显示表中列名称
  • show grants for user_name@localhost; // 显示一个用户的权限,显示结果类似于grant 命令
  • show index from table_name; // 显示表的索引 show status;解释:显示一些系统特定资源的信息,例如,正在运行的线程数量
  • show variables; // 显示系统变量的名称和值 show privileges;解释:显示服务器所支持的不同权限
  • show create database database_name ; // 显示create database 语句是否能够创建指定的数据库
  • show create table table_name; // 显示create database 语句是否能够创建指定的数据库
  • show engies; // 显示安装以后可用的存储引擎和默认引擎。
  • show innodb status ; // 显示innoDB存储引擎的状态
  • show logs; // 显示BDB存储引擎的日志
  • show warnings; //显示最后一个执行的语句所产生的错误、警告和通知
  • show errors; // 只显示最后一个执行语句所产生的错误
3.2 SELECT命令
  • SELECT SUBSTRING_INDEX( HOST, ':', 1 ) AS ip,count( * ) FROM information_schema.PROCESSLIST GROUP BY ip //查看当前数据库的各IP连接数
  • SELECT @@CHARACTER_SET_DATABASE //查看数据库字符集
  • SELECT DATABASE() //查看当前数据库
  • SELECT VERSION( ) //查看数据库版本信息
3.3 其他命令
  • SET GLOBAL FOREIGN_KEY_CHECKS=0 //禁用约束
  • SET GLOBAL FOREIGN_KEY_CHECKS=1 //启用约束

4. mysql的常见函数

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0