唯一约束

唯一键约束--查看索引

青春壹個敷衍的年華 提交于 2020-01-12 22:06:20
唯一键约束 (一)概述 1、关键字:unique key 2、特点:指定了唯一键的列的值必须唯一,不能重复 3、作用:给主键以外的列,限定唯一性 4、唯一键分类 单列的唯一 复合唯一 唯一键和主键的区别: (1)主键不能为空,唯一键可以为空 (2)主键约束,一个表只能有一个,而唯一键可以有很多个 (二)使用唯一键 1、如何创建/指定唯一键 (1)在建表时 create table 【数据库名.】表名称( 字段1 数据类型 primary key, 字段2 数据类型 【unique key】, 字段3 数据类型 【unique key】, … ); 或 create table 【数据库名.】表名称( 字段1 数据类型 primary key, 字段2 数据类型 , 字段3 数据类型 , …, unique key(字段2), #分别唯一 unique key(字段3) ); create table 【数据库名.】表名称( 字段1 数据类型 primary key, 字段2 数据类型 , 字段3 数据类型 , …, unique key(字段列表) #复合唯一 ); create table emp( eid int primary key, #员工编号 ename varchar(20), #姓名 cardid varchar(18) unique key, #身份证号 tel

MYSQL 语法大全自己总结的

两盒软妹~` 提交于 2019-12-24 09:44:51
mysql语法大全 --------数据链接------------------- --数据库服务启动 net start mysql --关闭服务 net stop mysql --登录 -u,-p后面不需要空格 mysql -uroot -p[密码] --退出 exit; ----MySql用户管理--------- --数据库root密码修改 操作系统:windows操作系统,xp或win7. 1.dos命令行窗口 进入e:\mysql5.5\bin ,停止mysql 服务 e:\mysql5.5\bin>net stop mysql 注意:看看那任务管理器中是否有mysqld.exe进程,如有,kill them all. 2. 以不检查权限的方式启动mysql e:\mysql5.5\bin>mysqld.exe --skip-grant-tables 你会看到窗口光标在下一行的第一个位置闪烁,这说明已经启动了,不需要管。 3. 新建一个命令行窗口同样进入到e:\mysql5.5\bin目录,启动mysql e:\mysql5.5\bin>mysql 4. 修改root密码 mysql>use mysql mysql>update user set password=PASSWORD('new_password') where user='root'; mysql

MySQL完整性约束

僤鯓⒐⒋嵵緔 提交于 2019-12-23 00:10:53
一. 约束介绍   约束条件与数据类型的宽度一样,都是可选参数.   用于保证数据的完整性和一致性. 二. 约束分类   1. primary key (pk)  表示该字段为该表的主键,可以唯一的标识记录   2. foreign key (fk)  标识该字段为该表的外键   3. not null  标识该字段不能为空     默认为空, 设置不为空就必须要为字段赋值   4. unique key (uk)  标识该字段的值是唯一的   5. anto_increment  标识该字段的值自动增长(整数类型, 而且为主键)   6. default  为该字段设置默认值     默认为null, 如果设置了默认值,并且插入数据时不给该字段赋值时,使用默认值. 三 . 详细分类验证    1. not null 和 default           2. unique      ①. 单列唯一     在mysql中称为单列唯一,即同一列内唯一             将 name 字段设置为唯一, 不可以给 name 字段插入相同的值.      ②. 联合唯一    将id设置为单列唯一,将ip+端口设置为联合唯一,也就是ip+端口不可以相同,ip或端口相同可以.    3. primary key     在一个表中 : 单列可以做主键, 多列也可以做主键(复合主键)

DB2和Oracle中唯一约束和唯一索引对比

喜夏-厌秋 提交于 2019-12-18 03:57:06
db2创建唯一性约束: db2 => connect to sample 数据库连接信息 数据库服务器 = DB2/NT 10.1.0 SQL 授权标识 = ADMINIST... 本地数据库别名 = SAMPLE 创建表db2admin.test,允许字段id为空。从下面的过程可以看出,db2中的唯一性约束不允许列值为空。 db2 => create table db2admin.test(id int) DB20000I SQL 命令成功完成。 db2 => alter table db2admin.test add constraint unique_test_id unique(id) DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在 SQL 处理期间,它返回: SQL0542N 名为 "ID" 的列不能是主键或者唯一键约束的列,因为它可以包含空值。 SQLSTATE=42831 db2 => alter table db2admin.test alter column id set not null DB20000I SQL 命令成功完成。 db2 => alter table db2admin.test add constraint unique_test_id unique(id) DB21034E 该命令被当作 SQL

SQl浅谈 索引

廉价感情. 提交于 2019-12-17 16:49:08
1、索引的工作原理 我给大家推荐一个别人的总结。 http://blog.csdn.net/NightManHAHA/article/details/5648579 2、索引的设计原则 对于一张表来说,索引的有无和建立什么样的索引,要取决与where字句和Join表达式中。 一般来说建立索引的原则包括以下内容: 主键列:系统一般会自动建立聚集索引。 非主键列:有大量重复值并且经常进行条件查询、排序、分组的列,或者经常频繁访问的列,考虑建立聚集索引。 如果在一个经常做插入操作的表中建立索引,应使用fillfactor(填充因子)来减少页分裂,同时提高并发度降低死锁的发生。如果在表为只读表,填充因子可设为100。 另外我们在选择索引键的时候,尽量采用小数据类型(最好是整数)的列作为索引键,这样每个索引页能尽可能多的容纳索引键和指针,用整数的好处是因为整数的访问速度最快。 3、使用索引的注意事项 动作描述 使用聚集索引 使用非聚集索引 外键列 应 应 主键列 应 应 列经常被分组排序(order by) 应 应 返回某范围内的数据(BETWEEN、>、>=、< 和 <=) 应 小数目的不同值 应 大数目的不同值 应 频繁更新的列 应 频繁修改索引列 应 一个或极少不同值 4、索引的分类 按存储结构区分 : “聚集索引(又称聚类索引,簇集索引)”,“分聚集索引(非聚类索引,非簇集索引)”

Mysql基础02-约束

≡放荡痞女 提交于 2019-12-14 19:00:47
约束与索引 概念 1、数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。 实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录 域完整性(Domain Integrity):例如:年龄范围0-120,性别范围“男/女” 引用完整性(Referential Integrity):例如:员工所在部门,在部门表中要能找到这个部门 用户自定义完整性(User-defined Integrity):例如:用户名唯一、密码不能为空等 2、约束 键约束:主键约束、外键约束、唯一键约束 Not NULL约束:非空约束 Check约束:检查约束 Default约束:默认值约束 自增约束 3、约束(CONSTRAINTS)与索引(INDEX) 约束是用来对数据业务规则和数据完整性进行实施、维护。约束的作用范围仅限在当前数据库,是逻辑约束,不会因为设置约束而额外占用空间。 索引 是一个单独、物理的存储在数据页上的数据库结构,它是表中 一列或若干列值的集合 和相应的指向表中数据值的物理标识数据页的 逻辑指针清单 (类似于新华字典的目录索引页)。 可以大大提高查询速度。应该在键列、或其他经常要查询、排序、按范围查找的列上建立索引。 Mysql会在主键、唯一键、外键列上自动创建索引

MySQL 表的约束条件

ぃ、小莉子 提交于 2019-12-14 07:03:40
1.主键约束 主键约束要求主键列的数据 非空且唯一 1. 在定义列时指定主键,语法规则如下 字段名 数据类型 primary key create table book ( bno Varchar(6) primary key, //主键 bname Varchar(70), press Varchar(30), price Decimal(8,2), author varchar(30) ) 2. 在定义完所有列之后指定主键。 constraint 约束名 primary key (字段名); 如: create table book ( bno Varchar(6), bname Varchar(70), press Varchar(30), price Decimal(8,2), author varchar(30), //括号里可以输入多个字段,用逗号隔开,约束名随意 constraint pk primary key(bno) ) 3.在创建表之后添加与删除主键 alter table 表名 modify 字段名 数据类型 primary key; //添加 alter table 表名 drop primary key; //删除 添加主键 alter table book modify bno varchar ( 6 ) primary key ; 删除主键

Oracle主键约束、唯一约束和唯一索引

三世轮回 提交于 2019-12-10 18:25:04
总结如下: (1)主键约束和唯一键约束均会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效时,隐式创建的唯一索引会被删除; --建表 create table student( stu_name varchar2(30) not null, age varchar2(4), gender varchar2(2), stuno varchar2(10), class varchar2(5), grade varchar2(5), tno varchar2(10) ); --在创建主键约束、唯一约束的时候,Oracle会隐式的创建一个和该主键约束名字相同的唯一索引 --主键 alter table student add constraint PK_STUNO primary key (stuno); --删除主键约束 alter table student drop constraint PK_STUNO; --唯一约束 alter table student add constraint UK_STUNO unique (stuno); --删除 alter table student drop constraint UK_STUNO; --如果先在列上创建唯一索引,然后再创建唯一约束,这时Oracle发现此列已经存在唯一索引,就不再自己创建 create unique

ORACLE支持五种类型的完整性约束

不羁的心 提交于 2019-12-10 05:15:40
ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束. POREIGN KEY (外部键)--通过使用公共列在表之间建立一种父子(parent-child)关系,在表上定义的外部键可以指向主键或者其他表的唯一键. 来源: oschina 链接: https://my.oschina.net/u/2277088/blog/691714

MYSQL面试必读

孤人 提交于 2019-12-07 16:03:36
Mysql 的存储引擎,myisam和innodb的区别。 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。 2.innodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。 数据表类型有哪些 答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。 MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。 InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。 b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。 c. mysql库主从读写分离。 d. 找规律分表,减少单表中的数据量提高查询速度。 e。添加缓存机制,比如memcached,apc等。 f. 不经常改动的页面,生成静态页面。 g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE. 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?