唯一约束

数据库部分 面经集合

大兔子大兔子 提交于 2020-03-08 18:21:18
1、Mysql 主键是什么概念 “主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是 一个列或者列的组合 ,其值能 唯一地标识表中的每一行。 这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。 2、主键和索引的关系与区别 主键一定是唯一性索引,唯一性索引并不一定就是主键。 一个表中可以有多个唯一性索引,但只能有一个主键。 主键列不允许空值,而唯一性索引列允许空值。 主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是 主键不实际存在,而索引实际存在数据库中 3、 MyISAM与Innodb MySQL有多种存储引擎,每种存储引擎有各自的优缺点,比较常用的是 MyISAM 与 Innodb: Innodb 支持事务,支持外键;MyISAM 都不支持。 MyISAM 适合查询以及插入为主的应用,其索引和数据是分开的,而且其索引是压缩的,可以更好地利用内存。所以它的查询性能明显优于INNODB。压缩后的索引也能节约一些磁盘空间。 InnoDB 事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL 5.5.5 之后,InnoDB 作为默认存储引擎。 4、辅助索引、聚集索引与非聚集索引 索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,数据库的主流索引结构有 B+ 树以及 Hash 结构,B

Mysql学习笔记(016)-常见约束

别来无恙 提交于 2020-03-05 18:40:28
常见约束 #常见约束 /* 含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性 分类:六大约束 not null;非空,用于保证该字段的值不能为空 比如姓名,学号等 DEFALUT:默认,用于保证该字段有默认值 比如性别 PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空 比如字段,员工编号等 UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空 比如座位号 CHECK:检查的约束【mysql中不支持】 FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自主表的关联列的值 在从表添加外键约束,用于引用主表中某列的值 比如:主页编号,员工表的部门编号,员工表的工种编号 添加约束的时机: 1、创建表时 2、修改表时 约束的添加分类: 列级约束 六大约束语法上都支持,但外键约束没有效果 表级约束: 除了非空、默认、其他都支持 主键和唯一的大对比: 保证唯一 是否为空 一个表中可以有多少个 是否允许组合 主键 √ × 至多有一个 允许,但不推荐 唯一 √ √ 可以有多个 允许,但不推荐 外键: 1、要求在从表设置外键关系 2、从表外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求 3、主表中的关联列必须是一个key(一般是主键或者唯一键) 4、插入数据时,先插入主表,在插入从表 5、删除数据时,先删除从表

java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件

强颜欢笑 提交于 2020-02-27 11:00:07
Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (JDDS.PK_SHOP_MESSAGE) ### The error may involve com.shop.dao.itf.MessageMapper.insert-Inline ### The error occurred while setting parameters ### SQL: insert into SHOP_MESSAGE (MESSAGE_ID) values (?) ### Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (JDDS.PK_SHOP_MESSAGE) ; SQL []; ORA-00001: 违反唯一约束条件 (JDDS.PK_SHOP_MESSAGE) ; nested exception is java.sql.SQLIntegrityConstraintViolationException: ORA-00001: 违反唯一约束条件 (JDDS.PK_SHOP_MESSAGE) 因为表中主键字段一般都设置了唯一约束条件

Oracle主键约束、唯一键约束、唯一索引的区别

大憨熊 提交于 2020-02-26 06:36:33
一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念。键代表创建来实施业务规则的完整性约束。索引和键的混淆通常是由于数据库使用索引来实施完整性约束。 接下来我们看看数据库中的主键约束、唯一键约束和唯一索引的区别。 SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production PL/SQL Release 11.2.0.1.0 - Production CORE 11.2.0.1.0 Production TNS for Linux: Version 11.2.0.1.0 - Production NLSRTL Version 11.2.0.1.0 - Production SQL> create table test ( 2 id int, 3 name varchar2(20), 4 constraint pk_test primary key(id)) 5 tablespace users;

Oracle之唯一性约束(UNIQUE Constraint)使用方法具体解释

