ctrl+alt+t 눌러서 터미널을 연다


sudo vi /etc/mysql/my.cnf


[client]

default-character-set=utf8


[mysql]

default-character-set=utf8



[mysqld]

collation-server = utf8_unicode_ci

init-connect='SET NAMES utf8'

character-set-server = utf8


$ service mysql restart



혹은



# client 부분밑에 추가

[client]

default-character-set = utf8


mysqld 부분밑에 추가

[mysqld]

init_connect = SET collation_connection = utf8_general_ci

init_connect = SET NAMES utf8

character-set-server = utf8

collation-server = utf8_general_ci


mysqldump 부분밑에 추가

[mysqldump]

default-character-set = utf8


# mysql 부분밑에 추가

[mysql]

default-character-set = utf8


다 셋팅 하고나서
sudo /etc/init.d/mysql restart로 재시작!


출처: http://bizadmin.tistory.com/entry/우분투-Linux-mysql-한글-설정-하기 [Happy Resource]

출처:https://otoong.tistory.com/entry/MYSQL-%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%83%80%EC%9E%85-1-column-type


 MySQL의 문자열 타입은 주로 텍스트를 저장하는데 쓰이지만, 임의의 데이터를 담을 수 있는 범용 타입이다. 이 타입들은 최대 길이가 변하는 값들을 담을 수 있고 대 소문자를 구별해서 처리하는 지에 따라 선택할 수 있다.

MySQL 4.1부터 CHAR, VARCHAR 그리고 TEXT 타입에 대해 문자 세트를 특정 칼럼에 적용할 수 있다. 문법은 CHARACTER SET charset 이고, 여기서 charset은 latin1, greek혹은 utf8과 같은 문자 세트 식별자이다. 서버에 의해 지원되는 허용되는 문자 세트는 SHOW CHARACTER SET문을 실행해서 정해질 수 있다. CHAR이나 VARCHAR 칼럼에 대해 문자 세트를 적용하면 보통 이들 타입에 허용되는 BINARY 속성의 사용이 미리 막혀 버린다는 것에 주의하라.

CHAR [ (M) ]

의미 : 0부터 M바이트 길이의 고정 길이의 문자를 가진 문자열. M은 0부터 255이하의 정수 값 이어야 한다. M을 생략하면 1이 기본값으로 주어진다. M문자보다 큰 문자열은 저장할 때 M길이로 잘린다. M보다 짧은 문자열은 저장될 때 오른쪽이  공백문자로 채워진다. 채워진 공백은 값을 가져올 때 제거된다.
가능한 속성 : BINARY, CHARACTER SET
허용되는 길이 : 0부터 M바이트
기본 값 : 칼럼이 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : M바이트
비교 : BINARY속성이 지정되지 않으면, 대소문자를 비교하지 않음
동의어 : 인자 없는 CHAR는 CHAR(1)에 대한 동의어이다.


VARCHAR [ (M) ]


의미 
: 0부터 M바이트 길이의 가변 길이 문자열. M은 0부터 255미만까지의 정수라야 한다. M문자보다 긴 문자열은 저장될 때 길이 M까지로 잘려나간다. 뒤쪽의 공백문자들은 저장될 때 제거된다.
허용되는 속성들 : BINARY, CHARACTER SET
허용되는 길이 : 0부터 M바이트
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : 값의 길이에 그 길이를 기록하기위한 1바이트를 더함
비교 : BINARY 속성이 지정되지 않으면 대소문자 구별하지 않음
동의어 : CHAR VARYING(M). MySQL 3.23.5부터 NCHAR VARYING(M)와 NATIONAL CHAR VARYING(M)는 VACHAR(M)에 대한 동의어이다.


TINYBLOB


의미 
: 작은 BLOB값
허용되는 속성들 : 전역 속성 외에는 없음
허용되는 길이 : 0부터 255바이트
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : 값의 길이에 그 길이를 기록하기 위한 1바이트를 더함
비교 : 대소문자 구별함


BLOB


의미 
: 보통 크기의 BLOB값
허용되는 속성들 : 전역 속성 외에는 없음
허용되는 길이 : 0부터 65535바이트
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : 값의 길이에 그 길이를 기록하기 위한 2바이트를 더함
비교 : 대소문자 구별함


