[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='玩具';

ページングクエリ(制限(開始添え字、各ページに表示されるデータの量))

# 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