文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Javamysql特殊形式的查询语句详解

2024-04-02 19:55

关注

创建新表:

-- 创建学员表
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查询内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