1. 오라클SQL 환경설정 및 cmd 확인
2. 파일시스템과 DBMS
3. 관계형 데이터베이스의 개체 / 속성 / 관계
4. 자료형과 객체
5. 기본문법_조회(select문)
1. 구글에 오라클 검색 후 소프트웨어 다운로드 클릭
2. Oracle Software Delivery Cloud 클릭 후 로그인 (계정생성 해야함)
3. Oracle Database 11g OLAP 검색 후 최신 버전 클릭
4. 우측 상단 항목보기 클릭 후 계속하다 클릭
5. 오라클 데이터베이스만 체크한 후 우측에 사양 확인하여 체크 후 다운로드
6. setup.exe 파일 실행 후 사양 어쩌고~ 체크박스 "예"누른 후 "다음" 누른 후 "예"
7. "데이터베이스 생성 및 구성" 체크 후 "다음"
8. "데스크톱 클래스" 체크 후 "다음"
9. 설치 위치 변경해도 되지만,,, 나는 디폴트 값이 좋다.. 그래서 "관리비밀번호" 입력 후 "다음"
10. 완료
1. 구글에 oracle developer 검색 후 Downloads 클릭
2. JDK11이 포함된 Windows 64비트(개인사양확인) 다운로드
3. 알집 해제 후 sqldeveloper.exe 파일 실행
4. 새 접속(+) 클릭
5. CMD창 열어서 "SQLPLUS" 입력 후 사용자명 "system" 비밀번호(위 9번에서 입력한 관리비밀번호) 입력
☑️ 비밀번호는 빈 공간으로 표시된다.
6. 사용자 변경
ALTER USER SCOTT
2 IDENTIFIED BY tiger
3 ACCOUNT UNLOCK;
ALTER USER SCOTT
사용자 "SCOTT"의 계정을
2 IDENTIFIED BY tiger
비밀번호를 "tiger"로 변경
3 ACCOUNT UNLOCK;
계정을 "UNLOCK" 한다
7. "Name" 입력 / 사용자 이름 & 비밀번호 (DB) 입력 / SID에 "orcl" 입력
- cmd 창에 lsnrctl services 입력
- 아래 빨간표시된 부분에 입력된 문자(orcl)로 SID(I)를 변경해줌
☑️
Orcle = DBMS / S(SCOTT) = DB
8. "SQL"버튼 클릭 후 현재 DB선택 하면 워크시트가 나옴
그 후 질의 작성 후 "▶" 버튼 누르면 질의 결과가 하단에 나옴
EXIT;
SQLPLUS SCOTT/tiger
❔ EXIT;
나가기
❔ SQLPLUS SCOTT/tiger
SQLPLUS 사용자/비밀번호
CONN SYSTEM;
❔ CONN SYSTEM;
SYSTEM 계정으로 연결
☑️ EXIT; 후 재연결 할 필요 없이 바로 계정 전환이 가능하다
show user
CONN SCOTT
SHOW USER
❔ show user
현재 사용자가 누구?
SQLPLUS SYS AS SYSDBA
show user
❔ SQLPLUS SYS AS SYSDBA
관리자(root)계정으로 전환
☑️ root 관리자는 생성, 삭제가 가능하다
데이터베이스의 생성 및 관리, 데이터의 삽입, 수정, 변경 및 삭제를 수행하는 데이터베이스 계정을 의미한다. DBMS 소프트웨어의 설치 및 관리에 사용할 사용자 계정을 의미하며, 보통 설치 계정과 일반적인 운영 계정을 분리할 것을 권장한다.
1. 관리자 계정(Administrator)
- 데이터베이스의 생성과 관리를 담당하는 슈퍼유저(Super User)계정이며, 정의, 생성, 삭제등의 작업이 가능하다.
- 오라클 데이터베이스 생성 시 관리자 계정인 sys와 system계정이 자동으로 생성되어 있다. MySQL데이터베이스인 경우에는 관리자 계정 root가 기본적으로 생성된다.
- 오브젝트(Object)의 생성, 변경, 삭제등의 작업이 가능하다.
- 데이터베이스에 대한 모든 권한과 책임을 가지는 계정
2. DBMS 설치 계정(Administrator)
- DBMS 소프트웨어의 소유자가 되며, 사용자 계정과 그룹을 가진다.
- DBMS 제품군에 따라 계정을 분리한다
- 설치된 DBMS 백업은 이 계정으로 작업해야 한다.
3. 일반 계정(End User; General User)
- 데이터베이스에 대하여 질의(Query), 갱신, 보고서 작성 등의 작업을 수행할 수 있는 계정
- 일반 계정은 업무에 필요한 최소한의 권한만 가지는 것을 원칙으로 한다
DESC 테이블이름;
(테이블 구조 확인하는 명령어)
DESC EMP;
이름 널? 유형
-------- -------- ------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
☑️ 8개의 column이 있고, columns의 유형을 보여준다.
☑️ VARCHAR2 : 가변성 있는 문자 / 문자열은 STRING
SELECT COLUMNS1, COLUMNS2
FROM TABLENAME;
WHERE 조건 (없을 시 생략 가능)
해당 테이블에 있는 특정 열을 조회 함 (조건을 만족하는)
1. 🔍 테이블의 전체 열 조회
SELECT * FROM EMP;
❔ SELECT * FROM EMP;
EMP 테이블의 전체 열을 조회
2. 🔍 테이블의 특정 열 조회
SELECT ENAME, HIREDATE, SAL FROM EMP;
❔ SELECT ENAME, HIREDATE, SAL FROM EMP;
EMP 테이블의 ENAME, HIREDATE, SAL 열을 조회
3. 🔍 테이블에서 조건을 만족하는 특정 열 조회
SELECT ENAME, SAL
2 FROM EMP
3 WHERE SAL > 2500;
SELECT ENAME, SAL FROM EMP
ENAME, SAL 열을 조회
2 FROM EMP
EMP 테이블의
3 WHERE SAL > 2500;
SAL > 2500을 만족하는
데이터 통합 / 일관된 방법 / 데이터 누락 및 중복 제거 / 실시간 사용 및 공유 가능
컴퓨터에 데이터를 저장하는 방식을 정의해 놓은 개념 모형
- DBMS : DataBase Manageement System
- RDBMS : Relational Data Base Manageement System
Structured Query Language
RDBMS에서 데이터를 다루고 관리하는 데 사용하는 데이터베이스 질의 언어
비관계형 데이터베이스 (not only SQL)
NoSQL 데이터베이스는 특정 데이터 모델에 대해 특정 목적에 맞추어 구축되는 데이터베이스로서 현대적인 애플리케이션 구축을 위한 유연한 스키마를 갖추고 있다.
[참조]
https://www.oracle.com/kr/database/nosql/what-is-nosql/
https://aws.amazon.com/ko/nosql/
관계형 데이터베이스는 기본적으로 데이터를 2차원 표 형태로 저장하고 관리하며 이 표 형태의 데이터 저장 공간을 테이블(table)이라고 한다. 가로줄을 행(row) 세로줄을 열(column)이라고 부른다.
데이터베이스에서 테이블은 관계(relation), 행은 튜플(tuple) 또는 레코드(record) 그리고 열은 애트리뷰트(attribute) 또는 필드(field)라고 함
키(key)는 어떤 문에 꼭 맞는 열쇠가 하나씩 있듯이 수많은 데이터를 구별할 수 있는 유일한 값이며 하나의 테이블을 구성하는 여러 열 중에서 특별한 의미를 지닌 하나 또는 여러 열의 조합을 의미함
- 기본키 Primary key
- 외래키 Foreign key
- 복합키 Composite key
- 후보키 Candidate key
- 대체키 Alternate key
☑️ 관계형데이터베이스에서 한 쪽의 기본키가 다른 쪽의 외래키가 되어 관계를 형성한다.
자료형 | 설명 |
---|---|
VARCHAR2(길이) | 4000byte만큼 가변 길이 문자열 데이터를 저장할 수 있음(최소 1byte) |
NUMBER(전체자릿수, 소수점 이하 자릿수) | ±38자릿수의 숫자를 저장할 수 있음 |
DATE | 날짜 형식을 저장하기 위한 자료형, [세기,연,월,일,시,분,초] 저장 가능 |
CHAR(길이) | 4000byte마ㄴ큼의 고정 길이 문자열 데이터 저장할 수 있음(최소1byte) |
NVARCHAR2(길이) | 4000byte만큼의 가변 길이 국가별 문자 세트 데이터를 저장할 수 있음(최소 1byte) |
BLOB | 최대 크기 4GB의 대용량 이진 데이터를 저장할 수 있음 |
CLOB | 최대 크기 4GB의 대용량 텍스트 데이터를 저장할 수 있음 |
BFILE | 최대 크기 4GB의 대용량 이진 데이터를 저장할 수 있음 |
desc emp;
☑️ desc 명령어를 이용하여 현재 테이블이 갖고 있는 속성의 자료형을 알아볼 수 있다
객체 | 설명 |
---|---|
테이블(table) | 데이터를 저장하는 장소 |
인덱스(index) | 테이블의 검색 효율을 높이기 위해 사용 |
뷰(View) | 하나 또는 여러 개의 선별된 데이터를 논리적으로 연결하여 하나의 테이블처럼 사용하게 해줌 |
시퀀스(sequence) | 일련 번호를 생성해 줌 |
시노님(synonym) | 오라클 객체의 별칭을 지정함 |
프로시저(procedure) | 프로그래밍 연산 및 기능 수행이 가능(반환 값 없음) |
함수(function) | 프로그래밍 연산 및 기능 수행이 가능함(반환 값 있음) |
패키지(package) | 관련 있는 프로시저와 함수를 보관함 |
트리거(trigger) | 데이터 관련 작업의 연결 및 방지 관련 기능을 제공함 |
☑️ 오라클 sql developer의 화면
- 셀렉션(selection) : 행 단위로 원하는 데이터를 조회하는 방식
- 프로젝션(projection) : 열 단위로 원하는 데이터를 조회하는 방식
- 조인(join) : 두 개 이상의 테이블을 양옆에 연결하여 마치 하나의 테이블인 것처럼 데이터를 조회하는 방식
SELECT COLUMNS1, COLUMNS2
FROM TABLE_NAME
WHERE 조건 (WHERE절 생략가능)
ORDER BY COLUMS1
1. 🔍 테이블에서 특정 열의 중복값을 제외하고 조회
SELECT DISTINCT JOB, DEPTNO
FROM EMP;
❔ DISTINCT JOB
JOB의 중복값을 제외
2. 🔍 연산식을 사용하여 출력하기
SELECT ENAME, SAL, SAL*12
FROM EMP;
3. 🔍 연산식을 사용하고 별칭해서 출력하기
SELECT ENAME, SAL, SAL*12 AS YEAR_SAL
FROM EMP;
❔ SAL*12 AS YEAR_SAL
SAL*12의 column명을 "YEAR_SAL"로 별칭한다
- SAL*12 YEAR_SA
- SAL*12 "YEAR_SAL"
- SAL*12 AS YEAR_SAL
- SAL*12 AS "YEAR_SAL"
4. 🔍 (null)값과 사칙연산을 할 경우
SELECT ENAME, SAL, COMM, SAL+COMM
FROM EMP;
☑️ (null)값은 int의 "0"이 아닌 "값이 없음"을 뜻한다. 따라서 사칙연산을 할 수 없다.
INT의 "0"이 아닌 "값이 없음"을 뜻한다.
C언어와 자바에서는 NULL과 관련한 예외 상황이 NullPointerException이라는 이름으로 발생하지만 코틀린는 NULL값을 코드에서 없애는 것을 지향하여, 결과적으로 프로그램이 실행 중에 예외 상황을 만나 중단되는 위험을 줄여주며 안정성을 높여줌.
데이터베이스에는 데이터를 입력할 때 'NOT NULL'이라는 조건을 두어 무조건 NULL값을 허용하지 않을 수 있으며, 따라서 NULL을 허용했을 때 생기는 문제점을 미리 방지할 수 있다.
sum()함수의 경우 (null)값을 제외한 합계 값이 출력된다
5. 🔍 테이블에서 조건을 만족하는 특정 열 정렬하여 출력하기
SELECT ENAME, SAL
FROM EMP
WHERE SAL > 1000
ORDER BY SAL;
❔ ORDER BY SAL
SAL 기준으로 오름차순(기본값)으로 정렬
☑️ ORDER BY 는 디폴트 값이 ASC(오름차순)이다.
6. 🔍 테이블에서 조건을 만족하는 특정 열 정렬하여 내림차순 출력하기
SELECT ENAME, SAL
FROM EMP
WHERE SAL < 3000
ORDER BY SAL DESC;
❔ ORDER BY SAL DESC
SAL 기준으로 내림차순(DESC)으로 정렬
☑️ ORDER BY COULMN_NAME DESC 내림차순 정렬
7. 🔍 같은 값이 있을 경우 정렬 순서 정하기
SELECT ENAME, SAL
FROM EMP
ORDER BY SAL ASC, ENAME DESC;
❔ ORDER BY SAL ASC, ENAME DESC
SAL 기준으로 오름차순, SAL에 같은 값이 있다면 ENAME기준으로 내림차순으로 정렬
☑️ 1차 정렬은 SAL의 오름차순 / 2차 정렬은 ENAME의 내림차순으로 정렬에 순서를 정할 수 있다.
☑️ 정렬하는 데 시간이 오래 소요되므로 꼭 필요한 경우가 아니라면 사용하지 않는 것이 좋다.
8. 🔍 논리곱을 이용하여 두 가지 조건식을 만족하는 데이터 출력
SELECT *
FROM EMP
WHERE JOB='SALESMAN'
AND SAL>=1300;
❔ WHERE JOB='SALESMAN' AND
SAL>=1300 "AND"로 조건식 2개를 이어 줌(논리곱)
9. 🔍 논리합을 이용하여 두 가지 조건식을 만족하는 데이터 출력
SELECT *
FROM EMP
WHERE EMPNO=7369
OR DEPTNO=30;
❔ WHERE EMPNO=7369 OR
DEPTNO=30 "OR"로 조건식 2개를 이어 줌(논리합)
☑️ 논리합(OR), 논리곱(AND), 논리부정(NOT)을 이용할 수 있다.