【问题标题】:Explanation of MySQL query additionsMySQL查询添加说明
【发布时间】:2014-05-23 19:15:03
【问题描述】:

我正在我的 C# 应用程序中编写一个函数,在这种情况下,它正在 MySQL 数据库中创建一个新表。但是,当我编辑表结构(创建后)时,我看到三行不是通过代码添加的。

我需要仔细检查其中的任何一个,还是应该可以?

AUTO_INCREMENT = 1
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

使用的语法:

创建表 egr.test ( machine_id int NOT NULL AUTO_INCREMENT, machine_desc varchar(64) 默认为 NULL, product_family varchar(64) 默认为 NULL, 工厂 varchar(64) 默认 NULL, 模型 varchar(64) 默认为 NULL, 大小 varchar(64) 默认为 NULL, 主键 (machine_id)) ENGINE = INNODB;

【问题讨论】:

  • 添加用于创建表的代码。
  • 代码已更新 - 谢谢。

标签: c# mysql


【解决方案1】:

代码没有问题。当您创建如下表时

CREATE TABLE test ( 
machine_id int NOT NULL AUTO_INCREMENT, 
machine_desc varchar(64) DEFAULT NULL, 
product_family varchar(64) DEFAULT NULL, 
factory varchar(64) DEFAULT NULL, 
model varchar(64) DEFAULT NULL, 
size varchar(64) DEFAULT NULL, 
PRIMARY KEY (machine_id)
) ENGINE = INNODB ;

然后使用命令show create table test

你会看到一些东西

| test  | CREATE TABLE `test` (
  `machine_id` int(11) NOT NULL AUTO_INCREMENT,
  `machine_desc` varchar(64) DEFAULT NULL,
  `product_family` varchar(64) DEFAULT NULL,
  `factory` varchar(64) DEFAULT NULL,
  `model` varchar(64) DEFAULT NULL,
  `size` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`machine_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

现在为什么不显示AUTO_INCREMENT = 1,因为如果它在开始时设置为 1,那么它不会显示,这意味着它设置为 1,这是隐含的,但是如果您创建与上表相同的表格

CREATE TABLE test ( 
machine_id int NOT NULL AUTO_INCREMENT, 
machine_desc varchar(64) DEFAULT NULL, 
product_family varchar(64) DEFAULT NULL, 
factory varchar(64) DEFAULT NULL, 
model varchar(64) DEFAULT NULL, 
size varchar(64) DEFAULT NULL, 
PRIMARY KEY (machine_id)
) ENGINE = INNODB AUTO_INCREMENT = 2 ;

然后show create table test会显示为

| test  | CREATE TABLE `test` (
  `machine_id` int(11) NOT NULL AUTO_INCREMENT,
  `machine_desc` varchar(64) DEFAULT NULL,
  `product_family` varchar(64) DEFAULT NULL,
  `factory` varchar(64) DEFAULT NULL,
  `model` varchar(64) DEFAULT NULL,
  `size` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`machine_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 |

由于主键不再是 1 并且表描述会显示 auto_incremented 值的最后一个 id 在哪里。

如果您需要了解数据库中表的其他详细信息,您可能需要使用以下命令作为

show table status from your_db_name \G

你可能会得到一些东西

mysql> show table status from test \G
*************************** 1. row ***************************
           Name: test
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 12582912
 Auto_increment: 2
    Create_time: 2014-05-23 16:39:08
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多