[목차]

5. Query 

    1) select from

    2) where

    3) order by

6. 그룹화 (group by, having)

 

[내용]

5. Query 
    1) 기본 select 
    [형식] 
     전체데이터 조회

select * 
from 테이블명; 

 

    - SQL문은 대소문자 구분하지않음. 
    ; 문장의 종료를 의미. 여러줄로 명령입력 가능. 
    - select문에서 * 사용시 모든 칼럼표시의미 
   
    ② 원하는 칼럼만 조회

select 칼럼명1, 칼럼명2 as alias, 칼럼명3 alias 
from 테이블명 

    - 칼럼명 대신 alias 사용가능. 
       as와 함께 쓰거나 한칸 띄고 정의. 
       alias에 공백사용을 원할 경우 ""큰따옴표 사용."급여의 합계" 

select (sal*12)+comm "급여의 합계" 
select ename'짱' 
select ename||'의 급여는'||sal||'입니다'as Info 

    - select 문에서 칼럼을 연산의 결과로 정의가능.

    - 여러개의 칼럼을 연결하여 하나의 칼럼 정의가능. 
      || 연산자를 이용하여 표현가능. 

  - 칼럼의 값으로 null 저장가능. 
    null은 0이나 공백이 아닌 지정되지 않은 값. null은 연산 불가. 연산 후도 null. 
  - ''작은 따옴표는 오라클에서 문자열이나 날짜 데이터를 표현할때 사용.


  - 중복된 데이터를 제거하기 위해서 [distinct]를 select절에 추가할 수 있다. 
  


    2) select문에 조건 추가하기 (where)
    [형식]

select[distinct] 칼럼명1, 칼럼명2...[별칭] 
from 테이블명 
where 조건식1(칼럼명 연산자 적용할 값) and(or) 조건식2 

 

    - 검색결과 제한 
    - from절 다음에 정의. 
    - where절은 조건식이 true인 데이터만 조회. 
    - where절에 사용할 수 있는 비교연산자. 
      =, >, >=, <, <=, (<>, !=, ^=) 
    - where절에 날짜나 문자열 사용시 ''작은 따옴표 사용. 
    - 오라클은 1970년 부터 Date를 셈. 
    - 나머지는 1900년 부터 Date를 셈. 
    - 조건을 여러개 정의 시 where절에 and, or 연산자 함께사용.

 

    - and : 모든 조건이 모두 만족할 경우(모두 true)

select empno,ename,job,sal
from emp
where job='SALESMAN' and sal>=1500;
select deptno, ename, job, sal, hiredate, deptno
from emp
where sal>=2800 and job='MANAGER';

   - or : 조건 중 하나만 만족할 경우(하나라도 true)

select empno, ename, sal, hiredate
from emp
where hiredate>='81/1/1' or sal >=5000;

 

    - and 조건 대신 사용할 수 있는 연산자. 
      칼럼명 between A and B : A와 B 사이값 
      하나의 칼럼에 여러 조건을 적용할 경우.

select ename||':'||job as "name : job"
from emp
where hiredate between '81/1/1' and '81/12/31' and job='MANAGER';

 

select ename, job, sal, deptno
from emp
where sal between 1300 and 1700;

    - or 조건 대신 사용할 수 있는 연산자. 단, 하나의 칼럼에 여러 조건을 줄 경우. 
      칼럼명 in (값1, 값2, 값3) 
      부서가 10, 20 부서인 조회

select ename, sal, deptno
from emp
where deptno in (10,20) and sal >=2000;
select deptno, ename, job, sal, hiredate
from emp
where empno in (7902, 7788, 7566);
select deptno, ename, job, sal, deptno
from emp
where job not in ('MANAGER', 'CLERK', 'ANALYST');


    - 조건으로 정의한 값과 정확하게 일치하지 않은 조건을 적용하고 싶은 경우 like 연산자 이용하며 
      대표문자를 함께 사용해서 조회해야한다. 
      _ : 한글자 대표 
      % : 0 or 하나이상의 문자 대표

select * from emp
where ename like '%A%' 

where ename like 'A%' 

where ename like '%A' 

where ename like '_A__' 


    - null 데이터 검색하기 
      is null : null인 데이터

      is not null : null이 아닌 데이터

