본문 바로가기
❤️‍🔥TIL (Today I Learned)

[TIL] 2023-01-11(53day) / SQL 데이터 조회 / 변경

by elicho91 2023. 1. 11.

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 강의는 간만에 휴식같은 강의였다 ㅠㅠ

😈 아는 내용이라고 그냥 넘어가지 않기! 😈

댓글