通过MySQL Workbench在数据库中创建新视图时,会根据一些隐式Workbench规则自动美化和优化代码。
有一个简单的表(从http://www.artfulsoftware.com/infotree/qrytip.php?id=78借来的代码):
CREATE TABLE tbl( id INT, colID INT, value CHAR(20) );
INSERT INTO tbl VALUES
(1,1,'Sampo'),(1,2,'Kallinen'),(1,3,'Office Manager'),
(2,1,'Jakko'),(2,2,'Salovaara'),(2,3,'Vice President');
以下查询创建视图:
CREATE VIEW `test_view` AS
SELECT
id,
GROUP_CONCAT(if(colID = 1, value, NULL)) AS 'First Name',
GROUP_CONCAT(if(colID = 2, value, NULL)) AS 'Last Name',
GROUP_CONCAT(if(colID = 3, value, NULL)) AS 'Job Title'
FROM tbl
GROUP BY id;
然后由MySQL Workbench转换为它:
CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`localhost`
SQL SECURITY DEFINER
VIEW `test_view` AS
SELECT
`tbl`.`id` AS `id`,
GROUP_CONCAT(IF((`tbl`.`colID` = 1),
`tbl`.`value`,
NULL)
SEPARATOR ',') AS `First Name`,
GROUP_CONCAT(IF((`tbl`.`colID` = 2),
`tbl`.`value`,
NULL)
SEPARATOR ',') AS `Last Name`,
GROUP_CONCAT(IF((`tbl`.`colID` = 3),
`tbl`.`value`,
NULL)
SEPARATOR ',') AS `Job Title`
FROM
`tbl`
GROUP BY `tbl`.`id`
是否有一种方法告诉工作台将视图保留为创建时的原始形式?
我最大的问题是将表名添加到每个列名(例如 tbl
。id
),因为我经常需要重用 CREATE VIEW < / em>代码用于具有相同列名的不同表。尽管如此,我发现原始表单更简单易读。