2020년 12월 11일 9시 ~ 15시 30분 zoom으로 수업 진행
기본용어
-학원에서 배운 내용
행(ROW), 튜플 : 한 줄이 하나의 데이터
컬럼, 도메인 : 하나의 속성 ( 같은 유형의 데이터만 들어올 수 있음 )
기본키 : 각 행을 구분할 수 있는 값
외래키 : 다른 테이블의 값을 참조 할 수 있는 참조 키
Null : 값이 없음을 나타낸다.
컬럼 값, 속성 값 : 데이터 하나를 의미
-학교 (데이터베이스 개론)
속성 , 애트리뷰트, 필드 : 테이블의 열을 의미, 서로 다른 이름을 이용해 구별
도메인 : 속성 하나가 가질 수 있는 모든 값의 집합을 해당 속성의 도메인이라고 한다.
+ 쉽게 생각하면 속성이 변수, 도메인이 데이터 타입이라고 생각하면 편하다.
행, 투플 : 테이블의 행을 말한다. 테이블에 들어가는 데이터에 대한 속성 값을 모은 것.
null : 특정 속성에 해당되는 값이 없음을 나타낸다.
SQL(Structured Query Language)
관계형 데이터베이스에서 데이터를 조회하거나 조작하기위해 사용하는 표준 검색 언어
원하는 데이터를 찾는 방법이나 절차를 기술하는 것이 아닌 조건을 기술하여 작성
분류 |
용도 |
명령어 |
DQL(Data Query Language) |
데이터 검색 |
SELECT |
DML(Data Manipulation Language) |
데이터 조작 |
INSERT, UPDATE, DELETE |
DDL(Data Definition Language) |
데이터 정의 |
CREATE, DROP, ALTER |
TCL(Transaction Control Language) = DCL |
트랜젝션 제어 |
COMMIT, ROLLBACK |
데이터 타입
데이터 타입 |
하위 데이터 타입 |
설명 |
NUMBER |
|
숫자 |
CHARACTER |
CHAR |
고정길이 문자(최대 2000바이트) |
VARCHAR2 |
가변길이 문자(최대 4000바이트) |
|
LONG |
가변길이 문자(최대 2기가) |
|
DATE |
|
날짜 |
LOB |
CLOB |
가변길이 문자(최대 4기가) |
BLOB |
binary Data |
NUMBER[ ( 전체 숫자 자리 수 [ , 소수점 이하 자리 수 ] ) ]
ex)
NUMBER(7) -> 12345.678 저장
7자리이지만 정수는 5자리이므로 5개만 표현, 첫번째 소수로 인해 반올림 되어 저장
NUMBER(7, 1) -> 12345.678 저장
7자리이지만 정수 7자리와 소수 1자리만 표현, 두번째 소수로 인해 반올림 되어 저장
CHAR ( SIZE [ (byte | char ) ]
SIZE -> 포함 될 문자열의 크기
지정한 크기보다 작은 문자나 문자열이 입력되면 남는 공간을 공백으로 채운다
대소문자를 구분한다
ex)
CHAR(6) -> KIMCHI 저장 : KIMCHI
CHAR(9) -> KIMCHI 저장 : KIMCHI*** ( 공백 3칸 3byte)
CHAR(6) -> 김치 저장 : 김치 (한글은 한 글자 당 3byte 이므로 공간에 딱 맞음)
VARCHAR2( SIZE [ (byte | char ) ]
크기가 0인 값은 NULL로 인식 , 대소문자를 구분함
ex)
VARCHAR(6) -> KIMCHI 저장 : KIMCHI
VARCHAR(10) -> KIMCHI 저장 : KIMCHI (공백저장X , 남는 공간은 버린다)
VARCHAR(6) -> 김치 저장 : 김치 (한글은 한 글자 당 3byte 이므로 공간에 딱 맞음)
DATE
날짜 연산 및 비교 가능
일자 및 시간 정보 관리
연산 | 결과 타입 | 설명 |
날짜 + 숫자 | DATE | 날짜에서 숫자만큼 며칠 후인지 |
날짜 - 숫자 | DATE | 날짜에서 숫자만큼 며칠 전인지 |
날짜 - 숫자 | NUMBER | 두 날짜의 일수 차 |
날짜 + 숫자/24 | DATE | 날짜 + 시간 |
SELECT
데이터를 조회한 결과를 Result Set이라고 하는데 SELECT 구문에 의해 반환된 행들의 집합을 의미한다.
Result Set은 0개 이상의 행이 포함될 수 있고, Result Set은 특정한 기준에 의해 정렬 가능
한 테이블의 특정 컬럼, 특정 행/컬럼 또는 여러 테이블의 특정 행/컬럼 조회 가능
작성법
SELECT 컬럼 명 [, 컬럼 명 , …] |
SELECT
조회하고자 하는 컬럼 명 기술
여러 컬럼을 조회하는 경우 컬럼은 쉼표로 구분, 마지막 컬럼의 뒤에는 쉼표를 사용하지 않음.
모든 컬럼 조회 시 컬럼 명 대신 ‘*’ 기호 사용 가능, 조회 결과는 기술한 컬럼 명 순으로 표시 된다.
FROM
조회 대상 컬럼이 포함된 테이블 명 기술
WHERE
행을 선택하는 조건 기술
여러 개의 제한 조건을 포함할 수 있고, 각각의 제한 조건은 논리 연산자로 연결
제한 조건을 만족시키는 행들만 Result Set에 포함한다.
명령어와 테이블 명은 대소문자 구분x
테이블안에 들어가는 데이터를 대소문자 구분한다.
--SELECT 사용법
--SELECT *(조회할 컬럼) : 조회하고자 하는 내용
--FROM 테이블명 : 조회하고자 하는 테이블명
--[WHERE 조건] : 특정 조건
--[ORDER BY 컬럼] : 정렬
--;
-- * 모든 행과 모든 컬럼 조회
SELECT * FROM employee;
--사원의 ID와 사원명, 연락처 조회
SELECT EMP_ID, EMP_NAME, PHONE
FROM employee;
--나온 결과를 RESULT SET이라고 한다.
--실습--
--사원의 아이디, 사원명, 이메일, 연락처, 부서번호, 직급코드 조회
SELECT EMP_ID, EMP_NAME, EMAIL, PHONE, DEPT_CODE, JOB_CODE FROM employee;
--WHERE
--테이블에서 조건을 만족하는 값을 가진 행을 선택해 조회하는 조건절
--여러 개의 조건을 선택하고자 한다면 AND, OR와 함께 사용 가능하다
--실습2
--직급이 'J1'인 사원의 사번, 사원명, 직급코드, 부서코드 조회
SELECT EMP_ID, EMP_NAME, JOB_CODE, DEPT_CODE
FROM EMPLOYEE
WHERE JOB_CODE = 'J1';
--조건이 2개 이상 붙을 경우 (AND, OR 사용)
--컬럼 별칭 만들기
--1. AS 사용하기
SELECT EMP_ID AS "사원번호", EMP_NAME AS "사원명"
FROM employee;
--2.
--이 경우 별칭에 띄어쓰기가 들어갈 경우 반드시 ""로 구분해주어야 한다.
SELECT EMP_ID 사원번호, EMP_NAME "사원 명"
FROM employee;
--컬럼값을 사용하여 계산식을 적용한 정보 조회하기
SELECT EMP_NAME "사원 명",
(SALARY * 12) 연봉,
BONUS 보너스,
(SALARY + (SALARY*BONUS))*12 연봉총합
FROM EMPLOYEE;
--NVL() : 조회한 값이 NULL 일 경우 별도로 설정한 값으로 변경
--NVL(컬럼명, 기본값)
SELECT EMP_NAME "사원 명",
(SALARY * 12) 연봉,
NVL(BONUS, 0) 보너스,
(SALARY + (SALARY * NVL(BONUS, 0) ))*12 연봉총합
FROM EMPLOYEE;
--컬럼에 일반값 사용하기
--단위 컬럼을 추가하고 해당 컬럼의 값으로 '원'을 저장함
--실제 데이터베이스에 저장되는거 아님
SELECT EMP_NAME, SALARY*12, '원' 단위
FROM employee;
--DISTINCT
--만약 해당하는 값이 컬럼에 여러 개 존재할 경우
--중복을 제거하고 한 개만 조회(NULL도 포함)
SELECT DISTINCT DEPT_CODE
FROM EMPLOYEE;
--실습5
--DEPARTMENT 테이블을 참조하여
--부서가 '해외영업2부'인 부서코드를 찾고
--EMPLOYEE 테이블에서 해당 부서의 사원들 중
--급여를 200만원보다 많이 받는 직원의
--사번, 사원명, 급여를 조회
SELECT *
FROM department
WHERE dept_title='해외영업2부';
--D6
SELECT EMP_ID 사번, EMP_NAME 사원명, SALARY 급여
FROM EMPLOYEE
WHERE DEPT_CODE = 'D6' AND SALARY >= 2000000;
--부서가 '해외영업2부' 이거나
--급여를 200만원보다 많이 받는 직원의 사번 사원명 급여를 조회
SELECT EMP_ID 사번, EMP_NAME 사원명, SALARY 급여
FROM EMPLOYEE
WHERE DEPT_CODE = 'D6' OR SALARY >= 2000000;
--연산자
--연결 연산자 '||' : 여러 컬럼의 결과 값을 하나의 컬럼으로 묶는다
SELECT EMP_ID || '을 가진 사원의 이름은 ' || EMP_NAME || '입니다'
FROM EMPLOYEE;
--비교연산자
-- < , > , <= , >= : 크기를 비교하는 부등호
-- 자바와 달리 오라클에서는 = 하나만 사용하는게 같다는 의미
-- != , ^= , <> : 같지 않다
SELECT *
FROM EMPLOYEE
--WHERE DEPT_CODE != 'D9';
--WHERE DEPT_CODE ^= 'D9';
WHERE DEPT_CODE <> 'D9';
--EMPLOYEE 테이블에서
--급여가 350만원 이상 550만원 이하인
--직원의 사번, 사원명, 부서코드, 직급코드, 급여를 조회
SELECT EMP_NO, EMP_NAME, DEPT_CODE, JOB_CODE, SALARY
FROM EMPLOYEE
WHERE SALARY >= 3500000 AND SALARY <= 5500000
ORDER BY SALARY;
--ORDER BY SALARY : SALARY 값을 기준으로 오름차순으로 정렬하겠다 -> ASC가 오름차순을 뜻하는데 생략되어있다.
--ORDER BY SALARY DESC; => 내림차순
--BETWEEN A AND B
SELECT EMP_NO, EMP_NAME, DEPT_CODE, JOB_CODE, SALARY
FROM EMPLOYEE
WHERE SALARY BETWEEN 3500000 AND 5500000;
--위와 똑같은 직원의 정보를 조회할 때
--350만원 미만, 550만원 초과인 직원의 정보를 조회
SELECT EMP_NO, EMP_NAME, DEPT_CODE, JOB_CODE, SALARY
FROM EMPLOYEE
WHERE SALARY NOT BETWEEN 3500001 AND 5500000;
--LIKE
--입력한 숫자, 문자가 포함된 정보를 조회할 때 사용하는 연산자
-- _ : 임의의 한 문자를 의미한다
-- % : 몇 문자든 관계없음 , 앞에 몇 글자인지는 모르는데 일단 문자가 있을 경우
--EMPLOYEE 테이블에서
--사원 이름 가운데에 '중'이 들어가는 사원 정보 조회
SELECT *
FROM EMPLOYEE
WHERE EMP_NAME LIKE '_중_';
--EMPLOYEE 테이블에서 주민등록번호 기준 남성인 사원의 정보만 조회
--내가 푼 것
SELECT *
FROM EMPLOYEE
WHERE EMP_NO LIKE '%-1%';
--선생님 코드
SELECT *
FROM EMPLOYEE
WHERE EMP_NO LIKE '______-1%';
--사원 중 이메일 4번째 자리가 '_' 인 사원의 정보를 조회
--ESCAPE 문자를 선언
--ESCAPE 문자로 선언함으로 #_는 이제 문자 하나를 나타내는것이 아닌 진짜 '_' 가 된당
SELECT *
FROM EMPLOYEE
--WHERE EMAIL LIKE '___#_%@%' ESCAPE '#';
WHERE EMAIL LIKE '___!_%@%' ESCAPE '!';
--IN 연산자
--IN(값1, 값2, 값3, ...)
--안에 있는 값 중 하나라도 일치하는 경우
--해당 값을 조회하는 연산자
--부서코드가 D1 이거나 D6 인 부서 직원 정보 조회
SELECT *
FROM EMPLOYEE
WHERE DEPT_CODE = 'D1' OR DEPT_CODE = 'D6';
-- 위 아래 같은 코드
SELECT *
FROM EMPLOYEE
WHERE DEPT_CODE IN ('D1', 'D6');
--부서코드가 D1 도 D6 도 아닌 부서 직원 정보 조회
SELECT *
FROM EMPLOYEE
WHERE DEPT_CODE NOT IN ('D1', 'D6');
/*
--연산자 우선순위
0. ()
1. 산술 연산자 ( + = / *)
2. 연결 연산자
3. 비교 연산자
4. IS NULL / IS NOT NULL , LIKE , IN / NOT IN
5. BETWEEN A AND B
6. NOT
7. AND
8. OR
*/
'기록 > 자바_국비' 카테고리의 다른 글
[배운내용정리] 1216 자바 국비교육 _ Oracle (0) | 2020.12.26 |
---|---|
[배운내용정리] 1215 자바 국비교육 _ Oracle (0) | 2020.12.26 |
[배운내용정리] 1210 자바 국비교육 _ Oracle 시작 (0) | 2020.12.20 |
[배운내용정리] 1209 자바 국비교육 (0) | 2020.12.20 |
[배운내용정리] 1207 자바 국비교육 (0) | 2020.12.13 |