주니어 기초 코딩공부/Database 기초

02. SQL의 기본 데이터 형, 연산자 소개

jju_developer 2022. 12. 12. 21:13
728x90

안녕하세요 jju_developer입니다.

 

오늘은 지난 시간의 데이터베이스/ 오라클에 이어서 SQL의 기본에 대해 소개하는 시간을 갖겠습니다.

 

✔데이터 딕셔너리 TAB

SELECT * FROM TAB;

-> 사용자가 소유하고 있는 테이블의 정보를 알려주는 데이터 딕셔너리입니다.

✔null의 의미

자바에서의 null은 값이 비어있다는 뜻입니다.

 

그렇다면 Database에서의 null은 무슨 의미일까요?

 

DB에서는 null을 모르는 값이라는 겁니다.

비어있는 값이 아닌, 모르는 값입니다.

NOT NULL은 모르는 값이 있으면 안 된다, 즉 값을 꼭 넣어줘야 한다는 뜻입니다.

NOT NULL의 의미는 식별 가능한 확실한 정보가 필수적으로 입력을 해야지만 오류 없이 INSERT가 가능합니다.

 

 

✔오라클의 데이터형

JAVA: 기본형 , 정수형, 참조형 ---

오라클: NUMBER, DATE, CHAR, VARCHAR2 

오라클에서는 불리언은 없습니다!

 

1. NUMBER 타입

 NUMBER 데이터 형은 숫자 데이터를 저장하기 위해서 제공됩니다.
 precision은 소수점을 포함한 전체 자릿수를 의미하며 scale은 소수점 이하 자리수를 지정합니다.

precision = 자리수

 

2. DATE 타입

 DATE는 세기, 년, 월, 일, 시간, 분, 초의 날짜 및 시간 데이터를 저장하기 위한 데이터 형입니다.
 기본 날짜 형식은 "YY/MM/DD" 형식으로 "년/월/일"로 출력됩니다. 2022년 12월 12일은 "12/12/22"로 출력됩니다.

 

3.CHAR 타입

 문자 데이터를 저장하기 위한 자료형으로 CHAR가 있다. CHAR는 고정 길이 문자 데이터를 저장합니다.
 입력된 자료의 길이와는 상관없이 정해진 길이만큼 저장 영역 차지하며 최소 크기는 1입니다.
 char(20)이라고 설정하고 'seoul'이라는 데이터를 저장하였다면... 나머지 공간은 비어있습니다.

-> 문자가 고정되어있도록 저장하는 겁니다. 문자의 공간을 고정!!!

 CHAR는 주어진 크기만큼 저장공간이 할당되므로 편차가 심한 데이터를 입력할 경우 위의 예와 같이 저장공간의 낭비를 초래합니다.

 

4. VARCHAR2 타입

 VARCHAR2 데이터 형은 가변적인 길이의 문자열을 저장하기 위해서 제공합니다.
 address 란 칼럼의 데이터형을 VARCHAR2(20)이라고 설정하고, 'seoul' 이란 데이터를 저장하였다면

 VARCHAR2는 저장되는 데이터에 의해서 저장공간이 할당되므로 메모리 낭비를 줄일 수 있습니다.

 

대부분 CHAR타입보다 VARCHAR2 타입을 자주 씁니다.

 

여기서!

VARCHAR2와 VARCHAR2의 차이점은 무엇일까요?

결론적으로 두 개는 같은 것이지만,

VARCHAR2는 오라클의 데이터 타입이고,

VARCHAR는 미국 표준 협회(ANSI)의 데이터 타입입니다.

많은 데이터베이스 회사가 있지만 다들 조금씩 타입이 다릅니다.

그러다 보니까 데이터베이스를 사용하는 사용자들은 헷갈리게 됩니다. 그래서

대부분 ANSI에서 만들어 놓은 표준 타입을 본다면 이해하기 쉬우실 겁니다.

 

✔Boolean 타입???

오라클에서 불리언 타입이 없는데 그렇다면 비슷하게 쓸 수 있는 것은 어떤 것일까요?

 

->>>

이렇게 캐릭터 형으로 하나씩 지정을 하여,

만약, Y나 N이 있으면 데이터를 넣고 아니면 데이터를 넣을 수 없게끔 Boolean처럼 보이게 넣을 수는 있습니다~

 


✔데이터를 조회하기 위한 SELECT문

 SELECT 문은 데이터를 조회하기 위한 SQL 명령어입니다.

모든 정보를 가져오기 위해서는 저렇게 바로 테이블 이름을 쓰지만,

특정한 칼럼을 가져오고 싶을 때에는

 

SELECT EMPNO, ENAME FROM EMP;로 지정해주셔야 합니다.

 

✔산술 연산자

--산술 연산자
SELECT ENAME, SAL, SAL*12 FROM EMP;

셀러리랑 12를 곱한 값입니다.

 

 SQL은 다른 프로그래밍 언어와 같이 산술 연산자를 사용할 수 있습니다.

 널의 정의
• 0(zero)도 아니고 빈 공간도 아닙니다.
• 미확정(해당 사항 없음), 알 수 없는(unknown) 값을 의미합니다.
• 어떤 값인지 알 수 없지만 어떤 값이 존재하고 있습니다.
• ? 혹은 ∞의 의미이므로 연산, 할당, 비교가 불가능합니다.

NVL의 함수를 써서 () 감싸주고, COMM이라는 칼럼에 0이 있으면, 영어 취급을 해라 라는 뜻입니다.

그렇다면 위에 있는 표와 같이 COMM 칸에 NULL이 있는 부분은 계산을 하지 않고

지나가게 됩니다.

위의 표와 같이 NULL의 값은 계산이 되지 않은 것을 볼 수 있습니다.

 

✔칼럼 이름에 별칭 지정하기

 SQL에서 쿼리 문의 결과가 출력될 때, 칼럼 이름이 칼럼에 대한 헤딩(heading)으로 출력됩니다.

다른 이름으로 보이고 싶어 그러면, AS ---을 설정하시면 됩니다.

 AS 키워드는 생략이 가능합니다.

 대소문자를 구별하고 싶으면 " "을 사용합니다.

 " "을 사용하여 별칭을 부여할 경우에는 별칭에 공백 문자나 $,_, #등 특수 문자를 포함시킬 수 있습니다.

 

 

✔Concatenation 연산자

SELECT ENAME, JOB FROM EMP;
SELECT ENAME || 'IS A' || JOB FROM EMP;
-- 이 두 개의 컬럼을 합칩니다.

 

1. 원본 테이블

원본 테이블

2. ENAME과 JOB 이 두 개의 컬럼만 출력함

 

3. ENAME과 JOB을 합침

SELECT ENAME || 'IS A' || JOB FROM EMP; 를 사용하여 두개의 칼럼을 하나로 합쳤습니다.

 

✔DISTINCT 연산자

중복된 데이터를 다 제거하고 내가 식별 가능하게 원하는 유니크 한 값들이 뭐가 있는지를 볼 때 사용하는 것이 바로 DISTINCT입니다.

결과

 

 

 

그럼 지금까지 SQL의 기본에 대한 기초 설명이었습니다.

 

궁금하신 내용이나, 수정사항은 댓글 부탁드립니다.

 

감사합니다.

 

728x90