主键约束

python后端面试第三部分:数据储存与缓存相关--长期维护

感情迁移 提交于 2020-01-22 15:34:57
################## 数据储存与缓存相关 ####################### mysql数据库, redis数据库, 9. MySQL的索引一般是怎么实现的? B-Tree(一般是B+Tree)和Hash,然后再简单介绍一下。 存储 存储可能包含rdbms,nosql以及缓存等,我以MySQL,redis举例。 mysql相关 mysql 是流行的RDBMS 关系型数据库 1.谈谈mysql字符集和排序规则? 2.var char与char的区别是什么?大小限制?utf8字符集下varchar最多能存多少个字符 char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10, 除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。 尽管如此,char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。 再者,char的存储方式是,对英文字符

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:/

SQL语言之增删改_约束_序列

梦想的初衷 提交于 2020-01-16 18:36:47
文章目录 SQL语言之增删改、约束、序列 SQL增删改--对表或字段操作 约束 非空约束 默认值约束 唯一约束 主键约束 主键约束和唯一约束的区别 外键约束 Check约束 序列 SQL语句增删改--对表中的数据操作 INSERT语句 UPDATE语句 DELETE语句 SQL语言之增删改、约束、序列 SQL增删改–对表或字段操作 删除表 ​ drop table 表名 ; 添加字段 ​ alter table 表名 add 字段名 类型; 修改表中字段类型 ​ alter table 表名 modify 字段名 新类型; 修改表中字段名 ​ alter table 表名 rename column 原字段名 to 新名; 删除字段 ​ alter table 表名 drop column 字段名; 实例代码如下: -- 1.修改表名 alter table student rename to t_student; -- 2.删除学生表 drop table t_student; -- 3.添加字段 alter table t_student add sweigtht number(5,2); -- 4.修改表中的字段类型 alter table t_student modify sweigtht varchar2(5); -- 5.修改表中的字段名 alter table t

SQL Server中约束的介绍

孤人 提交于 2020-01-15 19:45:49
摘要 对于SQL Server中的约束,想必大家并不是很陌生。但是约束中真正的内涵是什么,并不是很多人都很清楚的。本文以详细的文字来介绍了什么是约束,以及如何在数据库编程中应用和使用这些约束,来达到更好的编程效果。 (本文部分内容参考了SQL Server联机手册) 内容 数据完整性分类 实体完整性 域完整性 引用完整性 用户定义完整性 PRIMARY KEY 约束 DEFAULT 约束 CHECK 约束 UNIQUE 约束 FOREIGN KEY 约束 正文 在数据库管理系统中,保证数据库中的数据完整性是非常重要的。所谓数据完整性,就是指存储在数据库中数据的一致性和正确性。约束定义关于列中允许值的规则,是强制完整性的标准机制。使用约束优先于使用触发器、规则和默认值。查询优化器也使用约束定义生成高性能的查询执行计划。 SQL Server联机丛书中,将数据完整性解释如下:“ 存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。 ”强制数据完整性可确保数据库中的数据质量。 例如,如果输入了 employee_id 值为 123 的职员,那么该数据库不应允许其他职员使用同一 ID 值。如果计划将 employee_rating 列的值范围设定为从 1 到 5,则数据库不应接受 6。如果表有一 dept_id 列

《SQL必知必会》| 第1课学习笔记

隐身守侯 提交于 2020-01-15 01:34:25
《SQL必知必会》 介绍需要了解的 SQL(Structured Query Language——结构化查询语言) 知识,从简单的 数据检索 入手,逐步过渡到一些较为复杂的内容,如 联结 、 子查询 、 存储过程 、 游标 、 触发器 以及 表约束 等。 第1课 了解SQL 介绍什么是 SQL ,它为什么很有用。 1.1 数据库基础 1.1.1 数据库 数据库 是一个以某种 有组织 的方式存储的数据集合(通常是一个文件或一组文件)。 最简单的办法是将数据库想象为一个文件柜。这个文件柜是一个存放数据的物理位置,不管数据是什么,也不管数据是如何组织的。 数据库软件应成为 数据库管理系统DBMS 。 数据库 是通过 DBMS 创建和操纵的容器。 1.1.2 表 文件称为表。 表 是一 结构化 的文件,可用来存储 某种特定类型 的数据。 表可以保存顾客清单、产品目录、或者其他信息清单。 数据库中的每个表都有一个名字来标识自己。这个名字是 唯一的 ,即数据库中没有其他表具有相同的名字。 表具有一些特性, 这些特性定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。 描述表的这组信息就是所谓的 模式schema ,模式可以用来描述数据库中特定的表,也可以用来描述整个数据库(和其中表的关系)。 模式 :关于数据库和表的布局及特性的信息。 1.1.3

