SELECT와 WHERE
select * from member;
-
- → 보고 싶은 컬럼명
- member → 테이블 명
select * from member where email = 'codeit@naver.com';
→ 멤버 테이블에서 해당 이메일을 가진 로우에 모든 컬럼을 조회해줘
SQL 작성 형식
- SQL 문 끝에는 항상 세미콜론을 써줘야한다.
- SQL 문 안에는 공백이나 개행 등을 자유롭게 넣을 수 있다.
- SQL 문의 대소문자 구분 문자
- 예약어들은 대문자로, 나머지 부분을 소문자로 쓴다.
- 데이터베이스 이름과 테이블 이름
- 데이터베이스.테이블
조건을 나타내는 다양한 방법
SELECT * FROM copang_main.member WHERE age BETWEEN 30 AND 39;
→ 나이가 30~39 사이인 로우만 조회
SELECT * FROM copang_main.member WHERE age NOT BETWEEN 30 AND 39;
→ 나이가 30~39 사이인 로우만 빼고 조회
SELECT * FROM copang_main.member WHERE sign_up_day > '2019-01-01';
→ 2019-01-01 이후로 가입한 사람만 조회
SELECT * FROM copang_main.member WHERE sign_up_day BETWEEN '2019-01-01' AND '2019-12-31';
→ 2019에 가입한 사람만 조회
DATE 타입에도 똑같이 효과가 먹는다
문자열 패턴 매칭 조건
SELECT * FROM copang_main.member WHERE address LIKE '서울%';
→ 주소가 “서울 ~” 인사람을 조회하라
조건 표현식
- 같지 않음 (!=, <>)
- 이 중에 있는 ~ (IN)
- SELECT * FROM copang_main.member WHERE age IN(20 ,30);
- 20이나 30이여야 한다.
- 한 글자를 나타내는 _
- %는 여러 글자, _는 한 글자
DATE 데이터 타입 관련 함수
- 연도, 월, 일 추출하기
- SELECT * FROM copang_main.member WHERE YEAR(birthday) = '1992';
- SELECT * FROM copang_main.member WHERE YEAR(birthday) IN (6, 7, 8);
- SELECT * FROM copang_main.member WHERE DAYOFMONTH(birthday) BETWEEN 15 AND 31;
- 날짜 간의 차이 구하기
- 오늘 날짜를 구하는 함수 → CURDATE()
- DATEDIFF(’2018-01-05’, ’2018-01-03’) → 2
- 날짜 더하기 빼기
- DATE_ADD() → 날짜 형식으로 반환
- DATE_SUB() → 날짜 형식으로 반환
- DATE_ADD(sign_up_day, INTERVAL 300 DAY) → 300일 더해서 반환
- UNIX Timestamp
- 특정 날짜의 특정 시간을, 1970년 1월 1일 기준으로, 총 몇 초가 지났는지 나타낸 값
여러개의 조건 걸기
AND
SELECT * FROM copang_main.member
WHERE gender = 'm'
AND address LIKE '서울%';
→ 서울에 살면서 성별이 남자인 사람만 조회
OR
SELECT * FROM copang_main.member
WHERE MONTH(sign_up_day) BETWEEN 3 AND 5
OR MONTH(sign_up_day) BETWEEN 9 AND 11;
→ 봄이나 가을에 가입한 회원만 조회
SELECT * FROM copang_main.member
WHERE (gender = 'm' AND height >= 180)
OR (gender = 'f' AND height >= 170);
→ 먼저 해야하는 조건을 괄호로 감싸자!
여러 조건을 걸 때 주의할 점
- OR을 사용할 때의 주의사항
- SELECT * FROM copang_main.member WHERE id = 1 or id = 2
- id가 1이나 2인 행만 출력
- SELECT * FROM copang_main.member WHERE id = 1 or 2
- 2가 무조건 true이기 때문에 모든 행 출력
- SELECT * FROM copang_main.member WHERE id = 1 or id = 2
- AND와 OR 간의 우선순위
- 괄호를 잘치자!
문자열 패턴 매칭 조건 주의점!
- 이스케이핑
- LIKE 뒤에 사용되는 문자 (%, “, ‘, _) 같은 걸 사용하려면 \를 사용하고 해야한다.
- 대소문자 구분
- BINARY를 앞에 사용하면 된다.
- LIKE BINARY ‘%g%’
데이터 정렬
오름차순 정렬
SELECT * FROM copang_main.member
ORDER BY height (ASC);
내림차순 정렬
SELECT * FROM copang_main.member
ORDER BY height (DESC);
WHERE + ORDER BY
SELECT * FROM copang_main.member
WHERE gender = 'm'
AND weight >= 70
ORDER BY height ASC;
여러 컬럼으로 정렬
전체 회원중에 년도순으로 내림차순 정렬하고 년도가 같으면 이메일 순으로 오름차순 정렬
SELECT * FROM copang_main.member
ORDER BY YEAR(sign_up_day) DESC, email ASC;
문자열 형 데이터 정렬
INT 일때
TEXT 일때
데이터 일부만 추려보기
SELECT * FROM copang_main.member
ORDER BY sign_up_day DESC
LIMIT 10;
→ 위에 나오는 10개의 로우만 보여줘
SELECT * FROM copang_main.member
ORDER BY sign_up_day DESC
LIMIT 8, 2;
→ 8번째 로우부터 2개의 로우를 보여줘
→ 로우는 0번부터 시작
순서
WHERE → ORDER BY → LIMIT
데이터 변환
CAST('[변환하고자 하는 데이터]' AS [데이터형식])
ex)
CAST('20' AS INT) → 문자를 숫자로
CAST(1234 AS CHAR(10)) → 숫자를 문자로
SELECT와 WHERE
select * from member;
-
- → 보고 싶은 컬럼명
- member → 테이블 명
select * from member where email = 'codeit@naver.com';
→ 멤버 테이블에서 해당 이메일을 가진 로우에 모든 컬럼을 조회해줘
SQL 작성 형식
- SQL 문 끝에는 항상 세미콜론을 써줘야한다.
- SQL 문 안에는 공백이나 개행 등을 자유롭게 넣을 수 있다.
- SQL 문의 대소문자 구분 문자
- 예약어들은 대문자로, 나머지 부분을 소문자로 쓴다.
- 데이터베이스 이름과 테이블 이름
- 데이터베이스.테이블
조건을 나타내는 다양한 방법
SELECT * FROM copang_main.member WHERE age BETWEEN 30 AND 39;
→ 나이가 30~39 사이인 로우만 조회
SELECT * FROM copang_main.member WHERE age NOT BETWEEN 30 AND 39;
→ 나이가 30~39 사이인 로우만 빼고 조회
SELECT * FROM copang_main.member WHERE sign_up_day > '2019-01-01';
→ 2019-01-01 이후로 가입한 사람만 조회
SELECT * FROM copang_main.member WHERE sign_up_day BETWEEN '2019-01-01' AND '2019-12-31';
→ 2019에 가입한 사람만 조회
DATE 타입에도 똑같이 효과가 먹는다
문자열 패턴 매칭 조건
SELECT * FROM copang_main.member WHERE address LIKE '서울%';
→ 주소가 “서울 ~” 인사람을 조회하라
조건 표현식
- 같지 않음 (!=, <>)
- 이 중에 있는 ~ (IN)
- SELECT * FROM copang_main.member WHERE age IN(20 ,30);
- 20이나 30이여야 한다.
- 한 글자를 나타내는 _
- %는 여러 글자, _는 한 글자
DATE 데이터 타입 관련 함수
- 연도, 월, 일 추출하기
- SELECT * FROM copang_main.member WHERE YEAR(birthday) = '1992';
- SELECT * FROM copang_main.member WHERE YEAR(birthday) IN (6, 7, 8);
- SELECT * FROM copang_main.member WHERE DAYOFMONTH(birthday) BETWEEN 15 AND 31;
- 날짜 간의 차이 구하기
- 오늘 날짜를 구하는 함수 → CURDATE()
- DATEDIFF(’2018-01-05’, ’2018-01-03’) → 2
- 날짜 더하기 빼기
- DATE_ADD() → 날짜 형식으로 반환
- DATE_SUB() → 날짜 형식으로 반환
- DATE_ADD(sign_up_day, INTERVAL 300 DAY) → 300일 더해서 반환
- UNIX Timestamp
- 특정 날짜의 특정 시간을, 1970년 1월 1일 기준으로, 총 몇 초가 지났는지 나타낸 값
여러개의 조건 걸기
AND
SELECT * FROM copang_main.member
WHERE gender = 'm'
AND address LIKE '서울%';
→ 서울에 살면서 성별이 남자인 사람만 조회
OR
SELECT * FROM copang_main.member
WHERE MONTH(sign_up_day) BETWEEN 3 AND 5
OR MONTH(sign_up_day) BETWEEN 9 AND 11;
→ 봄이나 가을에 가입한 회원만 조회
SELECT * FROM copang_main.member
WHERE (gender = 'm' AND height >= 180)
OR (gender = 'f' AND height >= 170);
→ 먼저 해야하는 조건을 괄호로 감싸자!
여러 조건을 걸 때 주의할 점
- OR을 사용할 때의 주의사항
- SELECT * FROM copang_main.member WHERE id = 1 or id = 2
- id가 1이나 2인 행만 출력
- SELECT * FROM copang_main.member WHERE id = 1 or 2
- 2가 무조건 true이기 때문에 모든 행 출력
- SELECT * FROM copang_main.member WHERE id = 1 or id = 2
- AND와 OR 간의 우선순위
- 괄호를 잘치자!
문자열 패턴 매칭 조건 주의점!
- 이스케이핑
- LIKE 뒤에 사용되는 문자 (%, “, ‘, _) 같은 걸 사용하려면 \를 사용하고 해야한다.
- 대소문자 구분
- BINARY를 앞에 사용하면 된다.
- LIKE BINARY ‘%g%’
데이터 정렬
오름차순 정렬
SELECT * FROM copang_main.member
ORDER BY height (ASC);
내림차순 정렬
SELECT * FROM copang_main.member
ORDER BY height (DESC);
WHERE + ORDER BY
SELECT * FROM copang_main.member
WHERE gender = 'm'
AND weight >= 70
ORDER BY height ASC;
여러 컬럼으로 정렬
전체 회원중에 년도순으로 내림차순 정렬하고 년도가 같으면 이메일 순으로 오름차순 정렬
SELECT * FROM copang_main.member
ORDER BY YEAR(sign_up_day) DESC, email ASC;
데이터 일부만 추려보기
SELECT * FROM copang_main.member
ORDER BY sign_up_day DESC
LIMIT 10;
→ 위에 나오는 10개의 로우만 보여줘
SELECT * FROM copang_main.member
ORDER BY sign_up_day DESC
LIMIT 8, 2;
→ 8번째 로우부터 2개의 로우를 보여줘
→ 로우는 0번부터 시작
순서
WHERE → ORDER BY → LIMIT
데이터 변환
CAST('[변환하고자 하는 데이터]' AS [데이터형식])
ex)
CAST('20' AS INT) → 문자를 숫자로
CAST(1234 AS CHAR(10)) → 숫자를 문자로
'공부 > SQL' 카테고리의 다른 글
CSV 파일로 테이블 생성하기 (0) | 2024.09.13 |
---|---|
데이터 베이스 기본 개념 (1) | 2024.09.13 |