본문 바로가기

Back-End/데이터베이스

[DB] 데이터베이스 명령어2 (MariaDB) - AS, IN, LIKE, BETWEEN

~ 목차 ~

별칭

* 별칭사용하기


- 별칭을 사용하는 이유 : 긴 단어를 줄여서 사용하는데 좋음
- SQL에서 별칭을 사용할 수 있는 곳
  ① 컬럼명 대신 별칭 사용 : as
     ex) SELECT mem_id AS id
  ② 테이블명  대신 별칭 사용 : 한칸 띄어쓰기
     ex) FROM member mem


 

* 회원 테이블 전체 조회하기

 - 컬럼정보 : [mem_id, mem_pass, ....]
 - [{'a001', 'asdfasdf', ...}, {'b001', '1004'...}, {},,,]          →     딕셔너리 한 개가 테이블의 한 줄로 입력됨


SELECT * FROM member;



* 컬럼명 별칭 사용하기

  [회원의 마일리지 값이 10 이상인 데이터만 조회하기]

 

   - 조회컬럼 : 회원아이디, 회원이름, 마일리지
   - 별칭 : id, name, point

   - 사용할 테이블 명 : member
   - 사용할 컬럼명 : mem_id, mem_name, mem_mileage
   - 사용할 조건이 무엇인지 : mem_mileage >= 10

 


SELECT mem_id AS id, mem_name AS name, mem_mileage AS point
FROM member
WHERE mem_mileage >= 10;

SELECT mem_id id, mem_name name, mem_mileage point
FROM member
WHERE mem_mileage >= 10;

SELECT mem_id 'id', mem_name 'name', mem_mileage 'mem point'
FROM member
WHERE mem_mileage >= 10;

※ SQL 타입 : 조건값이 숫자일때 그냥 쓰기, 조건값이 문자일때 ' '쓰기

     컬럼명 별칭       1. AS 

                         2. 띄어쓰기

                         3. ' ' 사용 (이 경우 별칭 띄어쓰기 가능)

    

* 테이블 별칭 사용하기

   - 테이블 별칭 사용하기(한칸 어쓰기) → '별칭.컬럼명'으로 접근가능
   - 테이블인걸 알려주기 위해서 테이블 별칭대문자로 표현

 


SELECT MEM.mem_id AS id, mem_name AS name, mem_mileage AS point
FROM member MEM
WHERE mem_mileage >= 10;



* 조회 (SELECT)

   - 위의 조건을 만족하면서 회원의 이름이 김은대인 회원을 조회해 주세요.
   - 조회컬럼 : 회원아이디, 회원이름, 마일리지


SELECT mem_id, mem_name, mem_mileage
FROM member MEM
WHERE mem_mileage >= 10 and mem_name = '김은대';

 


정렬

* 정렬

       ①ORDER BY 컬럼명 ASC(오름차순)

       ② ORDER BY 컬럼명 DESC(내림차순)

 

    - 회원아이디를 기준으로 오름차순으로 조회하기

 


SELECT mem_id, mem_name, mem_mileage
FROM member MEM
WHERE mem_mileage >= 10 
ORDER BY mem_mileage DESC, mem_id ASC;

※ 1차 정렬 (먼저 수행),  2차 정렬( 1차 정렬된 후 2차 정렬 실행)

 

<처리 순서> 

1. Select
2. From
3. 테이블 메모리 올리기
4. where 조건
5. And 조건 또는 OR 조건
6. 조회할 컬럼 (select)
7. 정렬

 


SELECT mem_id AS id, mem_name AS name, mem_mileage AS point
FROM member
WHERE mem_mileage >= 10
ORDER BY point desc;

※ 컬럼 별명으로 ORDER BY 가능


SELECT mem_id AS id, mem_name as name, mem_mileage AS point
FROM member
WHERE point >= 10
ORDER BY point DESC;

※ 컬럼 별명으로 WHERE 불가능

      => 오류발생 : 컬럼 조회가 6번째 실행이고 where조건문은 그보다 먼저 실행되므로 

 

 

*  정렬에 사용할 수 있는 이름 : 컬럼명, 별칭, 위치

     - 1: 첫번째 컬럼명 정렬

     - 2: 두번째 컬럼명 정렬

     - 3: 세번째 컬럼명 정렬

 


SELECT mem_id AS id, mem_name AS name, mem_mileage AS point
FROM member
WHERE mem_mileage >= 10
ORDER BY 3 DESC;

 


조건문 연산자

    - 비교연산자 : >, <, >=, <=, =, <>(같지않다), !=
    - 논리연산자 : AND, OR
    - 산술연산자 : +, -, *, /


표준 : IN, LIKE, BETWEEN
회사에서 만든것 : CONCAT, SUBSTRING(오라클 : SUBSTR)

 

[문제1]

회원 중에 76년 1월 1일 이후에 태어난 회원을 조회하기
 - 단, 주민등록번호 앞자리 6자리를 이용하기
 - 조회할 컬럼 : 회원 아이디, 이름, 주민번호 앞6자리

 


SELECT mem_id AS id, mem_name AS name, mem_regno1 AS regno
FROM member
WHERE mem_regno1 > '760101';

※ 테이블 정의에서 데이터 타입보고 조건문 작성하기!! ( mem_regno1은 char(6)타입이므로 '760101' 해주기!)

문제1

 

[문제2]
상품분류코드가 P201이고, 상품판매가격이 17만원인 상품코드, 상품명, 상품분류코드, 상품판매가격 조회하기.
정렬은 상품명을 기준으로 오름차순

 - 사용할 테이블 : prod
 - 사용할 컬럼 : prod_id , prod_name, prod_lgu, prod_sale
 - 일반 조건 : prod_lgu = 'P201' AND prod_sale = 170000
 - 정렬 조건 : ASC


SELECT prod_id , prod_name, prod_lgu, prod_sale
FROM prod
WHERE prod_lgu = 'P201' AND prod_sale = 170000
ORDER BY prod_name ASC;

문제2


IN

IN

    - 조건 :

IN ( 값s )

    - 값들 중 해당하는 값이 있으면 정보 모두 불러오기

 

[문제3]
상품판매가격이 15만원 또는 17만원 또는 33만원인 상품을 조회하기
조회컬럼 : 상품명, 상품판매가격 조회

 

 - 사용할 테이블 : prod
 - 사용할 컬럼 : prod_name, prod_sale
 - 일반 조건 : ① prod_sale = 150000 OR prod_sale = 170000 OR prod_sale = 330000

                      ② prod_sale IN (150000, 170000, 330000)


SELECT prod_name, prod_sale
FROM prod
WHERE prod_sale = 150000 OR prod_sale = 170000 OR prod_sale = 330000;

 


SELECT prod_name, prod_sale
FROM prod
WHERE prod_sale IN (150000, 170000, 330000);

 

문제3


LIKE

LIKE

    - 검색조건 : LIKE 

    - 문자내 특정 단어 포함여부 검색 ('%')
    

    [ LIKE 활용 ] (4가지)

  •  '문%' : 첫 글자가 '문'으로 시작
  •  '%자 ' : 끝 글자가 '자'로 끝
  •  '_자%' : 두번째 글자가 '자'로 시작
  •  '%문자%' : 문자열 중 '문자'

 

- 상품명에 삼성이라는 단어가 있는 데이터 조회하기
- 조회컬럼 : 상품명, 상품코드


SELECT prod_name, prod_id
FROM prod
WHERE prod_name LIKE '삼성%';

 

- 상품명 중에 첫 글자가 '삼'으로 시작하는 모든 것 찾기


SELECT prod_name, prod_id
FROM prod
WHERE prod_name LIKE '삼%';

 

- 상품명 중에 두번째 글자가 '성'으로 시작하는 모든 것 찾기


SELECT prod_name, prod_id
FROM prod
WHERE prod_name LIKE '_%';

 

- 상품명 중에 마지막 글자가 '치'로 끝나는 모든 것 찾기


SELECT prod_name, prod_id
FROM prod
WHERE prod_name LIKE '%치';


- 상품명 중에  '여름'이라는 단어가 포함되어 있으면 찾기(가장많이 쓰는 검색조건)


SELECT prod_name, prod_id
FROM prod
WHERE prod_name LIKE '%여름%';

 

[문제4]
회원의 거주 지역이 서울이고, 마일리지가 1000이상인 회원의
아이디, 이름, 주소(앞), 마일리지 조회하기

 

- 사용할 테이블 : member
- 사용할 컬럼 : mem_id, mem_name, mem_add1, mem_mileage
- 일반 조건 : mem_add1 like "%서울%" and mem_mileage >= 1000 


SELECT mem_id, mem_name, mem_add1, mem_mileage
FROM member
WHERE mem_add1 like "%서울%" and mem_mileage >= 1000;

문제4

 

[문제5]
회원 중에 생일이 1975년도에 태어난 회원조회 
조회컬럼 : 회원이름,회원생일

- 사용할 테이블 : member
- 사용할 컬럼 : mem_name, mem_bir
- 일반 조건 : mem_bir like '%1975%' 


SELECT mem_name, mem_bir
FROM member
WHERE mem_bir LIKE '%1975%';

※ sql타입 중 datetime 타입은 문자열로 취급가능

문제5


BETWEEN

BETWEEN

    - Between A and B : A이상 B이하의 범위 조건
    - 날짜 타입 또는 숫자 타입에 대한 범위 연산 조건에 해당함.

 

    [ 날짜 형식(포맷형식) ] (4가지)

  • 0000-00-00
  • 0000.00.00
  • 0000/00/00
  • 00000000

  "0000-00-00"


SELECT mem_name, mem_bir
FROM member
WHERE mem_bir BETWEEN '1975-01-01AND '1975-12-31';

 

  "00000000"


SELECT mem_name, mem_bir
FROM member
WHERE mem_bir BETWEEN '19750101AND '19751231';

 

  "0000.00.00"


SELECT mem_name, mem_bir
FROM member
WHERE mem_bir BETWEEN '1975.01.01' AND '1975.12.31';

 

  "0000/00/00"


SELECT mem_name, mem_bir
FROM member
WHERE mem_bir BETWEEN '1975/01/01AND '1975/12/31';

 

 

[문제6]
회원 마일리지의 값이 10이상이고, 100000이하이며,
회원의 성씨가 김씨인 회원들에 대한 
회원이름, 마일리지 조회하기 
조회컬럼 : 회원이름, 마일리지

- 사용할 테이블 : member
- 사용할 컬럼 : mem_name, mem_mileage
- 일반 조건 : mem_mileage between 10 and 100000


SELECT mem_name, mem_mileage
FROM member
WHERE mem_mileage BETWEEN 10 AND 100000
AND mem_name LIKE '김%';

문제6


NOT

* NOT

    - 부정 조건 : NOT IN, NOT LIKE, NOT BETWEEN
 


- 회원의 출생년도(생일기준)가 1975년생이 아닌 회원에 대한
- 회원이름, 회원생일 조회


SELECT mem_name, mem_bir
FROM member
WHERE mem_bir NOT LIKE '%1975%';

 

728x90