본문 바로가기

Study/SQL

SQL 기본 문법

SELECT ~ FROM ~ WHERE문 : 데이터 조회

USE : USE 데이터베이스_이름;, SELECT문 실행을 위해 사용할 데이터 베이스 지정

USE market_db;
SELECT height 키, debut_date, addr #열 순서는 관계 없음 #지정한 순서대로 보여줌 
#띄우고 작성하면 별칭 지정 가능 ex) 키
FROM member;

WHERE절: SELECT문의 조건

BETWEEN ~ AND = ≥, ≤ 숫자 범위 표현

SELECT mem_name, height 
   FROM member 
   WHERE height BETWEEN 163 AND 165;

IN ~(문자): OR과 비슷, 문자에 사용

SELECT mem_name, height 
   FROM member 
   WHERE height BETWEEN 163 AND 165;

LIKE ‘우%’: 우가 들어가는 회원, 알고자하는 값의 이름을 정확히 모를 때

LIKE ‘__핑크’: %는 글자 수 상관 x, _는 한글자 단위

ORDER BY절: 결과를 정렬해주는 역할

 결과 값이나 개수에 대해서는 영향을 주지 않고, 출력되는 순서에 영향을 미침

SELECT 열 이름
	FROM 테이블_이름
	WHERE 조건식
	GROUP BY 열_이름
	HAVING 조건식
	ORDER BY 열_이름
		LIMIT 숫자

기본적으로 오름차순 ASC(생략 가능)이다. 
내림차순 정렬을 위해 DESC로 설정할 수 있다. 

여러 기준을 설정할 수 있으나, 앞에 작성된 것으로 정렬된 후 다음 조건에 따라 정렬된다.

SELECT mem_id, mem_name, debut_date, height
   FROM member 
   WHERE height  >= 164
   ORDER BY height DESC, debut_date ASC;

LIMIT: 지정한 개수 만큼의 행을 볼 수 있음

Limit 3 #3개 
Limit 3,2 #3번째부터 2개 #3,4번째

DISTINCT: 중복된 것은 하나만 보여줌

SELECT DISTINCT addr FROM member;

GROUP BY절: 그룹을 묶어주는 역할

회원별로 구매한 개수를 알고 싶다면? GROUP BY로 합치기!

SELECT mem_id, SUM(amount) "총 구매금액" FROM buy GROUP BY mem_id;

AVG: 평균 값을 알려줌COUNT: 행의 개수를 알려줌

 

❗️GROUP BY 함수에서 조건을 쓸 때에는 HAVING절 사용❗️

 총 구매 금액이 1000만원이 넘는 회원을 알고 싶다면?

SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 금액"
	FROM buy
    GROUP BY mem_id
    HAVING SUM(price * amount) > 1000;
    ORDER BY SUM(price*amount) DESC;

 

INSERT INTO 문 : 데이터 입력

INSERT의 기본 형식은

INSERT INTO 테이블 [(열 이름,....)} VALUES(값 이름,...) 이다. 이 때 열 이름은 생략 가능하다. 

 

USE market_db;
CREATE TABLE hongong1 (toy_id INT, toy_name CHAR(40), age INT);

INSERT INTO hongong1 VALUES(1, '우디', 25);
INSERT INTO hongong1(toy_name, age, toy_id) VALUES('제시', 20, 3);

만약 자동으로 입력하고 싶다면?? AUTO_INCREMENT를 사용한다. 단, 기본키 지정(PRIMARY KEY)을 해줘야 한다.

INSERT 문에서 null값을 입력해주면 자동으로 id를 만들어준다.

CREATE TABLE hongong2 ( 
   toy_id  INT AUTO_INCREMENT PRIMARY KEY, 
   toy_name CHAR(4), 
   age INT);

INSERT INTO hongong2 VALUES (NULL, '보핍', 25);

AUTO_INCREMENT로 어디까지 입력되었는지 알고 싶을 때? SELECT LAST_INSERT_ID();로 알 수 있다.

ALTER TABLE ~ AUTO_INCREMENT=100; 으로 지정하면, 100부터 id가 시작한다. SET @@auto_increment_increment = 3;으로 지정하면 3씩 증가한다(100 -> 103)

ALTER TABLE hongong3 AUTO_INCREMENT=1000;
SET @@auto_increment_increment=3;

INSERT INTO ~ SELECT를 사용하면 다른 테이블의 데이터를 한 번에 입력할 수 있다.

CREATE TABLE city_popul ( city_name CHAR(35), population INT);

INSERT INTO city_popul
    SELECT Name, Population FROM world.city; #world라는 외부 테이블에서 city라는 열에 접근

UPDATE문 : 기존 데이터 값 수정

UPDATE 테이블_이름
	SET1 = 값1 ...;
    WHERE 조건;

DB에서 열 이름 Seoul을 한글로 바꾸고 싶다면, 기존에 만들어진 데이터는 UPDATE문을 통해 접근해야 한다.

UPDATE city_popul
    SET city_name = '뉴욕', population = 0
    WHERE city_name = 'New York';
SELECT  * FROM city_popul WHERE  city_name = '뉴욕';

WHERE절을 빼면? city_popul의 전체 데이터의 이름이 '뉴욕'으로 바뀜!! 조심!!

DELETE문 : 데이터 입력

DELETE FROM 테이블_이름 
	WHERE 조건;

앞 자리가 New로 시작하는 5가지의 데이터 지우기

DELETE FROM city_popul
	WHERE city_name LIKE 'New%'
    LIMIT 5;

데이터를 지울 때에는 조심!!

'Study > SQL' 카테고리의 다른 글

JOIN  (1) 2022.07.31
MySQL 데이터의 형식  (0) 2022.07.31
COMPANY DB SQL문  (0) 2022.07.20