select ename, mgr, case when mgr is null then '상위자'
					else '담당'
					end 관리자
from emp;
select first_name, last_name, salary, commission_pct, salary+commission_pct
from employees
where commission_pct is not null
order by salary+commission_pct desc;


    - not : 조건에 대한 부정 
      not in (' ', ' ')

select department_id, avg(salary)
from employees
where department_id not in(40,50)
group by department_id
order by avg(salary) desc;


    3) 데이터 정렬 (order by)
    [형식]

select * from 테이블명 where 조건식

order by 정렬하고 싶은 칼럼 desc|asc 

 

    - desc(내림차순 정렬) : 데이터의 크기가 큰 데이터부터 출력 (10~1, ㅎ~ㄱ, Z~A, z~a)
    - asc(오름차순 정렬) : 데이터의 크기가 작은 데이터부터 출력 (1~10, ㄱ~ㅎ, A~Z, a~z)
    - 생략 시(default) 오름차순(asc)

select empno, ename, sal
from emp
where sal between 2000 and 3000
order by sal desc;

 

    - 정렬기준은 여러개로 정의 가능.

select * from 테이블명 where 조건식

order by 칼럼1 desc, 칼럼2 asc; 


  - order by절은 무조건 select문의 마지막절에 정의한다. 
  - alias 사용가능.

 

 

6. 그룹화 (group by, having)
     [구문]

select 칼럼명 그룹함수()  
칼럼의 동일한 값끼지 그룹함수를 연산한다. 
from
where
group by 칼럼명(alias사용불가) 
having 조건(그룹함수를 이용한 조건이 필요한 경우)(alias사용불가)
select deptno, count(deptno)
from emp
where sal>2000
group by deptno
having count(deptno)>=2
order by deptno;
select deptno, job, count(empno)
from emp
group by deptno, job
order by deptno;
select department_id, avg(salary)
from employees
group by department_id
having avg(salary)>=10000;

      - 테이블에 저장된 데이터를 그룹으로 나누어서 그룹별 합계, 평균, 최대값, 최소값, 레코드 개수등을 구할 수 

        있는 기능 (데이터의 집계)
      - group by절에 그룹화하고 싶은 컬럼 정의 
      - group by절을 추가하지않고 일반 칼럼명과 그룹함수를 같이 사용할 수 없다. 
      - group by를 하는 경우 select문에 group by절에 명시한 칼럼이외의 칼럼을 정의할 수 없다. 
      - where절에 그룹함수를 사용할 수 없다. 
      - where절에는 그룹화하기 전에 적용할 조건을 정의 
      - 그룹화하고 난 후 결과를 조건으로 사용하는 경우 having절을 사용 
       => 그룹함수를 써서 조건을 정의해야하는 경우는 무조건 having절에 정의. 
      - 실행순서 : from -> where -> group by -> having -> select -> order by 
      - group by 2개 이상 가능 
       => select절 칼럼순서와 group by절 순서가 일치해야함. 

[목차]

1. intro 

2. 계정 생성

3. 기본개념

    1) 데이터베이스

    2) DBMS(DataBase Management System)

    3) 관계형 데이터 베이스 
    4) 테이블(Table)
    5) 컬럼(Column)
    6) 레코드(Record)
    7) 기본키(Primary key)
    8) 외래키(Foreign Key)

    9) 부모 테이블(Parent table)
    10) 자식 테이블(Child table)

4. SQL(Structured Query Language)

    ① DDL (Data Definition Language)

     DML (Data Manipulation Language)

     DCL (Data Control Language)

    ④ TCL(Transaction Control Language)

    ⑤ Query

 

1. intro
    1) Oracle 설치(11g, 64bit)

    2) 컴퓨터 이름을 영문으로 변경해야함.
 
    3) DBMS(DataBase Management System) 데이터베이스 관리 시스템
    정형화된 Data format (ANSI : American National Standards Institute)

        ex) Oracle, MSSQL, MYSQL, DB2 
    비정화된 NOSQL

        ex) Mogo DB

    4) Run SQL Command Line 실행.
 
    5) 문제발생 시 확인사항
    Serivce - OracleXETNSListener - 재실행
              - OracleServiceXE
 
2. 계정 생성

conn system/manager

 - id가 system, password가 manager인 계정에 연결.

