SQL (1)
👉 데이터 조회
# USE 문
- 사용할 데이터 베이스를 지정 (한번만 실행)
- 발생 클래스 : java.lang.Error 클래스의 서브 클래스
USE 데이터베이스_이름;
USE market_db
# SELECT 문의 기본 형식
- 생략은 가능해도 순서는 지켜야 한다.
SELECT select_expr
[FROM table_references]
[WHERE where_condision]
[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 테이블_이름
SELECT addr, debut_date, mem_name FROM member;
# SELECT ~ FROM ~ WHERE
SELECT 열_이름 FROM 테이블_이름 WHERE 조건식;
SELECT *
FROM member
WHERE height BETWEEN height 163 AND 165;
- 관계연산자: > < >= <= =
- 논리연산자: AND OR
- BETWEEN ~ AND
- IN('경기', '전남', '경남')
- LIKE '우%'
- LIKE '__핑크'
- 서브쿼리
# ORDER BY
- 결과가 출력되는 순서를 조절
SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date; --오름차순
SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date DESC; --내림차순
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC;
- LIMIT : 출력하는 개수 제한
- DISTINCT : 중복된 데이터 1개만 남김 (SELECT DISTINCT addr FROM member;)
# GROUP BY
- 출력 결과를 그룹으로 묶어준다. (집계함수와 함께 사용)
SELECT mem_id, SUM(price*amount) FROM buy GROUP BY mem_id;
- 집계함수는 WHERE절 사용 불가 대신 HAVING절 사용
SELECT mem_id, SUM(price*amount)
FROM buy
GROUP BY mem_id
HAVING SUM(price*amount) > 1000;
👉 데이터 변경
# CREATE
- 테이블을 생성
CREATE TABLE 테이블_이름 (열_이름 데이터_타입, 열_이름 데이터_타입.....);
CREATE TABLE users (id INT, name CHAR(4), age INT);
# INSERT
- 테이블에 데이터를 삽입
INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)
-- 열을 생략하여 순서 및 개수를 맞춤 (열을 명시하면 모든 열을 넣지 않아도 된다.)
INSERT INTO users VALUES (1, '벨라', 25);
- AUTO_INCREMENT (자동으로 증가하는 값으로 PRIMARY KEY 로 지정)
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name CHAR(4),
age INT);
INSERT INTO users VALUES (null, '보핍', 25);
INSERT INTO users VALUES (null, '슬링키', 22);
- INSERT INTO ~ SELECT (다른 테이블의 데이터를 한번에 입력 / SELECT문 열의 개수 = INSERT 할 테이블의 열 개수)
INSERT INTO 테이블_이름 (열_이름1, 열_이름2, ...)
SELECT 문 ;
# INSERT
- 입력되어 있는 값 수정
UPDATE 테이블_이름
SET 열1 = 값1, 열2 = 값2, ...
WHERE 조건;
UPDATE my_city SET name = '서울' WHERE name = 'Seoul';
# DELETE
- 테이블의 행 데이터를 삭제
DELETE FROM 테이블_이름 WHERE 조건;
DELETE FROM my_city WHERE name LIKE 'New%';
# TRUNCATE
- DELETE와 비슷하나 WHERE 문을 사용할 수 없다. (모든 행 삭제)
TRUNCATE TABLE 테이블_이름;
# DROP
- 테이블 자체 삭제
DROP TABLE 테이블_이름;
🙋♂️ 소감 :
JPA가 모든 데이터를 엔티티 객체로 변환하여 검색하는 것은 한계가 있기 때문에 SQL문을 알아야 한다.
예전에 오라클DB를 다뤄본적이 있어서 SQL 강의는 간만에 휴식같은 강의였다 ㅠㅠ
😈 아는 내용이라고 그냥 넘어가지 않기! 😈
'❤️🔥TIL (Today I Learned)' 카테고리의 다른 글
[TIL] 2023-01-13(55day) / SQL 인덱스 (0) | 2023.01.15 |
---|---|
[TIL] 2023-01-12(54day) / SQL JOIN / 제약조건 (0) | 2023.01.12 |
[TIL] 2023-01-10(52day) (0) | 2023.01.10 |
[TIL] 2023-01-09(51day) (0) | 2023.01.09 |
[TIL] 2023-01-06(50day) (0) | 2023.01.06 |
댓글