Programming/SQL

오라클 숫자형 데이터, DDL (Alter명령어), DML(Insert명령어) 2021-06-17

최동훈1 2021. 6. 18. 01:05

이전 포스트에는 오라클의 내장 데이터 형식에는,

Character형

Numeric형

Date형

LOB형 

이 있다. Character형 중 LOB는 엄청나게 큰 텍스트 데이터(~4GB) 정도 되는 자료형을 담을 수 있는 타입이다.

또 Numeric 형 중에는 Number 라는 타입이 있는데, 이 Number 타입의 파라미터로 오는 값은 NCHAR과 같이 "글자의 수" 이다. 예를 들면, Number(3) 이면, 이 타입의 변수는 0~999까지의 수를 저장할 수 있다. 

정수 뿐만 아니라, 실수도 저장할 수 있는데, Number(6,2)는 소수점 두자리에서 반올림하는 6자리 수 이다. 즉, 1234.12 이런 수를 담을수 있다.

오라클에서 정수, 실수를 표현할수 있는 NUMBER타입

그다음은 SQL언어의 DDL중 Alter 명령어에 대해서 알아보겠다. 우선 DDL은 DBMS가 어떤 형태의 데이터를 저장하는지 정의하는 명령어 구조라고 했다. DDL에는 CREATE/Alter/Drop 등이 있는데, 각각 "개념화된 데이터 틀"을 생성하고, 변경, 삭제하는 것이다.

우린 이전 포스트에 Member라는 테이블을 정의하여 DBMS에 인식시켰다. 그런데 이 ID, 생년월일, EMAIL 등의 변수 타입을 새로 추가하거나 삭제하고자 한다. 이때 사용하는 명령어가 Alter 이다. 그런데, 아예 테이블을 삭제하고(DROP) 새로 만들면(CREATE) 되지 않느냐고 생각 할 수 있지만, 그건 테이블 속, 아무런 데이터가 존재하지 않을 때 이고, 만약 존재한다면, 테이블속 데이터가 통채로 날라가기 때문에, 안된다.

SQL언어로 이런 쿼리문을 날리면, 테이블이 변경된다.

ALTER  TABLE MEMBER MODIFY ID NVARCHAR2(10)

ALTER  TABLE MEMBER DROP AGE

ALTER  TABLE MEMBER ADD EMAIL VARCHAR2(200)

실제 SQL문

그럼 기존 MEMBER 테이블이 이렇게 변한다.

테이블이 변한 모습

그런데 찾아보니, 현직에서 일하는 개발자들은 DDL 구문을 많이 안쓴다고 한다... 애초에 윈도용 툴로 쉽게 테이블 편집이 가능할뿐더러, 이런 데이터 형식의 변화를 주는 일이 자주 안일어난다나...ㅋㅋㅋ 그래도, 난 처음부터 배우는 입장이니, 이것도 외우고 받아들이기로 했다.

 

그다음 DML의 INSERT질의에 대해서 설명하겠다. DML은 DB에 저장된 형식화된 데이터를 조작하는 구문이다.

DML의 종류에는 SELECT/INSERT/DELETE/UPDATE 등이 있다. 모두 DDL을 통해 만들어진 테이블에 저장될 "데이터"를 선택하고, 삽입하고, 삭제하고, 변경하는 기능을 가지고 있다.

위의 DDL로 인해 만들어진 MEMBER라는 테이블의 필드에 데이터를 추가하고자 한다면,

INSERT INTO MEMBER VALUES("newlec","111","최동훈","남자",2000-01-31,010-9209-6429,donghoon141@naver.com) 이렇게 하면, 모든 필드에 해당 값을 삽입할수 있다. 

그런데 문제가 있다. 매번 이렇게 모든 값을 입력해야 할까? 일반 웹사이트의 회원가입처럼 꼭 "필요한" 값들만 선별적으로 입력받을 수는 없을까?

바로 INSERT INTO MEMBER(ID,PWD) VALUES("newlec","111")

INSERT INTO MEMBER(ID,PWD) VALUES("newlec","111");

이렇게 입력하면 된다. 그럼 입력 안한 다른 필드는 어떤 데이터가 들어갈까?? 바로 NULL 이다.

 

또한 이렇게 입력한 테이블의 필드(ROW)(열)을 뽑아낼려면 SELCET 문을 쓰면 된다.

가장 대표적으로 많이쓰는 것은

SELECT * FROM MEMBER

 

이다. 이럼, MEMBER에 있는 모든 필드가 출력된다.

모든 필드가 아닌, 출력하고 싶은 필드를 선택할려면

SELECT ID,pwd,email FROM MEMBER;

이렇게 하면 된다. 그리고, 필드값을 아무리 소수로 넣어도 실제 DBMS에서 받아들이기로는 대문자 로 받아들인다.

 

실제 출력 SELECT문 실행 모습

공부시간 2시간

순공부시간 1시간

 

오늘 나름 DML을 새로 배워서 좋았다. 그래고 SQL이란 것이 자바 보다 훨~~~씬 쉬운 언어인거 같다...ㅋㅋㅋ