- 浏览: 249620 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 18661、 问题:没法输出控制台日志。(控制台日志可以统计分 ... -
mysql用户管理
2012-02-27 16:30 1370网络转载:http://www.cnblogs.com/blo ... -
数据库查询优化技巧(MySQL)
2011-12-19 13:42 1671在数据库程序的开发中,性能是最让人关心和担心的问题之一, ... -
mysql服务器性能调优工具
2011-12-19 12:10 1873数据库服务器的性能在网络服务中往往起着至关重要的作用,通常 ... -
mysql主从服务器搭建配置
2011-12-19 12:07 1691主服务器的(db1)配置 ●my.cnf设置 [mysql ... -
mysql中如何获得数据库的大小
2011-07-15 13:33 2435转载:http://zhidao.zgsj.com/artic ... -
mysql中常用命令收集
2011-04-22 17:13 1093①查看表中各列的具体属性: show full col ... -
mysql慢查询功能介绍及其相关工具的使用
2011-03-07 11:43 3861【Backgroud】在以MySQL为 ... -
MySQL中查看表状态
2011-02-18 17:19 2608#MySQL中查看表状态 SHOW TABLE STATUS ... -
MySQL-Proxy负载平衡测试遇到的问题及其分析 && MySQL-Proxy工作机制
2010-12-23 16:19 4231(1)MySQL-Proxy负载平衡测试中遇到的问题及其分析 ... -
mysql中查看该台数据库服务器执行的查询次数
2010-11-26 17:26 2041mysql> show status like & ... -
mysql中GROUP BY的高级应用
2010-10-18 19:53 1969有SQL文如下所示: SELECT place_id, con ... -
mysql中GROUP BY结合GROUP_CONCAT的使用
2010-10-18 18:59 1620有查询语句如下所示: select id, type, si ... -
MySQL Proxy Version 0.8.0安装手顺
2010-09-08 15:56 3143MySQL Proxy Version 0.8.0安装 ... -
MySql查看数据库和表的创建语句
2010-07-27 16:59 19908博文参照:http://zhuixue.iteye.c ... -
查看mysql服务器的端口
2010-07-21 17:13 3318##########查看mysql服务器的端口####### ... -
MySQL Sandbox的安装
2010-07-13 17:37 1758安装MySQLSandbox 下载地址:https://la ... -
利用MySQL Sandbox同一台机器上创建多个MySQL服务器
2010-07-13 17:33 2695创第一个MySQL服务器---sp ... -
USING SPIDER (Simple case)
2010-07-12 17:28 1536利用spider storage engine的简单实 ... -
spider storage engine实践时遇到[Mysql::Error: This xid is already exist: COMMIT]的解决办法
2010-07-07 17:16 2044参考博文: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...
UNIQUE KEY `uk_bank_account` (`bank_account`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4; ``` 本示例中,我们创建了一个银行余额表,包含 `id`、`balance` 和 `bank_account` 三...
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 语句大全 MySQL 是一种关系型数据库管理系统,widely used in ...本资源总结了 MySQL 语句的基础知识点,涵盖了数据定义语言、数据操纵语言和高级查询运算词等方面,旨在帮助读者更好地理解和使用 MySQL 语句。
MySQL 约束是指在创建表时对表中的数据进行限制和约束,以确保数据的完整性和一致性。约束类型总的来说有五种:唯一性和主键约束、外键约束、检查约束、空值约束、默认值约束。 1. 唯一性和主键约束 唯一性和主键...
mysql “ON DUPLICATE KEY UPDATE” 语法如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列...
新华字典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, ...
若表有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 里面处理...