5월 17일 월요일 (6일차) - SQL개요ㅇ

@_@·2021년 5월 17일
0

Database

목록 보기
4/28

<목차>

ㅇ SQL 개요
ㅇ 프로그램 실행, 계정 연결
ㅇ ED 이용한 편집
ㅇ 테이블, 컬럼
ㅇ 실습에서 사용할 테이블, 컬럼 이해하기




ㅇ 자격증 하나 더 소개하면 : 데이터 진흥 협회 sqld
얘는 앞으로 배울 SQL이라는 언어의 활용 능력 보는 국가 공인 자격 시험
DB에 관심 있으신 분들은 이거 따자
이 시험을 보려면 PDF파일 15장부터 끝까지 봐야 해. 근데 이것만 보면 70~80% 준비 끝나
이 전 기수들은 정처기 따신 분들은 sqld를 준비하셨대
DB 수업을 받고 아 재밌네 하는 사람들에게 강력 추천




< sql언어 >

ㅇ DBMS (데이터베이스 매니지먼트 시스템)
: 사용자의 요청을 받아 가공, 처리해주는 소프트웨어 (도우미야)

  • 사용자는 DBMS에 요청 -> DBMS가 DB관리, 요청 처리 -> 사용자에게 돌려줘
  • 유저가 DB에 직접 접근하면 복잡하니까
  • DBMS프로그램 종류 많아 : 오라클 / 마이크로 소프트 : SQL 서버 / 마이 에스큐엘 등등

ㅇ 우리는 오라클 사용. 현재는 20버전까지 나와 있지만 실무에서 가장 많이 쓰는 건 11, 12버전

  • SW와 DB 업데이트 하려면 하드의 성능이 바껴야 해.
    돈이 많이 들어.. 그래서 업글이 느려;;

ㅇ 오라클 사용하는 이유

  • 우리나라 시장 점유율 1위 오라클 50프로 넘어- 관공서. 금융권 (다른 나라는 15프로 넘기지 못했는데)
  • 오라클 아시아 총판이 서울에 있어 ㅋㅋ

CF. 썰 오라클은 마이크로소프트와 규모가 비슷해
두 회사가 완벽한 웬수 - 오라클은 디비에서 시작. 엠에스는 운영체제 시작. 서로의 영역 침범하기 시작
오라클사에서 신규 발표한 바이러스 이름이 빌게이츠ㅋㅋㅋㅋ 암튼 그만큼 엄청 큰 회사야

ㅇ PDF 파일로 수업하는 이유

  • 우리는 오라클dbms 에서 사용하는 sql 언어 공부할 거라서
  • 오라클 교육 센터에서 사용했었던 정규 메뉴얼이야. 시중 교재들보다 이게 더 우리한테 좋아
  • 나눠준 교재는 참고용. 피피티가 실제 교재

ㅇ 총 20장 중에 우리는 13장까지 진행

  • 3장과 7장은 스킵
  • 현업에서 써야 할 기본 언어 위주로 우선 진행
  • 14장 연습문제. 15장부터는 고급



ㅇ SQL 언어 : 스트럭쳐 쿼리 랭귀지, 스탠다드 쿼리 랭귀지

  • AnSi 협회 : 전 세계의 데이터베이스 만드는 프로그래밍 언어 만드는 회사들
  • 협회 조직 이유
    • 쓰는 언어가 다른 두 회사가 합병되면 통합하는 작업 필요해 (예)자바-오라클DB, 파이썬-MySQL)
    • 통합할 때 불편한데 그렇다고 언어를 표준화시킬 수는 없어
    • 공통점은 : 언어들이 디비에 접근해서 데이터를 가져온다.
    • 그러면 어차피 언어들이 디비에 접근해야 하니까 요거라도 표준화하자
  • 그래서 sql이라는 언어 만듦
  • sql언어가 만들어짐으로 인해서
    데이터베이스에 접근할 수 있는 방법은 sql언어를 써서만 하자 라고 규약이 만들어짐

    유일한 방법이야. 다른 방법은 존재하지 않아.
  • 표준 : sql1999
  • 표준화 되다 보니 불편해
    • 각각의 회사들에서 만들어 놓은 DBMS를 효과적으로 사용할 수 없게 돼 (호환성이 떨어져)
    • 그래서 각각 회사들에서 sql1999를 기준으로 해서 자기들 전용 sql을 만들어버려
    • 근데 명령문의 차이일 뿐이야. 사용하는 방법이나 구조는 비슷해
    • 하나의 DBMS만 잘 사용하면 나머지는 쉽게 전환 가능해
  • 우리는 오라클꺼 써볼 거야



