Mysql表键

Mysql表键,mysql,sql,database,Mysql,Sql,Database,谁能告诉我钥匙fk_拾取方法(picku方法id)的含义是什么, 键fk\u交付方法(交付方法id)行。因为提货方式和交货方式不在表中。那么这些线有什么用呢 CREATE TABLE `test` ( `idTest` int(11) NOT NULL AUTO_INCREMENT, `Name` mediumtext NOT NULL, `email` varchar(45) NOT NULL, `password` varchar(45) NOT NULL, `firstname` varc

谁能告诉我钥匙
fk_拾取方法
picku方法id
)的含义是什么, 键
fk\u交付方法
交付方法id
)行。因为提货方式和交货方式不在表中。那么这些线有什么用呢

CREATE TABLE `test` (
`idTest` int(11) NOT NULL AUTO_INCREMENT,
`Name` mediumtext NOT NULL,
`email` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
`firstname` varchar(45) NOT NULL,
`lastname` varchar(45) NOT NULL,
`phone` bigint(20) unsigned NOT NULL,
`address_street` varchar(128) NOT NULL,
`address_apt` varchar(45) DEFAULT NULL,
`address_city` varchar(128) NOT NULL,
`address_state` varchar(2) NOT NULL,
`address_zip` int(11) NOT NULL,
`fax` bigint(20) unsigned DEFAULT NULL,
`account_balance` float NOT NULL DEFAULT '0',
`delivery_radius` float DEFAULT NULL,
`pickup_method_id` int(11) NOT NULL DEFAULT '0',
`delivery_method_id` int(11) NOT NULL,
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
`lat` float NOT NULL DEFAULT '0',
`lng` float NOT NULL DEFAULT '0',
`timezone` varchar(45) NOT NULL,
PRIMARY KEY (`idTest`),
UNIQUE KEY `phone_UNIQUE` (`phone`),
KEY `fk_pickup_method` (`pickup_method_id`),
KEY `fk_deliv_method` (`delivery_method_id`)
) 

它们是()中列的索引。但这些字段并不局限于唯一性


请在此中查找
{INDEX | KEY}

这些是拾取方法id和传递方法id字段上的索引

mysql如何使用索引:

名称fk_表示创建者创建外键的意图。但这不是外键,也不关心引用完整性

mysql中的外键(innodb):

键fk\u拾取方法(拾取方法\u id)
表列
拾取方法id
上定义名为
的索引

运行
EXPLAIN
时,在
可能的\u键
列下,您将看到索引的名称


通常的做法是调用键作为它索引的列。如果不指定键名,则这是默认行为。

我的猜测是,这些约束旨在成为
外键
约束并引用其他表

InnoDB引擎在定义
外键
约束时创建索引(如果没有索引)

MyISAM引擎忽略
外键
约束,但仍创建索引。例如:

CREATE TABLE test 
( test_id int NOT NULL AUTO_INCREMENT,
  delivery_method_id int NOT NULL,
  PRIMARY KEY (test_id),
  FOREIGN KEY fk_deliv_method (delivery_method_id)
    REFERENCES delivery_method(delivery_method_id)
) ENGINE=MyISAM 
  DEFAULT CHARSET=utf8 ;
然后:

SHOW CREATE TABLE test ;

CREATE TABLE `test` (
  `test_id` int(11) NOT NULL AUTO_INCREMENT,
  `delivery_method_id` int(11) NOT NULL,
  PRIMARY KEY (`test_id`),
  KEY `fk_deliv_method` (`delivery_method_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

请删除
java
标记,因为这似乎与java无关…@ManseUK:谢谢,只是我自己不想这么做:-)@vikastejavadeveloper:这回答了你的问题吗?注意:由于名称包括
fk
,它们可能是外键,但它们是作为索引创建的。