일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 대용량 데이터 처리
- 2주차 : ETL/CDC
- 구름Level
- 마이데이터 비즈니스 모델
- 대용량 데이터 이행
- 대용량 데이터 Batch
- 마이데이터 국민참여단
- 계층적질의문
- 대용량데이터 처리방안
- 2022 마이데이터 국민참여단 후기
- K-MOOC 3주차
- 측정계
- 코딩테스트
- 고전압안전
- 코테
- 무결성제약조건
- sql
- K-MOOC
- 1주차:메타데이터와 데이터표준화
- 데이터 허브
- K-MOOC 매치업 강좌
- 오라클
- GROUP함수
- ETCL
- 마이데이터 개념
- 백준
- EBH
- 데이터 이행
- 마이데이터 개념과 원칙
- dbms
- Today
- Total
어제보다 더 나은 나
DBMS(오라클) : ORDER BY문, SQL-PLUS 본문
* ORDER BY 문
=> 오름차순(ASC)가 기본값
=> SELECT LIST에 없는 열로도 정렬은 가능
# 문제 1: 부서 10과 30에 속하는 모든 사원의 이름과 부서번호를 이름의 알파벳 순으로 정렬되도록 질의문을 형성하라.
# 문제 2 : 1982년에 입사한 모든 사원의 이름과 입사일을 구하는 질의문은?
# 문제 3 : 보너스를 받는 모든 사원에 대해서 이름, 급여 그리고 보너스를 출력하는 질의문을 형성하라. 단, 급여와 보너스에 대해서 내림차순 정렬할 것
# 문제 4 : 보너스가 급여의 20% 이상이고 부서번호가 30인 모든 사원에 대해서 이름, 급여 그리고 보너스를 출력하는 질의문을 형성하라.
* SQL-PLUS
=> DB 서버는 죽으면 절대 안됨. (모든 업무가 중지되기 때문) (은행은 야간에 서버를 백업해둠)
=> DB 서버에 DBMS를 설치하면 좋지 않을 확률이 높기 때문에 cmd로 SQL을 다룰 수 있는 SQL-PLUS를 사용
=> 개발자들은 'orange', 'torr', 'sql developer'를 사용하지만 엔지니어들은 'sql-plus'를 사용
* SQL-PLUS 사용 환경 명령어
* AUTO-COMMIT
=> SET AUTO-COMMIT ON 후 INSERT
=> SET AUTO-COMMIT OFF 후 INSERT, COMMIT
* SET FEEDBACK (숫자)
=> SELECT 명령문의 실행 결과를 표시하기 위하여 출력 행의 수를 지정하는 변수
=> 기본값은 6
* SET LINESIZE (숫자)
=> 한 화면에서 표시되는 SQL 명령문의 출력 결과에 대한 행의 크기를 설정하는 변수
=> 기본값은 80
* SET PAGESIZE (숫자)
=> 한 화면에서 표시되는 SQL 명령문의 실행 결과에 대한 페이지의 크기를 설정하는 변수
=> 기본값은 14
* SET PAUSE ON/OFF
=> SQL 명령문의 실행 결과를 한 화면에서 보기 힘든 경우, 한 페이지씩 나누어 출력하기 위한 변수
* TIME 변수
=> SQL 프롬프트 앞에 시스템의 현재 시간을 함께 표시하도록 설정하는 변수
* TIMING
=> SQL 명령문을 실행하는데 소요된 시간을 출력하기 위한 변수
=> ‘시:분:초.밀리초’ 형식
* COLUMN 명령어
=> SQL 명령문의 실행 결과로 출력되는 칼럼 제목이나 칼럼 데이터에 대한 출력 형식을 다양하게 지정하기 위한 명령어
=> An : 문자형식 칼럼의 출력 크기를 n폭으로 설정
# 예제 : 교수 테이블의 sal칼럼 데이터를 숫자 세자리마다 ‘,’로 구분하여 출력하여라. 단, sal칼럼의 크기는 7로 하고 출력크기보다 데이터가 작은 경우에는 0을 추가한다.
* 특정 칼럼에 대한 설정 값 출력 및 해제
* col 명령어 : 모든 칼럼에 대한 설정 값 출력
* SQL-PLUS 편집 명령어
* LIST 명령어
=> 버퍼에 저장된 SQL 명령문을 출력하기 위해 사용하는 명령어
=> 특정 라인 또는 특정 범위, 전체 범위의 라인에 포함된 명령문을 확인 또는 편집 시 특정 라인으로 이동하기 위해 사용
* ‘RUN’ 명령어 : SQL 명령문과 실행결과 출력
* ‘/ ‘ : 실행 결과만 출력
=> 세 줄로 쿼리 입력 후 'L (번호)' 로 줄 조회
* n : 현재 행으로 만들 행을 지정
* n text : n 행을 text로 바꿈
* DEL : SQL 버퍼에 저장된 SQL 명령문 중에서 일부 내용을 삭제하기 위한 명령어
=> DEL : 현재 행을 삭제합니다
=> DEL n : n번째 행을 삭제
=> DEL m n : m ~ n 번째까지 삭제
* INPUT : SQL 버퍼에 저장된 SQL 명령문의 현재 라인 다음에 새로운 라인을 추가하는 경우에 사용
=> I[NPUT] : 행 수에 대한 제한 없이 삽입
=> I[NPUT] text : text를 구성하는 한 행을 삽입
=> 0 text : 1행 앞에 한 행을 삽입
* A(PPEND) TEXT : Text를 현재 행의 끝에 추가합니다.
* CHANGE 명령어 : 현재 활성화된 라인에서 특정 텍스트를 다른 텍스트로 변경하기 위해 사용하는 명령
=> C(HANGE) /old/new : old(변경하기 전의 텍스트), new(변경할 텍스트)
* CL[EAR] BUFF[ER] : buffer 소거
* SQL-PLUS 파일조작 명령어
=> SQL 버퍼에 저장된 SQL 명령문을 파일에 저장하거나 파일에 저장된 SQL 명령문을 읽어올 수 있도록 하는 명령어
* SAV[E] filename [REP[LACE]] APP[END]]
=> SQL 버퍼의 현재 내용을 파일에 저장
=> APPEND : 기존 파일에 추가
=> REPLACE : 기존 파일에 겹쳐씀
=> 파일 이름의 기본 확장자는 .sql
* GET filename : 이전에 저장한 파일 내용을 SQL버퍼에 씀.
* SPO[OL] [filename | OFF | OUT] : 질의 결과를 파일에 저장
=> OFF : 스풀 파일을 닫음
=> OUT : 스풀 파일을 닫은 후 파일 결과를 시스템 프린터로 전송
=> 확장명은 .LST
* STA[RT] filename (= @filename) : 스크립트 실행 (이전에 저장한 명령 파일을 실행)
* host : 운영체제로 이동
* exit : sql로 이동
* SQL 함수
=> 단일행 함수 : 데이터 값 조작에 주로 사용. 행별로 함수를 적용하여 하나의 결과를 반환하는 함수.
=> 복수행 함수 : 조건에 따라 여러 행을 그룹화하여 그룹별로 결과를 하나씩 반환하는 함수.
* 문자 함수 : 문자 데이터를 입력하여 문자나 숫자를 반환하는 함수
INITCAP : 문자열의 첫 번째 문자만 대문자로 변환
LOWER : 문자열 전체를 소문자로 변환
UPPER : 문자열 전체를 대문자로 변환
# 문제 : adams라는 사원이 있으면 이름, 직업, 부서번호를 출력하세요.
* LENGTH 함수 : 인수로 입력되는 칼럼이나 표현식의 문자열의 길이를 반환하는 함수
* LENGTHB 함수 : 문자열의 바이트 수를 반환하는 함수
* 캐릭터셋 종류
=> KO16KSC5601 : 한글 완성형의 경우, 글자당 2 Byte
=> AL32UTF8 : 글자당 3 Byte
( 캐릭터셋을 임의로 바꾸면 글자가 깨지기도 할 수도 있음.)
# 문제 : 이름이 J,A, M 으로 시작하는 모든 사원에 대해 첫 번째 문자는 대문자로 나머지는 모두 소문자로 사원의 이름과 길이를 출력하고 이름순으로 정렬하세요.
* CONCAT 함수 : 첫 번째 문자와 두 번째 문자를 연결
* SUBSTR 함수 : 문자열의 일부를 추출하는 함수
* INSTR 함수 : 문자열 중에서 사용자가 지정한 특정 문자가 포함된 시작위치를 반환하는 함수
=> N 번째 위치부터 M번째 char의 시작위치를 찾음.
=> N이 음수이면 char의 뒤부터 찾음.
* LPAD, RPAD 함수 : 문자열이 일정한 크기가 되도록 왼쪽 또는 오른쪽에 지정한 문자를 삽입하는 함수
* LTRIM, RTRIM 함수 : 문자열에서 특정 문자를 삭제하기 위해 사용
# 예제 : 부서 테이블에서 부서 이름의 마지막 글자인 '과'를 삭제하여 출력하여라.
# 예제 1 : 사원테이블에서 사원명 칼럼의 별명은 Name, 급여*12는 Annual Salary로 부여하여 출력해 보세요.
# 예제 2 : 사원테이블의 사원명과 급여를 아래와 같은 포맷으로 출력해 보세요.
MONTHLY
--------------------------------------
SMITH: 1 Month salary = 800
ALLEN: 1 Month salary = 1600
WARD: 1 Month salary = 1250
# 예제 3 : 사원테이블에서 급여가 $1,500 ~ $5,000이고 직무가 PRESIDENT나 ANALYST가 아닌 모든 사원에 대해 사번, 이름, 직무, 급여를 직무,급여의 오름차순으로 정렬 하세요.
# 예제 4 : 사원 테이블에서 2월에 입사한 사원을 출력해 보세요.
# 예제 5 : 사원 테이블에서 20이나 30번 부서에 속하고 이름의 마지막 글자에 'S'자를 포함한 사원들 중에서 마지막 'S'를 제거해 보세요.
'데이터분석 공부 > DBMS 공부' 카테고리의 다른 글
DBMS(오라클) : 주석, 데이터무결성, 인덱스, 뷰, DCL, DDL, DML (0) | 2022.07.05 |
---|---|
DBMS(오라클) : 서브쿼리, DDL, DML, DCL, TCL, 시퀀스 (0) | 2022.07.04 |
DBMS(오라클) : HAVING 절, JOIN 함수 (0) | 2022.07.01 |
DBMS(오라클) : 숫자함수, 날짜함수, 일반함수, 그룹함수 (0) | 2022.06.30 |
DBMS(오라클) : DB 연결 확인 (0) | 2022.06.27 |