일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 데코레이터
- JPQL
- 이진탐색
- 연결리스트
- fetch
- 스토어드 프로시저
- 연관관계
- execute
- 백트래킹
- SQL프로그래밍
- 스프링 폼
- 다대일
- BOJ
- 낙관적락
- dfs
- 동적sql
- 일대다
- 힙
- querydsl
- PS
- 지연로딩
- exclusive lock
- CHECK OPTION
- eager
- 다대다
- 즉시로딩
- FetchType
- shared lock
- 비관적락
- 유니크제약조건
- Today
- Total
흰 스타렉스에서 내가 내리지
SQL 문법 기초 - SELECT 관련 본문
USE
USE 데이터베이스_이름;
'지금부터 이 DB를 사용하겠으니 모든 쿼리는 이 DB에서 실행하라'
앞으로 모든 SQL 문은 '데이터베이스_이름' 에 해당하는 데이터베이스에서 수행된다.
SELECT
SELECT select_expr
[FROM table_references]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
-- 대괄호로 묶인 부분은 생략이 가능하다.
* SELECT, FROM
원래 테이블의 전체 이름은 데이터베이스_이름.테이블_이름 형식으로 표현한다.
원칙적으로는 SELECT * FROM market_db.member의 형태로 사용해야 하지만, 데이터베이스 이름을 생략하면 USE 문으로 지정해 놓은 데이터베이스가 자동으로 선택된다
필요한 열만 가져오기 : SELECT mem_name FROM member;
여러개의 열 가져오기 : SELECT addr, debut_date, mem_name FROM member;
+ 열 이름의 별칭(alias)
SELECT addr 주소, debut_date "데뷔 일자", mem_name FROM member;
* WHERE
WHERE 절에 열_이름 = 값 은 열의 값에 해당하는 결과만 출력해 준다.
예시 : SELECT * FROM member WHERE mem_number = 4;
숫자로 표현된 데이터는 관계연산자를 사용할 수 있다.
예시 : SELECT mem_id, mem_name FROM member WHERE height <= 162;
2가지 이상의 조건을 만족하도록 논리연산자를 사용할 수도 있다. (AND, OR)
예시 : SELECT mem_name, height, mem_number FROM member WHERE height >= 165 AND mem_number > 6;
BETWEEN ~ AND
SELECT mem_name, height FROM member WHERE height BETWEEN 163 AND 165;
IN()
숫자로 된 데이터는 BETWEEN AND 를 사용할 수 있었지만, 문자열 형식으로 된 데이터는 어느 범위에 들어 있다고 표현할 수 없다.
IN()을 사용하면 OR만으로 구현하던 문자열 범위를 간결하게 작성할 수 있다.
SELECT mem_name, addr FROM member WHERE addr IN('경기', '전남', '경남');
LIKE
문자열의 일부 글자를 검색하려면 LIKE를 사용한다.
예를 들어 이름(mem_name)의 첫 글자가 '우'로 시작하는 회원은 다음과 같이 검색할 수 있습니다.
'우%' 는 제일 앞 글자가 '우'이고 그 뒤는 무엇이든(%) 허용한다는 의미이다.
SELECT * FROM member WHERE mem_name LIKE '우%';
한 글자와 매칭하기 위해서는 언더바(_)를 사용한다.
SELECT * FROM member WHERE mem_name LIKE '__핑크';
'_랙_크'로 하면 블랙핑크가 검색된다.
++ 서브쿼리
SELECT 안에 또 다른 SELECT가 들어갈 수 있다.
이를 서브 쿼리(subquery) 또는 하위 쿼리라고 부른다.
에이핑크의 평균키 보다 큰 회원을 구하고 싶을 때 :
SELECT height FROM member WHERE mem_name = '에이핑크'; -- 결과값 : 164
SELECT mem_name, height FROM member WHERE height > 164;
서브쿼리를 이용하여 한 문장으로 줄이기
SELECT mem_name, height
FROM member
WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');
괄호 안의 SELECT 결과가 164 이므로 이 자리에 164를 직접 써준 것과 동일한 효과를 얻는다.
'SQL' 카테고리의 다른 글
데이터 변경을 위한 SQL 문 (CRUD) (0) | 2022.07.29 |
---|---|
SQL 문법 기초 2 - SELECT 관련 (0) | 2022.07.27 |
데이터베이스 개체 (0) | 2022.07.24 |
[MYSQL WorkBench] 데이터베이스 모델링 툴 (0) | 2022.07.24 |
[Sequelize] 게시글 삭제 구현 팁 (0) | 2022.05.26 |