创建数据库
CREATE DATABASEIFNOT EXISTS blog_service DEFAULT CHARACTERSET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
确定数据源
(1) information_schema数据库
information_schema 数据库在 MySQL 中提供了对数据库元数据的访问, 可以获得 MySQL 服务器自身相关的信息,如数据库、表名称、列数据类型、访问权限等。
SCHEMATA:提供有关数据库的信息, 可与
SHOW DATABASES语句等效。use information_schema; SELECT * FROM SCHEMATA;
COLUMNS:提供有关表中列的信息, 可与
SHOW COLUMNS语句等效。use information_schema; SELECT * FROM COLUMNS WHERE table_schema= 'blog_service' AND TABLE_NAME= 'blog_tag'use blog_service; SHOW COLUMNS FROM blog_tag;TABLES:提供有关数据库中表的信息, 可与
SHOW FULL TABLES语句等效。use information_schema; SELECT * FROM TABLES WHERE TABLE_SCHEMA='blog_service'use blog_service; SHOW FULL TABLESSTATISTICS:提供有关表索引的信息, 可与
SHOW INDEX语句等效。use information_schema; SELECT * FROM STATISTICS WHERE TABLE_SCHEMA='blog_service' AND TABLE_NAME='blog_tag'use blog_service; SHOW INDEX FROM blog_tag;USER_PRIVILEGES:提供有关全局权限的信息, 从
mysql.user系统表中获取值。use information_schema; SELECT * FROM USER_PRIVILEGESuse mysql; SELECT * FROM userCHARACTER_SETS:提供数据库可用字符集的信息, 可与
SHOW CHARACTER SET语句等效。use information_schema; SELECT * FROM CHARACTER_SETS;use information_schema; SHOW CHARACTER SET(2) COLUMNS表
COLUMNS 表提供了整个数据库中列的信息, 其包含以下几个常用字段。
COLUMN_NAME:列的名称。
- TABLE_NAME:列所属的表名称。
- COLUMN DEFAULT:列的默认值。
- IS_NULLABLE:列是否允许为
NULL, 值为YES或NO。 - DATA_TYPE:列的数据类型, 仅包含类型信息。
- COLUMN_TYPE:列的数据类型, 包含类型名称和可能的其他信息。例如, 精度、长度、是否无符号等,
- COLUMN_KEY:列是否被索引。
- COLUMN_COMMENT:列的注释信息。
在 Go 语言中, 一个结构体的最小包含为字段名和字段类型。实际上, 可以看到 COLUMNS 表中基本都具备了,它能够直接帮助程序进行表到结构体的映射转换。
