Database13 [Database] 자료형 Varchar와 nVarchar의 차이는? (개념/ 예제) 서론 이번 글에서는 database에서의 자료형 varchar와 nvarchar의 차이점에 대해 간단히 알아보려한다. VARCHAR vs NVARCHAR (n)varchar란? 문자열을 저장할 때 사용하는 자료형이다. 표현 범위로는 지정할 수 있는 길이는 1~255까지이며 지정한 길이보다 작은 데이터를 저장할 때 필요길이만큼 저장된다. (char보다 기억장치를 효율적으로 저장할 수 있다.) varchar 바이트 수를 기준으로 한다. 가변 문자열이다. (비 유니코드) 영어,숫자는 1byte 저장 한글, 한자 등은 2byte 저장 nvarchar 글자 수를 기준으로 한다. 유니코드 지원 가변 문자열이다. 모든 문자를 2byte 저장 예제 영문 예제 "Apple" varchar : 5byte (1x5) nva.. Database/RDBMS 2022. 7. 5. [NoSQL] MongoDB와 Firebase 비교 (개념/ 장 단점/ 성능 차이) 서론 이번 글에서는 NoSQL(Not Only SQL, 비-관계형 데이터베이스)인 Firebase와 MongDB에 대해 정리해보려한다. 이번 포스팅에서 각 솔루션 별로 갖고있는 개념, 장점에 대해 알아보고 언제 어느 상황때 무엇을 써야하는지에 대해서 알아보자. Firebase ? MongoDB ? Firebase와 MongoDB는 모두 애플리케이션 개발자를 위한 강력하고 확장 가능한 최신 데이터베이스 플랫폼이다. 요즘 클라우드가 개발바닥을 지배하게되면서 급격히 부상했다. 두 엔진 모두 유사한 JSON과 문서 데이터 모델 및 스키마를 가진 사후 관계형 데이터베이스이다. 둘 다 애플리케이션 개발과 수평적 확장성을 쉽게 구축하기 위해 사용한다. 이 두 엔진은 결국엔 문서라는 객체를 엔터티로 사용한다. 뒤에서 .. Database/NoSQL 2022. 5. 26. [MSSQL] 작은 따옴표를 치환하는 방법 (쌍 따옴표 변환 / set quoted_identifier) 서론 REPLACE를 이용해 치환을 할 때 데이터에 작은 따옴표가 들어가면 STRING 처리가 되어 치환이 안되는데 이럴 경우 처리할 수 있는 방법에 대해 정리해보려한다. 문제 발생 위의 예시로 don`t로 바꿀 때 작은따옴표가 들어가면 문자열로 인식하여 문제가 발생한다. 이럴 경우 아래와 같이 작성하면 문제를 해결할 수 있다. 해결 방법 위 처럼 set quoted_identifier 속성을 사용하면 쌍 따옴표인 ""를 사용하여 처리할 수 있다. 업무에 참고하기 바란다. Database/RDBMS 2022. 4. 19. [MSSQL] Cursor문이란? (사용 방법 / 사용 이유 / 특징 정리) 커서(Cursor)란? 데이터 작업을 할 때 테이블에서 집합 단위가 아닌 행 단위로 처리를 해야할 때 사용하는 방식을 말한다. 보통 DML(SELECT, UPDATE, DELETE, INSERT)등으로 이뤄지며, 아래의 예시를 통해 확인해보자. 커서 특징 / 구조 특징 집합이 아닌 행 단위로 작업을 수행하기때문에 속도가 느리다. 프로그램에서 비유하면, 컬렉션을 루프를 돌려 한 인덱스 별로 처리하는 것과 같다고 보면 된다. 사용 방법 예제 시나리오 : "PEOPLE" 테이블에서 한 행마다 나이(age)를 1, 2, 3씩 커서문을 사용하여 증가시켜보자. 1. 테이블 생성 CREATE TABLE PEOPLE( NAME VARCHAR(10), AGE INT, ) INSERT INTO PEOPLE(NAME,AGE.. Database/RDBMS 2022. 1. 14. [MSSQL] 서브쿼리(SubQuery)란 무엇일까? / 특징 / 종류 / 예제 서브쿼리(SUBQUERY)란? 이번 글에서는 서브쿼리에 대해서 알아볼 것이다. 서브쿼리의 정의부터 알아보면, SELECT 쿼리문 안에 포함 되어있는 또 하나의 별도 SELECT 쿼리문을 말한다. 서브쿼리(SubQuery) 특징 여러 번의 Select문을 수행하여 얻을 수 있는 결과를 서브쿼리를 이용하여 하나의 쿼리로 결과를 얻을 수 있다. 메인쿼리가 서브쿼리를 포함하는 종속적인 관계가 있고 메인쿼리보다 먼저 실행된다. 사용할 때는 () 괄호를 잘 묶어줘야 한다. 서브쿼리 안에서 Order by 절은 사용할 수 없다. SELECT, FROM, WHERE, HAVING, ORDER BY, INSERT VALUES절, UPDATE SET절에서 사용할 수 있다. 서브쿼리(SubQuery) 종류 단일 행 서브쿼리.. Database/RDBMS 2021. 11. 28. [MSSQL] INSERT문의 기본적인 3가지 사용법 1. INSERT INTO ~ VALUES 방식 (기본구조) INSERT INTO [테이블명] (COL1,COL2,COL3..) VALUES (VAL1,VAL2,VAL3..) /* 원하는 컬럼에 원하는 값을 넣을 수 있는 기본 INSERT 구조 */ 2. INSERT INTO ~ SELECT 방식 (다른테이블에서 조건문을 사용하여 원하는 행만 넣고싶을 때 사용한다.) ** 주의사항 ** A 테이블의 컬럼에 맞게 B테이블 컬럼의 개수를 맞춰줘야한다. 예를 들어 A테이블이 A.COL1,A.COL2 처럼 두개가 있다면 B테이블도 조회할 때 B.COL1,B.COL2 이런식으로 맞추어야한다. INSERT INTO [테이블 A] SELECT COL1,COL2.. FROM [원하는 값이 들어있는 테이블 B] WHER.. Database/RDBMS 2021. 11. 26. [MSSQL] DBCC CHECKIDENT란 무엇일까? DBCC CHECKIDENT 명령어에 대한 정리이다. 해당 명령어는 identity(자동증가열)을 초기화시키는데 목적이 있다. 사용 방법은 아래의 예제와 같다. -- 입력한 테이블에서의 IDENTITY 값 확인 DBCC CHECKIDENT('[테이블명]', NORESEED) -- IDENTITY 값 변경 (IDENTITY값이 500으로 변경된다.) DBCC CHECKIDENT('[테이블명]', RESEED, 500) -- IDENTITY 값 초기화 (IDENTITY값을 0으로 초기화 시킨다.) DBCC CHECKIDENT('[테이블명]', RESEED, 0) 위의 예제처럼 identity의 값을 확인 및 수정할 수 있다. 보통 언제 쓰이냐면 -- Truncate로 테이블을 삭제하면 Identity값이 알.. Database/RDBMS 2021. 11. 23. [MSSQL] TRUNCATE vs DELETE 차이점 실무에서도 두 개의 차이를 대강 알고 사용했었지만 요번 SQLD를 준비하면서 위의 내용으로 문제를 하두 풀다보니 이제 두개의 차이점을 명확히 알겠다. 이렇게 기억하고 있을 때 메모해놓기 위해 글을 작성한다. 1. TRUNCATE 1-1. Truncate 특징 1) DDL 명령어이다. 2) 모든 레코드(행)를 삭제해버리는 특징이 있다. 3) 조건절 사용을 못한다 (where절 사용 불가) 4) IDENTITY를 초기화 할 수 있다. 5) 테이블 구조, 열, 제약조건, 인덱스는 그대로 남는다. 6) 트랜잭션 로그 공간을 덜 사용한다. > delete문은 행을 한번에 하나씩 제거하고 삭제된 각 행에 대해 트랜잭션 로그를 기록하게 된다. 그에 반해 truncate는 해당 테이블의 데이터 저장소의 페이지를 취소하.. Database/RDBMS 2021. 11. 23. [MSSQL] 프로시저 전체 삭제 쿼리 프로시저를 전체 삭제할 때 사용하는 쿼리이다. 보통 기존 sp에서 업데이트사항이 있어서 한번 갈아엎고 싶을 때 사용한다. 나온 결과 긁어서 실행시키면 끝. select 'drop procedure ' + name as command from sys.objects where type = 'P' Database/RDBMS 2021. 11. 17. [MSSQL] DB에 접속한 사용자 수 조회 DB에서 DB명을 바꾸거나 할 때 잠금이 걸려있어 에러가 발생할 때가 있다. 그럴 때 난 이 쿼리를 사용해서 몇명이 이 DB에 접근해있는지 확인할 때 사용한다. 여기서 조회 되는 접속자수는 나 또는 다른 pc에서 해당 DB에 접근해있는것이다. (ex : 해당 DB의 쿼리 편집창 켜놈, 해당 DB로 어느 프로그램에서 실행 중 등) Query) SELECT DB_NAME(dbid) as DB이름, COUNT(dbid) as 접속자수 FROM sys.sysprocesses WHERE dbid > 0 GROUP BY dbid ; 해당 정보를 바꾸고 싶을땐 해당 쿼리를 조회하고 접속해있는 수만큼의 사용자를 찾아내야 한다. (사용자를 찾는 것은 이전 글인 사용자 정보 조회 글을 참고할것.) https://jeong.. Database/RDBMS 2021. 11. 17. [MSSQL] DB 접속자 정보 조회 DB를 사용하다보면 현재 이 데이터베이스에 어떤 접속자가 접속해있는지 알고싶을 때가 있다. 보통은 DB정보를 바꾸고싶을 때 어느 사용자가 접근해있는지 확인하고 싶을때 사용함. 해당 쿼리를 실행하면 아래 컬럼의 별명 내용을 조회할 수 있다. Query) SELECT S.spid, S.loginame as '접속자명', S.login_time as '로그인 시간', S.last_batch as '마지막 실행시간', C.client_net_address as '접속 IP' , S.program_name as '접속 프로그램', S.cmd as '현재 실행중인 명령어' FROM sys.sysprocesses S, sys.dm_exec_connections C WHERE S.spid = C.session_id Database/RDBMS 2021. 11. 17. [MSSQL] SP 마지막 호출 시간 조회 현재 사용하고있는 데이터베이스에서 프로시저가 마지막으로 호출된 시간을 조회할 수 있는 쿼리이다. 사용 이유는 두가지이다. 1. 해당 DB에서 어떤 sp를 사용하고있는지 확인하고싶을 때. 2. 해당 sp가 마지막으로 언제 실행됐는지. Query) SELECT NAME, lastdate FROM (SELECT b.NAME, Max(a.last_execution_time) AS lastdate FROM sys.dm_exec_procedure_stats a INNER JOIN sys.objects b ON a.object_id = b.object_id WHERE Db_name(a.database_id) = '데이터베이스이름' GROUP BY b.NAME)z ORDER BY lastdate DESC Database/RDBMS 2021. 11. 17. 이전 1 2 다음 💲 많이 본 글