ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MSSQL] 10일 만에 마스터하는 MS SQL 실무 7, 8편
    Backend/database 2024. 2. 17. 13:28

    https://www.youtube.com/watch?v=SJwE-Izf6uY&list=PL1VTPqi5Xgu9pr3oK_j4ranMGEn6fKMFp&index=9

     

    1. SQL 데이터 타입

    > 내가 사용하는 테이블에 존재하는 열들의 데이터 타입을 알아야 데이터를 어떻게 처리해야 하는지 알 수 있음

     

    N > 정해진 크기 보다 문자열이 적으면 나머지를 공백으로 채운다.

     

    VARCHAR > 정해진 크기보다 문자열이 적으면 문자열 크기만큼 된다.

     

    NCHAR , NVARCHAR > 앞에 N이 붙은 이유 : 영어가 아닌 다른 국가 언어를 저장하기 위함

     

     

    숫자 유형

    > 실수도 정수로 통일한다면 성능 측면에서 좋지 않다.

     

    DATETIME > 최소 단위가 3.33MS 이다.

    DATETIME2 > 단위가 DATETIME 보다 세분화되어 있다.

     

    2. SQL 데이터 처리 관련 내장 함수

     

    문자열 관련 함수

     

    중요

    • SUBSTRING
    • REPLACE
    • CHARINDEX

    LEN > 문자열의 길이 반환

    LTRIM > 선형 공백 제거

    RTRIM > 후행 공백 제거

    UPPER > 모든 문자를 대문자로 표시

    LOWER > 모든 문자를 소문자로 표시

    LEFT > 왼쪽부터 글자 출력

    RIGHT > 오른쪽부터 글자 출력

    REVERSE > 거꾸로 출력

    REPLACE > 특정 패턴을 찾아서 있으면 치환

    REPLICATE > 특정 문자열 반복

    SPACE(10) > 공백을 여러 개 출력

    STR() > 정수형을 문자열로 변환

    SUBSTRING > 문자열 검색 : 어디서부터 몇 자 검색

    CHARINDEX > 특정 문자열의 위치값 검색

     

    날짜 관련 함수

    • DATEDIFF
    • DATEADD
    • YEAR
    • MONTH
    • DAY

    GETDATE() > 현재를 반환 -  현재의 날짜와 시각을 DATETIME 유형으로 반환한다.

    YEAR(GETDATE()) > 년도를 반환

    MONTH(GETDATE()) > 월을 반환

    DAY(GETDATE()) > 날짜를 반환

    DATEDIFF(DAY, GETDATE(), '2012-12-25') > 두 날짜 간의 차이를 반환

    DATEADD(MONTH, 3, GETDATE()) > 날짜를 더함 (현재 날짜에 3개월 더하기...)

     

    형식 변환 함수

    • CAST > 문자열을 숫자로 바꿈 (반대도 가능), 아주 기본적인 형 변환 작업만을 수행
    • CONVERT > 사용자가 원하는 형태의 데이터로 변환 (추가 파라미터에 대한 공부 필요)

    CONVERT와 CAST 는 변환하는 코드의 방식은 다르나 같은 작업을 수행한다.

     

    MSSQL의 GO의 의미

    MSSQL에서 GO는 일괄처리 BATCH의 단위라고 볼 수 있다.

    SQL이 아니다. TOOL용 명령어이다.

    이전에 쓰인 GO 다음부터 현재 GO 앞까지를 실행한다.

    > 이전에 선언한 변수를 뒤에서 다시 사용하고 싶다면 GO 뒤에 다시 선언해줘야 한다.

     

    ALTER TABLE 명령어

    > 이미 존재하는 테이블을 변경할 때 사용

    > 열을 추가하거나 삭제할 때 열의 타입 등을 바꾸거나 제약 조건 등을 추가할 때 사용

     

    곧바로 GO 함수를 붙여서 실행

    > 만들어진 내용 확인

     

    INSERT

    > 데이터를 넣는 기능

    1. 칼럼을 지정해서 넣는 방법

    2. 전체 칼럼에 한꺼번에 넣는 방법

    // 칼럼을 지정해서 넣는 방법
    INSERT INTO TABLE_NAME (CO1, COL2, COL3, ...)
    VALUES (VAL1, VAL2, VAL3, ...)
    // 지정된 열에 값을 입력
    // 나머지 열에는 NULL 입력
    
    // 전체 칼럼을 한꺼번에 넣는 방법
    INSERT INTO TABLE_NAME
    VALUES (VAL1, VAL2, VAL3, ...)
    // COLUMN 개수와 일치하게 입력
    // 어떤 COLUMN에 넣을 데이터인지 지정하지 않아도 됨

     

    제약 조건

    > 테이블에 일종의 규칙을 지정

    > 제약 조건을 위배하는 데이터는 테이블에 존재할 수 없음

    > 테이블 생성 시 지정 가능

    > ALTER 구문으로 변경 지정 가능

     

    NOT NULL > NULL 값이 들어올 수 없다.

    UNIQUE > 열에 있는 모든 값들은 서로 다른 값을 가져야 한다.

    PRIMARY KEY > 해당 열이 PRIMARY KEY가 된다. PRIMARY KEY가 되면 NOT NULL이면서 UNIQUE 해야 한다.

    FOREIGN KEY > 다른 테이블에 존재하는 열과 JOIN이 되었을 때 그 조합이 PRIMARY KEY가 되어야 한다.

    DEFAULT > 열이 생성될 때 사용자가 지정하지 않으면 DEFAULT값이 지정된다.

     

    중요 제약 조건

    > 행을 유일하게 구분하게 만드는 열의 규칙

    > 조합을 통해서도 설정 가능

     

    ALTER TABLE TABLE_NAME ADD CONSTRAINT PK_TABLE_NAME
    PRIMARY KEY(COLUMN) -- 설정
    ALTER TABLE TABLE_NAME DROP CONSTRAINT PK_TABLE_NAME

     

    PRIMARY KEY로 설정된 열은 반드시 유일해야 하고 UNIQUE 값이 존재해야 한다.

    또한 NOT NULL이어야 한다.

     

    FOREIGN KEY

    > 두 개 이상의 테이블이 존재할 때 의미가 있음

    > 다른 테이블의 PRIMARY KEY 를 가리키는 열

    ALTER TABLE TABLE_NAME
    ADD CONSTRAINT FK_TABLE_NAME FOREIGN KEY (COLUMN) PREFERENCES TABLE_NAME2(COLUMN)
    ALTER TABLE NAME DROP CONSTRAINT FK_TABLE_NAME

     

    > CUSTOMERS에 행 추가 시, PERSONID(FOREIGN KEY)에 해당하는 값이 CUSTOMERS에도 존재하는지를 확인하기 위함

     

     

Designed by Tistory.