DML_Data Modification_Delete
删除记录比较简单,但是需要特别注意,一不小心,就变成了 “从删库到跑路“ 就掉的大了

/*
Microsoft SQL Server 2008 T-SQL Fundamentals_CN(Chapter 8 Inserting Data)
*/ ----------------------------------------------------------------------------------------------------------------------
----先不用曾经测试过的表做实验,还需要实验+看数据+回顾,不小心已经破坏了Orders表
--SELECT *
--FROM Orders
----------------------------------------------------------------------------------------------------------------------
--先复制:Northwind.Customers, Orders,2个表(表结构+数据)到testdb库下
if OBJECT_ID('dbo.Customers','U') IS NOT NULL DROP TABLE dbo.Customers;
if OBJECT_ID('dbo.Orders','U') IS NOT NULL DROP TABLE dbo.Orders; SELECT * INTO testdb.dbo.Customers FROM Northwind.dbo.Customers
SELECT * INTO testdb.dbo.Orders FROM Northwind.dbo.Orders ALTER TABLE dbo.Customers ADD
CONSTRAINT PK_Customers PRIMARY KEY(CustomerID) ALTER TABLE dbo.Orders ADD
CONSTRAINT PK_Orders PRIMARY KEY(OrderID),
CONSTRAINT PK_Orders_Customers FOREIGN KEY(CustomerID)
REFERENCES dbo.Customers(CustomerID)
-------------------------------------------------------------------------------
--检查,表结构+数据,都复制到 testdb 库下了
SELECT * FROM Customers
SELECT * FROM Orders
--
--SELECT * FROM Northwind.dbo.Customers
SELECT * FROM Northwind.dbo.Orders
left join Northwind.dbo.Customers
on Orders.CustomerID=Customers.CustomerID
WHERE ShipCountry = 'UK' -- 有 56个,为下面删除 连接...的参考
--------------
SELECT * FROM Northwind.dbo.Orders
left join Northwind.dbo.Customers
on Orders.CustomerID=Customers.CustomerID
WHERE ShipCountry = 'USA' -- 有 122个,为下面删除 连接...的参考
--------------
SELECT * FROM Northwind.dbo.Orders
left join Northwind.dbo.Customers
on Orders.CustomerID=Customers.CustomerID
WHERE ShipCountry = 'France' -- 有 77个,为下面删除 连接...的参考 -------------------------------------------------------------------------------
-- DELETE(没有过滤条件时,是删除所有行)
SET NOCOUNT OFF --NOCOUNT 为 ON 时,只会报告命令完成,不会报告数量
DELETE
FROM dbo.Orders
WHERE orderdate < '' --TRUNCATE 没有过滤条件,删除所有行
--区别: TRUNCATE以最小模式记录日志(效率高),DELETE以完整模式记录日志
--创建一个 dummy table(让它包含一个指向产品表的外键,这样就可保护产品表了,此处还可多理解一下
TRUNCATE TABLE Orders
-------------------------------------------------------------------------------
-- 基于连接的 DELETE 不是标注的SQL语句(知道有这么一种写法就可),平时尽量采用标准的SQL语句
DELETE FROM O
FROM dbo.Orders as O
JOIN dbo.Customers AS C
ON O.CustomerID = C.CustomerID
WHERE C.Country = 'UK' --删除完满足条件的纪录后,再查,确证删除
--SELECT * FROM Customers
SELECT * FROM Orders
-----------------------------
--下面是标准的SQL语句
DELETE FROM dbo.Orders
WHERE EXISTS
(SELECT *
FROM dbo.Customers AS C
WHERE Orders.CustomerID = C.CustomerID
AND Orders.ShipCountry ='USA'
)
--------
--以连接形式的写法,然后再删除
DELETE FROM dbo.Orders
WHERE EXISTS
(SELECT *
FROM dbo.Customers AS C
LEFT JOIN Orders AS O
ON O.CustomerID = C.CustomerID
WHERE Orders.ShipCountry ='France'
)

--对于非标准的删除写法,也好理解(如右边),   先查询--->后条件--->最后删除

运行结果:

/*
Orders表在PIVOT、UNPIVOT中已经做了示例,下面表为OrdersA为区别
Microsoft SQL Server 2008 T-SQL Fundamentals_CN(Chapter 8 Inserting Data)
*/

DML_Data Modification_DELETE的更多相关文章

  1. DML_Data Modification_UPDATE

    DML_Data Modification_UPDATE写不进去,不能专注了...... /* */ ------------------------------------------------- ...

  2. DML_Data Modification_MERGE

    DML_8-Data Modification_MERGE (将Source表合并到Target) 语法:MERGE INTO 目标表USING 源表WHEN MATCHED AND          ...

  3. DML_Data Modification_INSERT

    Data Modification (INSERT.DELETE.UPDATE.MERGE)之INSERT(基础知识,算是20年来第2次学习MSSQL吧,2005年折腾过一段时间的Oracle)INS ...

  4. DML_Modifying Data Through Table Expressions_UPDATE

    DML_Modifying Data Through Table Expressions_UPDATE之前也学习过使用CTE,再来泛泛的学习下,最后将会将一些书籍上或学习到的CTE来个小结 /* Mi ...

随机推荐

  1. B. Sleepy Game 博弈搜索

    题意:给一个有向图和起点,然后只有一名选手,这名选手可以随意挪动棋子,最终不能动的时候走过的边为奇数边为Win并输出路径,否则如果有环输出Draw,否则输出Lose; 题目链接 知道状态数最多只有n* ...

  2. 通过Python扫描代码关键字并进行预警

    近期线上出现一个bug,研发的小伙伴把测试环境的地址写死到代码中,在上线前忘记修改,导致线上发布的代码中使用了测试环境地址. 开发过程中虽然有各种规范制度,但是难免有粗心,与其责备不如通过技术手段将问 ...

  3. 17-4 delete-truncate语句-练习

    --删除数据语句: --delete from 表名 where ... --delete语句如果不加where条件,表示将表中所有的数据都删除,加where条件后,会按照where条件进行删除. - ...

  4. 测试开发专题:spring-boot如何使用JPA进行双向一对多配置

    本片文章我们主要介绍spring-boot如何进行JPA的配置以及如何进行实体间的一对多配置. 依赖准备 要在spring-boot使用jpa需要在项目中有进入相关的依赖,pom文件里加入下面内容 & ...

  5. 第二篇-用Flutter手撸一个抖音国内版,看看有多炫

    前言 继上一篇使用Flutter开发的抖音国际版 后再次撸一个国内版抖音,大部分功能已完成,主要是Flutter开发APP速度很爽,  先看下图 项目主要结构介绍 这次主要的改动在api.dart 及 ...

  6. JAVA-Servlet操纵方法

    此篇自用查询 存储数据的区域对象域对象的通用的方法:ServletContext context=getServletContext();获取ServletContext对象setAtrribute( ...

  7. 害你加班的bug就是我写的,记一次升级Jenkins插件引发的加班

    主旨 本文主要记录了下Jenkins升级插件过程中出现的场景,一次加班经历,事发时没有截图,有兴趣可以看看. 起因 需求 最近有个需求:在Jenkins流水线中完成下载Git上的文件简单修改并提交的功 ...

  8. [256个管理学理论]006.刺猬效应(Hedgehog Effect)

    刺猬效应(Hedgehog Effect) 来自于大洋彼岸的让你看不懂的解释: 刺猬效应(刺猬法则)就是人际交往中的“心理距离效应”.人与人之间都应该保持这条底线,过犹不及. 刺猬效应强调的就是人际交 ...

  9. hashMap探析

    本篇文章包括: 数据结构 各个参数 为什么数组的长度是2的整数次方 为什么要将装载因子定义为0.75 为什么链表转红黑树的阈值为8 hash碰撞 put方法 resize方法 jdk7中数组扩容产生环 ...

  10. [源码解析]为什么mapPartition比map更高效

    [源码解析]为什么mapPartition比map更高效 目录 [源码解析]为什么mapPartition比map更高效 0x00 摘要 0x01 map vs mapPartition 1.1 ma ...