Java mysql特殊形式的查询语句详解
目录
1.子查询1.1.SELECT字段名称FROM表名WHERE字段名称=(SELECT字段名称FROM表名);1.2.内层语句查询的结果可以作为外层语句查询的条件1.3.由IN引发的子查询1.4.由比较运算符引出子查询1.5.由EXISTS引发的子查询1.6.ANYSOMEALL1.7.CREATE…SELECT1.8.INSERT…SELECT1.9.CREATETABLE表名1LIKE表名2;2.联合查询2.1UNION2.2UNIONALL3.自身连接查询3.1.无限级分类的实现形式创建新表:
-- 创建学员表 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查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
上一篇:Unity实战之制作动画编辑器
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?