SELECT, 자료형

유동현·2022년 9월 26일
0

오라클

목록 보기
2/18

SELECT

---■■■관계형 데이터베이스■■■------

--각각의 데이터를 테이블의 형태로 연결시켜 저장해 놓은 구조
--그리고 이들 각각의 테이블들 간의 관계를 설정하여 연결시켜 놓은 구조

※SELECT 문의 처리(PARSING)순서

SELECT 컬럼명 ---⑤┐기본구조
FROM 테이블명 ---①┘
WHERE 조건절 ---②+
GROUP BY 절 ---③+ 있을수 있고 없을수 있음
HAVING 조건절 ---④+
ORDER BY 절 ---⑥+

SELECT 컬럼1, 컬럼2, 컬럼4

WHERE 조건절
(키가 170이상)
(성별이 여성만)
즉 한 컬럼에서 조건에 해당되는 행만 나오게 하는것

GROUP BY 절
(서로 묶는것 성별이 여성인 사람과 남성인사람)
HAVING 조건
GROUP BY 에서의 묶여있는 그룹에대한 조건

ORDER BY 절
(정렬 기준)을 지정해 정렬을 수행하게 하는절

1-2-3-4-5-6 순서대로 외우고 쓸것

ex)

SELECT EMPNO, ENAME, SAL, COMM 
FROM EMP
WHERE DEPTNO = 20; --오라클에서는 =이 같다라는뜻
--EMP테이블에서 부서번호가 20번인 직원들의 데이터들중
 --사원번호,사원명,직종명,급여,부서번호 조회


AS " "를 쓰면 " "로 각 컬럼의 별칭을 제공할수있다. AS생략가능
SELECT EMPNO AS "사원번호", ENAME "사원명", JOB 직종명
FROM EMP;

※테이블을 조회하는 과정에서
각 컬럼의 이름에는 별칭(ALIAS)를 부여할 수 있다.
기본 구분의 형식은 컬럼명 AS "별칭이름" 의 형태로 작성되며
이때 AS는 생략이 가능하다.
또한, 별칭 이름을 감싸는 ""도 생략이 가능하지만 앵간하면 안쓰는걸로
생략하면 띄어쓰기 불가능
공백의 등장은 해당 컬럼의 표현에 대한 종결을 의미함

⭐SQL의 특징

SELECT EMPNO "사원번호", ENAME "사원명", JOB "직종명", SAL "급여", DEPTNO "부서번호"
FROM EMP
WHERE DEPTNO =20 OR DEPTNO = 30;

위의 or와 밑의 IN은 사용법은 다르나 결국 OR형태로 변환되어 Oracle이 인식한다.

SELECT EMPNO "사원번호", ENAME "사원명", JOB"직종명",SAL"급여", DEPTNO "부서번호"
FROM EMP
WHERE DEPTNO IN (20, 30);



Data 값의 구분
SELECT * 
FROM EMP 
WHERE JOB='CLERK';    --DATA의 값은 대소문자 구분을 한다.

💡데이터가 문자열일때 대소문자 구분을한다 만약 데이터가 소문자로 구성되어 있다면
 위의 결과는 없다고 나올것




🔎쿼리문의 처리 순서

SELECT EMPNO "사원번호",ENAME "사원명", JOB "직종명", SAL "급여", DEPTNO "부서번호"
FROM EMP
WHERE JOB = 'CLERK' AND DEPTNO = 20;
  1. FROM WHERE GROUP BY HAVING SELECT ORDER BY 순서
  2. 즉 WHERE에서는 SELECT에서 정의한 별칭을 알지못함
  3. FROM 에서 테이블을 가져오고 WHERE절의 조건에 맞는 행들만 메모리에 퍼올린다.
    그중 SELECT에서 필요한 칼럼들만 떼서 출력한다.

✨존재하는 테이블과 같은 구조,데이터를 가지는 테이블 생성하기
CREATE TABLE TBL_EMP
AS
SELECT*
FROM EMP;     --이렇게쓰면 수작업 필요없이 그대로 복사해온다.
/*
CREATE TABLE EMP4
(EMPNO NUMBER(4)
,ENAME VARCHAR2(10)
,JOB VARCHAR2(9)
,MGR NUMBER(4)
,HIREDATE DATE
,SAL NUMBER(7,2)
,COMM NUMBER(7,2)
,DEPTNO NUMBER(2)
);*/

오라클의 주요 자료형(DATA TYPE)

/*

cf)MSSQL 서버의 정수 표현 타입

smallint -32,768 ~ 72,767 2Byte
int -21억 ~ 21억 4Byte
bigint 엄청큼 8Byte

MSSQL 서버의 실수 표현 타입
float, real

MSSQL 서버의 숫자 표현 타입
decimal, numeric

MSSQL 서버의 문자 표현 타입
char, varchar,Nvarchar

--※ ORACLE은 숫자 표현 타입이 한가지로 통일되어 있다.

1.숫자형 NUMBER를 가장 많이쓴다.
if NUMBER하고 표현길이를 안정해줬다면 -10 38승-1 ~ 10의 38승
NUMBER(3) -> -999 ~ + 999
NUMBER(4) -> -9999 ~ + 9999 까지 표현
NUMBER(4,1) -> 4= 자리 1 = 소수점 몇번째자리까지 표현
= -999.9 ~ + 999.9

※ORACLE의 문자 표현 타입

2.문자형 CHAR ->고정형 크기 (무조건 지정된 크기를 소모)
CHAR(10) ->'강의실' = 6바이트므로 10바이트 안에 담김
->다만 Byte 낭비

VARCHAR2 ->가변형 크기 (상황에따라 크기가 변경된다)
VARCHAR2(10) <--'박원석' 이럴땐 6Byte만 소모하게된다.
VARCHAR2(10) <--그렇다고 10바이트를 초과하게 되면 입력 불가능

NCHAR ->유니코드 기반 고정형 크기(글자 수)
NCHAR(10) =10글자

NVARCHAR2 ->유니코드 기반 가변형 크기(글자 수)
NVARCHAR2(10) =10글자 들어갈수 있다.

0개의 댓글