Day30 :) SELECT, 테이블조작, 데이터타입

Nux·2021년 10월 19일
0

자바웹개발

목록 보기
31/105
post-thumbnail

DML

Select구문

SELECT 조회 할 컬럼
FROM 조회 할 테이블

데이터 조회

SELECT EMPLOYEE_ID, HIRE_DATE
FROM EMPLOYEES;
-- EMPLOYEES의 EMPLOYEE_ID, HIRE_DATE 조회

산술연산자 활용가능

SELECT SALARY*12
FROM EMPLOYEES;

별칭 붙일 수 있음

SELECT FIRST_NAME AS 이름, SALARY*12 AS 연봉
FROM EMPLOYEES;
  • AS 생략 가능
SELECT FIRST_NAME 이름, SALARY*12 연봉
FROM EMPLOYEES;
  • 별칭에 공백이나 특수문자가 포함되어있으면 백틱('')사용
SELECT MAX_SALARY-MIN_SARALY '급여 차이'
FROM EMPLOYEES;

행 제한(데이터 필터링)

조건식 WHERE 사용

SELECT EMPLOYEE_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE SALARY >= 1500;
  • 문자의 경우 백틱('')을 사용하여 반드시 대소문자를 구분해야함
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE JOB_ID='SA_MAN';
  • AND키워드를 이용하여 여러 조건으로 데이터 필터링 가능.
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 50 AND SALARY <= 3000;
  • 컬럼 값이 null인 데이터 조회
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT_ID IS NULL;
-- NULL 이 아닌값
WHERE DEPARTMENT_ID IS NOT NULL;
  • 사이값 조회
    • BETWEEN A AND B: A 이상, B 이하인 값 반환
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE SALARY BETWEEN 10000 AND 50000;
  • IN 연산자
    • OR 대체 가능
    • 값 중 어느 한개만 만족하면 출력
SELECT EMPLOYEE_ID, FIRST_NAME, SALARY
FROM EMPLOYEES
WHERE SALARY(5000, 10000, 150000)
  • LIKE
    • 컬럼값이 제시된 패턴과 일치하면 출력
    • 언더바( _ ): 문자 한 개
    • *: 복수 문자
    • %: 해당하는 단어 출력
WHERE NAME LIKE '이_'
-- 이이, 이황 등
WHERE NAME LIKE '이__'
-- 이순신, 이성계 등 
WHERE NAME LIKE '이*'
-- 이, 이이, 이성계, 이아무개, ...
WHERE NAME LIKE '이_*'
-- '이'가 포함되는 2자 이상의 이름 출력 이이, 이순신, 이아무개, ...
WHERE BOOK_TITLE LIKE '자바%'
-- '자바'로 시작하는 데이터 출력. 자바의정석
WHERE BOOK_TITLE LIKE '%자바'
-- '자바'로 끝나는 데이터 출력. 혼자 공부하는 자바
WHERE BOOK_TITLE LIKE '%자바%'
-- '자바'가 포함된 데이터 출력. 자바의 정석, 혼자 공부하는 자바, 명품 자바 에센셜
  • 중복제거
SELECT DISTINCT JOB_ID
FROM EMPLOYEES
-- JOB_ID에서 중복되는 값이 제거된 후 데이터가 출력됨

테이블 생성

CREATE TABLE 테이블명(
	컬럼명 데이터타입(길이)
);
  • TB_SCORES라는 테이블 생성
    • STUDENT_NAME 컬럼 생성
      • 데이터타입 VARCHAR. 길이 20
      • NULL값 허용x
    • KOR_SCORE 컬럼 생성
      • 데이터타입 NUMBER, 소수점없는 최대 3자리 정수
      • 기본값 0
CREATE TABLE TB_SCORES(
	STUDENT_NAME VARCHAR(20) NOT NULL,
    KOR_SCORE NUMBER(3,0) DEFAULT 0
);