MEDIUMBLOB


의미 
: 중간 크기의 BLOB값
허용되는 속성들 : 전역 속성 외에는 없음
허용되는 길이 : 0부터 16777215바이트
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : 값의 길이에 그 길이를 기록하기 위한 3바이트를 더함
비교 : 대소문자 구별함
동의어 : LONG VARBINARY


LONGBLOB


의미 
: 큰 BLOB값
허용되는 속성들 : 전역 속성 외에는 없음
허용되는 길이 : 0부터 4294967295바이트
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : 값의 길이에 그 길이를 기록하기 위한 4바이트를 더함
비교 : 대소문자 구별함


TINYTEXT


의미 
: 작은 크기의 TEXT값
허용되는 속성 : CHARACTER SET
허용되는 길이 : 0부터 255바이트
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : 값의 길이에 그 길이를 기록하기 위한 1바이트를 더함
비교 : 대소문자를 구별하지 않음


TEXT


의미 
: 보통 크기의 TEXT값
허용되는 속성들 : CHARACTER SET
허용되는 길이 : 0부터 65535바이트
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : 값의 길이에 그 길이를 기록하기 위한 2바이트를 더함
비교 : 대소문자를 구별하지 않음


MEDIUMTEXT


의미 
: 중간 크기의 TEXT값
허용되는 속성 : CHARACTER SET
허용되는 길이 : 0부터 16777215바이트
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : 값의 길이에 그 길이를 기록하기 위한 3바이트를 더한다.
비교 : 대소문자를 구별하지 않음


LONGTEXT


의미 
: 큰 TEXT값
허용되는 속성들 : CHARACTER SET
허용되는 길이 : 0부터 4294967295바이트
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 문자열)
필요한 저장공간 : 값의 길이에 그 길이를 저장하기 위한 4바이트를 더함
비교 : 대소문자를 구별하지 않음


ENUM ('value1', 'value2', ···)


의미 
: 열거값. 값의 목록 중 정확학 하나의 수에 할당되는 칼럼값
허용되는 속성들 : 전역 속성
디폴트 값 : 칼럼에 NULL이 가능하면 NULL, 그렇지 않으면 첫 번째의 열거 값
필요한 저장공간 : 1부터 255 개의 멤버까지의 열거형에 대해서는 1바이트, 255부터 65536멤버까지의 열거형에 대해서는 2바이트
비교 : 대소문자를 구별하지 않음


SET ('value1', 'value2', ···)


의미 
: 집합. 값 목록 중 영 또는 그 이상의 멤버를 할당할 수 있는 칼럼값
허용되는 속성들 : 전역 속성
디폴트 값 : 칼럼이 NULL이 가능하면 NULL, 그렇지 않으면 ''(빈 집합)
필요한 저장공간 : 1부터 8까지의 멤버가 있는 집합에 대해서는 1바이트, 9부터 16까지의 멤버가 있는 집합에 대해서는 2바이트, 17부터 24까지의 멤버가 있는 집합에 대해서는 3바이트, 25에서 32까지의 멤버가 있는 집합에 대해서는 4바이트, 그리고 33부터 64까지의 멤버가 있는 집합에 대해서는 8바이트
비교 : 대소문자를 구별하지 않음



출처: https://otoong.tistory.com/entry/MYSQL-문자열-타입-1-column-type [OT연구소]

출처: https://toma0912.tistory.com/47

 

안녕하세요. 오늘은 제약사항에 대해서 포스팅 해보려고 합니다. 우선 '제약 조건'의 의미에 대해서 알아보고 간단한 예제를 통해 제약 조건에 대해서 알아보겠습니다.

 

제약조건(Constraint)?

 

제약조건(Constraint)이란, 데이터의 무결성을 지키기 위해 제한된 조건을 의미합니다. 즉, 데이터를 삽입할 때 무조건적으로 삽입되는 것이 아니라 어떠한 조건을 만족했을 경우에만 데이터가 삽입되도록 제약을 할 수 있는 것이라고 생각하시면 됩니다.

 

우선 기본적인 제약 조건들의 사용법에 대해서 알아보겠습니다.

