Java mysql特殊形式的查询语句详解
创建新表:
-- 创建学员表 CREATE TABLE IF NOT EXISTS stu( id TINYINT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号', username VARCHAR(20) NOT NULL UNIQUE COMMENT '学员名称', score TINYINT UNSIGNED NOT NULL COMMENT '学员考试分数' )ENGINE=INNODB; INSERT stu(username, score) VALUES('king', 95), ('queen', 75), ('zhangsan', 69), ('lisi', 78), ('wangwu', 87), ('zhaoliu', 88), ('tianqi', 98), ('ceshi', 99), ('tiancai', 50); -- 创建分数级别表 CREATE TABLE IF NOT EXISTS `level`( id TINYINT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号', score TINYINT UNSIGNED COMMENT '分数' )ENGINE=INNODB; INSERT `level`(score) VALUES(90), (80), (70);
1. 子查询
1.1. SELECT 字段名称 FROM 表名 WHERE 字段名称 = (SELECT 字段名称 FROM 表名);
1.2. 内层语句查询的结果可以作为外层语句查询的条件
1.3. 由IN引发的子查询
SELECT * FROM user1 WHERE depId IN (1, 2, 3, 4); SELECT * FROM user1 WHERE depId IN (SELECT id FROM dep);
1.4. 由比较运算符引出子查询
SELECT id, username, score FROM stu WHERE score >= (SELECT score FROM `level` WHERE id = 1);
1.5. 由EXISTS引发的子查询
若EXISTS后的结果为真,则返回查询的结果,否则返回结果为空。
SELECT * FROM stu WHERE EXISTS (SELECT score FROM `level` WHERE id = 1);
1.6. ANY SOME ALL
取ANY|SOME|ALL后的括号中的查询结果的最小值或最大值。
-- ANY SOME ALL SELECT * FROM stu WHERE score >= ANY(SELECT score FROM `level`); SELECT * FROM stu WHERE score > SOME(SELECT score FROM `level`); SELECT * FROM stu WHERE score > ALL(SELECT score FROM `level`);
1.7. CREATE …SELECT
-- 创建一个user3表,将表stu中的id, username的信息写入user3中 CREATE TABLE user3( id INT UNSIGNED AUTO_INCREMENT KEY, username VARCHAR(20) ) SELECT id, username FROM stu;
1.8. INSERT…SELECT
-- 将user1表中的username信息插入到user3中 INSERT user3(username) SELECT username FROM user1;
1.9. CREATE TABLE 表名1 LIKE 表名2;
创建和表2结构相同的表1。
2.联合查询
2.1 UNION
去掉两个表中的重复值。
SELECT 字段名称,… FROM 表名1 UNION SELECT 字段名称,… FROM 表名2;
2.2 UNION ALL
只是将两个表进行简单的合并,不会去掉重复值。
SELECT 字段名称,… FROM 表名1 UNION ALL SELECT 字段名称,… FROM 表名2;
3. 自身连接查询
3.1. 无限级分类的实现形式
创建表cate:
-- 创建表cate CREATE TABLE cate( id SMALLINT UNSIGNED AUTO_INCREMENT KEY COMMENT '编号', cateName VARCHAR(100) NOT NULL UNIQUE COMMENT '分类名称', pId SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '父id' ); -- 插入顶级分类 INSERT cate(cateName, pId) VALUES('服装', 0), ('数码', 0), ('玩具', 0), -- 插入服装的子分类 ('男装', 1), ('女装', 1), ('内衣', 1), -- 插入数码的子分类 ('电视', 2), ('冰箱', 2), ('洗衣机', 2), -- 插入玩具的子分类 ('爱马仕', 3), ('LV', 3), ('GUCCI', 3), -- 插入男装的子分类 ('夹克', 4), ('衬衫', 4), ('裤子', 4), -- 插入电视的子分类 ('液晶电视', 7), ('等离子电视', 7), ('背投电视', 7);
自身连接:
-- 查询所有的分类信息,并且得到其父分类 SELECT s.id, s.cateName AS sCateName, p.cateName AS pCateName FROM cate AS s LEFT JOIN cate AS p ON s.pId = p.id;
到此这篇关于Java mysql特殊形式的查询的文章就介绍到这了,更多相关Java mysql查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java8新特性Stream流中anyMatch和allMatch和noneMatch的区别解析
这篇文章主要介绍了Java8新特性Stream流中anyMatch和allMatch和noneMatch的区别解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2024-01-01spring mvc+localResizeIMG实现HTML5端图片压缩上传
这篇文章主要为大家详细介绍了使用spring mvc+localResizeIMG实现HTML5端图片压缩上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-04-04Netty分布式NioEventLoop任务队列执行源码分析
这篇文章主要为大家介绍了Netty分布式NioEventLoop任务队列执行源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-03-03Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API
Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API2009-09-09Java中的信息摘要算法MessageDigest类用法详解
这篇文章主要介绍了Java中的信息摘要算法MessageDigest类用法详解,java.security.MessageDigest类为应用程序提供信息摘要算法的功能,如MD5或SHA-1或SHA-256算法,信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值,需要的朋友可以参考下2024-01-01
最新评论