ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] SQL 기초 -1
    개발 강의 정리/SQL 2021. 5. 10. 18:26

    20210510 SQL의 기초

    <SELECT 문>
    SELECT [컬럼, 컬럼, ... | * ]
    FROM 테이블명:

    <테이블 구조 검색>
    DESC 테이블명;

    ----- -- ------------ 
    SNO      VARCHAR2(8)  
    SNAME    VARCHAR2(50) 
    SEX      VARCHAR2(4)  
    SYEAR    NUMBER(1)    
    MAJOR    VARCHAR2(50) 
    AVR      NUMBER(4,2)  

    <현재 스키마에 포함 된 테이블 검색>
    select * from tab;

    ---------------------------------
    COUNTRIES TABLE


    <오라클의 데이터타입>
    CHAR() : 고정길이 문자 데이터 타입 /미리 자리가 잡힘./가입 일자 : 20210509 => CHAR(8)
    VARCHAR2() : 가변길이 문자열 타입 /최대 길이가 정해져있고 입력 값 만큼 자리 차지. /VARCHAR (20)
    NUMBER : 숫자.
    DATE :

    <SELECT 절을 이용한 수식 검색> : 더미 테이블 DUAL
    SELECT 수식 FROM DUAL;

    ex) SELECT 2+3 FROM dual;

    -루트 함수 SQRT()
    ex)
    select sqrt(4) from dual;
    -----결과------
    2

    -라운드 함수

    ROUND(컬럼명, 소수점 자리수)

    ex)

    ROUND(avr*(4.5/4.0),1)

    ----결과---

    1.1

    2.1

    2.4

    ...

     

     


    select round(ln(4),2) from dual;

    -계층 쿼리 
    Select level
    from dual
    connect by level <=10;
    -----결과-----
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    <Alias를 이용한 검색>

    SELECT 컬럼 AS "별명" , 컬럼 AS "별명" ...
    FROM 테이블 명;

    이중 따옴표 쓰는 경우 - 대소문자 구분할때, 공백사용, 특수문자. 
    >많이 쓰이진 않음

    SELECT ENO 사번, ENAME 이름, JOB 업무 FROM EMP;
    >>논리명으로 바꾼 뒤에 결과를 다운 받아서 엑셀로 내보낼수 있기 때문에 한글명으로 바꿔 사용한다!

    <수식을 이용한 검색-Alias>
    SELECT 수식 [AS 별명]
    FROM 테이블명;

    ex) SELECT ENO 사번, ENAME 이름, SAL*12 "연간 급여" FROM EMP;
    >>만약 수식이 들어가는 컬럼에 null 이 있으면? >null 로 나온다. 

     

    이중따옴표보다는 언더바를 많이 사용한다. 

     

    Alias 컬럼은 숫자로 시작 X

     

    --사원의 연봉을 검색한다. 

    SELECT eno 사번, ename 이름 , sal 급여, comm 보너스, sal*12+comm 연봉 from emp;

     

    보너스가 null 일 경우 연봉자체가 null처리가 된다. 

     

    <null연산을 위한 함수. (오라클 제공)> 

     

    NVL(Null이 있는 컬럼명, 대체할 값)

    >Null 값이 있을 경우는 대체할 값으로 출력

    >Null 값이 없을 경우는 원래 값으로 출력. 

    >>대체할 값에는 문자열도 사용 가능하다. 

     

     

    <연결 연산자와 중복 제거>

     

    -연결 연산자

    SELECT 컬럼 || '리터럴' || ...

    FROM 테이블명;

     

    >숫자를 제외하고는 단일인용부호(' ')를 사용해야한다. 

     

    ex)

    Select ename || ' ' || sal 이름_급여 from emp;
    Select ename || '의 업무는' || job ||'입니다.' 이름급여 from emp;

     

    ||가 +보다 우선순위가 높기 때문에 +연산자를 먼저 사용할경우에 괄호 처리. 

     

    우선순위 상관 없이 계산식 쓸때 괄호 처리 하면 편함

     

    -중복제거

    DISTINCT : 중복된 값은 한번만 출력

    ALL: 중복 상관 없이 출력 

     

     

    DINSTINCT

    -성능에 영향을 많이 미치는 키워드임.

    정렬해야하기 때문에. 

    데이터가 크면 퍼포먼스에 영향. 

    가급적 사용하지 않는 것이 좋음 

     

    <정렬을 이용한 자료 검색>

    SELECT

    FROM

    ORDER BY 컬럼 [DESC | ASC]

     

    검색항의 순서로도 가능 

    SELECT 컬럼 1, 컬럼 2, 컬럼3, FROM 테이블명 ORDER BY 2;

    >> 컬럼 2 기준으로 정렬. 

     

     

    -묶음 검색 

    select job 업무, eno 사번, ename 이름, sal 급여 from emp
    order by 업무;

     

    <WHERE 절>

     

    SELECT [DISTINCT | ALL] 컬럼

    FROM 테이블 명

    WHERE 조건

    ORDER BY 컬럼 [ASC | DESC];

     

    WHERE 조건 안에 연산을 넣을 수는 있지만 퍼포먼스가 떨어지기 때문에 가급적이면 컬럼을 넣는게 좋다. 

     

    <널과 비교 연산>

    IS NULL

    IS NOT NULL

     

     

    <관계 연산자와 LIKE 연산자>

     

    SELECT [DISTINCT | ALL] 컬럼

    FROM 테이블 명

    WHERE 조건 [관계연산자 조건]

    ORDER BY 컬럼 [ASC | DESC];

     

    AND, OR, NOT

    여러조건을 동시에 사용. 

    두개 이상의 연산자를 이용할때는 괄호를 이용해서 연산의 우선순위를 결정한다. 

     

    우선순위

    AND가 먼저 OR가 다음. 

     

     

    <LIKE 연산자>

    SELECT [DISTINCT | ALL] 컬럼

    FROM 테이블 명

    WHERE 컬럼 LIKE '비교 문자열'

    ORDER BY 컬럼 [ASC | DESC];

     

    WHERE 절에 사용되는 문자 전용의 비교 연산자. 

    문자열의 일부만으로 검색하는 경우 사용

    문자열에서 패턴을 찾아주는 연산자.

    두개의 와일드 문자를 이용한다. 

     

    > '_' : 반드시 한 개의 문자를 대체한다. 

      ex  )  '경_' :경으로 시작하는 두 글자 단어

      ex2)  '_경' : 경으로 끝나는 두 글자 단어

      ex3)  '_경_': 중간에 경이 들어간 세 글자 단어. 

     

    >'%' : 문자열을 대체한다. (문자가 없는 경우도 포함)

      ex  )  '경%' :경으로 시작하는 모든 문자열

      ex2)  '%경' : 경으로 끝나는 모든 문자열. 

      ex3)  '%경%: 중간에 경이 들어간 모든 문자열

     

      >>위치가 중요! 

     

    >'%이#%%' : '이%'가 포함된 문자열.

     

     

    '개발 강의 정리 > SQL' 카테고리의 다른 글

    [SQL] SQL 기타 문법  (0) 2021.05.17
    [SQL] 단일 행 함수  (0) 2021.05.14
    [SQL] 집합 연산자 & 그룹 함수  (0) 2021.05.13
    [SQL] ANSI QUERY  (0) 2021.05.12
    [SQL] SQL 기초 -2  (0) 2021.05.11
Designed by Tistory.