[SQL/ORACLE] SQL 스터디_1일차

DANI·2023년 8월 24일
0

ORACLE_SQL

목록 보기
1/10
post-thumbnail

📕 1day 요약

1. 오라클SQL 환경설정 및 cmd 확인

2. 파일시스템과 DBMS

3. 관계형 데이터베이스의 개체 / 속성 / 관계

4. 자료형과 객체

5. 기본문법_조회(select문)


📖 1. 오라클SQL 환경설정 및 cmd 확인

📌 oracle database 다운로드

1. 구글에 오라클 검색 후 소프트웨어 다운로드 클릭


2. Oracle Software Delivery Cloud 클릭 후 로그인 (계정생성 해야함)


3. Oracle Database 11g OLAP 검색 후 최신 버전 클릭


4. 우측 상단 항목보기 클릭 후 계속하다 클릭


5. 오라클 데이터베이스만 체크한 후 우측에 사양 확인하여 체크 후 다운로드


6. setup.exe 파일 실행 후 사양 어쩌고~ 체크박스 "예"누른 후 "다음" 누른 후 "예"



7. "데이터베이스 생성 및 구성" 체크 후 "다음"


8. "데스크톱 클래스" 체크 후 "다음"


9. 설치 위치 변경해도 되지만,,, 나는 디폴트 값이 좋다.. 그래서 "관리비밀번호" 입력 후 "다음"


10. 완료


📌 oracle developer 다운로드

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" 입력


❓ 상태: 성공이 안뜨고 ORA-12505 에러날 경우

  1. cmd 창lsnrctl services 입력
  2. 아래 빨간표시된 부분에 입력된 문자(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 현재 사용자가 누구?

💙 출력



💡 관리자(root)계정으로 전환

💚 입력

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 테이블이름;

(테이블 구조 확인하는 명령어)

💚 입력

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문)

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을 만족하는

💙 출력



📖 2. 파일시스템과 DBMS

📌 파일시스템 방식

  • 각 응용프로그램 별개별 데이터를 관리 EX)학사 프로그램, 장학금 신청프로그램
  • 각 응용프로그램마다 데이터를 쓰는 방식이 각각 다름
  • 데이터가 특정 응용프로그램에 종속되어 있으므로 응용 프로그램을 변경하면 기존 데이터를 사용할 수 없음
  • 데이터가 중복될 수 있음


📌 DBMS

  • 하나의 소프트웨어가 데이터를 관리하므로 중복을 피할 수 있음
  • 여러 응용프로그램이 DBMS를 통해 사용하므로 데이터를 공유할 수 있음
  • 하나의 DBMS에서 데이터를 관리하기 때문에 각 응용 프로그램이 데이터를 관리하는 방식이 통합
  • 응용 프로그램과 별도로 데이터가 DBMS에 의해 관리, 보관되기 때문에 업데이트 또는 변경과 관계없이 데이터를 사용할 수 있음

❓ 효율적인 데이터 관리란?

데이터 통합 / 일관된 방법 / 데이터 누락 및 중복 제거 / 실시간 사용 및 공유 가능



📖 3. 관계형 데이터베이스

❓ 데이터 모델이란?

컴퓨터에 데이터를 저장하는 방식을 정의해 놓은 개념 모형

  • 계층형 모델(tree구조)

    • 트리 구조를 활용하여 데이터 관련성을 계층별로 나누어 부모 자식 같은 관계를 정의한다
    • 일대다(1:N)관계의 데이터 구조를 파악해야 한다
  • 네트워크형 모델

    • 망형 데이터 모델이라고도 하며 그래프(graph)구조를 기반으로 한다.
    • 개체 간 관계를 그래프 구조로 연결하므로 자식 개체가 여러 부모 개체를 가질 수 있음(계층형 모델과 차이점)
  • 객체지향형 모델

    • 데이터를 독립된 객체로 구성하고 관리하며 상속, 오버라이드등
      객체지향프로그래밍에 사용되는 강력한 기능을 활용할 수 있음
  • 관계형 데이터 모델

    • 데이터 간 관계(relationship)에 초점을 둠
    • 현대에 가장 많이 사용되는 관계형 데이터베이스의 바탕이 되는 모델