// 제약조건 확인하기

DESC 데이터베이스 명.테이블 명;

 

// 제약조건 삭제

ALTER TABLE [테이블 명] DROP CONSTRAINT [제약조건 이름];

ALTER TABLE [테이블 명] DROP FOREIGN KEY [제약조건 이름];

 

// 제약조건 추가

외래키 : ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 이름] FOREIGN KEY(컬럼 명)

REFERENCES [부모테이블 명](PK 컬럼 명) [ON DELETE CASCADE / ON UPDATE CASCADE];

 

기본키 : ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 이름] PRIMARY KEY(컬럼 명);

 

// NOT NULL 제약 조건 추가

ALTER TABLE [테이블 명] MODIFY [컬럼 명] [데이터 타입] CONSTRAINT [제약조건 이름] NOT NULL;

 

우선, 기본적으로 테이블을 생성할 때 제약 조건을 아래와 같이 추가할 수 있습니다. 그리고 나서 간단한 예제를 통해 위의 제약조건에 대해서 알아보겠습니다.

 

 

제약 정의

 

 

위의 테이블 생성 코드를 살펴보면, a 열에는 NOT NULL  제약이 걸려 있습니다. b 열에는 NOT NULL 제약과 UNIQUE 제약이 걸려 있습니다.

c 열에는 아무런 제약사항이 없는 것을 확인할 수 있습니다. 이처럼 열에 정의하는 제약을 '열 제약'이라 부릅니다.

 

또다른 예제로 테이블에 제약을 정의하는 방법에 대해서 알아보겠습니다.

위 코드를 살펴 보시면, 제약에는 이름을 붙일 수 있습니다. 제약에 이름을 붙이면 나중에 관리하기 쉬워지므로 가능한 한 이름을 붙이도록 합니다. 제약 이름은 CONSTRAINT 키워드를 사용해서 지정합니다.

 

 

제약 추가

 

1) 열 제약 추가

 

ALTER TABLE 구문을 사용해서 c열에 NOT NULL 제약 조건을 추가한 뒤, 테이블을 보면 기본 생성 테이블과 다르게 NULL에 NO라고 제약이 추가된 것을 확인할 수 있습니다.

 

2) 테이블 제약 추가

 

테이블 제약은 ALTER TABLE의 ADD 하부명령으로 추가할 수 있습니다. 기본키는 테이블에 하나만 설정할 수 있으며, PRIMARY KEY 키워드를 사용해서 a를 기본키로 지정했습니다. 그리고, 이미 기본키가 설정되어 있는 테이블에 추가로 기본키를 작성할 수는 없습니다.

 

 

제약 삭제

 

1) 열 제약 삭제

 

기본적으로 열 제약 삭제의 경우에는 제약조건 수정과 마찬가지로 ALTER TABLE 구문을 사용합니다. 위의 코드를 살펴보시면, sample631 테이블의 c열의 NOT NULL 제약조건을 삭제한 것을 확인할 수 있습니다.

 

2) 테이블 제약 삭제

위의 코드를 살펴보시면, DROP 명령어를 통해 삭제할 제약 조건인 PRIMARY KEY를 삭제하는 것을 확인할 수 있습니다.  

 

이것으로 MySQL 제약조건 추가, 수정 및 삭제에 대해 간단히 알아보았고, 포스팅을 마치도록 하겠습니다. : )



출처: https://toma0912.tistory.com/47 [토마's 개발노트]

SHOW CREATE TABLE mytable;



1. Database 관련 Naming Rule

가.  Database Schema Name

1)   규칙

    Database Profile 이름을 의미함

    DB Alias 이름과 동일하게 

    영문 대문자로 작성함

    Database Short Name 길이는 최대 8자리를 넘을  없음

    Database Short Name  Site Unique Name 사용함

 

2)   표기 방식

<Database Short Name>
) TOURDB, ETKP, TKS

 

나.  Table Name

