날아라쩡글이의 블로그입니다.

DB(데이터베이스), SELECT문 본문

중앙 HTA (2106기) story/JDBC story

DB(데이터베이스), SELECT문

날아라쩡글이 2021. 10. 19. 19:29
반응형

데이터 베이스 

  • 데이터베이스는 여러사람이 공유하고 사용할 목적으로 통합관리되는 정보의 집합이다. 
  • 서로 관련 있는 정보들이 모인것이다. 
  • 은행, 예약, 검색, 쇼핑 등 일상속에서 이용하고 있는 많은 온라인 서비스들에서 데이터베이스를 사용한다. 
  • 데이터 베이스는 반드시 데이터베이스관리시스템(DBMS)과 함께한다.
  • 데이터베이스관리시스템
    • ORACLE : 이 oracls SQL로 실습을 진행할 예정이다. 
      • 실제 현장 DB의 경우 oracle을 많이 사용한다.
      • 형태는 달라도, 방법과 문법적은 동일하다. 
    • MySQL
    • MySQLserver
  • 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다. 
  • DBMS는 사용자 또는 다른 프로그램의 요구를 처리하고 적절히 응답하여 데이터를 사용할 수 있도록 해준다. 
  • 장점
    • 자료의 통합성이 향상
    • 데이터의 접근성이 쉬워진다. 
    • 데이터의 통제가 강화된다. 
    • 보안이 강화된다. 
  • DBMS를 통해 DB를 사용한다. 
  • RDBMS 인 관계형 데이터베이스가 가장 많이 사용이 된다. 

관계형데이터베이스 

  • 관계형데이터베이스의 경우 relation의 집합이다. 
  • 사원의 정보를 나타내는 사원 Relation이다. 관계는 테이블이다. 
  • 속성이 모여야 정보가된다. 
  • 사원의 속성은 7개이다. 
  • 행은 하나는 완전히 독립적인 정보를 나타낸다. 
  • 관계형 모델에서는 이론적으로 데이터베이스를 관계의 집합으로, 관계를 행의 집합으로, 행을 속성의 집합으로 본다. 
  • 관계형 데이터베이스에서는 관계가 테이블, 행이 레코드, 속성이 컬럼으로 대치된다. 
  • 관계라는 이름으로 불리는 이유는 속성과 행이 어떤 관계에 의해 모여진 집합으로 보기 때문이다. 
  • 관계형 데이터 모델에서 속성은 해당 속성이 가질 수 있는 모든 값에 대한 도메인을 가지며, 원자적이어야한다. 
  • 관계형 데이터베이스에는 관계의 집합과 제약조건의 집합으로 이뤄져 있다. 
  • 관계로 모여진 집합이다. 
    위의 그림을 보자
    • 관계의 집합이라는 의미는 릴레이션이 2개라는 의미이다. 
    • 소속팀에 비서실이 존재하지 않기 때문에 사원 테이블의 소속부서에 비서실이 들어가면 안된다는 것이다. 
    • 제약조건이란 무결성을 유지하기 위해서 제약조건이 들어간다는 것이다. 
    • 부서테이블에 있는 부서의 이름이 들어가야한다. 
    • 각각의 column 에는 제약조건이 지정된다. 
      • 하나의 테이블이 여러개이기 때문에 당연히 관계도 여러개이고, 제약조건도 여러개이다. 
      • 테이블과 제약조건의 집합이라고 한다. 
      • 그렇다면 소속부서는 사원 테이블에서의 외래키이며, 물리데이터모델에서는 회색열쇠로 표시된다. 
      • 소속테이블에서는 부서명이 기본키이며, 물리데이터 모델에서는 금열쇠로 표시된다.
      • 전부 연관이 있다는 이야기이다. 
      • 참고로 물리 모델 다이어그램은 
      • 논리 모델 다이어그램의 형식은
      • 이렇게 되어있고 전부 연관이 있다. 이건 다음번에 설명을 추가적으로 진행할 것이다. 
    • 2개이상의 column이 모여서 제약조건이 생길 수 있다는 것이다. 