create user scott identified by tiger; 

 

 - id가 scott, password가 tiger인 계정 생성.
 - SQL문은 ;으로 종결
 - System문은 Enter

 

grant connect, resource to scott; 

 - scott계정에 권한 추가.

 

alter user 아이디 identified by 패스워드; 

 - 기존 유저의 비밀번호 변경 

alter user 아이디 account unlock; 
alter user 아이디 account lock; 

 - lock은 계정 정보 변경을 못하도록 막는다. lock 상태 시 unlock후 가능하다. unlock -> lock 자동 변경시간은 default 30일이다.

 

show user

 - 접속 중인 계정확인

commit; 

 - 변경사항 적용

select * from tab; 

 

 - 모든 테이블 확인

set linesize 300 

 

 - 화면 표시 linesize 수정

set pagesize 300 

 

 - 화면 표시 pagesize 수정

desc 테이블명 

 - 테이블 구조 확인

 

 

 


3. 기본개념 
    1) 데이터베이스 : 기업, 개인이 운영하는 시스템에서 발생하는 데이터를 정해진 형태로 저장.


    2) DBMS(DataBase Management System) : 효과적으로 데이터를 관리, 유지보수하기 쉽게 만들어진 프로그램.
     : 데이터 조회, 수정, 삽입, 삭제관리.
     : 기존사용 File System의 단점을 보완하기 위해 개발.
     : 데이터 중복 최소화, 데이터 일관성 유지.
     : 데이터 공유가능.
     : DBMS 종류 - 오라클, MYSQL,MSSQL, DB2...


    3) 관계형 데이터 베이스
     : 예로 오라클.
     : 데이터 구성시 2차원 테이블로 구성.
     : 데이터 처리를 위해 SQL사용.
    

   
    4) 테이블(Table) : 데이터 저장 단위(Relation)
    5) 컬럼(Column) : 데이터 구성항목(attribute)
    6) 레코드(Record) : 컬럼 집합으로 구분할 수 있는 최소한의 데이터(tuple)
    7) 기본키(Primary key) : 테이블내에서 레코드를 구분하기 위한 식별키. 중복불가. 공백없어야함.
      : 테이블 내 중복 데이터는 테이블 정규화를 통해 데이터를 분리
      : 정규화된 테이블 이용하여 원하는 데이터 참조 가능해야함.

      : 정규화된 테이블내 데이터 레코드를 구분하는 키를 기본키라 함. 이 기본키를 다른 테이블에서 참조가능.

                   ex)아이디, 사번, 게시번호

    8) 외래키(Foreign Key) : 다른 테이블의 기본키를 이용해서 사용하는 칼럼을 외래키라한다.

    9) 부모 테이블(Parent table) : 기본키를 가진 테이블을 부모 테이블이라 한다.
    10) 자식 테이블(Child table) : 부모테이블의 외래키를 정규화한 테이블을 자식 테이블이라 한다.

 
4. SQL(Structured Query Language) : 데이터 베이스에서 원하느 데이터를 조회, 삽입, 수정, 삭제 시  사용하는 언어.
    1) 종류

    DDL (Data Definition Language) : 정의 (테이블 제작, 변경, 삭제, 초기화)

    - create, alter, drop, truncate

 

    DML (Data Manipulation Language) : 조작 (테이블 내 데이터의 조회, 삽입, 수정, 삭제)

    - select, insert, update, delete

 

     DCL (Data Control Language) : 제어(권한, 제어 비정상/ 완료시 처리 )

    - grant, revoke, commit, rollback

 

    ④ TCL(Transaction Control Language) : DCL 중 트랜잭션 Control 언어

    - commit, rollback

 

    ⑤ Query : 데이터에 다양한 조건을 적용하여 검색하는 기능 (DML 중 select문)


    2) DB 작업을 위한 관리
    ① 관리자 계정접속
    ② 계정생성
    ③ 생성계정에 권한부여. 롤(role)적용(connect,resource)
    ④ 생성계정 접속
    ⑤ 데이터를 추가

 

<tip>
 - 붙여넣기 : 오른쪽 마우스 클릭
 - [] : 생략가능
 - 속성 -> 줄 바꿈 선택사용 uncheck
 - oracle은 1번 부터 시작한다.
 - error발생 시 error code를 구글검색.

+ Recent posts

1