테이블에서 길이가 가장 긴 컬럼 찾기



SELECT top 1 * FROM 테이블 ORDER BY datalength(column) DESC 

'Develop > DB - mssql' 카테고리의 다른 글

키값 혹은 내부코드 자동 채번  (0) 2018.04.16
RAISERROR  (0) 2018.04.16
MS-SQL 테이블 복사  (0) 2018.02.02
SQL 기본 용어 정리  (0) 2016.12.28
DELETE vs DROP vs TRUNCATE  (0) 2016.12.27

MS-SQL 테이블 복사


1. 테이블을 생성하면서 테이블의 데이타 복사


select * into 생성될테이블명 from 원본테이블명


테이블 구조만 복사하겠다면

select * into 생성될테이블명 from 원본테이블명 where 1=2


2. 테이블이 이미 생성되어 있는경우 데이타만 복사


insert into 카피될테이블명 select * from 원본테이블명


특정 데이타만 복사 하겠다면

insert into 카피될테이블명 select * from 원본테이블명 where 검색조건


'Develop > DB - mssql' 카테고리의 다른 글

RAISERROR  (0) 2018.04.16
테이블에서 길이가 가장 긴 컬럼 찾기  (0) 2018.02.06
SQL 기본 용어 정리  (0) 2016.12.28
DELETE vs DROP vs TRUNCATE  (0) 2016.12.27
데이터 형식 우선 순위(Transact-SQL)  (0) 2016.12.21

SQL 기본 용어 정리


가상 메모리 (Virtual Memory)

Windows 운영 체제에서 하드디스크(HDD)의 일부분을 메모리(Memory)처럼 활용하는 기능


고가용성(HA, High Availability)

제공하는 업무 또는 서비스의 중단이 최소화 될 수 있도록 구성된 정도 또는 구성된 상태


구성 함수

현재 구성에 대한 정보를 얻을 수 있는 함수입니다


기본 키(Primary Key)

각 행을 구분하는 유일한 열


내부 쿼리 (Inner Query)

서브 쿼리 문장 자체로도 직접 실행이 가능한 서브 쿼리 형태


데이터 가져 오기 (FETCH)

커서를 연 후 데이터를 한 행씩 가져 올 수 있도록 지정


데이터 정렬(ORDER BY)

정렬이란 특정한 열을 기준으로 선택된 데이터들을 순서대로 다시 배열(Sort)하는 것


데이터 정의 언어 (DDL, Data Definition Language)

데이터가 저장될 틀을 만들고 또 만들어진 틀을 변경하는데 사용되는 명령어


데이터 제어 언어 (DCL, Data Control Language)

데이터베이스의 각 구성 요소 별로 접근 권한을 제어하는 명령어


데이터 조작 언어 (DML, Data Manipulation Language)

데이터를 조회(SELECT)하고, 추가(INSERT), 변경(UPDATE) 및 삭제(DELETE)하는데 사용


데이터 처리

실제 읽어진 데이터를 처리하는 문장을 작성 하는 부분


데이터베이스

테이블들의 집합들이 모여 저장되는 저장소


로그 백업

트랜젝션 로그 백업이라고도 하는데 데이터에대한 변경사항이 아닌 로그파일(.ldf)을 백업


미러링 (Mirroring)

똑같은 데이터를 2개 또는 그 이상의 하드 디스크에 동시에 기록하고 보존하여, 한쪽의 데이터가 파손되거나 손상(corrupt)되어도 컴퓨터가 데이터의 분실 없이 작업을 계속할 수 있게 하는 처리방법


변수선언

커서 내에서 사용할 변수 이름을 지정하는 것


별칭 (AS)

동일한 대상을 가리키는 다른 이름


뷰(View)

가상의 테이블 이라고 할 수 있으며, 테이블처럼 물리적으로 디스크 공간을 차지하지 않고, 논리적으로만 존재


비클러스터 인덱스

책의 색인과 같이 데이터 자체에는 변동이 없고 인덱스 자체적으로 데이터의 위치를 저장하는 인덱스


