主键约束

主键和唯一索引的区别

不打扰是莪最后的温柔 提交于 2020-01-07 08:26:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 主键索引: 数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。 在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。 该索引要求主键中的每个值都唯一, 字段里面的值不能为空 。当在查询中使用主键索引时,它还允许对数据的快速访问。 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 唯一性索引列允许空值,而主键列不允许为空值。 主键列在创建时,已经默认为空值 + 唯一索引了。 主键可以被其他表引用为外键,而唯一索引不能。 一个表最多只能创建一个主键,但可以创建多个唯一索引。 主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。 在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。 -- 创建一张仅包含主键和唯一索引的表 CREATE TABLE test (PrimaryKey VARCHAR2(20), UniqueKey VARCHAR2(20) ); -- 分别创建主键和唯一索引,语法不同 ALTER TABLE test ADD CONSTRAINT test_PrimaryKey PRIMARY KEY (PrimaryKey); CREATE

Mysql中的锁

半腔热情 提交于 2020-01-06 18:25:00
1. 2 MySQL InnoDB 锁的基本类型 https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html 官网把锁分成了 8 类。所以我们把前面的两个行级别的锁(Shared and Exclusive Locks),和两个表级别的锁(Intention Locks)称为锁的基本模式。 后面三个 Record Locks、Gap Locks、Next-Key Locks,我们把它们叫做锁的算法, 也就是分别在什么情况下锁定什么范围。 2.1 锁的粒度 我们讲到 InnoDB 里面既有行级别的锁,又有表级别的锁,我们先来分析一下这两 种锁定粒度的一些差异。 表锁,顾名思义,是锁住一张表;行锁就是锁住表里面的一行数据。锁定粒度,表 锁肯定是大于行锁的。 那么加锁效率,表锁应该是大于行锁还是小于行锁呢?大于。为什么?表锁只需要 直接锁住这张表就行了,而行锁,还需要在表里面去检索这一行数据,所以表锁的加锁 效率更高。 第二个冲突的概率?表锁的冲突概率比行锁大,还是小? 大于,因为当我们锁住一张表的时候,其他任何一个事务都不能操作这张表。但是 我们锁住了表里面的一行数据的时候,其他的事务还可以来操作表里面的其他没有被锁 定的行,所以表锁的冲突概率更大。 表锁的冲突概率更大,所以并发性能更低,这里并发性能就是小于。 nnoDB

MySQL灵魂五十问

给你一囗甜甜゛ 提交于 2020-01-06 17:14:36
1、MySQL 中有哪几种锁? 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 2、MySQL 中有哪些不同的表格? 共有 5 种类型的表格: MyISAM Heap Merge INNODB ISAM 3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别 MyISAM: 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表加锁; 存储表的总行数; 一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件; 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引 基本一致,但是辅索引不用保证唯一性。 InnoDb: 支持 ACID 的事务,支持事务的四种隔离级别; 支持行级锁及外键约束:因此可以支持写并发; 不存储总行数: 一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制, 一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制; 主键索引采用聚集索引(索引的数据域存储数据文件本身)

Mysql中的锁

柔情痞子 提交于 2020-01-05 23:51:28
1. 2 MySQL InnoDB 锁的基本类型 https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html 官网把锁分成了 8 类。所以我们把前面的两个行级别的锁(Shared and Exclusive Locks),和两个表级别的锁(Intention Locks)称为锁的基本模式。 后面三个 Record Locks、Gap Locks、Next-Key Locks,我们把它们叫做锁的算法, 也就是分别在什么情况下锁定什么范围。 2.1 锁的粒度 我们讲到 InnoDB 里面既有行级别的锁,又有表级别的锁,我们先来分析一下这两 种锁定粒度的一些差异。 表锁,顾名思义,是锁住一张表;行锁就是锁住表里面的一行数据。锁定粒度,表 锁肯定是大于行锁的。 那么加锁效率,表锁应该是大于行锁还是小于行锁呢?大于。为什么?表锁只需要 直接锁住这张表就行了,而行锁,还需要在表里面去检索这一行数据,所以表锁的加锁 效率更高。 第二个冲突的概率?表锁的冲突概率比行锁大,还是小? 大于,因为当我们锁住一张表的时候,其他任何一个事务都不能操作这张表。但是 我们锁住了表里面的一行数据的时候,其他的事务还可以来操作表里面的其他没有被锁 定的行,所以表锁的冲突概率更大。 表锁的冲突概率更大,所以并发性能更低,这里并发性能就是小于。 nnoDB

【Hibernate框架】关联映射(一对一关联映射)

