- 浏览: 249065 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
wls212:
...
数据库查询优化技巧(MySQL) -
wang1352083:
来看几个实例 1、客户/订单/订单项目 ...
MongoDB Schema Design(MongoDB模式设计)(中文简述版) -
RunUpwind:
感谢,对我很有帮助!
ruby install相关(远程安装时出现HTTP Response 302的解决办法) -
yinmang1215:
不错,感觉这些方面的文档真是稀缺,谢了。
MongoDB+Rails的Demo实现 -
fireflyman:
rake -T
Rake命令大全
【网络转载】http://blog.csdn.net/yaoxy/archive/2009/07/16/4353115.aspx
Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:
1、Primary key的1个或多个列
必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。
2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。
下面以测试说明:
SQL> create table t (a int,b int,c int,d int);
Table created.
SQL> desc t
Name Null? Type
----------------------------------------- -------- -----------
A NUMBER(38)
B NUMBER(38)
C NUMBER(38)
D NUMBER(38)
SQL> alter table t add constraint pk_t primary key (a,b);
Table altered.
SQL> desc t
Name Null? Type
----------------------------------------- -------- ----------------
A NOT NULL NUMBER(38)
B NOT NULL NUMBER(38)
C NUMBER(38)
D NUMBER(38)
可以看到A、B两个列都自动改为了NOT NULL
SQL> alter table t modify (a int null);
alter table t modify (a int null)
*
ERROR at line 1:
ORA-01451: column to be modified to NULL cannot be modified to NULL
可以看到,列A不允许改为 NULL
SQL> alter table t drop constraint pk_t;
Table altered.
SQL> alter table t add constraint uk_t_1 unique (a,b);
Table altered.
SQL> desc t
Name Null? Type
----------------------------------------- -------- -----------
A NUMBER(38)
B NUMBER(38)
C NUMBER(38)
D NUMBER(38)
我们看到列A又变回了NULL。
注意到,在删除主键时,列的NULLABLE会回到原来的状态。如果在创建主键后,对原来为NULL的主键列,显式设为NOT NULL,在删除主键后仍然是NOT NULL。比如在创建主键后,执行下面的操作,可以看到:
SQL> alter table t modify (b int not null);
Table altered.
SQL> alter table t drop constraint pk_t;
Table altered.
SQL> desc t
Name Null? Type
----------------------------------------- -------- ----------
A NUMBER(38)
B NOT NULL NUMBER(38)
C NUMBER(38)
D NUMBER(38)
再做如下的实验:
SQL> drop table t;
Table dropped.
SQL> create table t (a int,b int,c int,d int);
Table created.
SQL> alter table t add constraint uk_t_1 unique (a,b);
Table altered.
SQL> alter table t add constraint uk_t_2 unique (c,d);
Table altered.
可以看到可以增加两个UNIQUE KEY。看看能不能增加两个主键:
SQL> alter table t add constraint pk_t primary key (c);
Table altered.
SQL> alter table t add constraint pk1_t primary key (d);
alter table t add constraint pk1_t primary key (d)
*
ERROR at line 1:
ORA-02260: table can have only one primary key
由此可以看到一个表只能有一个主键。
SQL> alter table t drop constraint pk_t;
Table altered.
SQL> insert into t (a ,b ) values (null,null);
1 row created.
SQL> /
1 row created.
SQL> insert into t (a ,b ) values (null,1);
1 row created.
SQL> /
insert into t (a ,b ) values (null,1)
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.UK_T_1) violated
SQL> insert into t (a ,b ) values (1,null);
1 row created.
SQL> /
insert into t (a ,b ) values (1,null)
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.UK_T_1) violated
主键和唯一键约束是通过参考索引实施的,如果插入的值均为NULL,则根据索引的原理,全NULL值不被记录在索引上,所以插入全NULL值时,可以有重复的,而其他的则不能插入重复值。
发表评论
-
mysql proxy V0.8.2 测试问题记录
2012-03-08 15:40 18581、 问题:没法输出控制台日志。(控制台日志可以统计分 ... -
mysql用户管理
2012-02-27 16:30 1363网络转载:http://www.cnblogs.com/blo ... -
数据库查询优化技巧(MySQL)
2011-12-19 13:42 1665在数据库程序的开发中,性能是最让人关心和担心的问题之一, ... -
mysql服务器性能调优工具
2011-12-19 12:10 1866数据库服务器的性能在网络服务中往往起着至关重要的作用,通常 ... -
mysql主从服务器搭建配置
2011-12-19 12:07 1684主服务器的(db1)配置 ●my.cnf设置 [mysql ... -
mysql中如何获得数据库的大小
2011-07-15 13:33 2427转载:http://zhidao.zgsj.com/artic ... -
mysql中常用命令收集
2011-04-22 17:13 1080①查看表中各列的具体属性: show full col ... -
mysql慢查询功能介绍及其相关工具的使用
2011-03-07 11:43 3857【Backgroud】在以MySQL为 ... -
MySQL中查看表状态
2011-02-18 17:19 2597#MySQL中查看表状态 SHOW TABLE STATUS ... -
MySQL-Proxy负载平衡测试遇到的问题及其分析 && MySQL-Proxy工作机制
2010-12-23 16:19 4221(1)MySQL-Proxy负载平衡测试中遇到的问题及其分析 ... -
mysql中查看该台数据库服务器执行的查询次数
2010-11-26 17:26 2036mysql> show status like & ... -
mysql中GROUP BY的高级应用
2010-10-18 19:53 1963有SQL文如下所示: SELECT place_id, con ... -
mysql中GROUP BY结合GROUP_CONCAT的使用
2010-10-18 18:59 1616有查询语句如下所示: select id, type, si ... -
MySQL Proxy Version 0.8.0安装手顺
2010-09-08 15:56 3140MySQL Proxy Version 0.8.0安装 ... -
MySql查看数据库和表的创建语句
2010-07-27 16:59 19901博文参照:http://zhuixue.iteye.c ... -
查看mysql服务器的端口
2010-07-21 17:13 3313##########查看mysql服务器的端口####### ... -
MySQL Sandbox的安装
2010-07-13 17:37 1755安装MySQLSandbox 下载地址:https://la ... -
利用MySQL Sandbox同一台机器上创建多个MySQL服务器
2010-07-13 17:33 2687创第一个MySQL服务器---sp ... -
USING SPIDER (Simple case)
2010-07-12 17:28 1529利用spider storage engine的简单实 ... -
spider storage engine实践时遇到[Mysql::Error: This xid is already exist: COMMIT]的解决办法
2010-07-07 17:16 2037参考博文:http://ilgnep.iteye.com/bl ...
相关推荐
主要介绍了mysql中key 、primary key 、unique key 与index区别的相关资料,需要的朋友可以参考下
那这个问题就可以简化为 PRIMARY KEY,UNIQUE KEY 和 INDEX 的区别。而这三者也正好是索引的划分,主键索引,唯一索引和普通索引(INDEX)。 使用 INDEX 来加速从数据库中读取数据。INDEX 通常加在那些 JOIN, WHERE...
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。 PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。 请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。 CREATE TABLE 时...
1、建表语句: CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, ... UNIQUE KEY `idxunique_first_name_gender` (`first_name`
a%b表⽰以a开头b结尾的任意长度的字符串 _(下横线) a_b表⽰以a开头b结尾的长度为3的任意字符, PRIMARY KEY UNIQUE NOT NULL AUTO_INCREMENT DEFAULT default_value PRIMARY KEY 与UNIQUE 数据库操作: show ...
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。 PRIMARY KEY 拥有自动定义的 UNIQUE 约束。 请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。 下面的 SQL 在 ...
在课程结束时,使用SQL查询分析器用PRIMARY KEY、CHECK、FOREIGN KEY……REFERENCES、NOT NULL、UNIQUE等关键字验证MYSQL的实体完整性、参照完整性及用户定义完整性。 二、实验内容 1、在查询分析器中用PRIMARY KEY...
primary key//只能有一个 ) create table teacher( ID int auto_increment, Name varchar(20), Sex varchar(1), Age int, PRIMARY key(ID)//主键名 ); use mysqltest; show tables; alter table 表格名 ...
新华字典MySQL数据 CREATE TABLE `xhzd_surnfu` ( `id` int(8) NOT NULL AUTO_INCREMENT COMMENT '主键自增id', `zi` varchar(6) NOT NULL DEFAULT '' COMMENT '汉字', ... UNIQUE KEY `id_pk`
UNIQUE KEY MovieID (MovieID) ) TYPE=MyISAM; -- -- Dumping data for table `movies` -- -- -- Table structure for table `users` -- CREATE TABLE users ( UserID bigint(20) NOT NULL auto_increment, ...
mysql “ON DUPLICATE KEY UPDATE” 语法如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列...
若表有primary key或unique key,则分区表的分区列必须包含在primary key或unique key列表里,这是为了确保主键的效率,否则同一主键区的东西一个在A分区,一个在B分区,显然会比较麻烦。 2、各分区类型条件 ...
CREATE TABLE t1(id1 INT,a1 INT,b1 INT,PRIMARY KEY(id1)); CREATE TABLE t2(id2 INT,a2 INT,b2 INT); CREATE TABLE t3(id3 INT UNIQUE,a3 INT,b3 INT); CREATE TABLE t4(id4 INT,a4 INT,b4 INT); CREATE TABLE t5...
数据库实验四 数据库实验 数据库实验四 数据库实验 数据库实验四 数据库实验 数据库实验四 数据库实验 数据库实验四 数据库实验
而replace into其实与insert into很相像,但对于replace into,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。 replace是mysql 里面处理...
UNIQUE KEY `village_id` (`village_id`), KEY `province_id` (`province_id`) USING BTREE, KEY `city_id` (`city_id`) USING BTREE, KEY `town_id` (`town_id`) USING BTREE, KEY `county_id` (`county_id`) ...
primary key:主键约束,指定某列的数据不能重复、唯一 foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据 check:检查,指定一个表达式,用于检验指定数据 MySQL不支持check约束,但可以使用...
表约束与列约束:比较表级约束和列级约束的区别和使用场景。 约束的创建与管理:如何添加、修改和删除约束。 约束在复杂查询中的应用:展示如何在复杂的SQL查询中利用约束。 适用人群 数据库管理员:需要深入理解...