1)   규칙

    테이블임을 표시하기 위해 테이블  뒤에 _TB 라는 구분을 사용함

    테이블명은 대문자로 사용함

    시스템 구분 코드와 모듈구분코드로 업무 영역을 구분함

    의미있는 테이블명은 3단어까지 사용할  있음

    단어와 단어 사이는 _ 구성함

     단어는 최대 8자리까지 사용함

    구분명은 Table 특성을 나타냄

    예로는 Master, Detail, Control, Summary, Trigger, History 등이 있음

 

2)   표기 방식

<시스템 구분> + _ + <의미있는 테이블명> + _ + TB

사용자 테이블 : ACT_USERS_TB

 

다.  Column Name

1)   규칙

    물리명은 영문 대문자를 이용함논리명을 사용자가   있는 정도에서 명사  명사형동사를 사용함

    Column 대한 자리수는  12자리로 하며제한은 없음

사용하는 Database의 특성에 따라 제한될 수 있음

    Word Word 사이에는 _ 구분함

     Word 8자리를 넘을  없음

    모든 Column Dictionary List 등록된 약어사전  자료사전을 기초로 작성함

    Dictionary List 등록되지 않은 약어는 책임자의 동의 하에 등록함

    Column Name 약어의 조합으로 구성

    컬럼명에 컬럼을 대표하는 접미사를 사용하여 컬럼명의 성격을 나타냄.

 

2)   표기방식

<의미있는 컬럼명혹은 <의미있는 컬럼명> + _ + 접미사
종종 자주 사용하는 접미사는 다음과 같다.

접미사

내용

설명

_CD

CODE

주로 코드 테이블의 코드각종 코드에 사용된다숫자나 문자로이루어진 코드에 해당되며숫자나 문자의  부분이 의미가 있는 경우에 코드를 사용한다대부분 PK 해당한다.
대분류 코드 CTGRY_CD, 시도코드 SIDO_CD, 사용자 그룹 코드 USER_GROUP_CD 

_NM

NAME

코드에 대한 명칭에 주로 사용된다논리명이 이름명칭인 경우에 해당된다.
사용자이름 USER_NM, 자원명
 RES_NM,
중분류 코드명 DVSN_NM, 메뉴명 MENU_NM

_NO

NUMBER

숫자로만 이루어진 경우주로 논리명이 번호인 경우에 사용.
주민등록번호 JUMIN_NO, 조문번호
 JO_NO,
게시물번호 BOARD_NO

_SQ

SEQUENCE

오라클의 Sequence, MSSQL Identity 경우에 사용한다숫자 일련번호로 PK 설정할 경우 SQ 사용한다. MSSQLIdentity 경우 주로 _ID 사용하는 경우가 많은데사용자 아이디  USER_ID ID 의미가 틀려 SQ 사용한다.
작업번호 WORK_SQ, 이력번호 HISTORY_SQ

_ID

ID

주로 사용자 아이디의 경우에 사용한다.
사용자아이디 USER_ID, 등록자아이디 REG_ID

_DT

DATE

날짜의 경우 사용한다. DT 날짜 타입이 DATE형인 경우에만사용한다보통 날짜의 경우 CHAR(8)형으로 20050718식으로저장을 많이 한다이런 경우에는 _YMD 사용한다.
삭제일자 DEL_DT, 변경일자 CHG_DT

_YMD

YYYYMMDD

날짜의 경우 사용한다날짜 타입이 CHAR 인경우 사용한다년월일인 경우 _YMD 사용하고년월형식으로 CHAR(6) 저장될 경우 _YM 사용한다년도일자 인경우에는 YEAR, MONTH, DAY등의 컬럼명을 사용한다.

_GB

구분

구분값을 나타낼  사용한다. CD 주로 코드테이블을 별도로사용할  적당하고테이블 없이 코드상에서 구별할  사용한다가령 사용자구분 필드가 있을  일반사용자내부사용자가있다면 별도의 사용자 그룹테이블로 분리하여 사용할 경우GROUP_CD 필드명이 되지만코드상에서 일반(G), 내부(I)사용하기로 결정했다면 GROUP_GB 필드명을 사용하면 된다
통계구분 STAT_GB

_ST

STATE

상태값이다주로 CHAR(1) 형식을 사용한다.
사용자 상태 USER_ST

_FL

FLAG

