这是阿锃总结的第三节黑马程序员JAVA WEB视频的MYSQL约束部分的笔记。希望可以帮助跟我一样正在学习Java web的同学们。我们一起进步。   b_d

若果有同学也想学习黑马程序员Java web的视频,可以在我的主页找我第一次发布的文章,里面有链接,并且若是有同学想要MYSQL、SQLYOG.......相关的软件可以评论区留言,我会及时回复大家!    b_d

MYSQL第三节笔记:

# 今日内容1. DQL:查询语句的使用1. 排序查询2. 聚合函数3. 分组查询4. 分页查询2. 约束3. 多表之间的关系4. 范式5. 数据库的备份和还原## DQL:查询语句的使用1. 排序查询* 语法:order by 排序字段 排序方式,....;* 排序方式:1. 升序:asc(默认)2. 降序:desc* 注意:如果有多个排序时,则当前面的条件值一样时,才会判断第二条件。2. 聚合函数:将一列数据作为一个整体,进行纵向的计算。1. count:计算个数select count(ifnull(字段名称,0))from表名......;2. max:计算最大值select max(字段)from表名;3. min:计算最小值select min(字段)from表名;4. sum:计算和select sum(字段)from表名;5. avg:计算平均值select avg(字段)from表名;* 聚合函数的计算,排除null。解决方案:1. 选择不包含非空的列2. ifnull(字段,0)3. 分组查询* 语法:group by 分组依据的字段* 注意:1. 分组之后查询的字段:分组依据的字段、聚合函数2. where 和 having 的区别where :1. 在分组之前进行限定,如果不满足条件,则不参与分组。2. 后面不可以加聚合函数。having :1. 在分组之后进行限定,如果不满足条件,则不会被查询出来。2. 后面可以加聚合函数。* 例如:依据性别分组,分别查询男生、女生的平均分select sex,avg(math)from studentgroup bysex;* 例如:依据性别分组,分别查询男生、女生的平均分,分数低于70分的人不参与分组select sex,avg(math)from studentwheremath>70group bysex;* 例如:依据性别分组,分别查询男生、女生的平均分,分数低于70分的人不参与分组,分组之后人数大于2个人      select sex,avg(math)from studentwheremath>70group bysex;havingcount(id)>24. 分页查询* 语法:limit 开始的索引,每页查询的条数。* 公式:开始的索引 = (当前页码 - 1) * 每页显示的条数* 例如:每页显示3条记录第一页: select *fromstudentlimit 0,3;第二页:select *fromstudentlimit 3,3;* 分页查询是一个MYSQL“方言”## 约束* 概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。* 分类:1. 主键约束:primary key2. 非空约束:not null3. 唯一约束:unique4. 外键约束:foreign key* 非空约束:not null 某一列的值不能为null1. 在创建表时添加约束...name varchar(20) not null...2. 在创建表之后,添加非空约束alter table 表名 modify 字段名称 数据类型 not null;* 唯一约束:unique 某一列的值不能重复1. 在创建表时添加约束...id varchar(20) unique...2. 在创建表之后,添加非空约束alter table 表名 modify 字段名称 数据类型 unique;* 注意:1. 唯一约束有null值,但是只能有一个null。2. 删除唯一约束:alter table 表名 drop index 字段名称;* 主键约束:primary key 只有一个!!!1 . 注意:1. 含义:非空且唯一2. 一张表只能有一个字段为主键3. 主键就是表中记录的唯一标识4. 删除主键约束:alter table 表名 drop primary key;5. 联合主键多对多表产生的先建表: primary key(第一张表的主键,第二张表的主键)2. 在创建表时添加主键约束 ...id int primary key,...3. 在创建表之后,添加主键约束alter table 表名 modify 字段名称 数据类型 primary key;4. 自动增长(主要是配合 int 类型的主键)1. 概念:某一列是数值类型的,使用 auto_increment 可以来完成值的自动增长。2. 在创建表时田间主键约束 ,并且自动增长...id int primary key auto_increment,...* 插入时:  insert into 表名 values(null,???)来实现id的自动增长3. 删除自动增长alter table 表名 modify id int;4. 在创建表之后,添加主键约束,并且自动增长alter table 表名 modify 字段名称 数据类型 primary key auto_increment;* 外键约束:foreign key1. 在创建表时添加外键约束...外键列名称 数据类型 ,constraint 外键名称(自定义的名称) foreign key (外键列名称) references 主表名称(主表列名称);...2. 删除外键alter table 表名 drop foreign key 外键名称;3. 在创建表之后,添加外键约束alter table 表名 add constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称);4. 级联操作* 级联更新:alter table 表名 add constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称) on update cascade;* 级联删除:alter table 表名 add constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称) on delete cascade;## 数据库的设计1. 多表之间的关系1. 分类:1. 一对一2. 一对多(多对一)3. 多对多2. 实现关系:1. 一对多(多对一):* 再多的一方建立外键,指向一的一方的主键。2. 多对多* 新建第三张中间表,中间表至少需要两个字段,这两个字段作为第三张表的外键,分别指向前两张表的主键。3. 一对一* 可以在任意一方添加唯一外键指向另一方的主键。2. 数据库设计的范式* 概念:设计数据库时,需要遵循的一些规范。* 分类:1. 第一范式(1NF):* 存在问题:1. 存在非常严重的数据冗余(重复)。2. 数据添加存在问题。3. 数据删除存在问题。2. 第二范式(2NF):* 几个概念:1. 函数依赖:如果通过A属性(属性组)的值,可以确定唯一B属性的值,则称B依赖于A。2. 完全函数依赖:如果A是一个属性组,则B属性值得确定需要依赖于A属性组中所有的属性组。3. 部分函数依赖:如果A是一个属性组,则B属性值的去确定需要依赖于A属性组中某一些值。4. 传递函数依赖:A-->B,B-->C(唯一)5. 码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性或属性组为该表的码* 主属性:码属性组中所有属性* 非主属性:除主属性3. 第三范式(3NF):## 数据库的备份和还原1. 命令行:备份语法:mysqldump -u用户名 -p密码 指定数据库的名称 > 保存的路径mysqldump -uroot -proot db1  > D://a.sql还原语法:1. 登录数据库2. 创建数据库3. 使用数据库4. 执行文件 (source 保存文件的路径)2. 图形化工具

