我想附加一个表来添加列但不使用alert table
命令
e.g。
这是缺少某些列的表。
CREATE TABLE IF NOT EXISTS `admin` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(20) NOT NULL,
`passwd` varchar(40) NOT NULL,
`isActive` tinyint(1) NOT NULL default '1',
`lastVisit` datetime NOT NULL default '0000-00-00 00:00:00',
`modifyAt` datetime NOT NULL,
`createdAt` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
因此,如果我运行此查询,那么它应该自动将缺少的列添加到我的表中
CREATE TABLE IF NOT EXISTS `admin` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(20) NOT NULL,
`passwd` varchar(40) NOT NULL,
`name` varchar(100) NOT NULL,
`originalUser` tinyint(1) NOT NULL default '0',
`isActive` tinyint(1) NOT NULL default '1',
`lastVisit` datetime NOT NULL default '0000-00-00 00:00:00',
`modifyAt` datetime NOT NULL,
`createdAt` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
这可以不使用alert table
命令吗?
答案 0 :(得分:1)
我理解您的问题,因为您想在表格中添加一些列。请注意,术语行通常与表中的实际数据有关,而与列本身无关。如果我的假设是错误的,请澄清你的问题。
您无法使用CREATE TABLE
来更改表格。它是在那里创建表,
如果它无法创建它,它在大多数情况下会抛出你所描述的错误。出于这个原因存在另一个命令:ALTER TABLE
。
你可能会这样做。
(1)使用上面的CREATE TABLE
语法创建表格:
CREATE TABLE IF NOT EXISTS `admin` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(20) NOT NULL,
`passwd` varchar(40) NOT NULL,
`isActive` tinyint(1) NOT NULL default '1',
`lastVisit` datetime NOT NULL default '0000-00-00 00:00:00',
`modifyAt` datetime NOT NULL,
`createdAt` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
(2)使用这样的ALTER TABLE
进行我认为您希望在第二个语句中修改的修改(另外两列):
ALTER TABLE
ADD COLUMN `name` varchar(100) NOT NULL AFTER `passwd`,
ADD COLUMN `originalUser` tinyint(1) NOT NULL default '0' AFTER `name`;
与您的问题无关,但我会避免使用name
这样的列名,因为如果您没有正确地转义它们,它会给您带来其他错误(请参阅reserved words)。