╄→гoц情女王★ 提交于 2020-01-02 03:50:04
一、整理思路: 之前,小编总结过Mybatis的关联映射,接下来,再来总结一下 hibernate 的相关的关联映射,直接上图: 这张图,就是小编整理总结整个Hibernate的关联映射的一个大致思路。 二、名词解释“ 1、单向关联:很简单,就是一个对象依赖于另一个对象。 2、双向关联:两个对象互相依赖。 三、一对一(one-to-one)关联映射: 所谓的一对一,大白话理解就是一个物件拥有的某种附属物件能而且只能拥有一件。举个例子就是作为学生,一个学生只能拥有一个有效的学生证,一个堂堂正正的中国公民也只能拥有一张有效的身份证。这就是一对一。接下来,我们就利用在职学生为例,说一下一对一映射。 在Hibernate中有两种方式能实现一对一映射,分别是: 1、主键关联; 2、唯一外键关联。 四、逐一介绍: 4.1、一对一单向关联映射 4.1.1、一对一单向关联映射——主键关联 核心:一个对象依赖于另一个对象。举例:根据学生,找到对应的有效学生证。 Po对象设计: StudentCard. Java : [java] view plain copy print ? public class StudentCard{ private int id; private String cardNo; //getter\setter方法 } Student.java: [java] view

mysql字段约束-索引-外键

ε祈祈猫儿з 提交于 2020-01-01 22:13:04
字符修饰符 1)null于not null 说明与使用 NULL 是空值的意思,就是这个字段没有值 先创建一个数据库,并进入 mysql > create database w1 mysql > use w1 ; 这里用例子举例,什么时用null和 not null 1.首先是not null的使用 可以看到,两个字段我类型后面,我加了, not null 关键词,这就是使用 mysql > create table name ( id int ( 10 ) not null , stname char ( 10 ) not null ) ; Query OK , 0 rows affected ( 0.34 sec ) 然后查看一下表结构,可以看到第三列NULL,两个字段都是NO,表示两个字段都不允许为 NULL 值的意思 mysql > desc name ; + --------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | + --------+----------+------+-----+---------+-------+ | id | int ( 10 ) | NO | | NULL | | | stname | char ( 10

数据库(MySQL)表基本操作

眉间皱痕 提交于 2020-01-01 05:55:44
数据库表基本操作 思前想后,最终还是把博客的名字改成了数据库表基本操作,以前叫SQL语句大全,感觉用“大全”这个名词太大了,而文章中介绍的内容有限而且也不深。如果您在阅读的过程中发现有不完善的地方,欢迎补充说明。 创建数据库    一提笔就讲创建数据库,感觉好像是从半道上开始的。创建数据库前总得安装数据库吧,不管是SQL Server、mysql、Oracle。但是如果这样写下去,不知道这篇博客还能不能完成,那就默认是安装好数据库了吧,本片博客如下都是使用mysql数据库,首先是登入数据库操作(mysql -u root -p)。 查看当前所存在的数据库: show databases; 查询结果中的mysql数据库是必须的,用来描述用户的访问权限;information_schema数据库提供了访问数据库元数据的方式,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等;performance_schema用于收集数据库服务器性能参数。 创建新的数据库: create database test_db; test_db为要创建的数据库名称,该名称不能与现有的数据库重名。 查看创建好的数据库定义:show create database test_db; 删除数据库: drop database test_db; test

mysql数据库(2)

孤者浪人 提交于 2019-12-31 14:39:18
命令行连接 在工作中主要使用命令操作方式,要求熟练编写 打开终端,运行命令 mysql -uroot -p 回车后输入密码,当前设置的密码为mysql 退出登录 quit 和 exit 或 ctrl+d 登录成功后,输入如下命令查看效果 查看版本:select version(); 显示当前时间:select now(); 修改输入提示符 prompt python> \D 完整日期 \U 使用用户 数据库 查看所有数据库 show databases; 使用数据库 use 数据库名; 查看当前使用的数据库 select database(); 创建数据库 create database 数据库名 charset=utf8; 例: create database python charset=utf8; 删除数据库 drop database 数据库名; 例: drop database python; 数据表 查看当前数据库中所有表 show tables; 查看表结构 desc 表名; 创建表 auto_increment表示自动增长 CREATE TABLE table_name( column1 datatype contrai, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY

MySQL学习笔记(二) 白银

≯℡__Kan透↙ 提交于 2019-12-29 15:16:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 约束:CONSTRAINTS 数据完整性 ( Data Integrity )是指 数据的精确性 ( Accuracy )和 可靠性 ( Reliability )。它是应 防止 数据库中存在 不符合语义 规定的数据和防止因错误信息的输入输出造成 无效 操作或 错误 信息而提出的。 数据的完整性要从以下四个方面考虑: 实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录 域完整性(Domain Integrity):例如:年龄范围0-120,性别范围“男/女” 引用完整性(Referential Integrity):例如:员工所在部门,在部门表中要能找到这个部门 用户自定义完整性(User-defined Integrity):例如:用户名唯一、密码不能为空等,本部门经理的工资不得高于本部门职工的平均工资的5倍。 根据约束的特点,分为几种: 键约束:主键约束、外键约束、唯一键约束 Not NULL约束:非空约束 Check约束:检查约束 Default约束:缺省约束 主键约束PRIMARY KEY 主键:Primary key,简称PK,数据库主键作用保证实体的完整性,可以是一个列或多列的组合。 主键约束相当于 唯一约束 + 非空约束 的组合

SQL Server数据库原理及部署

╄→尐↘猪︶ㄣ 提交于 2019-12-27 18:08:43
一、使用数据库的必要性 使用数据库可以高效且条理分明地存储数据,使工作人员能够更加迅速、方便地管理数据。数据库具有以下特点: 可以结构化的存储大量的数据信息,方便用户进行有效的检索和访问; 可以有效地保持数据信息的一致性、完整性、降低数据冗余; 可以满足应用的共享和安全方面的要求; 常见的数据库有:SQL Server、MySQL、Oracle等,SQL Server是运行在Windows操作环境中,拥有相对比较友好的图形化界面。 二、数据库的基本概念 1、数据 描述事物的符号记录称为数据,数据不仅仅包括数字、文字、图形、图像、声音、档案记录等都是数据。在数据库中,数据是以“记录”形式按统一的格式进行存储的,而不是杂乱无章的。 2、数据库和数据库表 不同的记录组织在一起,就形成了数据库的“表”。也可以说,表是用来存储具体数据的。简单地说,数据库就是表的集合,它是以一定的组织方式存储的相互有关的数据集合。通常,数据库并不是简单的存储这些数据的,还要表示他们之间的关系,因此,关系的描述也是数据库的一部分。 3、数据库管理系统和数据库系统 数据库管理系统(Database Management System,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。DBMS主要包括以下功能: 数据库的建立和维护功能; 数据定义功能; 数据操纵功能; 数据库的运行管理功能; 通信功能;