날아라쩡글이의 블로그입니다.
DB(데이터베이스), SELECT문 본문
728x90
반응형
데이터 베이스
- 데이터베이스는 여러사람이 공유하고 사용할 목적으로 통합관리되는 정보의 집합이다.
- 서로 관련 있는 정보들이 모인것이다.
- 은행, 예약, 검색, 쇼핑 등 일상속에서 이용하고 있는 많은 온라인 서비스들에서 데이터베이스를 사용한다.
- 데이터 베이스는 반드시 데이터베이스관리시스템(DBMS)과 함께한다.
- 데이터베이스관리시스템
- ORACLE : 이 oracls SQL로 실습을 진행할 예정이다.
- 실제 현장 DB의 경우 oracle을 많이 사용한다.
- 형태는 달라도, 방법과 문법적은 동일하다.
- MySQL
- MySQLserver
- ORACLE : 이 oracls SQL로 실습을 진행할 예정이다.
- 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합이다.
- 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 개발 환경 구축
- Oracle Database 21c Expression Edition 설치
- 관계형 데이베이스관리시스템을 설치
- SQL Developer 21.2.1 Downloads설치
- 데이터베이스 개발툴 설치
- 명령을 보내고, 프로그램을 짜는 것에는 개발툴이 필요하다. SQL Developer
- 데이터베이스 개발툴 설치
- 관리자 계정 접속
- 관리자 계정 추가 + 표시 되어 있는 부분 클릭
- name 관리자
- 사용자 이름 System
- 비번 설정
- 호스트이름 = 호스트 번호
- 테스트
- 완료시 접속
- 사용자 생성방법 변경
- ALTER SESSION SET "_ORACLE_SCRIPT" = true;
- 일반 사용자 계정 생성
- CREATE USER HR identified by 비밀번호 ;
- 실행후 권한을 부여한다.
- GRANT CONNECT, RESOURCE, DBA TO hr;
- CONNECT
- CREATE SESSION 접속 ROLE을 부여함
- RESOURCE ROLE
- 테이블을 만들고, 시퀀스를 만드는 데이터 권한
- DBA
- 관리자의 권한, 작업의 권한을 부여함
- hr(human resource) : 인사관리
- CONNECT
- 일반사용자 등록 계정 접속
- 관리자창을 닫고 접속해제
- name 은 hr
- port : 서버프로그램의 포트번호
- 샘플테이블 및 데이터를 추가
- 도구 : SQL워크시트
- table을 생성
- 도구 SQL워크시트
- 스크립트 실행 : 커밋완료
- Oracle Database 21c Expression Edition 설치
SQL 언어
- RDBMS를 통해 Database에 엑세스하기위해 사용하는 특수 목적의 프로그래밍언어이다.
- 종류
- DDL(데이터 조작 언어)
- 데이터 베이스의 객체 생성/수정/삭제
- 데이터베이스의 구조를 정의하는 명령이다.
- 종류
- create 새로운 데이터베이스의 객체를 생성
- drop 기존 데이터베이스 객체를 생성
- alter 기존 데이터베이스 객체를 변경
- truncate 데이터를 되돌릴 수 없도록 제거
- 엑셀의 행삭제와 동일하다
- DML(데이터 정의 언어)
- 데이터의 추가/ 조회/ 수정/ 삭제
- 문법 구조가 간단하고 많은 사용을 하게 된다.
- 종류
- INSERT 테이블에 새로운 데이터 행을 추가한다.
- SELECT 테이블에서 데이터를 조회한다.
- UPDATE 테이블의 데이터를 변경한다.
- DELETE 테이블에 저장된 특정 데이터 행을 삭제한다.
- 엑셀의 행 내용지우기와 동일하다.
- DCL(데이터 제어 언어)
- 권한의 부여/ 박탈을 의미하는 언어이다.
- 종류
- GRANT 특정사용자에게 특정 작업에 수행할 권한을 부여한다.
- REVOKE 사용자에게 부여된 권한을 박탈한다.
- commit 트렌젝션을 실행한다.
- rollback 트렌젝션을 취소한다.
- savepoint 롤백지점을 설정한다.
- 작성한 언어가 소문자가 외우기 쉽기 때문에 소문자로 작성, 실제로 사용시에는 대문자로 입력하는 것이 좋다.
- DDL(데이터 조작 언어)
- 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 명령 (선언) 하면 , 알아서 그 값을 가져온다.
- 모든 열 조회하기
- SELECT * FROM 테이블명;
- SELECT 컬럼명 전체 FROM 테이블명;
- 특정 열 조회하기
- SELECT 컬럼명, 컬럼명,..(내가 보고싶은 열을 개별적으로 지정 후 ) FROM 테이블명;
- 지정한 열을 전체 조회하겠다.
- 산술 연산하기
- + , - , * , /
- SELECT 컬럼명, 컬럼명, 컬럼명*12 FROM 테이블명;
- 컬럼명에 산술연산자를 이용하여 입력해도 된다.
- 중복된 결과 제외하기
- SELECT DISTINCT 컬럼명,컬럼명 FROM 테이블명;
- DISTI + NCT로 외웠더니 쉽게 외워졌다.
- distinct를 사용하면 null 이 출력된다.
- 자바의 null은 참조변수가 가지는 값, 참조변수가 객체를 참조하고 있지 않다.
- 오라클에서 null은 그 컬럼의 값이 결정되지 않았다는 뜻이다.
- 그렇기 때문에 distinct를 사용하면 IS NOT NULL로 null값을 지워준다.
- 컬럼명에 별칭 사용하기
- SELECT 컬럼명 AS 별칭, 컬럼명 AS 별칭, 컬럼명 AS 별칭...FROM 테이블명;
- SELECT 컬럼명 별칭, 컬럼명 별칭,... FROM 테이블명;
- 컬럼명 뛰고 별칭
- 만약, 별칭에 공백이나 특수문자가 포함되어있는 경우 " 별칭 " , 쌍따음표로 붙여줘야한다.
- 별칭의 필요 이유,
- select절에서 연산식을 사용한 경우
- 연산식이 컬럼name으로 바뀌기 때문에 식별확인이 어렵다. 그래서 별칭을 작성하게 된다.
- 한글은 잘 사용하지 않는다.
- WHERE절을 사용하여 여러개의 조건으로 행을 필터링하기
- SELECT 컬럼명, 컬럼명,컬럼명 FROM 테이블명 WHERE 조건식1 AND 조건식2 AND 조건식 3;
- 각, 조건식은 비교연산자, 논리연산자, 기타 연산자를 사용해서 true와 false로 판정되는 조건식이다.
- 일반적인 조건식처럼 사용하면 된다.
- 비교연산자 : >, < ,>= ,<= ,=(같다라는 의미로 사용), != ,<>(같지않다.)
- 논리 연산자 : AND OR NOT(직접적인 키워드를 사용함)
- 모든 열 조회하기
반응형
'중앙 HTA (2106기) story > JDBC story' 카테고리의 다른 글
SQL 내장함수, 서브쿼리 (0) | 2021.10.25 |
---|---|
VO-DAO패턴, 오라클 시퀀스 (0) | 2021.10.21 |
java에서 Insert, select, update, delete사용방법 (0) | 2021.10.20 |
자바와 연동하는 방법(JDBC), 자바 ConnectionUtil 생성 방법 (0) | 2021.10.20 |
DML언어(insert,delete,update, select),엑셀import방법 (0) | 2021.10.19 |
Comments