[혼공S] 2주차_문법

2025. 1. 19. 04:19혼자 공부하는 SQL

짜라자잔짠~☆ 다시 돌아온 SQL 시작! ˶˙ᵕ˙ )ノ゙

문법에 대해서 알아보자

* market_db.sql 파일 사용
 

기본 중에 기본 SELECT ~ FROM ~ WHERE

SELECT문 : 구축이 완료된 테이블에 사용. 데이터 추출 기능.

SELECT 열 이름 FROM 테이블 이름 WHERE 조건식

→ 테이블에 조건에 맞는 열을 가져온다.
 

데이터베이스 만들기

 

DROP DATABASE IF EXISTS market_db
-- market_db가 있으면 삭제
CREATE DATABASE market_db;
-- market_db 생성

 
DROP DATABASE : 데이터베이스 삭제
IF EXISTS : 데이터베이스가 존재하는지
CREATE DATABASE : 데이터베이스 생성
 

테이블 만들기

 

USE market_db;
CREATE TABLE member
(
	-- 테이블 정의 코드
);

 
USE : 데이터베이스 선택
CREATE TABLE : 테이블 생성
 
+ 데이터 타입
VARCHAR : 문자열 데이터
AUTO_INCREMENT : 자동 숫자 입력(1, 2, 3, ...) 데이터를 입력할 때 NULL 값을 넣어줌!
 

데이터 입력하기
INSERT INTO member VALUES(
	-- 데이터
);

 
INSERT INTO : 데이터 삽입
VALUES : 데이터 지정
 

데이터 조회하기
SELECT * FROM member;

→ member 테이블의 모든(*) 데이터 조회
→ market_db.member 로 쓸 수 있음 
     * USE 문으로 지정했기 때문에 member만 써서도 OK
 
좀 더 긴 SELECT문 .. 잘 기억해두기! ദ്ദി(•̀ ᗜ <)

SELECT 열_이름                            // 열 지정
    FROM 테이블_이름                     // 테이블 지정
    WHERE 조건식                           // 가져올 데이터의 조건
    GRUOP BY 열_이름                   // 데이터 그룹화 
    HAVING 조건식                          // 그룹화 데이터에 조건 적용
    ORDER BY 열_이름                   // 데이터 정렬
    LIMIT 숫자                                 // 데이터 개수 제한   

 

WHERE  테이블의 조건

 
BETWEEN ~ AND

  • WHERE height >= 163 AND height <= 165;
  • WHERE height BETWEEN 163 AND 165;

IN

  • WHERE addr = '경기' OR addr = '전남' OR addr = '경남';
  • WHERE addr IN('경기', '전남', '경남');

LIKE

  • WHERE mem_name LIKE '우%';
  • WHERE mem_name LIKE '__핑크';

* % : 글자 무엇이든 허용, '우'로 시작하는 모든 단어
* _ : 글자 수(언더바 개수) 허용, (2글자)+핑크인 모든 단어
 
중첩

SELECT mem_name, height FROM member
	WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');
-- 이름이 '에이핑크'인 회원의 평균 키보다 큰 회원 조회회

 

좀 더 깊게 알아보는 SELECT 문

ORDER BY  데이터 정렬
SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date;
-- 데뷔 일자(debut_date)가 빠른 순서대로 출력

 
ASC(Ascending)오름차순(기본값)
DESC(Descending 내림차순(제일 뒤에 붙여서 사용)
 

LIMIT  데이터 개수 제한 
SELECT * FROM member LIMIT 3;
-- 앞에서부터 3개
SELECT * FROM member LIMIT 3, 2;
-- 3번부터 2개

* 숫자 하나만 쓰면 0부터 시작
 

DISTINCT  중복 제거
SELECT adder FROM member;
-- 경기, 경남, 서울, 경남, ... 
-- 모든 주소 출력
SELECT DISTINCT addr FROM memeber;
-- 경기, 경남, 서울, 전남, 경북 
-- 중복된 데이터를 1개만 남기고 제거하여 출력

 

GROUP BY  데이터 그룹화

+ 집계 함수

함수명 설명
SUM() 합계
AVG() 평균
MIN() 최소값
MAX() 최대값
COUNT() 행의 개수
COUNT(DISTINCT) 행의 개수(중복X)
SELECT AVG(amount) "평균 구매 개수" FROM buy;
-- 전체 회원이 구매한 물품 개수(amount)의 평균

 
 

데이터 변경을 위한 SQL 문

INSERT  데이터 입력
INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)

* 열을 생략하면 값이 순서대로 들어간다.

INSERT INTO 테이블_이름 (열_이름1, 열_이름2, ...) SELECT 문;

* 열 개수와 SELECT 문의 열 개수가 같아야 한다.
 

UPDATE  데이터 수정
UPDATE 테이블_이름 SET 열1=값1, 열2 =값2, ... WHERE 조건;

* WHERE을 생략하면 전체 행의 값이 변경된다.
 

DELETE  데이터 삭제
DELETE FROM 테이블_이름 WHERE 조건;

* DELETE 문보다 TRUNCATE문이 훨씬 빠르다!
* DROP은 테이블을 아예 없애는 반면 DELETETRUNCATE는 빈 테이블을 남긴다!


오늘의 과제

- 다음 보기 중에서 각 문항의 빈칸에 들어갈 것을 고르세요.

LIKE, DESC, ORDER BY, DISTINCT, ASC, AND, OR, >=, LIMIT

 
1. SELECT * FROM member _____ height;

SELECT * FROM member ORDER BY height;

 
2. SELECT * FROM member _____ 5,2;

SELECT * FROM member LIMIT 5,2;

 
3. SELECT _____ phone1 FROM member;

SELECT DISTINCT phone1 FROM member