플레그값이다종종 삭제하지 않는 테이블에 삭제플레그를 많이사용된다값은 0/1 이나 Y/N 많이 사용한다
삭제여부 DEL_FL, 요청여부 REQ_FL

_ORD

ORDER

순서를 나타낼  사용한다.
컬럼순서 COLUMN_ORD

_CNT

COUNT

조회수 VIEW_CNT

_AMT

AMOUNT

재고량 STOCK_AMT

_SUM

SUM

분기합계 QTR_SUM, 년도합계 YEAR_SUM

 

 

3)   순서규칙

    기본적으로 관계형 모델에서 (Column) 순서는 의미가 없음그러나물리적인 형태로 생성되어 관리될 때에는 보다 효율적인 저장공간의 관리를 위해 다음 순서에 따라 우선순위를 결정함

    Primary Key 우선함

    Primary Key내에서는 Index 의미에 따라 순서를 결정함

    Not Null Columns 우선함

 

    Not Null Columns 내에서는 Foreign Key, Attributes 순서로 

    Null Columns 내에서는 다음의 규칙에 따라 순서를 결정함

    Fixed Length Columns 우선함(Date,Number,Char)

    Smaller Length Column 우선

 

라.  Index Name

1)   규칙

    해당하는 테이블명 뒤에 _IX 붙여 index임을 명확히 

    대문자를 사용함

    일련번호는 01 ~ 99까지 사용할  있음

    MSSQL 경우 클러스터드 인덱스와  클러스터드 인덱스를 구분하여 작성함클러스터드 인덱스 _IXC 사용하며 클러스터드 인덱스는 일반 인덱스  룰을 따름.

    테이블에 인덱스가 하나만 존재할 경우 일련번호를 사용하지 않아도 .

 

2)   표기 방식

<시스템 구분> + _ + <의미있는 테이블명> + _ + IX{<일련번호>}

) Table I01_MASTER_TB Index : I01_MASTER_IX01

 

마.  Primary Key Name

1)   규칙

    영문 대문자로 작성함

    해당하는 테이블명의  뒤에 _PK라는 구분을 사용함

 

2)   표기방식

<시스템 구분> + _ + <의미있는 테이블명> + _ + PK

) Table  AC_USERS_TB Primary Key : AC_USERS_PK

 

바.  Foreign Key Name

1)   규칙

    영문 대문자로 작성함

    해당하는 테이블명의  뒤에 _FK라는 구분을 사용함

    일반적으로 테이블명과 컬럼명까지 사용하나, OBJECT 명칭이 길어져서 테이블명을 기준으로 작성함.

    일련번호 : 1 ~ 9

 

2)   표기방식

<시스템 구분> + _ + <의미있는 테이블명> + _ + FK{<일련번호>}

) Table  I01_MASTER_TB Foreign Key : I01_MASTER_FK1

 

사.  Stored Procedure Name

1)   규칙

    길이는  제한이 없으나 오라클의 OBJECT NAME 길이 제한은 있음.

    해당하는 테이블명의  뒤에 _SP라는 구분을 사용함

    기능명은 복수개 사용이 가능하면 3개의 단어를 넘지 않도록 

    기능을 나타내는 명칭이 하나일 경우 일련번호를 생략해도 .

    단어간에는 _ 구분함

    업무룰에 해당되지 않는혹은 특정 테이블에 해당되지 않는 DBMS 전반적인 프로시저의 경우시스템 프로시저로 작성하는 경우에는 시스템구분  테이블명을 생략하고 간단히 작성할  있다스키마 스크립트 GENERATION  GENERATE_SP

    오라클의 경우 패키지 내부의 프로시저의 경우 패키지 명칭에 시스템구분을 사용하므로프로시저나 함수명에 시스템구분 코드를 넣지 않는다또한 기능에 따른 일련번호를 사용하지 않고 OOP 기능인 Method Overloading  기능을 사용하여 작성한다또한 명칭은 Camel 표기법을 사용하여 작성한다사용자를 가져오는 경우 getUsers()

 

2)   표기방식

<시스템 구분> + _ + <의미있는 테이블명> + _ + <기능명>{<일련번호>} + _ + SP

I01_MASTER_TB 테이블에서 데이타 입력에 대한 Procedure

    : I01_MASTER_INS01_SP

