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

被折叠的 条评论
为什么被折叠?