📌 데이터베이스의 개체/속성/관계

  • 개체(entity)

    • 데이터베이스에서 데이터화 하려는 사물, 개념의 정보 단위
    • 관계형 데이터베이스의 테이블(table)개념과 대응되며 테이블은 릴레이션(relation)으로 표현하기도 함
  • 속성(attribute)

    • 개체를 구성하는 데이터의 가장 작은 논리적 단우로서 데이터의 종류, 특성, 상태등을 정의한다.
    • 관계형 데이터베이싀 열(column) 개념과 대응됨
  • 관계(relationship)

    • 개체와 개체 또는 속성 간의 연관성을 나타내기 위해 사용함
    • 관계형 데이터베이스에서는 테이블 간의 관계를 외래키(foreign key)등으로 구현하여 사용함

💡 DBMS / RDBMS / RDBMS 순위

  • DBMS : DataBase Manageement System
  • RDBMS : Relational Data Base Manageement System

❓ SQL 이란?

Structured Query Language

RDBMS에서 데이터를 다루고 관리하는 데 사용하는 데이터베이스 질의 언어

  • DBMS 제작회사와 독립적이다
  • 다른 시스템으로 이식성이 좋다
  • 표준이 계속 발전한다
  • 대화식 언어
  • 분산형 클라이언트/서버 구조


❓ NoSQL 이란?

비관계형 데이터베이스 (not only SQL)

NoSQL 데이터베이스는 특정 데이터 모델에 대해 특정 목적에 맞추어 구축되는 데이터베이스로서 현대적인 애플리케이션 구축을 위한 유연한 스키마를 갖추고 있다.

[참조]
https://www.oracle.com/kr/database/nosql/what-is-nosql/
https://aws.amazon.com/ko/nosql/


📖 4. 관계형데이터베이스의 구성요소

📌 테이블

관계형 데이터베이스는 기본적으로 데이터를 2차원 표 형태로 저장하고 관리하며 이 표 형태의 데이터 저장 공간을 테이블(table)이라고 한다. 가로줄을 행(row) 세로줄을 열(column)이라고 부른다.

데이터베이스에서 테이블관계(relation), 튜플(tuple) 또는 레코드(record) 그리고 애트리뷰트(attribute) 또는 필드(field)라고 함

📌 키 key (특별한 의미를 지닌 열)

키(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) : 두 개 이상의 테이블을 양옆에 연결하여 마치 하나의 테이블인 것처럼 데이터를 조회하는 방식

📖 5. 기본문법_조회(SELECT문)

SELECT COLUMNS1, COLUMNS2

FROM TABLE_NAME

WHERE 조건 (WHERE절 생략가능)

ORDER BY COLUMS1


🔒 조회할 SCOTT 테이블 데이터


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"로 별칭한다

💙 출력

💡 별칭을 지정하는 방식

  1. SAL*12 YEAR_SA
  2. SAL*12 "YEAR_SAL"
  3. SAL*12 AS YEAR_SAL
  4. SAL*12 AS "YEAR_SAL"

4. 🔍 (null)값과 사칙연산을 할 경우

💚 입력

SELECT ENAME, SAL, COMM, SAL+COMM 
FROM EMP;

💙 출력

☑️ (null)값은 int의 "0"이 아닌 "값이 없음"을 뜻한다. 따라서 사칙연산을 할 수 없다.


❓ (NULL) 이란?

INT의 "0"이 아닌 "값이 없음"을 뜻한다.

C언어와 자바에서는 NULL과 관련한 예외 상황이 NullPointerException이라는 이름으로 발생하지만 코틀린는 NULL값을 코드에서 없애는 것을 지향하여, 결과적으로 프로그램이 실행 중에 예외 상황을 만나 중단되는 위험을 줄여주며 안정성을 높여줌.


데이터베이스에는 데이터를 입력할 때 'NOT NULL'이라는 조건을 두어 무조건 NULL값을 허용하지 않을 수 있으며, 따라서 NULL을 허용했을 때 생기는 문제점을 미리 방지할 수 있다.

sum()함수의 경우 (null)값 제외 합계 값이 출력된다

[참조] https://slowalk.com/2181


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)을 이용할 수 있다.

0개의 댓글