在MariaDB中获取列排序规则的3种方法

发布于

以下是在 MariaDB 中返回列排序规则的三种方法。

声明SHOW COLUMNS 该语句有一个 optional关键字,使用该关键字时,将输出列排序规则和注释,以及您对每列拥有的权限。SHOW COLUMNSFULL

下面是针对名为 Events 的表运行此语句的示例:

SHOW FULL COLUMNS FROM Events; 示例结果:

+———–+————–+——————-+——+—–+———+—————-+———————————+———+ | Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment | +———–+————–+——————-+——+—–+———+—————-+———————————+———+ | EventId | int(11) | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | | | EventName | varchar(255) | latin5_turkish_ci | YES | | NULL | | select,insert,update,references | | +———–+————–+——————-+——+—–+———+—————-+———————————+———+ 该表information_schema.columns 另一种选择是查询表。在这种情况下,我们可以只选择我们感兴趣的列:information_schema.columns

SELECT column_name, character_set_name, collation_name FROM information_schema.columns WHERE table_name = ‘Events’ AND column_name = ‘EventName’; 示例结果:

+————-+——————–+——————-+ | column_name | character_set_name | collation_name | +————-+——————–+——————-+ | EventName | latin5 | latin5_turkish_ci | +————-+——————–+——————-+ 声明SHOW CREATE TABLE 另一个选项是使用 ,它返回我们表的语句。SHOW CREATE TABLECREATE TABLE

但是,仅当列的字符集和排序规则信息与表的默认排序规则不同时,才会返回它们。

下面是针对调用的表运行此语句的示例,其中列与表的默认值没有区别:Pets

SHOW CREATE TABLE Pets; 输出:

+-------+------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
+-------+------------------------------+
| Pets  | CREATE TABLE `Pets` (
  `PetId` int(11) NOT NULL,
  `PetTypeId` int(11) NOT NULL,
  `OwnerId` int(11) NOT NULL,
  `PetName` varchar(60) NOT NULL,
  `DOB` date DEFAULT NULL,
  PRIMARY KEY (`PetId`),
  KEY `PetTypeId` (`PetTypeId`),
  KEY `OwnerId` (`OwnerId`),
  CONSTRAINT `pets_ibfk_1` FOREIGN KEY (`PetTypeId`) REFERENCES `PetTypes` (`PetTypeId`),
  CONSTRAINT `pets_ibfk_2` FOREIGN KEY (`OwnerId`) REFERENCES `Owners` (`OwnerId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+-------------------------------+
在此示例中,排序规则信息没有差异,因此没有返回任何列的排序规则信息。

让我们更改列上的排序规则:PetName

ALTER TABLE Pets MODIFY PetName VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL; 并再次运行:SHOW CREATE TABLE

SHOW CREATE TABLE Pets; 输出:

+-------+------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
+-------+------------------------------+
| Pets  | CREATE TABLE `Pets` (
  `PetId` int(11) NOT NULL,
  `PetTypeId` int(11) NOT NULL,
  `OwnerId` int(11) NOT NULL,
  `PetName` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `DOB` date DEFAULT NULL,
  PRIMARY KEY (`PetId`),
  KEY `PetTypeId` (`PetTypeId`),
  KEY `OwnerId` (`OwnerId`),
  CONSTRAINT `pets_ibfk_1` FOREIGN KEY (`PetTypeId`) REFERENCES `PetTypes` (`PetTypeId`),
  CONSTRAINT `pets_ibfk_2` FOREIGN KEY (`OwnerId`) REFERENCES `Owners` (`OwnerId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+-------------------------------+
这次我们可以看到针对列的新字符集和排序规则设置。PetName