快捷搜索:  汽车  科技

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.联合查询

  • UNION ALL 是简单的合并,UNION会去掉表中重复的记录
  • // 将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过程中整理的相关笔记,是该系列的第十三篇文章,以上内容纯手敲,可能有手误的地方,也可能有错误的地方,希望大家一起指正和见谅。最后,希望与每一个努力的人同行,一起加油!!!

    mysql数据库详解(数据库学习笔记之MySQL)(1)

    猜您喜欢: