ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 02 SELECT 구문 - 연산자, distinct, cast, concat
    코린이 유치원/SQL반 2022. 5. 26. 01:10

    오늘은 정보를 조회할 때 사용하는 SELECT 구문을 배워보자 go!


    SELECT (조회)

    우리가 정보를 데이터 베이스에 저장하는 이유는 무엇일까? 

    👉 정보를 기록하려고. 그럼 왜 기록해

    👉 나중에 필요할 때 찾아봐야 되지 않겠어?

    우리가 제일 알아야 할 구문중 하나가 SELECT 구문

     

    01 SELECT 기본 구문

    -- SELECT 기본구문
    
    -- SELECT 조회 컬럼 별칭
    -- FROM   테이블이름 별칭
    -- WHERE  제약조건
    -- GROUP BY 그룹화할 기준 컬럼
    -- HAVING 조건
    -- ORDER BY 정렬기준 컬럼 ASC/DESC
    • 항목
      • SELECT 절: 조회할 컬럼을 지정. 모든 컬럼 조회시 * 사용. 별칭 부여 가능
      • FROM 절: 조회 대상 테이블 이름. 별칭 부여 가능 
      • WHERE 절: 조회할 행의 선택 조건
      • GROUP BY절: 조회시 어떤 칼럼의 값이 같은 것끼리 묶어서 조회할지 지정
      • HAVING절: 조회시 그 결과에 대한 조회조건 지정
      • ORDER BY절: 조회결과 정렬(ASC: 오름차순(디폴트, 생략 가능)/ DESC:내림차순)

    ** 필수(생략 불가), 옵션(생략 가능)

    *** 당연히 조회를 하려면 어떤 테이블에서 어떤 컬럼을 정해야 할지 알려주는 줘야 하잖아요!

     

    02 연산자

    • 컬럼이나 상수값에 사칙 연산 이용 
      • SELECT 조회 칼럼에 사용시 연산은 행 단위로 이루어짐
      • 연산자:
        1.  +, -, *, / : 근본 더하기, 빼기, 곱하기, 나누기 ssap가능
        2.  %, MOD: 나머지 연산자
        3. DIV: 몫 연산자
        4. 연산자 우선 지정은 ()로 묶기

     

    03 WHERE 절에서 사용하는 주요 연산자

    연산자 설명
    AND, OR 논리 연산자로 조건이 하나 이상일 경우 사용
    AND: 두 조건 모두 만족 할때, OR: 둘중 하나만 만족할 때
    =, <> (!=), >, < >=, <- =: 같은 것 조회, != <>: 같지 않은 것 조회
    >: 큰 값 조회, <: 작은 값 조회
    BETWEEN a AND b a와 b사이의 데이터를 조회(a, b 값 포함)
    ex) 10보다 크고 20보다 작은 값을 갖고 있는 행
    in (list) list의 값 중 어느 하나와 일치하는 데이터를 조회
    LIKE 문자 형태로 일치하는 데이터 조회 (%, _사용)
    IS NULL NULL 값 가진 데이터 조회
    NOT BETWEEN a AND b a와 b 사이에 있지 않은 데이터 조회(a, b값 포함 X)
    NOT IN (list) list의 값과 일치하지 않는 데이터 조회
    NOT LIKE 문자 형태와 일치하지 않는 데이터 조회
    IS NOT NULL NULL 값 가지지 않는 데이터 조회

    ** WHERE 절은 update, delete, select 에서 행 선택할 때 사용

    ** 조건 여러개인 경우 and 나 or로 연결

    ** and는 or보다 우선순위가 높기 때문에, 우선 순위 바꾸고 싶을 땐 ( ) 사용

    ** NOT은 앞에 붙는다는 것을 기억

     

    04 코드 예시

    솔직히 저런 표 읽어봤자 이해 안된다.직접 코드 따라해봐야 이해 가넝~!

     

    use hr; -- 사용할 database 지정
    select * from emp -- emp 테이블에 있는 모든 열 조회

     

    ** 사용할 database를 지정해서, 어떻게 열과 행이 구성된 테이블인지 확인하기 위해 *로 모든 열 조회!

     

     

    다음과 같은 테이블이 등!쟝!

    이 글을 보고 있는 누군가가 있다면, 나의 코드를 이용해 당신의 테이블에 적용해 boa

     

    • 모든 column 조회
    select * from emp;

     

    • 일부 조회: emp_id, emp_name, job만 조회
    -- SELECT 조회할 열 이름 from 테이블 이름
    select emp_id, emp_name,job from emp;
    
    -- 열 개수가 많을 땐 세로로 쓰기 ssap 가넝!
    select emp_id,
           emp_name,
           job
    from emp;

     

    • 중복 값 제거: 나는 무슨무슨 job이 있는지 보고싶음. 그러니깐 중복되는 값은 모두 제거 ㄱㄱ
    select distinct job
    from emp;

    job 열의 중복행 제거

     

    • 여러 행 중복 값 제거: 선택된 컬럼 조합의 중복값이 제거되기 때문에 한 열 내 중복값은 존재

     

    • 별칭부여: 열 이름 대신에 별칭 사용하고 싶다면 별명을 붙여boza. 
    -- 기본 구문: select 컬럼명 as 별칭 
    
    select emp_id as "직원 ID", 
    	   emp_name as "직원 이름",
           hire_date 입사일, -- as는 생략 가능
           salary 급여,
           dept_name "소속 부서"
    from emp;

    ** as로 별칭 부여, but 생략 가능

    ** 별칭 띄어쓰기 할땐 "" 꼭 큰따옴표로 묶어주긔

    열 이름이 바뀐것 확인 가능

     

    • 연산자 사용
    -- EMP 테이블에서 직원의 이름(emp_name), 급여(salary) 그리고  급여 + 1000 한 값 조회
    select emp_name,
           salary
           salary + 1000
    from emp;
    
    
    -- EMP 테이블에서 salary, comm_pct, salary * comm_pct 한 값 조회
    select salary,
           comm_pct,
           salary * comm_pct
    from emp;

    emp_name, salary, salary + 1000 한 값 조회
    salary, comm_pct, salary * comm_pct 한 값 조회

     

    • cast 함수: 데이터 타입 변환해주는 함수
    select cast('2022-05-25' as date) 
    select cast('10:30:22 as time)

    ** select cast (값 as 변환할 데이터 타입)

     

    • concat 함수: 여러개 값 합쳐서 문자열로 반환
    -- EMP 테이블에서 직원이름(emp_name)과 급여(salary)을 조회. 급여 앞에 $를 붙이기
    
    select emp_name,
           concat('$', salary) as "salary" -- concat으로 salary 모든 행 앞에 $넣어주고 salary로 호출
    from emp;


    졸려서 분량 조절을 위해 WHERE은

    TO BE CONTINUED...

    (우리는 유치원이니깐👽) 

유사명문 코린이 유치원