hibernate 注解 联合主键映射

社会主义新天地 提交于 2020-01-12 06:31:25
联合主键用Hibernate注解映射方式主要有三种: 第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将 该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注 解为@Id 第二、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,最后 在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@EmbeddedId 第三、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并要重写equals和hashcode. 最后在主类中(该类包含联合主键类中的字段)将联合主键字段都注解为@Id,并在该类上方将上这样的注解:@IdClass(联合主键类.class) @Column —— 注解声明了属性到列的映射。该注解有如下的属性 name 可选,列名(默认值是属性名) unique 可选,是否在该列上设置唯一约束(默认值false) nullable 可选,是否设置该列的值可以为空(默认值false) insertable 可选

从零开始学java(9)

主宰稳场 提交于 2020-01-11 11:48:10
day 9 今天继续数据库。。 12. 分组查询的详解 select stuName , SUM ( mark ) , AVG ( mark ) , COUNT ( * ) from student where mark is not null -- 根据什么条件查询 group by stuName -- 根据什么字段进行统计 having COUNT ( * ) = 2 -- 分组之后的结果进行筛选 order by SUM ( mark ) desc ; -- 对最终的结果进行排序 1.根据条件 执行查询 — where 2.对根据指定的条件查询出来的结果进行聚合函数各种操作, sum() count() avg() max() min() 3.聚合之前 设置分组 进行各种聚合的条件, 根据分组的条件进行聚合。 注意:不设置分组默认统计的是整个表格的数据。 加了分组,默认根据分组条件进行统计 – group by 4.对于分组之后的结果再一次进行筛选 – having 写聚合函数得到的结果进行再一次过滤。 5.对最终的结果进行 排序 – order by 注意事项 : 使用了聚合函数,就不可以查询其他的普通字段,默认只会查询出第一条数据。 但是可以查询 group by 之后的字段。 13.数据库的单表操作 DML操作:插入,删除,修改。 DQL操作:查询。 DDL操作:对库

SQL的主键和外键约束

徘徊边缘 提交于 2020-01-11 05:42:47
SQL的主键和外键约束 SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值。 (1)插入非空值时,如果主键表中没有这个值,则不能插入。 (2)更新时,不能改为主键表中没有的值。 (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。 (4)更新主键记录时,同样有级联更新和拒绝执行的选择。 简而言之,SQL的主键和外键就是起约束作用。 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。 比如: 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键; 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键; 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以,学号和课程号的属性组是一个主键。 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键;同理,成绩表中的课程号是课程表的外键。 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

MySQL之外键约束(FOREIGN KEY)

自古美人都是妖i 提交于 2020-01-07 12:45:29
定义: MySQL外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。 外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键的值必须等于另一个表中主键的某个值。 外键是表的一个字段,不是本表的主键,但对应另一个表的主键。定义外键后,不允许删除另一个表中具有关联关系的行。 外键的主要作用是保持数据的一致性、完整性。 例如,部门表 tb_dept 的主键是 id,在员工表 tb_emp5 中有一个键 deptId 与这个 id 关联。 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表。 从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表就是从表。 外键约束字段的选取: 定义一个外键时,需要遵守下列规则: 父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。 必须为父表定义主键。 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 在父表的表名后面指定列名或列名的组合。这个列或列的组合必须是父表的主键或候选键。 外键中列的数目必须和父表的主键中列的数目相同。

MySQL 主键与索引的联系与区别分析

自作多情 提交于 2020-01-07 09:19:51
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途: 惟一地标识一行。 作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。 所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。 主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。 2. 一个表中可以有多个唯一性索引,但只能有一个主键。 3. 主键列不允许空值,而唯一性索引列允许空值。 4. 索引可以提高查询的速度。 其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索的速度。