MySQL之基础查询

select */字段1,字段2… from nametab where 条件
条件:

  • 条件1 AND/OR 条件2  id>10 AND grade <60

  • IN/NOT IN         id IN (1,3,5,7,8,9)

  • LIKE & _ (一个未指定字符),% (不定个未指定字符)
    select * from nametab where phone like ‘0411 8789 05__’;
    select * from nametab where name like ‘c%’;

  • 排序 (ASC 升序 DESC 降序)
    SELECT * FROM nametab ORDER BY id DESC;

  • 内置函数

    数名COUNTSUMAVGMAXMIN
    计数求和求平均值最大值最小值

    SELECT MAX(age) AS older ,MIN(age), AVG(age) FROM nametab ;

  • 子查询函数
    在执行子查询时,MySQL 需要创建临时表,查询结束后,才会删除这些临时表,所以在子查询的执行过程中,会多一个创建与销毁表的过程,当数据量大时,查询效率比连接查询更低。
    关键词 IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS
    SELECT* FROM nametab WHERE id IN (SELECT id FROM grades WHERE grade<60);
    SELECT* FROM nametab GROUP BY class HAVING id IN (SELECT id FROM grades WHERE grade<60);

SELECT * FROM <表名1> WHERE EXISTS (SELECT * FROM <表名2> WHERE <条件>);

SELECT <字段名> FROM <表1> WHERE <字段名> <比较运算符> ALL (SELECT <字段名> FROM <表2>) ‘>’,就是大于最大的就行为啥用这个?
eg:查询一下 English 表中是否所有成绩 全部大于 语文 表中的成绩
SELECT * FROM English WHERE grade > ALL (SELECT grade FROM Chinese);

SELECT <字段名> FROM <表1> WHERE <字段名> <比较运算符> ANY (SELECT <字段名> FROM <表2>)【理解和ALL差不多】

  • 连接 join
    SELECT id,name,people_num
    FROM employee,department
    WHERE employee.in_dpt = department.dpt_name
    ORDER BY id;
    等价与
    SELECT id,name,people_num
    FROM employee JOIN department
    ON employee.in_dpt = department.dpt_name
    ORDER BY id;

内连接查询
内连接查询(INNER JOIN)是用户根据一些过滤条件来匹配表之间的数据。在逻辑查询的前三个阶段处理中,INNER JOIN 应有前两个阶段,即首先产生笛卡尔积的虚拟表,再按照过滤条件来进行数据匹配操作。
内连接的查询原理是从左表中取出每条数据与右表中的数据匹配。匹配原则为左表的这条记录和右表的记录满足相同条件,则匹配成功,查询保留此结果。
显式内连接
SELECT * FROM <左表> INNER JOIN <右表> ON <条件>;
隐式内连接
SELECT * FROM <左表>,<右表> WHERE <条件>;
外连接查询
外连接(OUTER JOIN)也是用户可以根据一些过滤条件来匹配表之间的数据。它与内连接的区别在于,通过 OUTER JOIN 查询,表中会保留未找到的数据。其中,
左外连接(LEFT OUTER JOIN) 是以左表为主表
【SELECT * FROM <左表> LEFT JOIN <右表> ON <左表>.<字段名> = <右表>.<字段名>;】;
右外连接(RIGHT OUTER JOIN)是以右表为主表
【SELECT * FROM <左表> RIGHT JOIN <右表> ON <左表>.<字段名> = <右表>.<字段名>;】。
交叉连接查询
交叉连接查询(CROSS JOIN)是对两个表执行笛卡尔积,返回两个表中所有列的组合。
SELECT * FROM <表1>,<表2>;
SELECT * FROM <表1> CROSS JOIN <表2>;

  • 正则表达式

在这里插入图片描述

eg:选择表中以A开头的数据
SELECT * FROM table WHERE ziduan REGEXP ‘^A’;

  • 联合查询
    关键字 UNION(重复数据过滤) 或者 UNION ALL(重复数据不过滤)
    SELECT <字段名> FROM <表名>
    UNION
    SELECT <字段名> FROM <表名>;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值