3
CREATE TABLE IF NOT EXISTS `tbl_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) COLLATE latin1_general_ci NOT NULL,
  `passd` varchar(50) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

我们有usermaneas unique,我们可以用它作为主键,那么保持 id 作为主键有什么好处呢?

谢谢

4

2 回答 2

2

主键将避免表中的重复值和空值,唯一+非空的组合可以做到。但优点是,如果表有主键,我们可以创建与子表的关系。

这将帮助你

编辑:主键

  1. 主键不能接受空值。
  2. 默认情况下,主键是聚集索引,数据库表中的数据在物理上是按照聚集索引的顺序组织的。
  3. 一张表中只能有一个主键。
  4. 主键可以作为外键进入另一个表。

唯一键

  1. 唯一键只能接受一个空值。
  2. 默认情况下,唯一键是唯一的非聚集索引。
  3. 我们可以在一个表中拥有多个唯一键。
  4. 在 SQL Server 中,唯一键可以成为另一个表的外键。
于 2013-05-16T12:28:22.120 回答
0

Primary Key:

i) Can be only one in a table

ii) It never allows null values

iii) Primary Key is unique key identifier and can not be null and must be unique.

Unique Key:

i) Can be more than one unique key in one table.

ii) Unique key can have null values

iii) It can’t be candidate key

iv) Unique key can be null and may not be unique.

CREATE TABLE IF NOT EXISTS `tbl_users` (
  `id` int(11) NOT NULL,
  `username` varchar(50) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
  `passd` varchar(50) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
于 2013-05-16T12:31:49.437 回答