ㅇ SQL문 : 5가지 영역

  • 셀렉트 : 테이블에 저장되어 있는 검색
  • DML : 테이블에 데이터를 삽입, 수정, 변경
  • DDL : 객체들을 생성, 수정, 삭제할 때 사용
    • 객체 : 테이블과 같이 구조를 가지고 있는 애들
  • 트랜잭션 제어 : 커밋, 롤백 이런 거
  • DCL : 권한과 관련

ㅇ 8일간 수업

  • 1일(오늘)은 이론.개요
  • 4~4.5일 : 셀렉트 . 이게 어려워. 문법이 6줄밖에 안 되는데 어려워 ㅠㅜ
    BUT 요것만 잘 사용하면 평생 돈 벌 수 있어. 막강한 기능이야
  • 남은 이틀간 : 나머지 4개. 여기는 쉬워
  • DB는 다 합쳐도 문법이 에이포 반 페이지 정도야



ㅇ 환경 설치 (미리 되어있긴 해)

  • 오라클 홈페이지 - 회원가입하기 여기서 프로그램 다 무료로 다운받을 수 있게
  • 실습할 때 11g 버전 사용, 윈도우에 설치
  • 윈도우라는 운영체제에서 사용하는 경우 거의 없어. 이건 리눅스에서 사용.
  • 연습은 집에서 : 학원에서 하면 동시접속을 불온적으로 생각해.. ip 막아버려;; 그래서 집에 가서 각각 다른 아이피로 ㅋㅋ
  • 집에서는 다음 다음 비밀번호(1234) 다음 다음 눌러가며 설치
    • 현업에서는 노. 상업용 라이센스는 굉장히 다양하게 설치할 수 있어야 해

ㅇ 프로그램 실행

  • 오라클 데이타 11g 익스프레스 에디션 폴더 - Run SQL Command Line 클릭하면 cmd 열려
  • sql+ 라고 불리우는 얘는 '편집툴'이야. 환경이 되게 불편해
    그래도 이걸 쓰려는 이유가
    현업에서 실제로 관리자들이 사용하기 때문에
    개발자 입장이 아니라, 관리자 입장에서 디비를 다루는
  • DB 연결하는 여러 툴, 개발환경 배우게 될 텐데 쉬운 거는 그때 가서 배워

ㅇ 시스템 계정으로 연결했다가 hr 계정으로 돌리기

  • 시스템 : DBA라는 권한을 가지고 있는 데이터베이스의 신이야
    • 데이터베이스가 구축되면 시스템이란 계정이 디폴트로 만들어져
    • 얘가 데이터베이스를 관리하는 막강한 권한 가지고 있어
    • 이 패스워드를 1234로 지정해뒀던 거야
  • conn system/1234 : 시스템에 연결
  • alter user hr 엔터
    identified by hr; (세미콜론 놓치지마) 엔터
    • user altered (유저가 변경됐다)
  • alter user hr 엔터
    account unlock; 엔터
    • user altered (유저가 변경됐다)
  • conn hr/hr
    • connected (연결됐다)

ㅇ 실습 환경 세팅 : conn hr/hr

  • conn 명령어 : sql+와 DB를 연결
  • 실습할 계정 : hr, 비밀번호 : hr
  • 실습할 때는 hr 계정 접속
    • 시스템 계정 사용하면 안 돼!! ★



