개념 먼저
- 그냥 파일에다가 해도 되지만
- 불편하기도 하고 성능도 별로다.
- 편리성과 성능 우월한 DB 사용한다.
- DB에서는 데이터를
- 문서로 관리하는 것이 아니라.
- table형태로 (row,col) 저장-관리한다.
- 우리는 DB 자체를 배우는 것이 아니라
- DB에서 데이터를 생성하고/읽어오고/갱신하고/삭제하고
- CRUD작업을 SQL을 배우는 것이다~!
- ( 지금 말한 DB라고 한 부분은 DBMS라고 해야 정확한 표현)
DBMS 종류
- DB를 관리하는 시스템 – 오라클 DBMS를 설치한 상태
관계형 데이터베이스의 구조 및 용어
- RDBMS
- 사람마다 다르게 표현하는 경우도 많아서 개념만 잡고 가기
여기서부턴 오라클에 대해 알아보기
Oracle - 주요 사용자 계정 4가지
- 계정 아무것도 안 만들었을 경우 4가지 계정 있다.
- sys는 슈퍼계정 – 모든 권한이 다 있는 계정이다.
- sys as sysdba – sys계정으로 로그인하긴 할 건데 db의 권한을 줘서 로그인하겠다는 의미
Oracle - 기본 자료형
> 자바에서도 데이터 타입이 있었듯이!
- [ byte/ int / long / double / String / Date 등 ]
> DB에서도 데이터 타입이 존재한다.
- 많아 보이지만 단순하다.
- NUMBER -> 숫자 모든 거 해결
- VARCHAR2 -> 문자열>문자열 모든 거 해결 --- 가변
- CHAR ->문자열 모든 거 해결 ---- 고정
- DATE -> 날짜 해결.
> VARCHAR2와 CHAR
- ex) CARCHAR2(10) - 최대 10글자로 제한되는 것이고,
- 한 글자만 넣으면 뒤에 부분을 없애고 한 글자만큼만 공간을 차지하게 바뀐다.
- ex) CHAR(10) - 무조건 10칸 고정,-
- 1글자만 입력해도 10칸 다 사용하는 것으로 인식된다.
##check point
- 단순히 실행 속도면에서 char가 빠름
- 성별이라는 칸에는 1글자만 들어가게 제한할 경우에 char사용
- 전화번호부를 만들고 전화번호를 저장하겠다. - 11글자가 들어오도록 size지정
- 들어올 데이터의 길이를 예상할 수 있을 경우에는 CHAR()를 써주는 것이 낫다.
- why?
- char는 처음부터 글자 수 제한 – 그 공간이 생긴다 - 컴퓨터가 인덱스 구분하기가 쉽다.
- 연속적으로 데이터가 존재할 경우 - 한 칸 한 칸이 10byte씩 차지하고 있다는 것을 알고 있으므로 10byte 한 데이터 읽고 / 10byte 한 데이터 읽고 쉽다.
- VARCHAR로 하게 되면 – 처음에 있는 데이터가 10byte인지 몇 byte인지 체크해서 첫 번째 데이터 인식 / 그 칸 가서 다시 size 체크해서 두 번째 데이터 인식 / 하는 작업 필요
Oracle - Table 만들기
- CREATE TABLE 테이블명( ... )
실습하기
실습 전 기본 개념
- --이거는 한 줄 주석
- /**/ 이거는 여러 줄 주석
- SQL은 기본적으로 대문자로 작성
- 실행은 마지막 줄에서 컨트롤 엔터 OR 블록 잡고 컨트롤 엔터
자바는 프로젝트 단위로 저장했었는데
SQL DEVELOPER 에서는 워크시트 단위로 저장한다.
워크시트에서 CTRL + S
워크 시트란?
- sys라는 계정으로 접속한 상태
- 내가 앞으로 실행하는 쿼리/명령하는 쿼리들은 전부 다
- sys라는 계정을 바탕으로 실행될 것이다.
- 이 워크시트라는 공간에서는 – SQL들을 작성하고 실행하는 공간이다.
- 워크시트에 있는 내용을 저장해서 참고자료로 활용하면 된다.
계정 생성해서 권한 부여 -> 계정 접속해주기
계정 생성
- ID앞에 C## 추가
- 계정 생성 완료 – 대소문자 잘 체크
권한 부여
- GRANT ..... TO ...
계정 로그인
- 새로운 워크시트 생성된 것 확인
실습하기
CURD 실습
C R U D
- CREATE
- READ
- UPDATE
- DELETE
SQL 자료형 실습
문자열 형식
- 3가지 ( CHAR / VARCHAR / NCHAR )
대용량 형식
- 2 가지 ( CLOB, NCLOB ) - CLOB을 주로 사용
- EX) 블로그 글 작성 시 영상, 사진 등 대용량 필요한 경우
숫자
- 숫자(NUMERIC) 형식 - ( NUMBER )
날짜
- 한국 – 미국 이런 식으로 사용하는 경우에는 TIME ZONE 사용
- 보통의 경우에는 TIMESTAMP 많이 사용
## 유니코드란?
- >아스키코드에는 한글이 없다. 아메리칸 스탠더드
- >한글이나 한자나 이런 아시아권 언어를 처리하기 위해
- >아스키코드와 비슷하게 만들어 놓은 것 == 유니코드
큰 흐름만 챙겨가자~ 디테일까지 외울 필요 없다.
NUMBER 만 사용해봤다 강사님 曰
회사에서 ORACLE DB를 사용 안 한다 하면 외우고 파놓아도 도루묵
EX) VARCHAR2 도 오라클에서만 사용. 다른 DB에서는 VARCHAR로 사용할 수도.
SQL 유형 실습
- DDL - DATA DEFINATION LANGUAGE - 데이터 정의 언어 - ( 테이블 생성 구문 )
- DML - DATA MANIPULATION LANGUAGE - 데이터 조작 언어 - ( SELECT, INSERT, UPDATE, DELETE )
- DCL - DATA CONTROL LANGUAGE - 데이터 제어 언어 - ( GRANT, REVOKE )
- DML 실습
- < SELECT, INSERT, UPDATE, DELETE >
- >( 강사님 보내주신 데이터 기반으로 해보기)
1번 - SELECT
1번 - SELECT * FROM EMP; 해버리면 모든 칼럼의 내용이 다 출력된다.
2번 – 모든 칼럼 말고 특정 칼럼만 뽑아서 보고 싶다
3번 별칭 주기
- SELECT EMPNO AS 사원번호, ENAME AS 사원 이름 FROM EMP;
- -AS 생략해도 출력 결과가 똑같이 나오네! 확인
- -공백 있을 때는 “ ”로 묶어줘야 한다.
2번 - INSERT
1번 - 칼럼 추가하기 – INSERT INTO() , VALUE()
2번 - 특정 칼럼의 값을 넣어주기 싫은 경우 ( 모르는 경우 )
3번 - 모든 칼럼을 다 쓰는 경우에는, 칼럼명 생략 가능
###CHECK
- – 문자열 삽입시 “ ” 아닌 ‘ ’ 사용
- 칼럼 순서는 상관없다. 값만 맞게 넣어주면 OK
- + 추가 잘 되었는지 확인해보기~ SELECT * FROM EMP
3번 - UPDATE
1번 – 데이터 넣어주기 ( INSERT INTO / VALUES )
2번 – 데이터 수정해보기.
- 문제 발생. 모든 열의 SAL 칼럼 값이 변경되었다.
3번 SWY 의 SAL 값만 변경하고 싶었는데
- 모든 열의 SAL 값이 다 바뀌었다.
4번 - 문제를 해결해보자.
- ( JAVA의 IF문 같은 조건을 달아주면 된다 )
- WHERE 사용!
4번 - DELETE
1번 - 2개의 ROW중 1개의 ROW만 삭제하고 싶었는데 2개다 삭제됐다.
2번 – 조건을 추가해주면 된다. -- WHERE 추가
DML 실습 끝!
### RESULT SET
- 결과들의 집합이라는 의미로 RESULT SET이라고 부른다.
REVIEW
ORACLE DB를 배운 기념으로 대문자로 사용해보았다. :D
JAVA진도를 마치고 드디어 시작된 DB파트!
DB 파트를 배우고 JDBC 배우면 이제 JAVA와 DB 연결 가능!
후후 가보자으!
새로운 도구인 SQL developer를 사용하는 데
계정 생성이나 접속 부분이 낯설었다.
BUT
여기서 사용하고 배울 SQL은
정처기 준비하며 공부했던 부분이다.
DML / DDL / DCL / TCL
문법과 개념을 접하는데 낯설지도 않고 좋았다.
복습으로 각 조에서 진행하는
miniProject 주제에 맞는
테이블 만들기 과제를 내주셨다.
열심히 배워서 미니 플젝도 잘해보자!
'Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원 > 5월' 카테고리의 다른 글
22.05.18 - 정규표현식, ORDER BY, ROWNUM, DISTINCT (0) | 2022.05.19 |
---|---|
22. 05. 17 - 트랜잭션(COMMIT, ROLLBACK), DDL, DCL, 연산자 (0) | 2022.05.18 |
22. 05. 12 ~ 05. 13 - 휴 강 ( 복습, 예습, 충전 타임 ) (0) | 2022.05.16 |
22. 05. 11 - DB - Oracle DB, Sql developer 설치하기, 이론 예습 (0) | 2022.05.16 |
22. 05. 10 - 2차 시험, Api, 네트워크 소켓 복습 (0) | 2022.05.13 |