【MySQL学习篇】--- 查询大套餐

【MySQL学习篇】— 查询大套餐

分组查询(group by)

USE testyao;
CREATE TABLE market(
	id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
	goodName VARCHAR(40) COMMENT '商品名称',
	goodCategroy VARCHAR(40) COMMENT '商品种类'
);

#使用分组查询

# 查看 marker 表中商品的种类
SELECT goodCategroy FROM market GROUP BY goodCategroy;

#查看 商品种类 中是否有 玩具类型 :
#后面条件使用 having 关键字
SELECT goodCategroy FROM market GROUP BY goodCategroy HAVING  goodCategroy='玩具';

分页查询(limit(起始下标,每页显示的数据量))

# market 表中有7条记录,每页显示3条,总共分3页
#获取第一页
SELECT * FROM market LIMIT 0,3;
#获取第二页
SELECT * FROM market LIMIT 3,3;
#获取第三页
SELECT * FROM market LIMIT 6,3;
#起始下标:每页数据量乘以页码减一
SELECT * FROM market LIMIT ((pageNo-1)*pagesize),pagesize;

多表查询

多表查询时,一定要给表取别名

#格式
SELECT * FROM 表1,表2,……,表n WHERE 条件;
#现有一个部门表、一个员工表
#部门表
CREATE TABLE dept(
	id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '部门编号',
	deptName VARCHAR(40) COMMENT '部门名称'
);

#员工表
CREATE TABLE emp(
	id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '员工编号',
	empNmae VARCHAR(40) COMMENT '员工名称',
	salary FLOAT COMMENT '薪水',
	deptId BIGINT(20) COMMENT '部门编号'
);

#找出研发部 和 测试部 所有员工名、薪水、部门名
#1. 先找出研发部、测试部的全部信息
SELECT * FROM dept WHERE dept.`deptName` IN ('研发部','测试部');
#2. 多表查询,判断条件:在第一步找到的 id 和员工表的 id 相等,即找到了对应的员工,至于要输出员工名、薪水明、部门名 在 select 后面写上对应项目即可
SELECT * FROM emp e,(SELECT * FROM dept WHERE dept.`deptName` IN ('研发部','测试部')) temp WHERE e.`deptId`=temp.id;

通过关键字查询

  • 内连接
  • 外连接
    • 左外链接
    • 右外连接

内连接:以两边表为主,只有条件同时存在时,才会有结果

#内连接:表1 inner join 表2 on 条件(多个表之间有关联的)
#查询所有部门所有员工
SELECT * FROM dept d INNER JOIN emp e ON d.id=e.deptId;
#查询研发部所有人
SELECT * FROM dept d INNER JOIN emp e ON d.`id`=e.`deptId` AND d.`deptName`='研发部';

外连接

#左外连接:left join on
#以左边的表为主,若左边满足条件,则输出,右边的不满足条件项为 null
SELECT * FROM book b LEFT JOIN publisher p ON  b.`P_ID`=p.`P_ID`;
#右外链接:right join on 与左外连接同理

联合查询

# union:将两个查询语句结果合并,自动去重
#union all:不能去重

#找出研发部 和 测试部 所有员工名、薪水、部门名
#分别找到两个部门,然后用union连接
SELECT d.deptName,e.empNmae,e.salary FROM dept d,emp e WHERE d.id=e.deptID AND d.deptName ='研发部'
UNION
SELECT d.deptName,e.empNmae,e.salary FROM dept d,emp e WHERE d.id=e.deptID AND d.deptName ='测试部'

模糊查询

#查询 book 表中姓王的人出版的处 '%'代表模糊部分
SELECT * FROM book WHERE B_AUTHER LIKE '王%';

SELECT * FROM book WHERE B_AUTHER LIKE '%二%';

#只要包含 a 都能查到
SELECT * FROM book WHERE B_AUTHER LIKE '%a%'; 

猜你喜欢

转载自blog.csdn.net/DREAM_yao/article/details/108078838
今日推荐