mysql数据库详解(数据库学习笔记之MySQL)
mysql数据库详解(数据库学习笔记之MySQL)//格式 SELECT 字段名称 FROM tbl_name WHERE col_name=(另一个查询的结果) // IN引起的子查询,IN包含 NOT IN 不包含 SELECT * FROM tbl_name1 WHERE tbl2ID IN (SELECT id FROM tbl_name2); SELECT * FROM tbl_name1 WHERE tbl2ID NOT IN (SELECT id FROM tbl_name2); // 由比较运算符引出的子查询 SELECT * FROM tbl_name1 WHERE num>=(SELECT num FROM tbl_name2 WHERE id=1); // 由EXISTS 引发的子查询,检测是否存在 SELECT * FROM tbl_name1 WHERE EXISTS (SELECT name FR
目录01. 特殊形式的查询-子查询
02.联合查询
03. 自身连接查询(无限级分类)
正文01. 特殊形式的查询-子查询
//格式
SELECT 字段名称 FROM tbl_name WHERE col_name=(另一个查询的结果)
// IN引起的子查询,IN包含 NOT IN 不包含
SELECT * FROM tbl_name1
WHERE tbl2ID IN (SELECT id FROM tbl_name2);
SELECT * FROM tbl_name1
WHERE tbl2ID NOT IN (SELECT id FROM tbl_name2);
// 由比较运算符引出的子查询
SELECT * FROM tbl_name1
WHERE num>=(SELECT num FROM tbl_name2 WHERE id=1);
// 由EXISTS 引发的子查询,检测是否存在
SELECT * FROM tbl_name1 WHERE EXISTS (SELECT name FROM tbl_name2 WHERE id=9);
02.联合查询
// 将user表中的用户名写入到user1表中
INSERT user1(name) SELECT name FROM user;
// 将tbl表中的lili用户名添加到user2表中
INSERT user2 SET username=(SELECT name FROM tbl WHERE id=3);
// 去掉字段的重复值
SELECT DISTINCT(name) FROM user2;
// 将user1和user2数据合并到一起
SELECT * FROM user1 UNION SELECT * FROM user2;
SELECT * FROM user1 UNION ALL SELECT * FROM user2;
// 创建相同表结构的表
CREATE TABLE tbl_name2 LIKE tbl_name1;
03. 自身连接查询(无限级分类)
CREATE TABLE cate(
id SMALLINT UNSIGNED AUTO_INCREMENT KEY
cateName VARCHAR(100) NOT NULL UNIQUE
pId SMALLINT UNSIGNED NOT NULL DEFAULT 0
);
INSERT cate(cateName pId) VALUES('服装' 0);
INSERT cate(cateName pId) VALUES('数码' 0);
INSERT cate(cateName pId) VALUES('箱包' 0);
INSERT cate(cateName pId) VALUES('男装' 1);
INSERT cate(cateName pId) VALUES('女装' 1);
INSERT cate(cateName pId) VALUES('内衣' 1);
INSERT cate(cateName pId) VALUES('电视' 2);
INSERT cate(cateName pId) VALUES('冰箱' 2);
INSERT cate(cateName pId) VALUES('洗衣机' 2);
// 使用左外连接,自己和自己连接
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;
// 使用右外连接
SELECT p.id p.cateName AS pCateName s.cateName AS sCateName
FROM cate AS s
RIGHT JOIN cate AS p
ON s.pId=p.id;
SELECT p.id p.cateName AS pCateName COUNT(s.cateName) AS count
FROM cate AS s
RIGHT JOIN cate AS p
ON s.pId=p.id
GROUP BY p.cateName
ORDER BY id ASC;
写在最后
本文是在学习MySQL过程中整理的相关笔记,是该系列的第十三篇文章,以上内容纯手敲,可能有手误的地方,也可能有错误的地方,希望大家一起指正和见谅。最后,希望与每一个努力的人同行,一起加油!!!