主键约束

数据库入门

≯℡__Kan透↙ 提交于 2019-12-06 09:45:20
知识点 △用数据库的原因 1文件操作的复杂度 2同步 3并发处理 4安全 △数据库系统(DBS) 数据库(DB) + 数据库管理系统 (DBS)+ 数据库应用程序 + 数据库管理员 (BDA)+ 最终用户 △数据库管理系统-DBM 网络应用服务端 我们要使用服务端的数据 - 需要有一个客户端 客户端可以自己写 : 未来写代码的时候 也可以用别人写好的 : 第三方的工具 数据库管理软件的公司出版的官方客户端 数据库管理系统本质上也是管理一堆文件 只不过人家的管理方式比我们更高效 更安全 △数据库管理员-DBA 搭建数据库服务环境 用户的创建 权限的管理 性能\语句的优化 数据库的二次开发 : 让数据库具有公司的特质 △软件 mysql : 小公司 甲骨文 oracle : 事业单位 金融企业 微软 sql server sqllite △数据库的分类 关系型数据库 mysql oracle sqlserver sqllite 非关系型数据库 redis mongodb memcache hbase 关系型数据库 优点: 1、易于维护:都是使用表结构,格式一致 2、使用方便:SQL语言通用,可用于复杂查询 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询 缺点: 1、读写性能比较差,尤其是海量数据的高效率读写 2、固定的表结构,灵活度稍欠 3、高并发读写需求

mysql的约束、索引、范式