ㅇ 사용법

  • sql 언어는 항상 세미콜론(;)으로 끝나.
    • ; : 문장 종결자. 문장이 끝났다는 걸 sql+에게 알려주는
  • SQL 프롬프트 (입력창)가 떠야지만 입력 가능
  • 명령문은 한 번 실행되면 입력창에서 사라져 버림. 수정 안 돼.
    이러면 스펠링 틀리거나 에러 나면 다시 써야 해 - 너무 불편해

ㅇ ED (에디터)

  • 메모장 이름 = 버퍼 이름 = afiedt.buf
    • sql 문장 실행시키면 sql+라는 환경에는 sql버퍼라는 메모리를 가지고 있어
    • 마지막에 실행시킨 sql 명령어가 이 메모리에 항상 저장돼
  • ED는 버퍼에 저장되어 있는 명령어 볼 수 있게 해줘. 메모장을 연결시켜서
    • 쉽게 볼 수 있도록 오라클이 디폴트 값으로 연결해 둔 것
  • 여기서 편집하면 돼
  • '저장'하고 빠져나와야 실행돼
  • / 혹은 run : 버퍼를 실행시키는 명령어
  • ;는 실행 명령어가 아니므로
    • 프롬프트에서 실행시킬 때는 ; 붙여야 해
    • 메모장에서 할 때는 ; 없어야 해

ㅇ 주석처리

  • /* 주석처리 */
    (5월20일 수업에서 옮겨옴)



ㅇ table(테이블), column(컬럼)

  • 테이블 : 표 제목
    컬럼 : 열 이름
  • 테이블 : 데이터베이스가 데이터를 저장하는 최소단위
    • 엑셀이 표에다가 데이터를 저장하듯이 데이터베이스는 테이블이라고 표현
  • 컬럼 : 그 테이블에 데이터를 저장하기 위한 분류, 속성
  • 1개의 테이블은 여러 개의 컬럼들로 구성되어 있어
  • 테이블은 표처럼 행과 열로 구성되어 있는 2차원적 구조
    • 이름나이연락처
      김ㅇㅇ19
      이ㅇㅇ25
  • 꼭 테이블만 있는 거는 아니지만 일단은 이걸로 해볼 거야
  • 각 컬럼에 맞는 데이터를 저장하고 있다.
    (이름 컬럼이면 이름만)


< 사용할 테이블 분석 >


ㅇ departments table 부서 테이블

: 그 회사의 부서 정보

  • department_id : 부서 번호 (pk) (똑같은 부서 번호는 존재하지 않아)
  • department_name : 부서 이름
  • manager_id : 부서를 관리하는 부서장 사원번호
  • location_id : 부서가 위치한 도시의 지역번호

ㅇ employees 임플로이스 테이블

: 그 회사에 근무하는 사원 정보

  • employee_id : 사원 번호 (pk)
  • first_name : 이름
  • last_name : 성 (이름 찾으라 하면 이걸로 찾네)
  • email : 이메일
  • phone_number : 폰 번호
  • hire_date : 입사 날짜
  • job_id : 업무
  • salary : 월 급여
  • commission_pct : 보너스 비율
    • 받는 사원도 있고, 아닌 사원도 있어 (아닌 사원은 null)
  • manager_id : 나를 관리하는 관리자(내 사수)의 사원번호
    • department에 있는 manager_id와는 다른 거야 : 얘는 '부서' 전체를 관리하는 사원번호
    • employees에 있는 manager_id : '나' 개인을 관리하는 사수의 사원번호
    • (5월21일수업) e테이블의 e_id를 '자체참조'
  • department_id : 내가 근무하는 부서번호 (fk)
    - dept 테이블의 dept_id를 참조

ㅇ d테이블의 d_id, e테이블의 d_id 관계

  • 참조를 당하는 테이블은 부모테이블
    참조하는 테이블은 자식 테이블
  • (나중에) 1:다 의 관계
  • 이 관계를 정확히 이해하고 있어야 해 : 테이블의 구조



<숙제>

ㅇ 실습할 테이블 이름과 그 구성 컬럼 이름들 외워오기
ㅇ DB다루는 언어이다 보니까 이걸 숙지 못하고 있으면 명령문 실행하기 어려워


profile
STEP BY STEP

0개의 댓글