纵饮孤独 提交于 2020-02-16 18:03:38
Oracle | PL/SQL唯一索引(Unique Constraint)使用方法 1 目标 用演示样例演示怎样创建、删除、禁用和使用唯一性约束。 2 什么是唯一性约束? 唯一性约束指表中一个字段或者多个字段联合起来可以唯一标识一条记录的约束。 联合字段中,可以包括空值。 注:在Oracle中,唯一性约束最多能够有32列。 唯一性约束能够在创建表时或使用ALTER TABLE语句创建。 3 唯一性约束和主键的差别 主键(Primary Key):全部组成主键的列都不能包括空值。 唯一性约束(Unique Constraint):假设唯一性约束由多列组成,当中的部分列能够包括空值。 Oracle中不容许在同样列上既创建主键又创建唯一性约束。 4 创建表时定义唯一性约束 1)语法: CREATE TABLE table_name ( column1 datatype null/not null, column2 datatype null/not null, ... CONSTRAINT constraint_name UNIQUE (column1, column2,...,column_n) ); 2)基于单列的唯一性约束演示样例: create table tb_supplier ( supplier_id number not null ,supplier_name

Oracle中唯一约束和唯一索引的区别

非 Y 不嫁゛ 提交于 2020-02-10 07:09:36
在使用TOAD来操作Oracle数据库时,会注意到创建约束时有Primary Key、Check、Unique和Foreign Key四种类型的约束,这与SQL Server中的约束没有什么区别,这里的Check约束除了用于一般的Check约束外,在Oracle中也用于非空约束的实现。也就是说如果一个字段不允许为空,则系统将会创建一个系统的Check约束,该约束定了某字段不能为空。 除了约束,还有另外一个概念是索引,在TOAD中创建索引的界面如下: 我们可以注意到在唯一性组中有三个选项:不唯一、唯一和主键。那么创建索引时的唯一、主键与创建约束时候的唯一约束和主键约束有什么区别呢? 这里的可能容易产生误解,其实创建主键的结果是一样的,不管是在创建约束时创建还是创建索引时创建,都会创建一个主键约束和对应的一个唯一索引。 创建唯一约束与创建唯一索引有所不同: 创建唯一约束会在Oracle中创建一个Constraint,同时也会创建一个该约束对应的唯一索引。 创建唯一索引只会创建一个唯一索引,不会创建Constraint。 也就是说其实唯一约束是通过创建唯一索引来实现的。对于前端开发人员来说这两者有什么区别吗?好像没有。都是不能插入重复的值。在删除时这两者也有一定的区别,删除唯一约束时可以只删除约束而不删除对应的索引,所以对于的列还是必须唯一的,而删除了唯一索引的话就可以插入不唯一的值。

DDL DML DCL

一世执手 提交于 2020-02-05 09:03:12
1、DDL 1-1、DDL的概述 DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表、视图等等,DDL对这些对象和属性的管理和定义具体表现在Create、Drop和Alter上。特别注意:DDL操作的“对象”的概念,”对象“包括对象及对象的属性,而且对象最小也比记录大个层次。以表举例:Create创建数据表,Alter可以更改该表的字段,Drop可以删除这个表,从这里我们可以看到,DDL所站的高度,他不会对具体的数据进行操作。 1-2、DDL的主要语句(操作) Create语句:可以创建数据库和数据库的一些对象。 Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等。 Alter语句:修改数据表定义及属性。 1-3、DDL的操作对象(表) 1-3-1、表的概念 表的创建就是用来存放数据用的,由于我们存放的数据的不同,所以我们需要定义些数据类型,以方便管理。 1-3-2、表的属性 主键属性:主键就是主键约束,只不过起的名字不同了,主键的起名偏向于虚的(就是描述描述这件事),主键约束起名偏向于实的(就是描述操作的实施),描述的都是同一件事,主键约束就是表中的一个属性;在一个表中最多可以有一个主键;一个主键可以定义在一个或多个字段;主键使一个或多个字段的值必须唯一且不为空

SQL类型及约束

血红的双手。 提交于 2020-02-01 01:55:51
常见数据类型 数值型 ⑴.整型 ①.分类: Tinyint(1)、Smallint(2)、Mediumint(3)、Int(4)、integer(4)、Bigint(8) ②.特点: ⒈默认是有符号的,如果要无符号后边添加UNSIGNED。 ⒉如果插入的值超出范围,发出警告,插入临界值。 ⒊有默认长度int(11),无符号int(10)。 ⒋自己设置长度和范围无关(范围只和类型有关),如果自己设置长度后,位数不够会用0填充(必须搭配zerofill,默认会变为无符号)。 ⑵.小数 ①.分类 浮点数: float(M,D)4、double(M,D)8 定点数: DEC(M,D) ②.特点 ⒈M:整数部位和小数部位总位数,D:小数位数。 ⒉如果超出范围插入临界值。 ⒊M和D都可以省略,但定点型(M,D)默认为(10,0),float和double随插入精度决定。 字符型 ⑴.较长的文本 text、blob(存二进制)。 ⑵.较短的文本 char(M)、 varchar(M)、 enum('a','b','c')列表中一个不区分大小写、 set('a','b','c')中多个,insert into 表 values ('a,b')不区分大小写。 特点: M:最大字符数 char是固定长度字符,M是多少默认开多大空间,可省略(M)默认为1(较耗费空间,但效率会高点)。

sqlite主键与唯一约束

房东的猫 提交于 2020-01-19 07:15:59
主键和约束键概念 RIMARY KEY:设置主键 unique:唯一约束 CREATE TABLE IF NOT EXISTS manager ( id INTEGER PRIMARY KEY AUTOINCREMENT ,title text unique,field_department text,field_email text,field_image text, field_telephone text ) ; 一、主键 惟一地标识一行(一张表中只能有一个主键) 主键应当是对用户没有意义的(常用于索引) 永远不要更新主键,否则违反对用户没有意义原则 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等 在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录 语法: create table 表名称 (列名称1 数据类型 primary key, 列名称2 数据 类型,列名称3 数据类型, …); 二、唯一约束 用来保证一个列(或一组列)中数据唯一,类似于主键,但跟主键有区别 表可包含多个唯一约束,但只允许一个主键 唯一约束列可修改或更新 创建表时,通过unique来设置 语法: create table 表名 (列名称1 数据类型 unique,列名称2 数据类型 ,…。); 来源: CSDN 作者: Mr_WoLong 链接: https:/