**

Day2-Mybatis之sql复习

**
一、 Day2-Mybatis之sql复习

  • 函数
  • Sql操作
  • 多表关系
  • 多表查询

(一) Mysql安装与卸载

  • 安装MySQL时候有两个程序目录,一个是数据目录,另一个是程序目录,如若卸载需要同时删除两个目录
  • My.ini文件也需要更改

  • 安装若报上图错则:
    按“Finish”后有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装mysql的服务器上,解决的办法,先保证以前安装的mysql服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将mysql安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的 data文件夹删除,备份的data文件夹移回来,再重启mysql服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。

  • Mysql图形化界面推荐

  1. Navicat或者小海豚sqlyog
  2. 使用步骤:1) 解压
  1. 注册
  2. 设置关键字与函数大小写

(二) sql的查询-排序和聚合函数

  • 升降序ASC和DESC用法

  • 基于表内元素的条件查询:
  1. 查询价格大于200商品的总条数
  2. 查询分类为’c001’的所有商品的总和
  3. 查询分类为’c002’所有商品的平均价格
  4. 查询商品的最大价格和最小价格
select  count(*) from products whrere price >200
select *from products where category_id = 1
select avg(price) from  products where category_id = 2
select (max)price,(min)price from  produce;
  • 什么是聚合函数(aggregate function)?

    聚合函数对一组值执行计算并返回单一的值。
    聚合函数的特点:
    a) 除了 COUNT 以外,聚合函数忽略空值。
    b) 聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。
    c) 所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。
    d) 标量函数:只能对单个的数字或值进行计算。主要包括字符函数、日期/时间函数、数值函数和转换函数这四类。
    常见的聚合函数

  • 五个聚合函数:
    》count:统计指定列不为NULL的记录行数;
    如:统计pname列的行数,如果有NULL值,则不统计
    》sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
    》max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
    》min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
    》avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
    (3)语句执行顺序
    from ->where ->count(*)

  • 案例一
    求个数/记录数/项目数等:count()

select count( ) from Company --包括空值
select count(*) from Company --不包括空值
* 求某一列平均数 :avg()
select avg(score) from Scores ---平均成绩
select avg(salary) from Company --平均工资
  • 注意:**
    若某行的score值为null时,计算平均值时会忽略带有null值得那一行。
    如果想要把null当做0,那么可以使用IsNull函数把null转换成0,语法如下:
    avg(IsNull(score,0)) as ’Average Score‘

(三) sql的查询-分组,分页


  • SQL分页
  1. 什么是分页?
    数据库分页也是在数据库里写查询语句,不同的是查询的都是指定条数到指定条数的数据,不是一次性把数据全查出来
  2. 如何分页?
    SELECT 字段1,字段2… FROM 表名 LIMIT M(起始页),N(分页个数,且后续皆为N)。(M:表示从哪一行的索引(从0开始)开始显示,N表示要显示几行)第1页: N*(1-1) 第2页: N*(2-1) 第page页: N*(page-1 Select * from products limit 0,3;
  • 案例二
    #对数学成绩排序后输出。
    Select math from student order by math desc;
    #对总分排序后输出,然后再按从高到低的顺序输出
    Select chinese +english+math as z from student order by z desc;
    #对姓李的学生成绩排序输出
    Select chinese +english+math as z from student where name like ‘李’ order by z desc;

(四) 多表的关系介绍

  • (1)项目中的多表
    1:在实际的开发中,项目一定是有多张表组成的,这些表之间是有关系2:表与表之间的关系分类:
    (2)什么是一对一?
    A表的一行对应B表的一行,反之也成立,此时,两张表可以合并成一张表
    (3)什么是一对多?
    A表的一行对应B表的一行,反之不成立
    (4)什么是多对多?
    A表的一行对应B表的多行,B的一行对应A表的多行
    一对多的创建流程:
    创建主表(分类表)
    创建从表(商品表)

  • 给主表和从表之间建立外键约束
    alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

    (cid为外键)

  • 多对多查询创建流程:

  • 查询的分类:

  • 交叉连接查询(了解)

  • 内连接查询

  • 隐式内连接,显式内连接***

  • 外连接查询

create table category (cid int primary key ,cname varchar(50)
);
create table products(pid int primary key ,pname varchar(50),price int,flag varchar(2),             #是否上架标记为:1表示上架、0表示下架category_id int,constraint products_fk foreign key (category_id) references category (cid)
);#分类
insert into category(cid,cname) values('1','家电');
insert into category(cid,cname) values('2','服饰');
insert into category(cid,cname) values('3','化妆品');
#商品
insert into products(pid, pname,price,flag,category_id) values('1','联想',5000,'1',1);
insert into products(pid, pname,price,flag,category_id) values('2','海尔',3000,'1',1);
insert into products(pid, pname,price,flag,category_id) values('3','雷神',5000,'1',1);insert into products (pid, pname,price,flag,category_id) values('4','杰克琼斯',800,'1',2);
insert into products (pid, pname,price,flag,category_id) values('5','真维斯',200,'1',2);
insert into products (pid, pname,price,flag,category_id) values('6','花花公子',440,'1',2);insert into products (pid, pname,price,flag,category_id) values('7','劲霸',2000,'1',2);
insert into products (pid, pname,price,flag,category_id) values('8','香奈儿',800,'1',2);
insert into products (pid, pname,price,flag,category_id) values('9','相宜本草',200,'1',2);
  • 多表的查询-交叉连接查询
    a) 什么交叉连接查询
    交叉连接查询是将两张表相乘: A和B —> A * B
    b) 什么是笛卡尔集
    两张表相乘的结果,不论数据是否正确

  • c) 多表查询的本质
    多表查询可以理解成在笛卡尔集的基础上进行条件筛选
    d) 案例:查询每个分类以及该分类的所有商品
    *下方为个人GitHub做的小项目源码地址,求stars
    *github地址:https://github.com/Delusion-ing/

