[SQL] DDL(Data Definition Language)
데이터 유형
데이터 정의어를 본격적으로 알아보기 전에 데이터 유형을 먼저 알아보자! 데이터 유형은 데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준이라고 생각하면 된다. 더더더 쉽게 이야기하면 각각의 데이터들이 들어가게 될 다양한 상자들의 유형이다.
숫자는 숫자상자에 문자는 문자상자에 글자는 글자상자에 넣는다. 이것은 다른 프로그램언어에서 다루는 변수와도 같은 개념이다! 다른 프로그래밍언어를 조금이라도 배웠다면 이 변수를 모를 수 없을것이다!
이 부분은 매우 중요하다 예를들어 학생들의 몸무게를 기록해놓은 상자에 '이름'이라는 문자열이 입력된다면 잘못된 데이터라고 판단할 수 있다.
그럼 이제 데이터 유형들에는 어떤 것들이 있는지 알아보자
"고정길이의 문자열정보"
보통 사용할때는 CHAR(숫자)라고 사용하고 괄호안에 숫자만큼 정해진 숫자 만큼의 최대 크기를 가진다. 숫자를 적지 않으면 기본값인 1바이트가 된다.
※ 넣고자 하는 문자열이 괄호안에 숫자보다 작을 경우 그 차이 길이 만큼 공백으로 채워진다.
"가변길이의 문자열정보"
VARCHAR는 CHARACTER VARYING(상황에 따라 변하는 CHARACTER)의 약자로 ORACLE에서 사용할때는 VARCHAR2(숫자)라고 사용하고 SQL Server에서는 VARCHAR(숫자)라고 사용한다. VARCHAR도 CHAR와 같게 숫자를 적지 않으면 최소 길이인 1바이트로 설정해준다.
※ 입력한 숫자 만큼의 최대 길이를 가지지만 원하는 문자열의 크기만큼만 채워진다.
TIP! | |
CHAR 유형 | 'SSC ' ≠ 'SSC' |
VARCHAR 유형 | 'SSC ' = 'SSC' |
"정수, 실수 등의 다양한 숫자들의 정보"
숫자들을 다루는 데이터 타입으로 ORACLE에서는 NUMBER(숫자)로 통합해서 사용하고 SQL Server에서는 10가지가 넘는 숫자타입이 있다. (우리는 ORACLE을 사용할 예정이니 겁먹지 마시길!) 괄호안에 숫자는 역시나 최대 자릿수을 나타내주는 숫자다.
만약에 소수점이 있는 실수를 다루고싶다면 괄호안에 숫자를 조금만 바꿔주면 된다 예를들어 정수부분이 4자리고 소수점 부분이 2자리면 NUMBER(4,2)로 명시해주면 간단하다.
"날짜와 시각 등의 다양한 시간들의 정보"
날짜와 시각 등의 정보를 나타내는 데이터 타입이다. ORCLE은 DATE로 사용하고 SQL Server는 DATETIME으로 표현한다.
날짜나 시간에 +나 -를 이용해서 계산해서 날짜들의 차이를 알거나 미래의 날짜를 알 수 있다.
Data Definition Language(데이터 정의어)
본격적으로 DDL에 대해 알아보자
"테이블을 생성해주는 CREATE"
기본 형식 CREATE TABLE 테이블이름 ( (이름을 적어준다) 컬럼이름1 데이터 타입, (콤마로 연결해준다.) 컬럼이름2 데이터 타입, 컬럼이름3 데이터 타입, . . . ); (세미콜론으로 마무리!) |
실습 예제 아직은 테이블만 생성하고 데이터가 없어서 뭔가 나오지는 않을것이다. 궁금하면 "SELECT * FROM 테이블 이름"을 입력해보자 |
"테이블의 구조를 변경해주는 ALTER"
기본형식 추가 ALTER TABLE 테이블명 ADD 추가할 칼럼이름 데이터유형; 삭제 ALTER TABLE 테이블명 DROP COLUMN 삭제할 칼럼명; 변경 ALTER TABLE테이블명MODIFY (수정할 칼럼명1 데이터 유형, 수정할 칼럼명2 데이터 유형 ....);
옆에 실습 예제로 실습해봅시다! 각각의 문장을 읽어보면 어떤 기능을 수행하는 지 알 수 있을거에요! |
실습 예제 |
"테이블을 삭제해주는 DROP"
기본형식 DROP TABLE 테이블명; 아주 간단하죠? 실습예제 혹은 지금 까지 만들었던 테이블을 삭제 해봐요! |
실습 예제 |
"테이블의 내용만 삭제해주는 TRUNCATE"
기본형식 TRUNCATE TABLE 테이블명; 역시 간단하죠? 하지만 DROP과 TRUNCATE는 다르다는 것을 꼭 기억해주새요! |
실습 예제 테이블이 생성되고 값들이 생기고 그 값들을 확인하고 TRUNCATE를 이용해서 값들만을 지웠습니다! 테이블을 모두 지우기 위해서는 DROP! |
TIP! | |
DROP | 테이블 자체를 모두 지워서 아무것도 남지않게 된다 |
TRUNCATE | 테이블에 있는 데이터들만 지워서 테이블 정보만 남게된다 |