希望学习前端的小伙伴们,可以拿去学习!我们一同进步!

黑马程序员 JAVA WEB 第三节 MYSQL 约束相关推荐

  1. day30 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级 JDBC

    01.反馈回顾 事务: ★ 概述: 逻辑上的一组操作,组成这组操作的各个单元要么同时成功,要么同时失败. 事务是一个最小的执行单元. mysql中的事务控制: 手动事务: 需要手动开启,提交,回滚开启 ...

  2. day29 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级事务-索引-视图-触发器-存储过程

    目录 01.反馈 02.回顾 03.并发访问MySQL-问题概述 并发访问的问题 04.并发访问MySQL-问题演示 05.并发访问MySQL-read-committed解决脏读问题 06.并发访问 ...

  3. 2023年黑马程序员Java学习路线图

    2023年Java学科免费学习资源放送40+套课程,超过600小时的内容! 在过去的一年里,为了帮助更多人线上充电,学会更多技能,黑马程序员举办了 150+ 场免费直播公开课,新增精品视频教程 80+ ...

  4. 黑马程序员Java零基础视频教程_上部(P1-P80)

    黑马程序员Java零基础视频教程_上部(P1-P80) 1. Java入门 1.1 Java学习介绍 1.2 Java人机交互 1.2.1 常用CMD命令 2. Java基础学习 2.1 Java入门 ...

  5. 黑马 程序员——Java基础---流程控制

    黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...

  6. java获取mysql执行计划_好程序员Java学习路线之MySQL的执行计划

    好程序员 Java 学习路线之 MySQL 的执行计划.什么是执行计划? 执行计划通常是开发者优化 SQL 语句的第一步. MySQL 在解析 SQL 语句时,会生成多套执行方案,然后内部会进行一个成 ...

  7. 黑马 程序员——Java基础---IO(下)

    黑马程序员--Java基础---IO(下) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供 ...

  8. 黑马程序员Java教程学习笔记(五)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(五) 日期时间:Date.Sim ...

  9. 黑马程序员Java教程学习笔记(三)

    学习视频:https://www.bilibili.com/video/BV1Cv411372m 如侵权,请私信联系本人删除 文章目录 黑马程序员Java教程学习笔记(三) 面向对象:设计对象.注意事 ...

最新文章

  1. python读取中文-python读取中文txt文本
  2. 075_JSON.parse()
  3. vs2010利用属性表自动配置OpenCV(XP的32位系统,opencv版本是2.4.10)
  4. mysql数据库复制基本原理_MySQL的复制原理以及流程
  5. 批量删除推文_如何搜索(和删除)您的旧推文
  6. 写在S3C2440A平台+winCE5.0+NAND +HIVE注册表的实现
  7. 数组 最大差值_【每日算法Day 97】经典面试题:求两个数组最小差
  8. windows环境:dos 通过ftp连接到vsftpd 显示乱码解决方法
  9. cacti 安装与配置
  10. mysql巡检常用命令_总结Linux下系统巡检常用命令
  11. 获取视图尺寸大小方法
  12. MG3000系列设备IP修改内容
  13. 【Java】俄罗斯方块Java版
  14. 自回归模型 - PixelCNN
  15. 【译】雄迈摄像头爆出Mirai僵尸网络
  16. 编写c语言程序一般要经过几个步骤,开发一个c语言程序要经过哪四个步骤
  17. 微信小程序保存图片至手机相册
  18. 量子信息与量子计算_为什么2020年代属于量子计算
  19. 【CentOS-7.4】Sphinx 安装与简单配置
  20. 5000字干货 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost总结

热门文章

  1. unity模块切换_Unity3D-游戏画面高低品质切换
  2. 最新UI界面漫画小程序源码,带后台支持流量主,全自动更新
  3. 1、orbslam2 安装与运行
  4. IDEA 注释模板这样搞
  5. mybatisplus 集成druid连接池源码分析
  6. Leetcode-跳台阶问题
  7. 工具栏图标背景透明化
  8. java怎么调字体_java里面怎样设置字体大小?
  9. DB2数据库一些操作
  10. oracle数据库面试试题及答案,ORACLE数据库面试题