Day2-Mybatis之sql复习相关推荐

  1. MyBatis动态SQL,写SQL更爽

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...

  2. MyBatis动态SQL之 set 和 trim标记的使用示例

    2019独角兽企业重金招聘Python工程师标准>>> 和之前的where一样,set和trim也是智能标记 在之前的user.xml中添加 <update id=" ...

  3. MyBatis动态SQL(认真看看, 以后写SQL就爽多了)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:cnblogs.com/homejim/p/9909657. ...

  4. 9.mybatis动态SQL标签的用法

    mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦 ...

  5. 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL:

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 阿进的写字台 来源 | cnblogs.com ...

  6. 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 整理 ...

  7. sql注入及mybatis防止sql注入

    一.Sql 注入漏洞详解 Sql 注入产生原因及威胁: 当我们访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句.这种网站内部直接发送的Sql ...

  8. MyBatis——动态SQL语句——if标签和where标签复合使用

    功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...

  9. Mybatis 动态sql语句(if标签和where标签)

    功能:根据性别和名字查询用户 查询sql语句: SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND us ...

  10. mybatis注解动态sql_超全MyBatis动态SQL详解

    MyBatis 令人喜欢的一大特性就是动态 SQL.在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的.MyBatis 动态 SQL 的出现, 解决了这个麻烦. MyBa ...

最新文章

  1. Gameplay 框架
  2. SpringBoot连接MQTT服务器时因ClintID重复导致频繁掉线重连
  3. OC_KVC与KVO简单介绍
  4. Python异常处理和进程线程
  5. clover java,clover-clover软件 v3.4.3 官方版
  6. 计算几何——交点、面积的计算
  7. linux重启tomcat进程,Linux系统重启tomcat服务的方法详解
  8. unity3d:路径点移动,使用dotween(模拟蝴蝶飞舞)
  9. 最适合管理的计算机语言,PLC 编程语言的优劣,哪种语言更适合编程
  10. 双目测距相似三角形原理
  11. html闹钟设置,闹钟设置页.html
  12. Python import无法导入包问题
  13. 纪念日或悼念人网页变灰仅需一行代码
  14. 易语言让我逆天改命--李长茂(紫川秀)————【Badboy】
  15. python+opencv代码给证件照换底色(别再用PS啦)(转载)
  16. 批量识别PDF/OFD/PNG/JPG电子发票到EXCEL
  17. 学堂在线-清华大学-操作系统实验Lab1【练习5-6】
  18. 更改高通平台开机logo和开机动画以及fastboot界面显示
  19. Jungle Roads丛林道路(最小生成树PrimKruskal算法)
  20. dy是怎么算收益的?武汉新时标文化传媒

热门文章

  1. 电脑无法识别u盘是怎么回事?数据能恢复吗
  2. 安卓P 刘海屏的适配
  3. 物联网/车用电子需求扩大,半导体硅晶圆供不应求
  4. 从键盘输入一批字符(以@结束),按要求加密并输出。加密规则为:1.所有字母均转化为小写;2.若是a到y,则转化为下一个字母;3.若是z,则转化为a;4.其他字符保持不变
  5. 通过封装和数字万用表判断贴片二极管、稳压管、LED、正负级性
  6. JavaSwing+mysql的图书管理系统设计实现
  7. GTA5内置html菜单源码,GTA5免费内置菜单辅助
  8. 局域网内QQ代理设置
  9. 在cdh平台上创建新用户
  10. 基于晶体结构算法的函数寻优算法