MySQL学习笔记(派生表、JOIN、UNION、函数、CTE、存储过程、事务、锁)

这篇博客详细介绍了MySQL中的关键概念,包括派生表的使用,JOIN操作(如INNER JOIN、LEFT JOIN、RIGHT JOIN),函数的应用(如数学、聚合和控制流函数),CTE(公共表表达式)的解释,以及事务处理。还涵盖了存储过程、正则表达式匹配、Java Statement与线程池Executor的相关知识。
摘要由CSDN通过智能技术生成

MySQL笔记

1. 派生表

派生表是从SELECT语句返回的虚拟表,类似于临时表,但是派生表不需要创建临时表的步骤。 (当SELECT语句中的FROM使用独立子查询时,我们将它成为派生表)
例如:

SELECT column_list  
FROM (  
    SELECT column_list  
    FROM table_1  
) derived_table_name  
WHERE derived_table_name.c1>0;  

与子查询不同,派生表必须有别名,以便稍后再查询中引用该派生表。

派生表示例:
查询2013年销售收入最高的前5名产品

SELECT  
    productCode,  
    ROUND(SUM(quantityOrdered * priceEach)) sales  
FROM
    orderdetails
        INNER JOIN
    orders USING (orderNumber)
WHERE
    YEAR(shippedDate) = 2013
GROUP BY productCode
ORDER BY sales DESC
LIMIT 5;
  1. 连接两表:INNER JOIN
  2. 限制条件为2013年:YEAR(shippedDate) = 2013
  3. 计算产品销量:GROUP BY productCode 并使用SUM()函数
  4. 取前5名:ORDER BY sales 并 LIMIT 5

使用派生表将以上表与另一个products表关联:

SELECT 
    productName, sales
FROM
    (SELECT  
        productCode,  
        ROUND(SUM(quantityOrdered * priceEach)) sales  
    FROM
        orderdetails
            INNER JOIN
        orders USING (orderNumber)
    WHERE
        YEAR(shippedDate) = 2013
    GROUP BY productCode
    ORDER BY sales DESC
    LIMIT 5) top5products2013
INNER JOIN products 
USING (productCode);

2. MYSQL JOIN

  1. inner join:内连接,取得两个表中存在连接匹配关系的记录
  2. left join:左连接,以左表为基准,取左表的所有记录,右表匹配向左表
  3. right join:右连接,同上

使用示例:
SELECT * FROM article INNER JOIN user ON article.uid = user.uid

SELECT * FROM article INNER JOIN user USING(uid)

3. MYSQL函数

数学函数
  • ABS(x) 返回x的绝对值
  • BIN(x) 返回x的二进制 (OCT八进制,HEX十六进制)
  • CEILING(x) 返回大于x的最小整数值
  • EXP(x) 返回值e的x次方
  • FLOOR(x) 返回小于x的最大整数值
  • GREATEST(x1,x2,…,xn) 返回集合中最大的值
  • LEAST(x1,x2,…,xn) 返回集合中最小的值
  • LN(x) 返回x的自然对数
  • LOG(x,y) 返回x的以y为底的对数
  • MOD(x,y) 返回x/y的模(余数)
  • PI() 返回pi的值(圆周率)
  • RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
  • ROUND(x,y) 返回参数x的四舍五入的有y位小数的值
  • SIGN(x) 返回代表数字x的符号的值
  • SQRT(x) 返回一个数的平方根
  • TRUNCATE(x,y) 返回数字x截短为y位小数的结果
聚合函数(与GROUP BY一起使用)
  • AVG(col) 返回指定列的平均值
  • COUNT(col) 返回指定列中非null的值的个数
  • MIN(col) 返回指定列的最小值
  • MAX(col) 返回指定列的最大值
  • SUM(col) 返回指定列的所有值之和
  • GROUP_CONCAT(col) 返回由属于一组的列值连接组合而成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值