DELETE 문은 레코드를 삭제하는 데 사용됩니다. 구문은 다음과 같습니다. ("UPDATE" 구문과 유사)
DELETE [IGNORE] FROM 表名 WHERE 条件1, 条件2, ..... ORDER BY ...... LIMIT ......; -- 使用 IGNORE 关键字时,当存在外键约束组织我们删除记录,那么则会忽略删除该条数据 -- 使用 WHERE 子句删除条件范围内的记录;如果不使用 WHERE 子句,则是删除全表范围 -- 使用 ORDER BY 关键字,将被删除的记录进行排序以后,产出符合条件的一些数据 -- 使用 LIMIT 关键字依然是分页的意思,
"DELETE" 문 실행 순서: FROM ---> WHERE ---> ORDER BY ---> LIMIT ---> DELETE
해당 부서에서 20년 이상 근무한 직원의 기록 10개 삭제(비교적 간단하고 테이블 한 개만 포함)
DELETE FROM t_emp WHERE deptno = 10 AND DATEDIFF(NOW(), hiredate)/365 >= 20;
연봉이 가장 높은 직원 20명의 기록을 삭제합니다. 부서 (WHERE 절을 사용하여 필터링하는 것 외에 부서의 직원 20명 외에 급여에 따라 내림차순으로 정렬하고 가장 높은 기록을 삭제하는 것도 필요함)
DELETE FROM t_emp WHERE deptno = 20 ORDER BY sal+IFNULL(comm,0) DESC LIMIT 1;
"의 구문 DELETE" 문은 여전히 매우 간단합니다. "UPDATE" 문에 대한 기초를 다진 후 시작하겠습니다. "DELETE" 문을 보면 이 절들이 크게 다르지 않기 때문에 이해하기 쉽습니다.
상관 서브 쿼리의 효율성이 매우 낮기 때문에 테이블 조인을 사용하여 DELETE 문의 삭제 효율성을 높일 수 있습니다.
"DELETE" SQL 문의 내부 조인 구문은 다음과 같습니다.
DELETE 表1, ...... FROM 表1 JOIN 表2 ON 条件 WHERE 条件1, 条件2, ...... ORDER BY ...... LIMIT ...... -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件
SALES 부서와 이 부서의 모든 직원 레코드를 삭제합니다.
분석: 해당 부서의 레코드를 삭제합니다. 두 테이블
분석: DELETE 문을 사용하면 테이블 연결을 사용할 수 있습니다(위 구문 참조).
분석: SALES 부서에 속한 직원 기록을 먼저 사용해야 합니다. SALES 부서의 직원 기록을 필터링하는 쿼리
DELETE e, d FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno WHERE d.dname="SALES";
부서의 평균 기본급보다 낮은 모든 직원 기록을 삭제합니다
분석: 먼저 그룹화를 위해 부서를 쿼리하고 부서 번호와 평균 기본 급여를 쿼리해야 하기 때문에 여전히 테이블 연결을 사용합니다.
분석: 쿼리된 결과 집합을 테이블로 사용하여 "직원 테이블"과 연결합니다. 연결 조건은 직원의 "부서 번호"입니다. 또 다른 조건은 직원의 월급이 회사의 평균 기본급보다 낮아야 한다는 것입니다. Department
DELETE e FROM t_emp e JOIN (SELECT deptno, AVG(sal) AS avg FROM t_emp GROUP BY deptno) t ON e.deptno=t.deptno AND e.sal < t.avg;
직원 "KING"과 그 부하 직원의 직원 기록을 삭제하고 테이블 연결을 사용하여 구현
분석: "WHERE" 절을 사용하여 "ename"이 다음과 같은 직원을 찾습니다. "KING" Record
분석: 검색된 "KING" 사원 레코드를 직원 테이블
DELETE e FROM t_emp e JOIN (SELECT empno FROM t_emp WHERE ename="KING") t ON e.mgr=t.empno OR e.empno=t.empno;
"DELETE" 문의 테이블 조인은 내부 조인이거나 외부 조인일 수 있습니다.
"DELETE" SQL 문의 외부 조인 구문은 다음과 같습니다.
DELETE 表1, ...... FROM 表1 [LEFT | RIGHT] JOIN 表2 ON 条件 WHERE 条件1, 条件2, ...... ORDER BY ...... LIMIT ...... -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件 -- 除了 在连接表 的时候选择 "LEFT JOIN" 与 "RIGHT JOIN" 的区别之外,其他的与内连接的语法一样
"SALES" 부서의 직원과 부서가 없는 직원을 삭제합니다.
분석: "직원 테이블"의 "Zhang San"에는 부서가 없으므로 "왼쪽 외부 조인"을 사용하여 부서 테이블과 연결해야 합니다.
DELETE e FROM t_emp e LEFT JOIN t_dept d ON e.deptno=d.deptno WHERE d.dname="SALES" OR e.deptno IS NULL
"DELETE" 문은 트랜잭션 메커니즘에 따라 레코드를 삭제합니다("트랜잭션 메커니즘"에 대해서는 삭제하기 전에 자세히 소개합니다). 기록을 삭제하려면 먼저 삭제된 기록을 로그 파일에 저장한 다음 기록을 삭제해야 합니다. "DELETE"를 사용하여 대량의 데이터를 삭제하는 경우 트랜잭션 메커니즘으로 인해 삭제 속도가 느려집니다.
"TRUNCATE" 문은 "트랜잭션 메커니즘" 외부의 레코드를 삭제하며 "DELETE" 문보다 실행 속도가 훨씬 빠릅니다.
"TRUNCATE" 구문은 다음과 같습니다:
TRUNCATE TABLE 表名; -- 需要注意的是,"TRUNCATE" 语句一次只能清空一张数据表,不能够一次性的清空多张数据表。
TRUNCATE TABLE t_emp ;
Statement | Function |
---|---|
drop 문 | delete 데이터베이스 및 테이블 drop 데이터베이스 이름; drop 테이블 이름; |
delete 문 | delete 테이블 기록 삭제 weibo_user where username=“xiaomu”; 참고: 삭제 문에 where 조건이 추가되지 않으면 테이블의 모든 레코드가 삭제됩니다. |
update set 문 | Modify 및 update 문도 업데이트할 때 업데이트됩니다. 원래 값 덮어쓰기(삭제) 특정 레코드를 변경하려면 업데이트 세트를 사용하세요 참고: 업데이트 세트 문에 변경 조건을 지정하는 where 절이 없는 경우 데이터베이스에 있는 이 필드의 모든 값은 be 업데이트 |
alert 문 | 삭제 필드: 테이블 이름 삭제 필드 이름 기본 키 삭제: 테이블 테이블 이름 기본 키 변경 테이블 이름 업데이트: 테이블 테이블 이름 변경 |
위 내용은 MySQL 데이터베이스 데이터를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!