SQL


1. [필수] count(*) 대신 count(열 이름) 또는 count(상수)를 사용하지 마십시오. count(*)는 SQL 92에 정의된 행 계산을 위한 표준 구문입니다. NULL과 관련이 있으며 NULL이 아닌 것은 관련이 없습니다.

설명: count(*)는 NULL 값이 있는 행을 계산하지만 count(열 이름)은 이 열에서 NULL 값이 있는 행을 계산하지 않습니다.


2. [필수] count(distinct col) NULL을 제외한 열의 고유 숫자 개수를 계산합니다. count(distinct

col 1, col 2 )는 열 중 하나가 모두 NULL이면 다른 열의 값이 다르더라도 0을 반환합니다.


3. [필수] 특정 열의 값이 모두 NULL인 경우 count(col)의 반환 결과는 0이지만 sum(col)의 반환 결과는

NULL입니다. 따라서 sum()을 사용하세요. 항상 NPE 문제에 주의하세요.

긍정적인 예: 다음 방법을 사용하여 합계의 NPE 문제를 피할 수 있습니다: SELECT IF(ISNULL(SUM(g)) ,0, SUM(g))FROM table;


4 . [필수] ISNULL()을 사용하여 NULL 값인지 확인합니다. 참고: NULL과 임의의 값을 직접 비교하는 것은 NULL입니다.

설명:

1) NULL<>NULL의 반환 결과는 false가 아닌 NULL입니다.

2) NULL=NULL의 반환 결과는 true가 아닌 NULL입니다.

3) NULL<>1의 반환 결과는 true가 아닌 NULL입니다.

5. [필수] 코드에 페이징 쿼리 로직을 작성할 때 count가 0인 경우 후속 페이징 문 실행을 피하기 위해 직접 반환해야 합니다.


6. [필수] 외래 키 및 캐스케이드는 허용되지 않습니다. 모든 외래 키 개념은 애플리케이션 계층에서 해결되어야 합니다.

설명: (개념 설명) 학생 테이블의 Student_id가 기본 키이고, grades 테이블의 Student_id가 외래 키입니다. 학생 테이블의 학생_ID를 업데이트하고 동시에 성적 테이블의 학생_ID 업데이트를 트리거하는 경우 계단식 업데이트입니다. 외래 키 및 계단식 업데이트는 단일 시스템의 낮은 동시성에는 적합하며 분산 및 동시성 클러스터에는 적합하지 않습니다. 계단식 업데이트는 데이터베이스 업데이트 폭풍의 위험이 있으며 데이터베이스 삽입 속도에 영향을 미칩니다.

7. [필수] 저장 프로시저는 디버그 및 확장이 어렵고 이식성이 없습니다.


8. [필수] 데이터 수정, 삭제, 기록 수정 시 실수로 인한 삭제를 방지하기 위해 먼저 선택해야 하며, 확인 후에만 업데이트 문을 실행할 수 있습니다.


9. 피할 수 없다면 작동을 피하세요. in 뒤에 있는 수집 요소 수를 신중하게 평가하고 1000 이내로 제어해야 합니다.

10. [참고] 세계화가 필요한 경우 모든 문자 저장 및 표현은 utf -8로 인코딩되며 문자 계산 방법은

참고:

지침:

길이 선택("쉬운 작업" ) ; 반환값은 12

SELECT CHARACTER _ LENGTH("Easy Work"); 반환값은 4

이모티콘을 사용하려면 utfmb 4를 저장용으로 사용하세요. utf-8과의 차이점에 주의하세요. 부호화.


11. [참고] TRUNCATE TABLE은 DELETE보다 빠르며 시스템 및 트랜잭션 로그 리소스를 덜 사용합니다. 그러나 TRUNCATE는 트랜잭션이 없으며 트리거를 트리거하지 않으므로 사고가 발생할 수 있으므로 권장하지 않습니다. 이 명령문에 사용됩니다.

참고: TRUNCATE TABLE은 기능적으로 WHERE 절이 없는 DELETE 문과 동일합니다.