Oracle 2일차 - 정리

donghani·2024년 1월 30일

업로드가 2일차라고 하지만 날짜가 달라도 주인장 마음임 아무튼 그럼
P.S 한 1주는 게을렀고, 1주는 새로운 집을 구하느라...
한 1주는 운동에 대한 적응이랄까요 하하

🎈DESC 명령어

DESC 명령어는 해당 테이블이 어떤 구성? : 어떤 Data Type인지에 대해 알려주는 명령어다.
보면은 별도의 창이 나온다.

바로 이렇게다.

쓰는 법은 테이블의 이름을 입력하는 것이다.

DESC DEPT;

왜 대문자냐고 묻는다면 ? : 권장사항이다.
SQL은 다른 프로그래밍 언어와 달리 대소문자 구별이 없다.
대소문자가 섞여 있는 프로그래밍 언어와의 구분과 가독성을 높이기 위해 SQL문 전체를 대문자로 쓰는 경우가 흔하게 볼 수 있다.

🎈데이터의 조회

셀렉션 : 행 단위로 조회를 하는 방식이다 SELECT 문을 사용한다.
프로젝션 : 열 단위로 조회를 하는 방식이다. 똑같이 SELECT문을 사용한다.
조인 : 두 개 이상의 테이블을 양 옆에 연결해서, 하나의 테이블 인것처럼 데이터를 조회하는 방식이다. SELECT문을 사용해 조인을 한다고도 한다.

🎈SELECT절과 FROM절

자 그러면 이 조회를 하는 SELECT문은 SQL의 기본 뼈대라고 한다는데, 뼈대로 2가지 문을 기억하자!

SELECT & FROM

FROM : 조회할 데이터가 저장된 테이블 이름
SELECT : 조회할 열이나 FROM절에서 명시한 테이블에서 조회할 열이나 여러 열에 저장된 데이터의 조합이나 연산식을 사용

SELECT * FROM EMP; #EMP라는 테이블 전체 출력 * : 전체 FROM EMP : EMP테이블로부터
SELECT EMPNO, ENAME, DEPTNO 
FROM EMP; #EMP 테이블로부터 특정 열을 조회

여기서 알아두면 좋을 점은 EMP 테이블의 전체 열 중 특정 열을 조회할 때 쉼표로 구분을 한다는 점과 띄어쓰기를 활용한다는 점(한눈에 보기 편하게)

🎈중복 데이터 삭제, DISTINCT

FROM으로 열 이름을 명시하기 전에 그 사이에 사용하면 된다.
조회할 데이터의 내용에서 불필요한 중복을 제거하고 특정 데이터 종류만 확인하고 싶을 때 사용하면 된다.
조회할 때 불필요한 중복이 필요하지 않고 어떤 값들이 있는지 데이터의 종류만 파악하고 싶을 때 사용한다.

SELECT DISTINCT DEPTNO
    FROM EMP;
SELECT DISTINCT JOB, DEPTNO
    FROM EMP; #이 절은 중복이 제거가 안된다. 
    #JOB에서 중복이 되는 행이 존재하지만, DEPTNO가 중복되지 않고 나오기 때문이다.
SELECT ALL JOB, DEPTNO
    FROM EMP; #ALL로 중복을 제거하지 않고 그대로 출력한 결과, SELECT는 기본으로 ALL이 설정되어 있음

🎈별칭 정하기

SQL은 최종 출력되는 열 이름을 임의로 지정할 수 있다.
이렇게 본래 열 이름과 대신해서 붙이는 이름을 별칭이라고 한다.
우선 별칭을 알기 전에, 열과 연산식에 대해 알아보자

우리는 기본적인 열이 있으나, 그 열을 연산식을 사용해서 새로운 값으로 표현할 수 있다.

SELECT ENAME, SAL, SAL*12+COMM, COMM
    FROM EMP;

이렇게 하면 COMM 왼쪽 위치에 새로운 열이 생성되어 COMM이 존재하는 값에 SAL에 12을 곱한 값이 추가된다.

이렇게 하면 열 이름이 너무 길어진다. 그렇기 때문에 별칭을 지정한다.
별칭을 지정하는 방법은 4가지다.

SAL*12+COMM ANNSAL
SAL*12+COMM "ANNSAL"
SAL*12+COMM AS ANNSAL
SAL*12+COMM AS "ANNSAL"

이 중, AS를 선호하는 편이며, 알아보기 편하기 때문이다. 큰따음표는 이미 프로그래밍 언어에서 사용이 되기 때문에(Main) 함수

작업 효율이 떨어진다.

🎈원하는 순서로 정렬 ORDER BY

ORDER BY는 데이터를 조회할 때, 순서를 정해준다 SELECT문에 마지막 부분에 사용하고, 정렬할 열을 선택해준다.
내림차순은 열 뒤에 DESC를 붙이면 된다.

#오름차순
SELECT *
    FROM EMP
ORDER BY SAL;
#내림차순
SELECT *
    FROM EMP
ORDER BY SAL DESC;

정렬이 꼭 필요한 경우가 아니라면 사용하지 않는 것을 추천한다고 한다.
데이터가 많으면 조회보다 정렬에 더 시간이 들 수 있기 때문에 작업의 효율이 떨어지기 때문

책 4장 연습문제 Q3

SELECT EMPNO AS EMPLOYEE_NO,
	ENAME AS EMPLOYEE_NAME, 
	MGR AS MANAGER, 
	SAL AS SALARY, 
	COMM AS COMMISSION, 
	DEPTNO AS DEPARTMENT_NO
FROM EMP 
ORDER BY DEPARTMENT_NO DESC, ENAME;

부서 번호 기준 내림차순 정렬하되 + 부서 번호가 같다면 사원 이름을 기준으로 오름차순 : ORDER BY는 하나만 쓰고, 먼저 정렬 기준을 붙어준다.

profile
컴퓨터 공학과 이방인

0개의 댓글