사용자 정의 저장 프로시저

사용자가 직접 T-SQL 문장을 이용해 필요한 기능을 생성한 저장 프로시저


상관 서브 쿼리(Correlated Subquery)

외부 쿼리와 서로 연관되어 실행되는 서브 쿼리


서버 커서 (Server Side Cursor)

SQL Server 2005 상 에서 동작하는 커서로서 T-SQL 문장 형식을 이용하여 작성


서브 쿼리

다른 쿼리 명령어 안에 있는 쿼리 명령어


수치 연산 함수

수치 연산을 다루는 함수로 절대값, 자릿수 맞추기, 제곱근, 거듭제곱을 돌려주는 등 수와 관련된 함수를 가지고 있음.


스칼라 값 (Scalar Value)

물리학에서 사용되는 용어로, 방향을 가지고 있지 않고 크기만 가지고 있는 물리량을 뜻함. 크기를 나타낸 수에 단위를 붙여 그대로 사용하며, 질량이나 온도 등이 이에 속함. SQL Server 2005 에서는 숫자 값과 짧은 문자열 정도를 스칼라 값이라고 칭함.


스칼라 값 함수

사용자 정의 함수의 종류로서 스칼라 값 함수는 숫자값, 문자열 등의 스칼라 데이터 형식을 되돌려 주게 됨


시스템 저장프로시저

SQL Server를 관리하기 위해서 SQL Server 시스템에서 기본적으로 제공해주는 저장 프로시저


시스템 함수

시스템 함수는 SQL Server에서 제공하고 있는 함수로서 우리가 수정하거나 삭제할 수 없음


식별자

데이터베이스, 테이블, 열 등과 같은 개체들을 구분할 수 있는 이름


열(Column)

각 테이블은 열로 구성


예약어

예약어는 데이터 정의 언어 (DDL, Data Definition Language), 데이터 조작 언어 (DML, Data Manipulation Language), 데이터 제어 언어 (DCL, Data Control Language) 에 속하는 모든 명령어


웹 서버 (WEB Server)

인터넷의 WEB 기반 서비스를 제공해 주는 소프트웨어(Software)를 말함. 예를 들어 Internet Explorer 프로그램으로 Naver WEB사이트에 접속 할 때 Naver 서버 측의 웹 서버 소프트웨어가 응답을 해주게 됨.


유니코드

컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드


이진

0과 1만으로 된 체계를 말한다. 컴퓨터는 모든 데이터를 0과 1 코드로 이진 체계를 이용하여 데이터를 처리


인덱스

데이터들이 어디에 있는지에 대한 정보를 담고 있는 작은 공간


인스턴스(instance)

SQL Server 프로그램은 하나지만, 마치 여러 개의 SQL Server가 운영 중인 것처럼 구성 할 수 있음. 하나의 SQL Server를 여러 개의 인스턴스로 나누어 구성하여 서비스 할 수 있다는 의미


장애조치(Fail-Over)

H/W 또는 서비스의 예상치 못한 장애 발생 시 다른 자원을 통해 서비스가 제공 되도록 조치하는 일련의 활동


저장 프로시저

자주 사용되는 T-SQL 쿼리 문장을 별도의 이름으로 저장하여 필요할 때마다 호출하여 사용할 수 있도록 구성한 것


전체 백업

데이터베이스의 전체를 백업 하는 것


주석문

주석처리가 된 해당 쿼리문을 인식하지 않도록 할 때 사용


집계 함수

데이터의 평균이나 합계 등을 구하는 데에 사용하는 다양한 함수


차등 백업

마지막 전체 백업 이후에 변경된 모든 데이터를 백업하는 것. 반드시 전체 백업을 받은 후에 수행.


커서 선언 (DECLARE)

커서의 이름과 어떻게 사용 될지를 정의 하는 부분


커서 열기 (OPEN)

선언된 커서를 열도록 지정 하는 부분


커서 할당 해제

선언된 커서의 할당을 해제


커서(Cursor)