기능명

명칭

설명

INS

INSERT

단일 테이블의 단순 INSERT 작업인 경우사용자 테이블에 데이터 입력 프로시저의 경우 업무룰이 복잡하여 여러 테이블에걸쳐 삽입 작업이 된다면(서버측 트랜잭션이 구현된다면) INS 사용하지 않고, REG 사용한다.

UDT

UPDATE

단일 테이블의 단순 UPDATE 작업의 경우

DEL

DELETE

단일 테이블의 단순 삭제인 경우

LST

LIST

SELECT문을 사용하여 조회하는 경우

REG

REGISTER

등록작업  트랜잭션을 사용하여 여러 테이블에 입력 작업이이루어질 

MOD

MODIFY

수정작업  트랜잭션을 사용하여 여러 테이블에 수정 작업이이루어질 

REM

REMOVE

삭제작업  트랜잭션을 사용하여 여러 테이블에 삭제 작업이이루어  

 

    

아.  Function Name

1)   규칙

    길이는 제한이 없으며 영문 대문자를 사용함

    해당하는 테이블명의  뒤에 _FC라는 구분을 사용함을 원칙으로 하나함수명이 길어서 사용상 불편할 경우특정 시스템에 국한하지 않고항상사용하는 라이브러리 같은 함수의 경우 구분가능한 Short Name 사용해도 무방하다.

    단어간에는 _ 구분함

    시스템 함수로 작성한 경우에는 접미사를 사용하지 않고간략한 함수이름을 사용한다) INSTR, LEASTR(@x bigint, @y bigint) 

    오라클의 경우 패키지 내부의 함수의 경우에는 프로시저의 해당 규칙에 따른다 시스템구분 코드와 접미사를 사용하지 않고, Camel 표기법으로 간략하게 작성한다.

 

2)   표기방식

<시스템 구분> + _ + <기능명> + _ + FC

I01_MASTER_TB 테이블에서 주소명를 가져오기 위한 Function

    : I01_GET_ADDRESSNAME_FC(p_AddressCode IN Char) 내지는

: getAddressName(p_AddressCode IN Char)

 

자.  Table Trigger Name

1)   규칙

    영문 대문자로 작성함

    일련번호는 01 ~ 99까지 사용 가능함

 

2)   표기방식

<시스템 구분> + _ + <의미있는 테이블명> + _ + <Timing><Trigger Event><일련번호> + _ + TG

® Timing : B(Before), A(After)

® Trigger Event : I(Insert), D(Delete), U(Update)

 

I01_MASTER_TB 테이블에서 데이타 입력 후에 실행되는 Trigger

: I01_MASTER_AU01_TG

 

차.  View Name

1)   규칙

    길이는 제한이 없으며영문 대문자로 작성함

    해당하는 테이블명의  뒤에 _VW라는 구분을 사용함

    일련번호는 01 ~ 99까지 사용할  있음

 

2)   표기방식

<시스템 구분> + _ + <의미있는 테이블명><일련번호> + _ + VW

) AC_ADMINL_USER_VW

 

카.  Sequence Name <오라클의 경우에만 해당>

1)   규칙

    길이는 제한이 없으며 영문 대문자를 사용함

    해당하는 테이블명의  뒤에 _SQ라는 구분을 사용함

 

2)   표기방식

<시스템 구분> + _ + <의미있는 테이블명> + _ + SQ

I01_MASTER_TB 테이블의 Sequence : I01_MASTER_SQ

 

타.  Package Name<오라클의 경우에만 해당>

1)   규칙

    길이는 제한이 없으며 영문 대문자를 사용함

    해당하는 테이블명의  뒤에 _PKG라는 구분을 사용함

 

2)   표기방식

<시스템 구분> + _ + <의미있는 패키지명> + _ + PKG

검색엔진에서 사용하는 자원에 관련된 패키지 : SCH__PKG

 

파.  Check 제약조건

1)   규칙

    길이는 제한이 없으며 영문 대문자를 사용함

    기존의 명칭룰에 해당하는 접미사를 사용하지 않고예외적으로 접두어 CK_ 사용한다일반적으로 CHECK DEFAULT 제약조건은 특정 테이블에 한정시켜서 작성하기 보다는 시스템 전반에 걸쳐서 사용이 가능하므로 예외규정을 둔다.

 