Oracle SQL

  • 최초의 상용 RDBMS(관계형데이터베이스관리시스템) 인 제품이다. 
  • 데이터베이스관리시스템 중에서 가장 많이 사용하며, 가장 성능이 우수하다. 

다른 RDBMS 

  • mySQL, DB2, msSQLserver
    • SQL이라는 프로그래밍 언어를 사용하여 데이터를 Access한다. 
  • H2, HSQLDB
    • 100% 자바로 만들어진 관계형 데이터 베이스 시스템
    • DB 설치 절차 필요없이 빠르게 개발해야할 때 사용한다. 
    • Embedded로 많이 사용한다. 
      • 임베디드 데이터 베이스로 주로 사용된다. 
      • 상용목먹보다는 테스트, 프로토타입을 개발할 때 사용한다. 
      • 소스코드내부에서 인메모리모드로 자동실행된다. 
      • 개발툴 오라클제공 
      • SQL plus
        • 오라클에 내장되어있다. 
        • Oracle 설치할 때 같이 설치되는 command창이다. 
      • SQL developer
        • 자바를 이용해서 개발된 GUI 데이터베이스 개발툴이다. 
        • 그래픽이 들어있다. 
      • 그외 toad 
        • 최고의 DB툴
      • QUERYBOX 
        • 우리나라의 개발툴
    • App에 임베디드를 포함 후 사용한다. 

NoSQL데이터베이스 : 비관계형 데이터베이스 제품들이다.

  • SQL 언어를 사용하지 않는 데이터 베이스 관리 시스템이다. 
  • 컬럼기반
    • cassandra
    • HBase
  • 문서기반
    • MongoDB
    • CouchDB
  • 그래프기반
    • Neo4
  • 키-값기반
    • Radis

Oracle의 자동실행 

  • 호스트 번호 보는 법 
    • app -> 21c -> OraDB21Home->Network->admin->Listener->메모장에 던지기 
  • DB 개발 환경 구축
    1. Oracle Database 21c Expression Edition 설치 
      • 관계형 데이베이스관리시스템을 설치
    2. SQL Developer 21.2.1 Downloads설치
      • 데이터베이스 개발툴 설치 
        • 명령을 보내고, 프로그램을 짜는 것에는 개발툴이 필요하다. SQL Developer
    3. 관리자 계정 접속
      • 관리자 계정 추가 + 표시 되어 있는 부분 클릭
      • name 관리자 
      • 사용자 이름 System
      • 비번 설정
      • 호스트이름 = 호스트 번호 
      • 테스트
      • 완료시 접속
    4. 사용자 생성방법 변경
      • ALTER SESSION SET "_ORACLE_SCRIPT" = true;
    5. 일반 사용자 계정 생성
      • CREATE USER HR identified by 비밀번호 ; 
      • 실행후 권한을 부여한다.
      •  GRANT CONNECT, RESOURCE, DBA TO hr;
        • CONNECT 
          • CREATE SESSION 접속 ROLE을 부여함
        • RESOURCE ROLE
          • 테이블을 만들고, 시퀀스를 만드는 데이터 권한
        • DBA
          • 관리자의 권한, 작업의 권한을 부여함
        • hr(human resource) : 인사관리 
    6. 일반사용자 등록 계정 접속
      • 관리자창을 닫고 접속해제
      • name 은 hr
      • port : 서버프로그램의 포트번호 
    7. 샘플테이블 및 데이터를 추가
      • 도구 : SQL워크시트
      • table을 생성
      • 도구 SQL워크시트 
      • 스크립트 실행 : 커밋완료 

