Java mysql特殊形式的查询语句详解

网友投稿 257 2022-08-27


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 depIhttp://d 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 UNhttp://SIGNED 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 http://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;


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python从门到精通(五):文件处理-05-二进制处理(python二进制文件的操作步骤)
下一篇:Python从门到精通(五):文件处理-04-xml文件处理(python写入xml文件的方法)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~