별칭
* 별칭사용하기
- 별칭을 사용하는 이유 : 긴 단어를 줄여서 사용하는데 좋음
- 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' 해주기!)
[문제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;
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);
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;
[문제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 타입은 문자열로 취급가능
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-01' AND '1975-12-31';
"00000000"
SELECT mem_name, mem_bir
FROM member
WHERE mem_bir BETWEEN '19750101' AND '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/01' AND '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 '김%';
NOT
* NOT
- 부정 조건 : NOT IN, NOT LIKE, NOT BETWEEN
- 회원의 출생년도(생일기준)가 1975년생이 아닌 회원에 대한
- 회원이름, 회원생일 조회
SELECT mem_name, mem_bir
FROM member
WHERE mem_bir NOT LIKE '%1975%';
'Back-End > 데이터베이스' 카테고리의 다른 글
[DB]데이터베이스 명령어5 (MariaDB) - 그룹함수(집합함수) (3) | 2023.11.22 |
---|---|
[DB]데이터베이스 명령어4 (MariaDB) - replace, round, case, if, null 체크, 날짜 함수, 형 변환 함수 (3) | 2023.11.22 |
[DB] 데이터베이스 명령어3 (MariaDB) - concat(), upper(), trim(), substring(), left(), 서브쿼리 (11) | 2023.11.21 |
[DB] 데이터베이스 명령어1(MariaDB, HeidiSQL) (2) | 2023.11.20 |
[DB]데이터베이스 기본 이론 및 설치 (7) | 2023.11.20 |