SQL 언어 

  • RDBMS를 통해 Database에 엑세스하기위해 사용하는 특수 목적의 프로그래밍언어이다. 
  • 종류
    • DDL(데이터 조작 언어)
      • 데이터 베이스의 객체 생성/수정/삭제 
      • 데이터베이스의 구조를 정의하는 명령이다. 
      • 종류
        • create 새로운 데이터베이스의 객체를 생성
        • drop 기존 데이터베이스 객체를 생성
        • alter 기존 데이터베이스 객체를 변경
        • truncate 데이터를 되돌릴 수 없도록 제거 
          • 엑셀의 행삭제와 동일하다
    • DML(데이터 정의 언어)
      • 데이터의 추가/ 조회/ 수정/ 삭제
      • 문법 구조가 간단하고 많은 사용을 하게 된다. 
      • 종류
        • INSERT 테이블에 새로운 데이터 행을 추가한다. 
        • SELECT 테이블에서 데이터를 조회한다. 
        • UPDATE 테이블의 데이터를 변경한다.
        • DELETE 테이블에 저장된 특정 데이터 행을 삭제한다. 
          • 엑셀의 행 내용지우기와 동일하다. 
      •  
    • DCL(데이터 제어 언어)
      • 권한의 부여/ 박탈을 의미하는 언어이다. 
      • 종류
        • GRANT 특정사용자에게 특정 작업에 수행할 권한을 부여한다. 
        • REVOKE 사용자에게 부여된 권한을 박탈한다. 
        • commit 트렌젝션을 실행한다. 
        • rollback 트렌젝션을 취소한다. 
        • savepoint 롤백지점을 설정한다.
    • 작성한 언어가 소문자가 외우기 쉽기 때문에 소문자로 작성, 실제로 사용시에는 대문자로 입력하는 것이 좋다. 
  • SQL (Structured Query Language)
    • 구조화된 질의(요청) 언어
    • SQL형태가 정해져 있다. 
    • java와 다르게 for, if문이 아닌 형태가 정해져 있다. 
    • table이라는 정해진 모양이 있다. 
    • 수행작업 -> 종류가 정해져있다. 
    • 문법은 인간친화적인 문법을 가지고 있다. 
    • 고정적인 형태를 가지고 있다. 
    • 데이터 베이스와 관련된 명력을 작성할 때 사용하는 언어이다. 
    • 효율적이다. 
    • 기능적으로 완벽하다(SQL을 사용하여 테이블의 데이터를 정의, 검색, 조작이 가능하다)
      • E.F.codd박사는 데이터베이스 시스템을 위한 관계형 모델을 제안하는 논문을 발표하였다. 
      • E-R모델의 이론적인 배경으로 SQL DB가 설계되었다. 

SQL(구조화된 질의(요청)언어)

  • 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해서 설계된 특수목적의 프로그래밍언어이다. 
  • 데이터의 검색, 관리(수정/변경/삭제), 데이터베이스 객체 생성과 수정, 데이터베이스 접근제어를 위해서 설계되었다.
  • Oracle, mySQL,DB2, mySQLserver등이 SQL을 표준으로 채택하고 있다. 

SQL developer과 QueryBox, SQL plus는 SQL코드 작성기이다. 정보를 확인할 때 SQL코드를 작성한다. 

SQL 코드명령어로 직접접근하지 않고 RDBMS로 접근하게 된다. 명령어와 SQL코드 작성툴들로 진행한다. 

  • 진행하면서 전송된 코드의 유효성과 권한을 확인한다.
  • 에러, 문법을 확인한다. 
  • 결과값을 출력한다. 

Database가 실제 table이 모여있는 집합인 부분이다. 

