Day2-Mybatis之sql复习
**
Day2-Mybatis之sql复习
**
一、 Day2-Mybatis之sql复习
- 函数
- Sql操作
- 多表关系
- 多表查询
(一) Mysql安装与卸载
- 安装MySQL时候有两个程序目录,一个是数据目录,另一个是程序目录,如若卸载需要同时删除两个目录
- My.ini文件也需要更改
安装若报上图错则:
按“Finish”后有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装mysql的服务器上,解决的办法,先保证以前安装的mysql服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将mysql安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的 data文件夹删除,备份的data文件夹移回来,再重启mysql服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。Mysql图形化界面推荐
- Navicat或者小海豚sqlyog
- 使用步骤:1) 解压
- 注册
- 设置关键字与函数大小写
(二) sql的查询-排序和聚合函数
- 升降序ASC和DESC用法
- 基于表内元素的条件查询:
- 查询价格大于200商品的总条数
- 查询分类为’c001’的所有商品的总和
- 查询分类为’c002’所有商品的平均价格
- 查询商品的最大价格和最小价格
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分页
- 什么是分页?
数据库分页也是在数据库里写查询语句,不同的是查询的都是指定条数到指定条数的数据,不是一次性把数据全查出来 - 如何分页?
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复习相关推荐
- MyBatis动态SQL,写SQL更爽
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...
- MyBatis动态SQL之 set 和 trim标记的使用示例
2019独角兽企业重金招聘Python工程师标准>>> 和之前的where一样,set和trim也是智能标记 在之前的user.xml中添加 <update id=" ...
- MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:cnblogs.com/homejim/p/9909657. ...
- 9.mybatis动态SQL标签的用法
mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦 ...
- 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL:
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 阿进的写字台 来源 | cnblogs.com ...
- 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 整理 ...
- sql注入及mybatis防止sql注入
一.Sql 注入漏洞详解 Sql 注入产生原因及威胁: 当我们访问动态网页时, Web 服务器会向数据访问层发起 Sql 查询请求,如果权限验证通过就会执行 Sql 语句.这种网站内部直接发送的Sql ...
- MyBatis——动态SQL语句——if标签和where标签复合使用
功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...
- Mybatis 动态sql语句(if标签和where标签)
功能:根据性别和名字查询用户 查询sql语句: SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND us ...
- mybatis注解动态sql_超全MyBatis动态SQL详解
MyBatis 令人喜欢的一大特性就是动态 SQL.在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的.MyBatis 动态 SQL 的出现, 解决了这个麻烦. MyBa ...
最新文章
- Gameplay 框架
- SpringBoot连接MQTT服务器时因ClintID重复导致频繁掉线重连
- OC_KVC与KVO简单介绍
- Python异常处理和进程线程
- clover java,clover-clover软件 v3.4.3 官方版
- 计算几何——交点、面积的计算
- linux重启tomcat进程,Linux系统重启tomcat服务的方法详解
- unity3d:路径点移动,使用dotween(模拟蝴蝶飞舞)
- 最适合管理的计算机语言,PLC 编程语言的优劣,哪种语言更适合编程
- 双目测距相似三角形原理
- html闹钟设置,闹钟设置页.html
- Python import无法导入包问题
- 纪念日或悼念人网页变灰仅需一行代码
- 易语言让我逆天改命--李长茂(紫川秀)————【Badboy】
- python+opencv代码给证件照换底色(别再用PS啦)(转载)
- 批量识别PDF/OFD/PNG/JPG电子发票到EXCEL
- 学堂在线-清华大学-操作系统实验Lab1【练习5-6】
- 更改高通平台开机logo和开机动画以及fastboot界面显示
- Jungle Roads丛林道路(最小生成树PrimKruskal算法)
- dy是怎么算收益的?武汉新时标文化传媒
热门文章
- 电脑无法识别u盘是怎么回事?数据能恢复吗
- 安卓P 刘海屏的适配
- 物联网/车用电子需求扩大,半导体硅晶圆供不应求
- 从键盘输入一批字符(以@结束),按要求加密并输出。加密规则为:1.所有字母均转化为小写;2.若是a到y,则转化为下一个字母;3.若是z,则转化为a;4.其他字符保持不变
- 通过封装和数字万用表判断贴片二极管、稳压管、LED、正负级性
- JavaSwing+mysql的图书管理系统设计实现
- GTA5内置html菜单源码,GTA5免费内置菜单辅助
- 局域网内QQ代理设置
- 在cdh平台上创建新用户
- 基于晶体结构算法的函数寻优算法