단위 별로 반복적인 데이터 가공 작업이 필요한 경우에 사용


클라이언트 커서 (Client Side Cursor)

Web 서버 등 SQL Server 2005 입장에서 보았을 때 데이터를 요청하는 클라이언트(Client) 에서 동작하는 커서


클러스터 인덱스

사전과 같이 실제 데이터 자체가 인덱스의 순서와 동일하게 정렬되어 있는 인덱스


클러스터링 (Clustering)

고가용성(HA)을 제공 하기 위해 장애조치(Fail-Over)가 가능 하도록 시스템 구성을 설계하고, 구축하는 활동 또는 구축된 상태


테이블

회원과 제품의 데이터를 저장하기 위한 표 형태의 틀


테이블 값 함수

사용자 정의 함수의 종류로서 되돌려 주는 결과 값이 테이블인 함수


트랜젝션 (Transaction)

데이터에 변경을 가하는 묶음 단위를 칭함. 한 건의 변경이 하나의 트랜젝션이 될 수도 있고, 여러 건의 변경을 하나의 트랜젝션으로 묶을 수도 있음


트랜젝션 로그 (Transaction Log)

발생된 트랜젝션에 대한 일련의 기록. 즉 데이터가 변경된 이력을 트랜젝션 단위로 기록한 이력


트리거

어떠한 이벤트가 발생할 때 자동적으로 실행되게 하는 일종의 저장 프로시저


함수

사용 하려고 하는 용도에 맞는 기능을 프로그램화 하여 T-SQL 문에서 필요할 때마다 호출하여 사용할 수 있는 것


행(row)

테이블을 구성하고 있는 실질적인 데이터


확장 저장프로시저

데이터베이스에서 직접 구현하기 힘든 어려운 기능을 C언어를 통해서 구현되어진 저장프로시저


확장자

파일 종류를 구별하기 위하여 파일명 중 맨 마지막의 마침표 뒤에 붙이는 문자


CLR (Common Language Runtime, 공용 언어 런타임)

어플리케이션 프로그램 개발에 사용 되는 서로 다른 언어(Language)들을 공통으로 실행 시킬 수 있도록 해주는 기반 환경


Cache (캐시)

일반적으로 빠른 명령 처리를 하기 위해 자주 쓰이게 될 데이터 들은 속도가 빠른 메모리에 미리 저장 하고 있는 것


HTTP (Hyper Text Transfer Protocol)

인터넷에서 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약


IIS (Internet Information Service)

Microsoft에서 만든 웹 서버 소프트웨어(Software)로 Windows 서버 O/S에 내장되어 제공


INNER JOIN

가장 대표적인 JOIN 방식이며 ON 절을 통하여 지정한 조건에 맞는 데이터만을 골라서 보여줌


JOIN

두 개 이상의 테이블에서 조건에 맞는 자료들을 가져와 하나의 결과 집합으로 보여주는…


MDAC(Micro Data Access Component)

클라이언트 개인용 컴퓨터(PC)와 서버 데이터베이스를 연결하는 마이크로소프트(Microsoft)의 '데이터베이스 드라이버 모음


MULTI_USER 모드 (다중 사용자 모드)

데이터베이스의 디폴트 모드로서 데이터베이스에서 접근 가능한 사용자 명을 가진 사람이면 누구든지 데이터베이스에 연결할 수 있다는 것.


master

SQL Server 2005 구동을 위해 가장 중요한 데이터 베이스 입니다. DBMS 전반의 설정 정보와, 데이터 베이스 구성 정보, 계정 정보 등 중요한 목록이 저장


model

사용자 들이 데이터베이스를 새로 만들 때 기본 틀이 되는 데이터베이스


msdb

SQL Server 2005의 구성 요소 중 하나인 SQL Server Agent가 사용하는 데이터베이스


OUTER JOIN

ON 절을 통하여 지정한 조건에 맞는 데이터를 고르되 기준으로 지정된 테이블 열에 있는 데이터를 기준으로 JOIN 된 행을 모두 조회하고 값이 없는 경우 NULL 로 표시하여 출력


