MySQL 主键约束 |
您所在的位置:网站首页 › mysql如何添加列级约束范围 › MySQL 主键约束 |
❮ 上一页 下一页 ❯
MySQL 主键约束
简介:在本教程中,您将学习如何使用MySQL主键约束为表创建主键。 MySQL主键简介
因为MySQL使用整数运行得更快,所以主键列的数据类型应是整数,例如:INT, BIGINT。但是,您应确保主键的整数类型的值范围足以存储表可能具有的所有可能的行。 主键列通常具有自动为键AUTO_INCREMENT生成唯一序列的 属性。下一行的主键大于前一行。 为表定义主键时,MySQL会自动创建一个索引名为PRIMARY。 定义MySQL PRIMARY KEY约束MySQL允许您通过在创建或修改表时定义主键约束来创建主键。 使用CREATE TABLE语句定义MySQL PRIMARY KEY约束您通常在使用CREATE TABLE 语句创建表时定义主键。要PRIMARY KEY 为表创建约束,请PRIMARY KEY在主键列的定义中指定。 以下示例创建主键为user_id列的users表: CREATE TABLE users( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(40), password VARCHAR(255), email VARCHAR(255) );您还可以在CREATE TABLE 语句末尾指定PRIMARY KEY如下: CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id) );如果主键由多列组成,则必须在CREATE TABLE 语句末尾指定它们。您在括号中放置了以逗号分隔的主键列列表,并跟随PRIMARY KEY 关键字。 CREATE TABLE user_roles( user_id INT NOT NULL, role_id INT NOT NULL, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id) );除了创建包含user_id和role_id列的主键之外,语句还创建了两个外键约束。 使用ALTER TABLE语句定义MySQL PRIMARY KEY约束如果某个表由于某些原因没有主键,则可以使用ALTER TABLE语句定义表的主键,如以下语句所示: ALTER TABLE table_name ADD PRIMARY KEY(primary_key_column);以下示例将id列添加到主键。 首先,创建 t1表而不定义主键。 CREATE TABLE t1( id INT, title VARCHAR(255) NOT NULL );其次,将id 列作为t1表的主键。 ALTER TABLE t1 ADD PRIMARY KEY(id); PRIMARY KEY与 UNIQUE KEY和 KEYKEY是INDEX的同义词 。您可以使用 KEY为列或一组列创建索引,不是主键或唯一索引。 UNIQUE索引创建,其值必须是一列上的唯一值,与PRIMARY索引不同,MySQL允许UNIQUE索引中有NULL值。另外,表可以有多个UNIQUE索引。 例如,假设users表中的用户email和username 应是唯一的。您可以将email,username列定义为UNIQUE索引语句如下: 为username列添加 UNIQUE 索引。 ALTER TABLE users ADD UNIQUE INDEX username_unique (username ASC) ;为email列添加 UNIQUE 索引。 ALTER TABLE users ADD UNIQUE INDEX email_unique (email ASC) ;可以使用如下命令查看表结果: SHOW CREATE TABLE users; +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | users | CREATE TABLE `users` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(40) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, PRIMARY KEY (`user_id`), UNIQUE KEY `username_unique` (`username`), UNIQUE KEY `email_unique` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)在本教程中,您学习了如何为新表创建主键或将主键添加到现有表。 相关教程 MySQL NOT NULL约束 ❮ 上一页 下一页 ❯ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |