SQL 语句 增删改查、边学习边增加中..... 这一部分为delete

发布时间 2023-10-11 17:34:13作者: 修炼诗人

SQL语句按照最大的类别分为

  1、增加 insert 

  2、删除 delete   https://www.cnblogs.com/kuangmeng/p/17756654.html

  3、修改update

  4、查询 select : https://www.cnblogs.com/kuangmeng/p/17756425.html

这一部分为delete  删除操作,以及对应的Leecode题,进行加深印象。通常  delete  from 表名 ,这条SQL语句代表删除表名的所有数据。

这里为了加深自己的印象,先介绍一下自连接 与 笛卡尔积连接的区别:

自连接:同一张表被当做不同的表进行连接。只能通过where设置条件,而不能通过on。

笛卡尔积连接:对两个关系R和S进行操作,产生的关系中元组个数为两个关系中元组个数之积。

PS:没有条件的时候是笛卡尔积连接(多张表),有条件时是自连接。

196. 删除重复的电子邮箱

解题思路:多个重复, 保留一个。 按照条件来删除 拟定采用 delete 和 where 。

采用自连接的方式 ,按照表中3条数据的方式,再加入p1.Email = p2.Email条件,p1.id > p2.id条件。

delete p1
FROM Person as  p1,
    Person as p2
WHERE
    p1.Email = p2.Email and p1.id > p2.id;

197. 上升的温度

题解:采用 DATEDIFF(w1.recordDate,w2.recordDate) = 1,来判断 w1.recordDate - w2.recordDate = 1。 

  1. select:用于选择要返回的列。例如,SELECT column1, column2 FROM table;

  2. from:用于指定要查询的表。例如,FROM table;

  3. join:用于将两个或多个表连接起来。例如,JOIN table1 ON table1.column = table2.column;

  4. on:用于指定连接条件。例如,ON table1.column = table2.column;

  5. where:用于指定过滤条件。例如,WHERE table1.column = value;

# SQL 比较 自连接
select w1.id as 'Id'
from Weather w1
JOIN
    Weather w2
on 
    DATEDIFF(w1.recordDate,w2.recordDate) = 1
where
    w1.Temperature > w2.Temperature;

 577. 员工奖金

题解:针对 两个表,存在输出的情况为null的情况,采用 left join 

对于null,采用 is null 来判断。

# 两个表 
select a.name,b.bonus
from 
    Employee as a left join  Bonus as b
on
    a.empId = b.empId
where 
    b.bonus < 1000 or b.bonus is null ;

 584. 寻找用户推荐人

题解:找出那些 没有被 id = 2 的客户 推荐 的客户的姓名。 拟采用 !=  和 is null 的方式

select name
from 
    Customer 
where
    referee_id != 2 or referee_id is null;

通过查看题解,得知 在SQL 语句中,<> 和 != 的作用一致。  

586. 订单最多的客户

题解:查找下了 最多订单 的客户的 customer_number。

解释:一个表中,customer_number 对应的 order_number 最多的个数。

采用 DESC:降序排列 、ORDER BY :由某个值进行排序 LIMIT:取值个数 。