RESTICTED_USER 모드 (제한적 사용자 모드)

db_owner 역할 및 dbcreator와 sysadmin 멤버만 데이터베이스에 연결할 수 있음. 접근할 수 있고 수에는 제한이 없음.


SINGLE_USER 모드 (단일 사용자 모드)

한 명의 관리자에 의해 한 개의 연결만을 가질 수 있다는 것


SQL Server

Microsoft(마이크로소프트)에서 출시한 관계형 DBMS 제품


sa 계정

System Administrator의 약자로 SQL Server 2005의 전체 기능을 총괄 할 수 있는 사용자


T-SQL

마이크로소프트의 SQL Server에서 사용되는 SQL 언어


tempdb

이름 그대로 SQL Server 2005가 임시로 사용하는 데이터베이스


UNION

두 쿼리 명령어의 결과로 나온 결과 집합을 하나로 합쳐서 출력하는 데에 사용


UNION ALL

UNION 과 동일하나 중복된 데이터를 제거하지 않고 그대로 보여줌

'Develop > DB - mssql' 카테고리의 다른 글

테이블에서 길이가 가장 긴 컬럼 찾기  (0) 2018.02.06
MS-SQL 테이블 복사  (0) 2018.02.02
DELETE vs DROP vs TRUNCATE  (0) 2016.12.27
데이터 형식 우선 순위(Transact-SQL)  (0) 2016.12.21
char vs varchar vs nvarchar  (0) 2016.12.21

DELETE vs DROP vs TRUNCATE

TABLE에서 행을 삭제하는 세 가지 방법이 있다.  DELETE, DROP, TRUNCATE 의 3가지 방법이 있는데 각각에 대해서 알아본다. 


결론부터 말하자면,

Delete : 데이터만 삭제하고 Commit이전에는 Rollback이 가능하다. 데이터를 모두 Delete해도 사용했던 Storage는 Release되지 않는다.

DROP : 테이블의 정의 자체를 완전히 삭제함하고 Rollback 불가능하다. 또한, 테이블이 사용했던 Storage를 모두 Release 한다.

Truncate : 테이블을 최초 생성된 초기상태로 만들고, Rollback 불가능하다. 테이블이 사용했던 Storage중 최초 테이블 생성시 할당된 

Storage만 남기고 Release 된다.


 방

장점

단점 

 DELETE(DML)

원하는 데이터 삭제

테이블의 용량 감소X 

 TRUNCATE (DDL)

테이블 자료들 모두 삭제 

원하는 데이터만 삭제불가능, 복구가 굉장히 힘듬

 DROP (DDL)

이블 자체의 삭제


1. DELETE

DELETE 명령어를 사용하여 TABLE의 행을 삭제할 수 있다. 

DELETE 문을 사용할 때 TABLE이나 CLUSTER에 행이 많으면 행이 삭제 될 때마다 많은 SYSTEM 자원이 소모된다.

예를 들어 CPU 시간,REDO LOG 영역,  TABLE이나 INDEX에 대한 ROLLBACK SEGMENT 영역 등의 자원이 필요하다. TRIGGER가 걸려있다면 각 행이 삭제될 때 실행된다. 이전에 할당되었던 영역은 삭제되어 빈 TABLE이나 CLUSTER에 그대로 남아 있게 된다.

사용법 : DELETE FROM 테이블명 (WHERE 조건) 조건은 생략가능

 

2. DROP

TABLE을 삭제한 다음 재생성할 수 있다. TABLE이나 CLUSTER를 삭제하고 재생성하면 모든 관련된 INDEX, CONSTRAINT,TRIGGER도 삭제되며, 삭제된 TABLE이나 CLUSTERED TABLE에 종속된 OBJECTS는 무효화 된다. 삭제된 TABLE이나 CLUSTERED TABLE에 부여된 권한도 삭제된다.

사용법 : DROP TABLE 테이블명

 

3. TRUNCATE 