点点圈 提交于 2019-12-06 08:38:08
约束 表或列的primary key,unique,not null等修饰符常常被称作约束(constraint) 主要作用:是数据库用来提高数据质量和保证数据完整性的一套机制,是表定义(DDL语句)的一部分 约束主要包括: 非空约束 (not null) 唯一性约束 (unique) 主键约束 (primary key) 外键约束 (foreign key) 约束的定义方式 创建表时定义 列级别定义 表级别定义 修改表时进行追加定义 约束的查看 使用desc查看列属性查看约束 使用show create 命令查看 使用show index命令查看(无法查看not null 约束) 非空约束(not null) 用于确保其所在列的值不能为空值null,允许有多个列设置非空约束 只有列级定义和追加定义 列级定义 追加定义 非空约束的删除(将其改回为null) 或 惟一约束(unique) 列字段中不允许有重复值,但是可以有空值,允许有多个列设置惟一约束 也被称为惟一索引(其他数据库管理系统略有不同) 列级定义 表级定义 追加定义 删除惟一约束 主键约束(primary key) 主键列中不允许有重复值,也不可以有空值 一个表中只能有一个主键约束,但一个主键约束可以包含多个列 定义主键时会同时为主键创建唯一性索引 列级定义 表级定义 追加定义 删除主键约束 外键约束(foreign

SQL中的复杂语句

别等时光非礼了梦想. 提交于 2019-12-06 08:08:55
目录 1. DQL:查询语句 1. 排序查询 2. 聚合函数 3. 分组查询 4. 分页查询 2. 约束 3. 多表之间的关系 4. 范式 5. 数据库的备份和还原 DQL:查询语句 1. 排序查询 语法:order by 子句 order by 排序字段1 排序方式1 , 排序字段2 排序方式2... 排序方式: ASC:升序,默认的。 DESC:降序。 注意:如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 2. 聚合函数:将一列数据作为一个整体,进行纵向的计算。 1. count:计算个数 ####1. 一般选择非空的列:主键 ####2. count(*) 2. max:计算最大值 3. min:计算最小值 4. sum:计算和 5. avg:计算平均值 注意:聚合函数的计算,排除null值。 解决方案: 选择不包含非空的列进行计算 IFNULL函数 3. 分组查询: 语法:group by 分组字段; 注意: 分组之后查询的字段:分组字段、聚合函数 where 和 having 的区别? where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来 where 后不可以跟聚合函数,having可以进行聚合函数的判断。 -- 按照性别分组。分别查询男、女同学的平均分 SELECT sex ,

day 55小结

こ雲淡風輕ζ 提交于 2019-12-06 07:12:27
目录 聚合查询 聚合函数 分组查询 F与Q查询 F能够获取表中字段所对应的值 Q查询 Q对象高级用法 orm 字段及参数 自定义字段 orm中的事务操作 1.第一范式: 2.第二范式: 3.第三范式 django中创建事务 聚合查询 ​ 级联删除 级联更新 (外键字段带来的约束) ​ 操作外键字段管理数据时 ​ 书和出版社是一对多的关系 外键字段在书那 ​ 这个时候把出版社删了 所对应的书字段也会自动给删除 ​ 这个时候如果你把出版社主键改变了 那么书籍表中对应的出版社主键值也会改变 聚合函数 ​ 聚合函数必须用在分组之后 ​ 没有分组其实默认就是一组 关键字 aggregate 还需要导入模块 from django.db.models import Max,Min,Sum,Avg,Count res = models.Book.objects.aggregate(sm = Sum('price')) res = models.Book.objects.aggregate(Max('price'),Min('prince'),Sum('price'),Count('price'),Avg('price')) 分组查询 ​ mysql 中用 group by ​ 什么时候用分组 ​ 1.统计每一个部门的平均薪资 ​ 2.统计每一个部门的男女比例 ​ 1.关键字 annotate ​

主键--外键

浪子不回头ぞ 提交于 2019-12-06 04:46:28
主键自增长: 主键只能够设置在数据类型为整型的列上。可以子集设置主键值,也可以利用主键自增长的特性 实现主键数据的自动更新。自增长只能作用于当前的数据库,但是在集群的状态下主键自增长可能 会失效。 使用uuid来代替主键自增长,这样可以避免在集群环境的主键重复。 使用代理主键来代替自然主键,防止业务变更时导致系统崩溃。 非空约束: 将某些列的值设置为非空(not null),虽然约束为非空,但是可以重复。 唯一约束: 将某些列的值设置为唯一(unique),该约束为唯一约束,但是并没有规定值不可以为空。 概念模型: 实体之间的关系: 一对一:老公和夫妻之间的关系。 一对多:老师可以有多个学生。 多对多:学生和老师之间的关系,老师可有多个学生,学生也可以有多个老师。 外键约束: 外键必须是另一张表的主键。(外键必须引用主键) 外键是可用重复的,但必须是另一张表的主键 外键也是可以为空的 一张表中可以含有多个外键,可引用多个表的主键。 创建具有外键的表时,包含该外键需要引用的主表需要先存在,并且在删除表时,要先删除从表 才能够删除主表。 外键约束的创建方法: 1 首先可以在创建一张表的时候创建表中外键列,语法为constraint 约束名 foreign key(列名)references 主键表(主键列名)。创建外键列时不必和主键的列同名。 2 可以使用alter table 表明

【SSH进阶之路】Hibernate映射——一对一单向关联映射(五)

时光毁灭记忆、已成空白 提交于 2019-12-06 02:34:03
【SSH进阶之路】Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,采用对象化的思维操作关系型数据库。 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二) ,小编搭建了基本Hibernate的开发环境,并做了一个简单实例,对它的基本原理有了一个理性的认识。 【SSH进阶之路】Hibernate基本映射(三) ,我们介绍了Hibernate的基本映射(即对一个实体进行映射)的相关概念,并给大家实现相关实例,比较简单。 【SSH进阶之路】Hibernate映射——多对一单向关联映射(四) ,我们介绍了多对一的关联映射,并详细了解说了,映射技巧,这篇我们依旧使用此映射技巧,帮助大家更好的理解。 下面开始今天的愉快之旅。 映射原理 两个实体对象之间是一对一的关联映射,即一个对象只能与另外唯一的一个对象相对应。例如:一个人(Person)只有一张身份证(IdCard)。我们看一下这个例子的对象模型,如下图所示: 对象模型 从上图中可以看出: 1、一个人只有一张身份证,唯一的一个身份证号,对象之间是一对一的关系; 2、人(Person)持有身份证(IdCard)的引用,所以,两个对象关系维护由person端决定。 从对象模型映射成关系模型,有两种方式:主键关联和唯一外键关联,我们继续看下面的内容。 分类: 主键关联: 1

