SQL

SQL 정리(select)

goshek 2024. 9. 25. 11:15

### select ###

/*
select: 선택하다
    
    cf) 데이터베이스는 '어떻게'보다 '무엇을' 가지고 오는지가 중요
> select는 '무엇을' 선택할지 결정하는 키워드
        
# select문의 기본 구조("작성 순서") #
    1. select 컬럼명(열 목록): 원하는 컬럼(열)을 지정
    2. from 테이블명: 어떤 테이블에서 데이터를 가져올 지 결정
    3. where 조건: 특정 조건에 맞는 데이터만 선택
    4. group by 그룹화 할 컬럼명: 특정 열을 기준으로 그룹화
    5. having 그룹 조건: 그룹화 한 이후의 조건을 지정
    6. order by 정렬 컬럼명: 결과를 특정 컬럼의 순서로 정렬
    7. limit 컬럼 수 제한: 반환할 컬럼(행)의 수를 제한
    
    cf) 데이터 베이스 내부 처리 순서
    : select문 처리 순서
    
    from > join > where > group by > having > select > order by > limit
*/

use `korea_db`;

##### 1. 기본 조회 #####
# : select 컬럼명 from 테이터베이스명.테이블명;

select `name` from `korea_db`.`members`;
# : 정렬을 하지 않을 경우 데이터 입력 순서대로 출력

# cf) 전체 컬럼 조회
# : 컬럼명 작성에 * (전체 선택)을 사용하여 조회
select * from `korea_db`.`members`;

# cf) 2개 이상의 여러 컬럼을 조회하는 경우 ,(콤마)로 구분하여 나열
select
`member_id`, `name`, `gender`
from 
`korea_db`.`members`;

-- select `member_id`, `name`, `gender`
-- from `korea_db`.`members`;

# cf) alias(별칭) 부여 조회
# : 열 이름을 별칭으로 조회할 때 사용
# : 생략 시 테이블 생성 시 지정했던 컬럼명으로 지정
# >> 열 이름에 공백으로 구분하여 별칭 입력
# >> 별칭에 공백이 있을 경우 문자열을 나타내는 따옴표로 묶어야 한다

select 
`member_id` '멤버 아이디', `name` as 이름 -- as 키워드는 생략 가능
from
`korea_db`.`members`;

##### 2. 특정 조건을 부합하는 데이터 조회 #####
# : select A from B where C

select
`member_id`, `name`, `points`
from
`members`
where
points > 200;

# where 조건절 사용 시 주로 사용되는 연산자 #

# 1) 관계 연산자
# : 이상, 이하, 초과, 미만, 일치(=), 불일치(!=)

select
`member_id`, `name`, `points`
from
`members`
where
name != 'Minji';

# 2) 논리 연산자
# : 여러 조건을 조합하여 데이터를 조회

# and, or, not 등

# and: 모든 조건이 참
select * from `members`
where
area_code = 'Busan' and grade = 'Silver';

# or: 조건 중 하나라도 참
select * from `members`
where
area_code='Busan' or area_code='Seoul';

# not: 조건이 거짓일 때 (결과를 반대)
select * from `members`
where
not grade='bronze';

# cf) null 값을 확인하는 경우는 연산자 사용이 불가!
-- select * from `members`
-- where
--  points=null;

# : null이 '값이 없음'을 나타내기 때문에 그 어떤 값과도 비교할 수 X
# >> null 여부 확인은 가능

# is null, is not null

# A is null
# : A가 null인 경우 true 반환, 아닌 경우 false 반환

select * from members
where 
points is null;

# between A and B
# : A와 B 사이에

select * from members
where
points between 200 and 400; -- 이상, 이하
# : 주로 숫자형 데이터에 사용

# in 연산자
# : 지정할 범위의 문자 데이터를 나열
# : 지정된 리스트 중 하나와 일치하면 참
select * from members
where area_code in('seoul', 'busan', 'jeju');

# >> 문자열 데이터에 대한 or식의 간소화

# like 연산자
# : 문자열의 일부를 검색

# cf) 와일드 카드 문자
# : _(언더스코어), %(퍼센트)

# %: 무엇이든 허용(0개 이상의 임의의 문자를 나타냄)
# _: 한 글자만 허용(정확히 하나의 임의의 문자를 나타냄)

select * from members;

select * from members
where
name like 'J%';

select * from members
where
name like 'J___';
  
select * from members
where
name like '%un%';  
    
# 이름의 두 번째 글자가 u인 모든 회원 조회
select * from members
where
name like '_u%';
    
# 이름이 네글자인 모든 회원 조회
select * from members
where
name like '____';

# 날짜, 시간 조회
# date: 'YYYY-MM-DD'
# time: 'HH:MM:SS'

# 특정 데이터와 일치하는 데이터 조회
select * from members
where
join_date = '2022-01-02';

# cf) 특정 시간 기준 그 이후의 데이터 조회
# 컬럼명 > 특정시간
select * from members
where
join_date > '2022-01-02';

# cf) 특정 시간 사이의 데이터 조회
# between 키워드 사용
select * from members
where
join_date between '2023-01-01' and '2024-01-23';

# cf) 날짜나 시간의 특정 부분과 일치하는 데이터 조회

# 연도 일치: year(컬럼명)
# 월 일치: month(컬럼명)
# 일 일치: day(컬럼명)

select * from members
where
year(join_date) = '2024';

# 시간 일치
# hour(), minute(), second()

# 현재 날짜나 현재 시간을 기준으로 조회
# curdate()
# now()

select * from members
where
join_date < curdate();

'SQL' 카테고리의 다른 글

SQL 정리(형 변환)  (0) 2024.09.26
SQL정리(join)  (0) 2024.09.25
sql 기초 예시  (0) 2024.09.25
SQL 정리(데이터타입)  (1) 2024.09.23
SQL 정리(DDL)  (0) 2024.09.23