본문 바로가기

DEV/DB & SQL22

SQL에서의 WHERE 1=1 WHERE 1=1 이란? WHERE 1=1은 항상 참을 의미합니다. 즉, 의미 없는 조건입니다. 2=2, 3=3도 동일한 기능을 수행합니다. WHERE 1=1을 사용하는 이유 주석처리가 편하며, WHERE 문을 유동적으로 작성해야 할 때 편리합니다. 먼저 WHERE 1=1로 조건을 걸고 그 이후 AND 조건을 사용하여 다음 조건을 작성한다면, WHERE 문을 신경 쓰지 않고 AND 조건문을 편리하게 작성할 수 있습니다. 아래와 같이 조건이 2개인 질의문이 있습니다. AND절의 goal이 40이 맞는지 우선적으로 확인하고 싶다면, WHERE 조건 playerName = 'kane'을 주석 처리해야 합니다. SELECT playerName , playerNum , goal , assist FROM playe.. 2022. 12. 13.
[MSSQL] WITH(NOLOCK) - 테이블 잠금 해제 LOCK이란? MSSQL 데이터베이스의 테이블을 업데이트하는 경우에는 해당 테이블은 잠겨있게 됩니다. 이러한 상태를 LOCK이라고 하는데, LOCK이 걸리게 되는 이유는 MSSQL의 기본 격리 수준이 Read Committed 이기 때문입니다. INSERT, UPDATE, DELETE 와 같은 DML 작업 중인 ROW 나 TABLE에 SELECT 하는 경우, 진행 중인 DML 작업이 끝나야 SELECT 가 가능합니다. 즉, 완전히 COMMIT 된 데이터만 읽게됩니다. 따라서, LOCK이 걸려있는 동안 SELECT 작업을 수행하게 되면 이 SELECT 작업이 후순위로 밀려나게 되고 데이터베이스의 성능이 떨어질 수 있습니다. LOCK ↔ WITH(NOLOCK) 사용자 입장에서는 SELECT 작업이 후순위로 .. 2022. 9. 7.
날짜, 시간 연산(DATEADD) 날짜, 시간을 연산하기 위해 DATEADD 함수를 사용합니다. 1. 날짜(년, 월, 일) 1-1. 년(YEAR) 연도 더하기 DATEADD(YEAR, 양수, 기준 연도) 연도 빼기 DATEADD(YEAR, 음수, 기준 연도) 위와 같은 형식으로 사용할 수 있고, 아래와 같이 예시를 확인할 수 있습니다. SELECT DATEADD(YEAR, -3, '2022-06-02') AS [3년 전] , DATEADD(YEAR, 3, '2022-06-02') AS [3년 후] 1-2. 월(MONTH) 달 더하기 DATEADD(MONTH, 양수, 기준 날짜) 달 빼기 DATEADD(MONTH, 음수, 기준 날짜) 위와 같은 형식으로 사용할 수 있고, 아래와 같이 예시를 확인할 수 있습니다. SELECT DATEADD(.. 2022. 6. 2.
varchar와 nvarchar의 차이 varchar와 nvarchar의 차이 varchar는 바이트 수, nvarchar는 글자 수를 기준으로 합니다. varchar는 가변 문자열이며, nvarchar는 유니코드 지원 가변 문자열입니다. 그렇기 때문에 비유니코드 지원인 varchar는 영어, 숫자는 1byte, 그 외 한글, 한자 등은 2byte로 저장합니다. 반면, nvarchar는 유니코드 지원이므로 모든 문자를 일괄적으로 2byte로 저장하게 됩니다. 예를 들어, 'MousaDembele'라는 문자열은 varchar에서는 영문 12자리이기 때문에 12byte의 공간이 필요합니다. 반면 nvarchar에서는 영문이든 한글이든 관계없이 글자당 2byte를 할당하기 때문에 24byte의 공간이 필요합니다. 한글의 경우 '무사뎀벨레'라는 문자.. 2022. 4. 29.
테이블 수정(ALTER TABLE) ALTER문이란? ALTER문은 데이터베이스에서 기존의 테이블을 유지하면서 원하는 부분만 수정할 수 있는 명령문입니다. 컬럼 추가 (ADD) 기존 생성되어 있는 테이블에 컬럼을 추가해야 하는 경우에는 ALTER TABLE + ADD COLUMN을 사용합니다. ALTER TABLE '테이블 명' ADD COLUMN '추가하려는 컬럼 명' '컬럼 데이터 타입'; 위 문법으로 쿼리를 요청하면 sql은 기본적으로 추가되는 열을 끝에 추가합니다. 만약 추가하려는 카테고리의 위치를 지정하려면 ADD COLUMN으로 시작하는 문장 마지막에 위치를 지정해주면 되는데, 아래 예시와 같이 위치는 FIRST, SECOND 등 위치할 순서로 지정할 수도 있고, AFTER을 사용하여 기존의 특정 카테고리 뒤에 위치하도록 설정할.. 2022. 4. 14.
반올림, 올림, 내림 함수(ROUND, CEILING, FLOOR) 1. ROUND (반올림) ROUND(반올림 할 숫자, 반올림 자릿수, 반올림 여부) 형태로 사용합니다. - 3가지 항목 모두를 입력할 필요는 없습니다.(반올림 여부가 0 또는 생략할 경우 반올림) SELECT ROUND(123.456)--123 SELECT ROUND(123.456, 1)--123.500 SELECT ROUND(123.456, 2)--123.460 SELECT ROUND(123.456, 2, 0)--123.460 SELECT ROUND(123.456, 2, 1)--123.450 정수를 반올림하는 경우에도 ROUND 함수를 사용할 수 있습니다. SELECT ROUND(170,-2); -- 200 ORACLE 에서는 ROUND(반올림 할 숫자, 반올림 자릿수) 형태로 사용합니다. SELEC.. 2022. 2. 15.
쿼리 변환 사이트 : SQLines DB 쿼리를 작성하다 보면 다른 종류의 DB 쿼리를 다른 쿼리로 변경해야 할 경우가 생깁니다. 그럴 때, 쿼리를 변환해주는 사이트가 있어 소개합니다. 1. 사이트 이동 http://www.sqlines.com/online 으로 이동합니다. 위와 같은 사이트의 모습이 보입니다. 2. 사용 방법 왼쪽 상단에 표시된 드롭박스에서 변환을 원하는 DB의 종류를 선택해 줍니다. 그 후, 오른쪽 상단에서 변환되어야 할 DB 종류를 선택합니다. 예를 들어 MySQL에서의 LIMIT 문법은 ORACLE에서는 다른 문법으로 사용됩니다. 왼쪽에 쿼리를 입력 후 왼쪽 상단의 Convert 버튼을 클릭하면, 오른쪽에 변환된 쿼리가 출력됩니다. 지원되는 DB 종류는 아래와 같습니다. - Microsoft SQL Server(ms.. 2021. 12. 21.
자동값 증가(Oracle, MSSQL, MySQL) 1. 자동값 증가가 필요한 경우 데이터베이스에 데이터가 저장될 때 자동으로 1부터 +1씩 증가하는 숫자가 자동으로 입력되는 상황을 말합니다. 스키마를 작성하다보면 데이터의 수를 p.k로 설정해야 할 때가 있습니다. 이럴 경우 데이터를 insert 할 때마다 max함수로 기존에 추가되어있는 최대값을 알아야 p.k값이 겹치지 않게 추가를 할 수 있지만 insert마다 최댓값을 받아오는 sql문을 작성하는 것은 비효율적입니다. 테이블 생성 시 자동 값 증가 옵션을 사용하여 생성한다면, 이러한 비효율을 방지할 수 있습니다. 예를 들어 회원가입을 할때마다 회원 명단 테이블에 순차적으로 회원 번호가 증가되는 경우입니다. 2. 데이터베이스 별 자동값 증가 방법 Oracle - SEQUENCE 사용 1-1. SEQUE.. 2021. 11. 16.
문자열 병합 CONCAT 함수 사용하기 CONCAT CONCAT함수는 문자열을 병합할수있도록 도와주는 함수입니다. 아래와 같이 병합하고자 하는 문자열을 CONCAT() 함수로 감싸주어 사용합니다. CONCAT('문자열1', '문자열2', '문자열3') 아래의 예제를 통하여 쉽게 이해해봅니다. - 문자열과 문자열을 병합하는 예제입니다. SELECT CONCAT('water','melon'); >>>>> watermelon - 컬럼과 컬럼을 병합하는 예제입니다. [member table] FIRST_NAME LAST_NAME TEL ---|------------------------|-----------------|--------------- 1 | Mousa | Dembélé | 01011112222 2 | Heung-min | Son | 01.. 2021. 10. 14.
반응형