2)   표기방식

CK + _ + <의미있는 CHECK>

이메일 체크 : CK_EMAIL

성별 체크 : CK_SEX

 

하.  Default 제약조건

1)   규칙

    길이는 제한이 없으며 영문 대문자를 사용함

    기존의 명칭룰에 해당하는 접미사를 사용하지 않고예외적으로 접두어 DF_ 사용한다일반적으로 CHECK DEFAULT 제약조건은 특정 테이블에 한정시켜서 작성하기 보다는 시스템 전반에 걸쳐서 사용이 가능하므로 예외규정을 둔다

 

2)   표기방식

DF + _ + <의미있는 DEFAULT>

) Null String Default  DF_NULLSTR
) 0(Zero) Default  DF_ZERO

 



출처: https://jang8584.tistory.com/35 [개발자의 길]

출처: http://egloos.zum.com/skymong9/v/1940361


업무를 하다보면 텍스트 파일이나 엑셀파일에 있는 데이터를 데이터베이스에 입력해야 하는 경우가 종종 있습니다. SQL Server에서는 외부 데이터를 DB에 넣기 위해서 Openquery, 데이터가져오기, bcp, SSIS 등 다양한 방식을 제공하고 있습니다.

DB 기술이 아닌 엑셀을 활용하여 insert 쿼리를 쉽게 만들 수 있는 방법이 있어 소개드리고자 합니다. 

게임 아이템 10개를 등록해야 한다고 가정하고 작업 과정을 한번 정리해보겠습니다. 

1. 게임 아이템 리스트를 개발팀에서 엑셀로 전달 받음
    


2. 엑셀의 CONCATENATE 함수를 사용하여 인서트 쿼리를 만든다.
    


3. 엑셀에 만들어진 insert 쿼리를 복사하여 DB에 저장한다.
   


사용하는 경우에 따라서 틀리겠지만, 제 경험상으로 보면 동일한 포맷으로 적은 건수에 대해서 빈번하게 요청이 들어오는 경우에 엑셀을 꽤 유용하게 사용했었습니다. 
이 방법은 응용하면 테이블 명세서를 바로 테이블 생성 스크립트로 만드는 것도 가능합니다. 테이블 생성 스크립트 예제는 첨부파일에 정리해놓았습니다.
excel_query_make.xlsx




MSSQL에서 DB목록, Table목록, 그리고 각 Table의 상세 칼럼 정보를

얻기 위해서는 아래 제시된 쿼리문을 이용해 가능하다.

select * from sys.sysdatabases
select * from sys.tables
select * from sys.syscolumns
select * from sys.systypes

 

위 쿼리를 바탕으로 필요한 테이블 상세 정보만 얻어오는 쿼리 조합문.

select

a.name as table_name,
b.name as column_name,
c.name as data_type,
c.length as data_length
from sys.tables a
inner join sys.syscolumns on a.object_id=b.id
inner join sys.systypes on c.xtype=b.xtype
where a.name = 'tb_users' --테이블이름
order by table_name



SELECT name
FROM master.dbo.sysdatabases


출처: http://20140501.tistory.com/63

 

 

TABLE_A

===========

COLUMN_1

===========

1

2

3

TABLE_B

===========

COLUMN_1

===========

2

3

4


UNION

UNION ALL

SQL:

SELECT COLUMN_1

   FROM TABLE_A

UNION

SELECT COLUMN_1

   FROM TABLE_B

결과 :

COLUMN_1

1

2

3

4



SQL:

SELECT COLUMN_1

   FROM TABLE_A

UNION ALL

SELECT COLUMN_1

   FROM TABLE_B

결과 :

COLUMN_1

1

2

3

2

3

4

★UNION

-두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않는 값들을 반환한다.

-중복을 제거하기 위해 불가피하게 SORT 함

-자료가 많거나 INDEX가 되어있지 않는 칼럼을 대상으로 하면 쿼리시간이 길어질수 있음

★UNION ALL : 두 테이블의 중복되는 값까지 반환한다.


+ Recent posts