SQL명령어 TRUNCATE를 사용하여 TABLE의 모든 행을 삭제할 수 있다. TRUNCATE 명령어는 TABLE이나 CLUSTER에서 모든 행을 삭제하는 빠르고 효율적인 방법이다. TRUNCATE 명령어는 어떤 ROLLBACK 정보도 만들지 않고 즉시 COMMIT하고, DDL 명령문으로 ROLLBACK될 수 없다.

TRUNCATE 명령문은 잘라 버릴 TABLE과 관련된 구조(CONSTRAINT, TRIGGER 등)과 권한에 영향을 주지 않고, TABLE에서 ROW를 삭제하면 해당 TABLE에 걸려 있는 TRIGGER는 실행되지 않는다.

AUDIT 기능이 ENABLE되어 있으면, TRUNCATE 명령문은 DELETE 문에 해당하는 AUDIT 정보를 생성하지 않는다. 대신 발생한 TRUNCATE 명령문에 대한 단일 AUDIT RECORD를 생성한다.

TRUNCATE TABLE 테이블명


'Develop > DB - mssql' 카테고리의 다른 글

MS-SQL 테이블 복사  (0) 2018.02.02
SQL 기본 용어 정리  (0) 2016.12.28
데이터 형식 우선 순위(Transact-SQL)  (0) 2016.12.21
char vs varchar vs nvarchar  (0) 2016.12.21
DB 백업 종류  (2) 2016.12.07

데이터 형식 우선 순위(Transact-SQL)

연산자로 데이터 형식이 다른 두 식을 결합할 경우 데이터 형식 우선 순위 규칙에 따라 우선 순위가 낮은 데이터 형식이 우선 순위가 높은 데이터 형식으로 변환된다. 이때 변환이 암시적으로 지원되지 않으면 오류가 반환됩니다. 피연산자 식이 같은 데이터 형식일 경우에는 연산 결과도 같은 데이터 형식이 된다.

SQL Server에서는 데이터 형식에 다음 우선 순위를 사용한다.

  1. 사용자 정의 데이터 형식(가장 높음)

  2. sql_varian t

  3. xml

  4. datetimeoffset

  5. datetime2

  6. 날짜/시간

  7. smalldatetime

  8. 날짜

  9. 시간

  10. 부동 소수점

  11. 실제

  12. 10 진수

  13. 비용

  14. smallmoney

  15. bigint

  16. int

  17. smallint

  18. tinyint

  19. 비트

  20. ntext

  21. text

  22. image

  23. 타임 스탬프

  24. 고유 식별자

  25. nvarchar (포함 하 여 nvarchar (max) )

  26. nchar

  27. varchar (포함 하 여 varchar (max) )

  28. char

  29. varbinary (포함 하 여 varbinary (max) )

  30. 이진 (최소)


출처  : https://msdn.microsoft.com/ko-kr/library/ms190309.aspx

char vs varchar vs nvarchar


문자열 자료형에는 크게 String과 char가 있다.

저번에 String에 대해서 했으니 이번엔 char에 대해서 알아본다. 


간단하게 말하자면,

 

 char

varchar

nvarchar 

특징

고정 값

변동 값 

변동 값 

예시

주민등록번호, 사번

주소, 과목명

이름, 지명 

특이사항 


 

유니코드 문자열


DB 백업의 종류

DB 백업에는 3가지 백업 방식이 있는데 대표적으로 완전백업, 차등백업, 로그백업 총 세 가지가 있다.



1) Full Backup

하나부터 열까지 모든 것을 백업하는 방식이다. mdf 파일에 들어있는 모든 데이터를 백업을 받는다.

그런데 풀 백업이 이루어지는 동안에도 트랜잭션이 계속 진행되기 때문에 실제로는 아직 Commit되지 않은 작업이 백업 시 포함될 수 있다. 나중에 이 백업을 Restore 했을 때 Commit되지 않은 데이터가 들어있다면 데이터가 이상해 질 것이다. 그래서 실제로 풀 백업을 받을 때는 현재 진행중인 트랜잭션에 대한 트랜잭션 로그도 함께 백업된다.

