这篇文章给大家分享的是有关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 stuWHERE 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 ALLSELECT * 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 表名1UNIONSELECT 字段名称,… FROM 表名2;
2.2 UNION ALL
只是将两个表进行简单的合并,不会去掉重复值。
SELECT 字段名称,… FROM 表名1UNION ALL SELECT 字段名称,… FROM 表名2;
3. 自身连接查询
3.1. 无限级分类的实现形式
创建表cate:
-- 创建表cateCREATE 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 pCateNameFROM cate AS sLEFT JOIN cate AS pON s.pId = p.id;
感谢各位的阅读!关于“Java mysql特殊形式的查询语句是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!