#第二阶段JavaWeb# 第二天MySQL进阶DQL、主外键、三范式 #学习笔记#

1、主键/外键

  • 表与表之间,可以建立关系,称为主外键

  • 主键:

    概念:是唯一标识的一条记录,不能有重复的,不允许为空,用来保证数据完整性
    
      1、int类型,自增
    2、varchar类型,UUID
    3、自定义(当前时间+时间戳+机器码+int自增序列);使用于分布式系统
    
  • 外键:

    概念:是另一个表的主键,外键可以重复,可以是空值。涉及外键一定至少两张以上表。
    
    --外键的使用需要满足下列的条件:
    
    1. 两张表必须都是InnoDB表,并且它们没有临时表。
    -- 注:InnoDB是数据库的引擎。MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外键。
    
    2. 建立外键关系的对应列必须具有相似的InnoDB内部数据类型。
    
    3. 建立外键关系的对应列必须建立了索引。
    
    4. 假如显式的给出了CONSTRAINT symbol,那symbol在数据库中必须是唯一的。假如没有显式的给出,InnoDB会自动的创建。
    

2、 一对一,一对多,多对多

  • 一对一

    -- 一个人 对应 一个身份证
     人:姓名,身份证号码(主键唯一)
     
     身份证:身份证号码(主键唯一,对应人的主键),出生地,出生日期
    
  • 一对多

    -- 一个班有多个学生,一个学生只能够属于某个班级
    
    学生:学号(主键唯一),学生姓名,年龄,班号(多个,外键,对应班级的班号)
    
     班级:班号(主键唯一),班级名称
    
  • 多对多

    -- 一个老师可以教多个班级,一个班级可以有多个老师
    老师:教师编号(主键唯一),教师名
    
    班级:班号(主键唯一),班级名称
    
    关系表:关系编号(唯一),教师编号(外键,与教师编号 一对多),班号(外键,与班号 一对多)
    

3、数据库三范式(设计表的原则) NF:normal form

   说明:严格意义上有5NF:1NF,2NF,3NF,4NF,5NF;BCNF;

  • 第一范式(1NF)
定义:符合1NF的关系中,每一个属性都不可再分。1NF是所有关系数据库的最基本要求,如SQL Server,Oracle,MySQL中。

缺点:只满足第一范式会出现数据冗余过大,插入异常,删除异常,修改异常;
	冗余:相同数据重复出现
	插入问题: 3月份新开一个系,但是没有学生和班级; 如何插入数据?
    删除问题: 某个班级不存在了,学生和系信息怎么办?
    修改问题: 如果李四转到英语系,涉及到多条数据更改

  • 第二范式(2NF)
定义:主键依赖,该表的所有其他字段,必须与主键相关。
如:生产一批香蕉,记录香蕉的时候,需要有香蕉的【编号】,然后【颜色】、【成熟度】于编号有关。
  • 第三范式(3NF)
定义:主键以为的字段,不能有互相依赖的关系。
如:香蕉进行【编号】、【颜色】、【香味】、【香味得分】、【香味评级】这类列名,需要另开一张专门的香味表格

4、DQL

  • 语法:SELECT列名FROM表名【WHERE–>GROUP BY–>HAVING–>ORDER BY–>LIMIT】

1、基础查询

select * from 表名	-- 查看表中所有记录
select 字段1,字段2 from 表名	-- 查看表某些字段
select distinct 字段 from 表名	-- 字段去重查询,非分组

-- 给字段取别名
select 字段1 别名1,字段2 别名2 from 表名	-- 适合在数据库中使用
select 字段1 as 别名1,字段2 as 别名2 from 表名 -- 使用在代码中使用

2、条件查询

比较运算符
	== (‘<>’也可以) > <  >=  <=
	between A and B;	-- 在A和B之间的值
	in(1,2,3);	-- 在这些括号中的值
	is null;	-- 是否空
	is not null	-- 非空

关系运算符
	and or not;	-- 与或非

算数运算符(判断时,可用)
+ - * / %;	
ifnull(x,0)	-- 如果x是null,用0替换;
	

3、模糊查询

-- 通配符
_ (下划线):代表一个字符
%:代表任意一个或多个字符

-- 使用例子:
select * from 字段名 where 字段名 like '_i_';	-- 某个字段第二个字符为i

4、排序

order by 字段 asc/desc -- 自增asc,自减desc
order by 字段1 asc,字段2 desc	-- 对两个字段进行不同的排序

5、聚合函数

count();	--统计不为null的行数
max();	-- 求字段的最大值
min();	-- 求字段的最小值
sum();	-- 求字段和
avg();	-- 求字段的平均值

	# 当前时间 curdate();
	# 当前时间 curTime();
	# 当前日期和时间 NOW();

6、分组查询

group by 字段;	-- 根据某个字段来分组

7、分页查询

limit 记录起始位置,记录条数;	-- 查看多少条记录

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博私信或留言,博看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值