table 

  • 데이터 베이스의 객체이다. 
  • 데이터 베이스에서 데이터의 실직적인 저장소 역활을 수행한다. 
  • 2차원 표(테이블)의 형태로 데이터를 저장한다. 
  • 하나의 데이터베이스에는 여러개의 테이블이 존재한다. 
  • 구성요소 
      • 다른행과 완전히 독립적이다. 
      • 행의 순서는 중요하지 않으며, 행은 우리가 표현하고 싶어하는 모든 데이터를 나타낸다. 
      • 테이블의 추가나 삭제, 변경은 행 단위로 일어난다. 
      • 행에는 이름이 존재하지 않는다.
      • 데이터의 속성(이름, 자료형)을 나타낸다. 
      • 열에는 이름이 존재한다 (column명, 속성명,type)이 존재한다. 
      • 같은 열은 같은 종류의 값을 가진다. 
      • 열은 서로 다른 이름을 가지고 있다. 
      • 하나의 테이블에 이름이 같은 열은 존재할 수 없다. 

SELECT 문

  • 각각의 행마다 적용되고, 매번의 행에서 실행된다. 
  • SELECT의 마지막 컬럼명의 ',' 콤마는 사용하지 않는다. 
  • 식별자의 경우 대소문자를 구분하지 않는다.
    • 그러나 컬럼명, 테이블명, 지정하는 이름의 경우 대문자로 작성해야한다.
    • 안그러면 error혹은 정보가 나오지 않는다. 
    • 오라클에서 테이블에 저장된 값은 대, 소문자를 엄격하게 구분한다. 
  • SELECT 명령 (선언) 하면 , 알아서 그 값을 가져온다. 
    1. 모든 열 조회하기 
      • SELECT * FROM 테이블명;
      • SELECT 컬럼명 전체 FROM 테이블명;
    2. 특정 열 조회하기 
      • SELECT 컬럼명, 컬럼명,..(내가 보고싶은 열을 개별적으로 지정 후 ) FROM 테이블명;
      • 지정한 열을 전체 조회하겠다. 
    3. 산술 연산하기 
      •  + , - , * , /
      • SELECT 컬럼명, 컬럼명, 컬럼명*12 FROM 테이블명; 
      • 컬럼명에 산술연산자를 이용하여 입력해도 된다. 
    4. 중복된 결과 제외하기 
      • SELECT DISTINCT 컬럼명,컬럼명 FROM 테이블명;
      • DISTI + NCT로 외웠더니 쉽게 외워졌다. 
      • distinct를 사용하면 null 이 출력된다. 
      • 자바의 null은 참조변수가 가지는 값, 참조변수가 객체를 참조하고 있지 않다. 
      • 오라클에서 null은 그 컬럼의 값이 결정되지 않았다는 뜻이다. 
        • 그렇기 때문에 distinct를 사용하면 IS NOT NULL로 null값을 지워준다. 
    5. 컬럼명에 별칭 사용하기 
      1. SELECT 컬럼명 AS 별칭, 컬럼명 AS 별칭, 컬럼명 AS 별칭...FROM 테이블명;
      2. SELECT 컬럼명 별칭, 컬럼명 별칭,... FROM 테이블명;
      3. 컬럼명 뛰고 별칭
      4. 만약, 별칭에 공백이나 특수문자가 포함되어있는 경우 " 별칭 " , 쌍따음표로 붙여줘야한다. 
        • 별칭의 필요 이유, 
        • select절에서 연산식을 사용한 경우 
        • 연산식이 컬럼name으로 바뀌기 때문에 식별확인이 어렵다. 그래서 별칭을 작성하게 된다. 
        • 한글은 잘 사용하지 않는다.
    6. WHERE절을 사용하여 여러개의 조건으로 행을 필터링하기 
      • SELECT 컬럼명, 컬럼명,컬럼명 FROM 테이블명 WHERE 조건식1 AND 조건식2 AND 조건식 3;
      • 각, 조건식은 비교연산자, 논리연산자, 기타 연산자를 사용해서 true와 false로 판정되는 조건식이다. 
      • 일반적인 조건식처럼 사용하면 된다. 
      • 비교연산자 : >, < ,>= ,<= ,=(같다라는 의미로 사용), != ,<>(같지않다.)
      • 논리 연산자 : AND OR NOT(직접적인 키워드를 사용함)

 

 

반응형
Comments