행추가

INSERT INTO 테이블명(삽입할 컬럼1, 삽입할 컬럼2, ... )
VALUES (컬럼1의 값, 컬럼2의 값, ...);
INSERT INTO TB_SCORES(NAME, KOR_SCORE)
VALUES ('김유신', 100);

'ORA-01950: 테이블스페이스 'USERS'에 대한 권한이 없습니다.' 오류 발생 시

ALTER USER 이름 DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;

데이터 변경

UPDATE 테이블명
SET 
컬럼1 = 변경할 값,
컬럼2 = 변경할 값
...
WHERE 조건식
  • 조건식을 바르게 입력하지 않으면 컬럼 전체의 값이 바뀌어버림

데이터 삭제

DELETE FROM 테이블명
WHERE 조건식
  • 조건식을 바르게 입력하지 않으면 행 전체가 삭제됨

COMMIT;

  • 작업확정명령어
  • 변경된 내용을 영구히 저장
  • 모든 사용자가 변경된 데이터를 볼 수 있음

ROLLBACK;

  • 데이터의 변경사항을 취소하고 마지막 COMMIT한 상태로 되돌림

DROP TABLE 테이블명;

  • 지정한 테이블을 삭제함
  • 테이블 내 데이터도 전부 삭제됨
  • 롤백이 불가능하므로 신중하게 사용 해야함

ORDER BY

  • 행 정렬 키워드
  • 기본적으로 오름차순 정렬
    • ASC 오름차순
    • DESC 내림차순
SELECT FIRST_NAME, HIRE_DATE, SALARY
FROM EMPLOYEES
WHERE DEPARTMENT_ID=60
ORDER BY FIRST_NAME;
-- FIRST_NAME의 오름차순으로 데이터가 정렬됨
-- WHERE는 생략 가능
SELECT FIRST_NAME, HIRE_DATE, SALARY
FROM EMPLOYEES
ORDER BY HIRE_DATE DESC;
-- HIRE_DATE의 내림차순으로 정렬
SELECT FIRST_NAME, HIRE_DATE, SALARY
FROM EMPLOYEES
ORDER BY 3 DESC;
-- SALARY를 내림차순으로 정렬
  • 다중 정렬 가능
SELECT FIRST_NAME, HIRE_DATE, SALARY
FROM EMPLOYEES
ORDER BY FIRST_NAME DESC, SALARY ASC;
-- FIRST_NAME을 내림차순 정렬 후 같은 FIRST_NAME이 있을 시, SALARY를 오름차순 정렬

데이터타입

VARCHAR2(size)

  • 가변길이. 최대 사이즈 4000BYTE
  • size범위 내에서 실제 데이터 크기만큼만 저장공간을 사용함
WHERE PRODUCT = '123';
-- 조회가능

CHAR(size)

  • 고정길이, 최대 사이즈 2000byte
  • 지정한 size의 저장공간 무조건 사용
WHERE PRODUCT = '123';
-- 조회불가
WHERE PRODUCT = '123  ';
-- 조회가능

LONG

  • 가변길이 대용량 문자 데이터. 최대 사이즈 2GB
  • ORDER BY, GROUP BY와 사용 불가하며 테이블 당 하나만 사용 가능
  • 요새 잘 쓰이지 않음

CLOB

  • 가변길이 대용량 문자데이터. 최대 사이즈 4GB

NUMBER(p,s)

  • 가변길이 숫자 데이터
  • P:10진수 총 개수, S: 소수점이하 자릿수
출처: https://bebeya.tistory.com/entry/ORACLE-Number-%ED%83%80%EC%9E%85-%ED%98%95%ED%83%9C-%ED%91%9C-Number25Number52

DATE

  • 날짜/시간 데이터

BLOB

  • 가변길이 대용량 이진데이터. 최대값 4GB
  • 그림, 영상, 게임파일 등이 해당됨

0개의 댓글