풀 백업이 중요한 것은, 풀 백업이 보관되어 있지 않다면 Differential Backup이나 트랜잭션 로그 백업을 아무리 열심히 받았어도 아무 소용이 없기 때문이다.


2) Differential Backup (차등 백업 or 차분 백업)

이건 OS 백업 받을 때의 Differential Backup과 유사하다. "가장 마지막에 Full Backup 받은 이후의 변경 부분에 대한 백업"이다. 마지막에 받은 Differential Backup 이후의 변경사항을 백업 받는 것이 아니다. (SQL Server에는 Incremental Backup이란 개념이 없다.) 만약 10월 1일에 풀 백업을 받은 후 10월 5일, 10일 15일에 Differential 백업을 받았다면 DB를 15일자로 되돌리기 위해서는 10월 1일 풀 백업을 Restore한 후 15일자Differential 백업을 Restore하면 된다. (Intremental Backup과 달리 5일, 10일, 15일자를 모두 Restore할 필요가 없다.)


3) Transaction Log Backup (로그 백업)

트랜잭션 로그 백업에 대해 이해하려면 먼저 트랜잭션 로그란 놈에 대해서 알아보자

트랜잭션 로그란 SQL Server에서 실행되는 모든 SQL문을 기록한 로그이다. 어느 세션이 어떤 SQL을 실행했는지가 순차적으로 기록된다. 우리가 트랜잭션을 Rollback 시켰을 때 Begin Tran 시점 이전으로 되돌릴 수 있는 것은 트랜잭션을 시작한 이후의 모든 작업내용이 트랜잭션 로그에 기록되어 있기 때문이다 


로그 백업은 위의 데이터 백업과는 다른 몇 가지 특성이 있다.


① 일단 백업된 트랜잭션 로그는 자동으로 삭제된다. 이때 ldf파일 사이즈가 줄어들지는 않지만 ldf 내에서 로그가 삭제되기 때문에 해당 ldf 파일에는 새로운 로그를 기록할 수 있는 빈 공간이 확보된다. 따라서, 주기적으로 트랜잭션 로그를 백업 받으면, 별도로 로그를 삭제하지 않더라도ldf 파일이 계속 커지는 것을 방지할 수 있다.


② 트랜잭션 로그는 가지고 있는 최신 풀 백업 혹은 풀 백업 + DifferentialBackup 세트로부터 복원을 원하는 시점까지의 모든 백업 본이 존재하지 않으면 아무 의미가 없다. 백업 받은 로그 중 한 세트라도 분실하면 소용 없다는 의미다.  물론 풀 백업을 한번도 받은 적이 없다면 트랜잭션 로그는 소용없다.


③ 트랜잭션 로그가 온전하다면 Fault가 발생한 Database를 Fault 발생 직전의 시점으로 복원할 수 있다. 또한, 특정 시점으로의 Rollback 등 미세한 복원이 가능하다.

MSSQL 오류 : 서버가 단일 사용자 모드에 있으므로 지금은 한 관리자만 연결할 수 있습니다.

 

DB 접근시 아래와 같은 오류가 발생했다.

 

오류 문구 : 서버가 단일 사용자 모드에 있으므로 지금은 한 관리자만 연결할 수 있습니다.

 

해결방법은 여러명의 사용자가 연결 할 수 있도록 /f 옵션값을 넣어 서비스를 시작한다.

방법은 아래와 같다.

 

- 해결방법

    1. 서비스 재시작 

        1) net stop mssqlserver

        2) net start mssqlserver /f  

 

 

'Develop > DB - mssql' 카테고리의 다른 글

SQL 기본 용어 정리  (0) 2016.12.28
DELETE vs DROP vs TRUNCATE  (0) 2016.12.27
데이터 형식 우선 순위(Transact-SQL)  (0) 2016.12.21
char vs varchar vs nvarchar  (0) 2016.12.21
DB 백업 종류  (2) 2016.12.07

+ Recent posts