2013-05-16 46 views
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 ; 

我们有usermane作为unique,我们可以用它作为主键,那么保持id为主键有什么好处呢?唯一键可以用作主键,那么我们为什么要保留另一个主键?

感谢

回答

2

主键将避免重复和空值的表 其独特+的组合NOT NULL将do.But的 好处是,如果一个表有主键,我们可以创建 关系子表。

This Will Help You

编辑: 主键

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

唯一键

  1. 唯一键只能接受一个空值。
  2. 默认情况下,唯一键是唯一的非聚集索引。
  3. 我们可以在一个表中有多个唯一的键。
  4. 在SQL Server中,唯一键可以使外键进入另一个表。
0

主键:

我)只能有一个表中的

ii)其从未允许空值

III)主键是唯一键标识,不能为空并且必须是唯一的。

唯一密钥:

我)可以在一个表中有多个唯一键。

II)唯一键可以有NULL值

III),它不能是候选键

IV)的唯一键可以为空,可能不是唯一的。

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; 
相关问题