개발 54

[mssql] where문에 in으로 서브쿼리를 통해 검색 기능 구현하기 + where case

이번에 내가 해결했어야 했던 문제는 예로 들자면 회사의 대표번호를 검색해야 해당 회사가 출력되던 기능을 한 회사의 저장되어 있는 임의의 전화번호를 검색 시 해당 회사출력 될 수 있게 기능을 수정하는 것과 같았다 그래서 생각해 낸 방법은 1. 회사의 모든 연락처를 조인해오고 회사이름으로 GROUPBY 하기 2. where문에서 서브쿼리로 모든 연락처테이블을 참조해서 불러오기 1번 방법은 나중에 쿼리를 수정할 때를 전체 테이블을 groupby 하는건 불편할 것 같고 느리기 때문에 2번 방법을 적용하기로 했다. >>>where문에서 서브쿼리로 모든 연락처테이블을 참조해서 불러오기 where a.iw_pay_no in ( select r1.iw_pay_no from ( select case WHEN ip2.mu..

개발/SQL 2023.01.06

[MS-SQL] nolock

2022.12.05 - [개발/데이터베이스] - 트랜잭션 TRANSACTION 트랜잭션 TRANSACTION 트랜잭션은 데이터의 정합성을 보장하기 위한 기능 트랜잭션은 COMMIT (적용) 또는 ROLLBACK (적용X)을 보장해주는 것 트랜잭션이 보장해야하는 ACID 원자성(Atomicity) 일관성 (Consistency) 격리성 (Isolation) vv6uos.tistory.com 데이터를 조회할 때 테이블 옆에 "nolock"을 입력해서 데이터가 돌지 않고 빠르게 조회할 수 있게 하는 경우가 있다 MSSQL의 경우 , 기본적으로 제공하는 격리수준은 READ_COMMITED입니다 (설정 변경 가능) 그렇다 보니 UPDATE,INSERT등을 하면서 테이블이 잠기게 되었을 때 , SELECT를 하게 ..

개발/SQL 2022.12.24

[mssql] 백업테이블로 데이터 보존하기

-중요한 테이블을 CRUD테스트 해야할 때 백업 테이블을 생성해서 데이터를 보존하는게 좋다 1. 백업 테이블 생성 select * into TB_LOCATION_INSPECTION_DTL_tmp //아무테이블 생성 from TB_LOCATION_INSPECTION_DTL (nolock) select * from TB_LOCATION_INSPECTION_DTL_tmp 그리고 다시 데이터 올리기 insert into TB_LOCATION_INSPECTION_DTL select * from TB_LOCATION_INSPECTION_DTL_tmp 자동채번(ex. stock_no)이 걸려있을경우 나머지를 걸어줘서 자동채번으로 생성되도록 한다. select * from TB_LOCATION_INSPECTION_DT..

개발/SQL 2022.12.20

[mssql] 반복문 사용해서 테이블 돌기

- 반복문을 통해 한 테이블의 데이터를 가공하고 싶을때 - 임시테이블을 통해 두세번 데이터를 가공하고 싶을 때 결과값을 만들어 반환할 임시테이블을 선언한다. -- 로케이션 조편성 임시테이블 DECLARE @TBL_GROUP_TMP TABLE ( V_ROW INT IDENTITY(1,1) NOT NULL, -- 자동 인덱스 증가 V_LOC_NM VARCHAR(15), V_LEVEL INT, V_GROUP INT ) -- 반복문 돌고 싶은 테이블에서 값을 가져오고 자동인덱스가 증가하도록 만든다 INSERT INTO @TBL_GROUP_TMP (V_LOC_NM,V_LEVEL) SELECT loc_nm, High_level FROM TB_LOCATION_TYPE WITH(NOLOCK, READUNCOMMITTE..

개발/SQL 2022.12.19

트랜잭션의 격리 수준 isolation

트랜잭션의 격리수준 (isolation) 동시에 여러 트랜잭션이 처리 될 때 , 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것 2022.12.05 - [개발/데이터베이스] - 트랜잭션 TRANSACTION 트랜잭션의 격리 수준 - READ UNCOMMITED - READ COMMITED - REPEATABLE READ - SERIALIZABLE READ UNCOMMITTED - 각 트랜잭션에서의 변경내용이 COMMIT이나 ROLLBACK 여부에 상관없이 다른 트랜잭션에서 값을 읽을 수 있다 - 정합성에 문제가 많은 격리 수준이기 때문에 사용하지 않는 것을 권장한다 - 아래의 그림과 같이 COMMIT이 되지 않는 상태이지만 UPDATE된 값을 다른..

개발/SQL 2022.12.07

SQL : INSERT INTO

1 직접 VALUE를 입력해서 값을 넣는 방법 @TABLE 의 컬럼에 값1,값2를 매칭해서 임의로 넣는다 INSERT INTO @TABLE ( prod_cd, name , qty , ...) VALUE ( 'C01' , 'sun-cream' , 30 , ...) 2 다른 테이블의 VALUE를 가져오는 방법 INSERT INTO @TABLE ( prod_cd, name , qty , ...) SELECT code , name , qty ... FROM @secdTable WHERE code='C01' 3 동시에 여러 행을 입력하는 방법 INSERT INTO @TABLE ( prod_cd, name , qty , ...) VALUES ( 'C01' , 'sun-cream' , 30 , ...), ( 'C02..

개발/SQL 2022.11.01

SQL 미니 과제와 함께하는 쿼리 공부하기 -2 GROUP BY

2022.10.06 - [개발/SQL] - SQL 미니 과제와 함께하는 쿼리 공부하기 -1 테이블 정의 , Join GROUP BY사용하기 인터넷에 grouop by를 검색해서 공부하면 같은 값을 가진 행끼리 하나의 그룹으로 뭉쳐줍니다 라고 정의를 내립니다 하지만 저의 직관적인 해석을 하자면 그룹바이의 선택된 컬럼의 중복된 행을 숨김처리 하는 기능이라고 생각합니다 요약 -- invc_qty가 5이상인 invc_no출력을 하는데 중복되는 행을 제거한다 SELECT a.invc_no FROM TB_INVC as a (nolock) INNER JOIN TB_INVC_DTL as ad (nolock) ON a.invc_no=ad.invc_no INNER JOIN TB_STOCK as s (nolock) ON a..

개발/SQL 2022.10.06

SQL 미니 과제와 함께하는 쿼리 공부하기 -3 집계함수

집계함수 업무 또는 문제 테이블은 맨 위 링크를 참고한다 2022.10.06 - [개발/SQL] - SQL 미니 과제와 함께하는 쿼리 공부하기 -1 테이블 정의 , Join -- 다음 테이블 TB_INVC, TB_INVC_DTL, TB_STOCK join을 헤서 group by 조건문에 invc_no를 넣고 -- where 조건문에 biz_type ='SELF'를 넣은 sum(합계), avg(평균)을 구하시오. -- 단 order by invc_no로 정렬 desc로 활용 -- invc_qty 결과 출력 문제 풀기 --1. 인보이스별 상품별 수량 출력하기 SELECT top 10 i.invc_no , i.biz_type,* FROM TB_INVC AS i (nolock) INNER JOIN TB_INVC..

개발/SQL 2022.10.06