너는 SQL로 할 수 있다. 더 이상 그것을 위해 추가 코드를 쓰지 마라
SQL(구조화된 쿼리 언어)을 입력하는 것만은 아니더라도 소프트웨어 엔지니어는 데이터만 추출하는 방식으로 사용합니다.
We usually don’t leverage SQL’s power of data manipulation and do the needed changes in code.
이것은 웹 응용 프로그램에 종사하는 소프트웨어 엔지니어들 사이에서 매우 보편적이다.우리가 빠뜨린 또 다른 것은 SQL에서 직접 조작을 한다면, 모든 프로그래밍 언어에서 추출된 데이터는 같은 형식이 될 것이다.이 글의 목적은 SQL의 강력한 기능을 이해하게 하는 것이다. 너는 알 수 있지만 보통 사용하지 않는다.
의 차등 이미지
픽스만 TLDR;
Use SQL to do math like sum, average etc. Utilize it for grouping one to many relational values like getting categories of product. Leverage SQL for string manipulation like using CONCAT_WS for concating first name and last name. Exploit SQL to sort by a custom priority formula. Examples below…
이 예
SQL의 강력한 기능을 하나의 예로 설명하는 것이 더 쉽다.다음은 MYSQL에서 환불 마이크로서비스를 제공하는 두 가지 표의 기본 모델입니다.
예를 들어 환불 2건과 관련 지불 7건이 있다.
데이터 몇몇 가설
환불 마이크로서비스 예제 모델 및 애플리케이션에 대해 다음과 같이 가정합니다.
SQL 바이올린 SQL로 계산
소프트웨어 엔지니어로서 우리가 어떤 프로젝트에서 환불할 총 현금과 신용 한도를 찾아야 한다고 가정하면 우리는 어떻게 할 것인가?다음과 같은 작업을 수행합니다.
SELECT fk_item, fk_refund, amount, is_cash
FROM payment WHERE fk_item=2001;
현재 데이터에 따라 다음과 같은 세 줄이 제공됩니다.이 세 줄이 있으면 우리는 그것들을 한 바퀴 돌 수 있다.현금이라면 현금 잔액 변수에 누적하고, 그렇지 않으면 CreditBalance 변수에 누적한다.이와 달리 SQL에서는 다음을 더 쉽고 빠르게 수행할 수 있습니다.
SELECT fk_item, SUM(amount) AS total_paid, IF(is_cash = 1, 'cash', 'credit') as type
FROM payment WHERE fk_item = 2001 GROUP BY fk_item, is_cash;
결과:만약 당신이 지금 이 상품의 전액 환불이 필요하다면 결과는 매우 간단하다. GROUP BY를 fk 상품으로 바꾸기만 하면 된다.2·3번 음반에는 별 의미가 없다.만약 이 상품이 20회 환불된다면, 첫 번째 순환 해결 방안은 더 많은 코드를 작성해서 아무런 수익이 없다는 것이다.sum과 마찬가지로 다른 SQL 함수도 사용할 수 있습니다.간단한 수학 연산, 예를 들어 , 곱셈sum 등은 SQL에서 쉽게 실현할 수 있다.이것은 더 이상 순환이 없다는 것을 의미한다.
보통이었어 GROUP CONCAT를 사용하여 관련 1:m 관계식 값 가져오기
는 SQL 데이터베이스 중의 건장한 조작이다.한 쌍의 관계에서 데이터를 얻어야 할 때, 그것은 매우 유용하다.예를 들어 블로그 글의 모든 탭을 가져오거나 제품의 모든 종류를 가져오려고 합니다.이 환불 예시에 관해서는 한 물품을 여러 번 환불할 수 있다.따라서 우리는 상품 id와 관련된 모든 환불을 받을 것입니다. 이러한 환불을 얻으려면 조회 하나만 실행하고 코드에 어떠한 순환도 없습니다. 아래와 같습니다.
SELECT fk_item, GROUP_CONCAT(DISTINCT fk_refund) refund_ids
FROM payment WHERE fk_item = 2001;
이로 인해 다음과 같은 결과가 발생합니다.Group concat
지금 우리는 2001년 상품이 이미 두 번이나 반품되었는데 모두 두 번 반품되었다는 것을 안다.따라서 환불 ID가 쉽게 폭발하고 관련 작업이 계속됩니다.
문자열 작업
하위 문자열, 연결, 대소문자 변경, 문자열 비교 등 많은 작업을 SQL에서 수행할 수 있습니다.이 예에서는 CONCAT WS 사용법을 보여 드리겠습니다.이것은 구분자가 있는 조개껍질의 일종이다.first name 및 last name 등의 공백을 선택할 수도 있습니다.
In case of having an optional middle name COALESCE can be used with CONCAT_WS. That is something for you to explore :).
이 예에서는 환불 및 관련 이유를 선택합니다.
SELECT CONCAT_WS("-", refund_nr, reason) AS refund_nr_with_reason
FROM refund;
결과:string manipulation
예를 들어, 대출 기록서 문서에 표시해야 한다면, 이 값을 다시 연결할 추가 코드가 필요하지 않다.SQL은 한 단계 더 간단해졌습니다.
사용자 정의 방정식 정렬 사용
모든 소프트웨어 엔지니어들은 네가 일렬에 따라 정렬할 수 있다는 것을 안다.그러나 사용자 정의 우선순위 공식을 정렬해 주면 어떻게 할 거예요?코드와 순환에 대한 정렬을 다시 요청할 수 있습니다.따라서 위의 예제에 대해 우선순위 공식 규칙을 설정합니다.
SELECT r.refund_nr, r.reason, p.fk_item, p.amount, p.is_cash,
IF(p.premium_customer = 1, 9999999999, p.amount * (IF(is_cash = 1, 25, 20))) AS priority
FROM refund AS r INNER JOIN payment AS p ON r.id = p.fk_refund
HAVING priority > 50000
ORDER BY priority DESC
결과는 다음과 같습니다.SQL에서 IF를 올바르게 사용하면 코드에서 순환을 사용하는 것보다 우선순위 공식을 사용자 정의하여 정렬하는 것이 훨씬 쉽다.7.5(750센트)와 9.0(900센트) 등 더 작은 금액도 가장 우선적으로 고려해야 한다. 왜냐하면 이런 환불 지불 금액은 양질의 고객과 관련이 있기 때문이다.
Use the superpowers of SQL to make your life easier as a software engineer.
이 예시를 사용해서 에서 조회를 실행할 수 있습니다.
SQL 바이올린 결론
소프트웨어 엔지니어로서 SQL은 당신을 도울 수 있는 또 다른 기교가 있습니다.예를 들어, 키 업데이트가 반복될 때 INSERT를 사용하여 업데이트합니다.데이터베이스에서 추출한 데이터를 순환 코드로 조작하고 싶을 때마다 심사숙고하십시오.이 이야기의 주요 내용은 다음과 같다.
Exploit the power of SQL to write less code because “the best code is the code that was never written”. If it is not written there is no need to maintain it.
최초 발표 .
Reference
이 문제에 관하여(너는 SQL로 할 수 있다. 더 이상 그것을 위해 추가 코드를 쓰지 마라), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/geshan/you-can-do-it-in-sql-stop-writing-extra-code-for-it-lok텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)