mysql 复习笔记

SQL复习:函数、子查询与多表更新
博主因工作需要复习SQL,学习资料来自慕课网《与MySQL零接触》课程。复习内容包括SQL函数、自定义函数UDF,介绍了其参数、返回值、函数体构成等;还涉及子查询,如select中的select及相关运算符使用,以及多表更新和连接操作。

sql

最近工作需要查活动的数据,之前学的sql语句有不少忘记了,工作需要复习一下sql
学习资料来源是慕课网的《与MySQl零接触》课程,安利一下,该课程通俗易懂,比较系统,还有练习的资料。

函数

  • 参数
  • 返回值

自定义函数 UDF

无参函数eg:

CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(), '%Y年%m月%d日 %H点:%i分:%s秒');

有参函数eg:

CREATE FUNCTION f2(num1 int, num2 int)
RETURNS float(10,2)
RETURN (num1+num2)/2;

修改语句结束符

DELIMITER //

函数体

  • 合法sql语句构成
  • 可以是简单的select insert语句
  • 复合结构用BEGIN…END
  • 复合结构可以包含声明、循环、控制结构

删除函数

DROP FUNCTION f1;

子查询 于连接

子查询:select中的select

子查询嵌套内容,必须出现在圆括号内

比较运算符 > = < !+ <>

select goods_id,goods_name,goods_price from tb_goods where 
goods_price >= (select round(avg(goods_price),2) from tb_goods);

关联的 any some| all

使用 [not] in 子查询

查找是否在某个集合中

[not] exists 子查询

insert ... select 将查到的数据写入表

多表更新

-- 表连接
table_reference
连接类型{[INNER|CROD] JOIN | {LEFT|RIGHT}[OUTer] JOIN}
table_reference
on 条件

update table_references set col_name1={expr1|DEFAULT}
[,col_name2={expr2|DEFAULT}]
[where where_condition]

多表更新一步到位

create ... select

create table tdb_goods_brands
(brand_id smallint unsigned primary key auto_increment,
brand_name varchar(40))
select brand_name from tdb_goods group by brand_name;

连接


自身连接

select p.type_id, p.type_name, count(s.type_name) as child_count from tdb_goods_types p left join tdb_goods_types s on s.parent_id=p.type_id group by p.type_id;

多表删除

-- 单表模拟多表删除重复数据
delete t1 from tdb_goods as t1 left join (select goods_id,goods_name from tdb_goods group by goods_name having count(goods_name)>=2) as t2 on t1.goods_name=t2.goods_name where t1.goods_id>t2.goods_id;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值