关系型数据库基础

喜夏-厌秋 提交于 2019-12-05 23:40:48
主键 如果一个属性或者一组属性能唯一标识一行数据,那么这个属性(组)就是主键; 数据表必须有主键,且只能有一个主键,且主键不能重复; 如果是一个属性作为主键,代表列的完整性约束; 如果是一组属性作为主键,代表表的完整性约束; 原则 1. 有且只有一个 2. 唯一性原则:不能重复 3. 最小化原则:如果一组属性作为主键,从这组属性中删除一个属性,仍然能唯一标识一行数据,那么这组属性就不是主键 外键 外键用于与另一张表关联; 它能唯一确定另一张表的记录,它是另一张表的主键; 外键可有可无,且可以有多个,且外键可以重复; 索引 索引是对表中一个或多个列进行排序的结构; 他可以加快查询速度; 索引又分为唯一索引、主键索引、聚集索引、非聚集索引; 唯一索引不能重复,主键索引就是主键,也不能重复; 非聚集索引可以重复; 非聚集索引是我们最常用的索引; 视图 数据库视图是个虚拟表或者罗技表,并非物理表,他是把一个或者多个表的部分数据进行处理后,生成的一张虚拟表; 它是动态表,当物理表的数据发生变化时,它也会变化; 一个 sql 语句理解视图 CREATE VIEW current_employees AS SELECT NAME, ID, SALARY FROM EMPLOYEES; # current_employees 视图表 # EMPLOYEES 原表 # 原表变,视图表也变

创建数据库与表

人走茶凉 提交于 2019-12-05 16:45:28
设置索引 存为sql,仅结构 先看有没有player删除,反引号是为了与保留字区分 player_name 字符utf8 ,排序规则utf_general_ci,大小写不敏感,敏感的为utf8_bin,采用unique,也可以设置为normal,索引方式可以设置为btree或者hash 引擎为InnoDB 字符集 排序 ROW_FORMAT行格式为Dynamic 常见约束 主键 外键 唯一性 NOT NULL DEFAULT CHECK 设计原则 更少的表,更少的字段,更少的联合主键,多增加主键与外键增强表之间的复用率,可重用 如果正确性>性能,建议使用外键 如果不用外键,有一定的风险,业务层实现,必须同时修改,业务层与数据层有一定的耦合,工作中业务可能经常发生变化 结论 早期用外键,后期用业务,分析28理论, 会有20%的外键造成80%的资源效率 2的部分用业务实现,减少死锁出现概率,提高并发处理能力 来源: https://www.cnblogs.com/autointerface/p/11934247.html

添加列和主键

不羁岁月 提交于 2019-12-05 12:06:10
添加列 alter table table_name add (col1 type,col2 type); ALTER TABLE TABLE_AAA ADD (STOCKMAN NUMBER(18))//添加一列 COMMENT ON COLUMN TABLE_AAA.STOCKMAN IS '管理人员' //给列添加注释 ALTER TABLE TABLE_AAA ADD CONSTRAINT FK_TABLE_AAA_R_TABLE_BBB_S FOREIGN KEY (STOCKMAN) REFERENCES TABLE_BBB (ID)//给列添加外键 alter table Tablename drop column column1 alter table Tablename add(column1 varchar2(20),column2 number(7,2)...) 1、创建表的同时创建主键约束 (1)无命名 create table student ( studentid int primary key not null, studentname varchar(8), age int); (2)有命名 create table students ( studentid int , studentname varchar(8), age int,

SQL的主键和外键约束

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