MySQL - 기본 문법

김소희·2024년 8월 7일

MySQL

목록 보기
1/17

📏 SELECT문

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

📏 USE - 스키마 (데이터베이스) 선택

-- SELECT '컬럼명' FROM '테이블명'
SELECT member_id, name FROM member;

-- SELECT 와 FROM 사이에 *를 적으면 테이블의 모든 컬럼을 조회한다.
SELECT * FROM member;

-- 두 SQL은 동일한 기능을 한다.
SELECT * FROM market_db.member;
SELECT * FROM member;
  • 기본적으로 테이블 이름은 스키마명.테이블명 으로 표현한다.
  • 하지만 USE문으로 데이터베이스를 지정해주었다면 테이블명만 명시해도 된다.

📏 WHERE - 특정 조건만 조회하기

-- member 테이블에서 mem_number 컬럼 값이 5이상인 데이터 조회
SELECT * FROM member 
	WHERE mem_number >= 5;
  • WHERE절을 사용해 특정 조건에 해당하는 데이터만 조회할 수 있다.
  • 관계 연산자 / 논리 연산자 사용 가능

논리 연산자 AND, OR 사용 가능

SELECT TRUE OR FALSE AND FALSE;   // 1
SELECT (TRUE OR FALSE) AND FALSE; // 0
  • 여러 조건이 필요한 경우 논리 연산자를 사용하면 된다.
  • ANDOR보다 우선 순위를 가진다.
  • MySQL에서는 &&|| 도 사용 가능하다.

BETWEEN - 범위 표현식

-- member 테이블에서 height 컬럼 값이 160이상 165이하인 데이터 조회
SELECT * FROM member 
	WHERE height between 160 and 165;
  • between 연산자를 이용하여 특정 범위에 해당하는 데이터를 조회할 수 있다.
  • 하지만 인덱스를 사용할 수 없으므로 주의

IN () - 여러 값 매칭

-- addr 컬럼값이 경기, 전남, 경남인 데이터 조회
SELECT * FROM member 
	WHERE addr IN('경기', '전북', '경남');

SELECT * FROM member
	WHERE addr = '경기' OR addr = '전북' OR addr = '경남';
  • IN() 연산자를 이용하여 특정 값이 포함된 데이터를 조회할 수 있다.
  • IN 연산자는 동등비교 '=' 를 여러번 수행하는 효과를 가진다. 따라서 인덱스를 최적으로 활용할 수 있다.

LIKE - 문자열의 일부 글자 검색

-- mem_name 컬럼 값이 '블'로 시작하는 4글자 글자 데이터 조회
SELECT * FROM member WHERE mem_name LIKE '블___';

-- mem_name 컬럼 값이 '블'로 시작하는 모든 데이터 조회
SELECT * FROM member WHERE mem_name LIKE '블%';

-- mem_name 컬럼 값에 '블'이 들어가는 모든 데이터 조회
SELECT * FROM member WHERE mem_name LIKE '%블%';
  • 문자열의 일부 글자 검색
    • _ : 한 글자만 매치
    • % : 몇 글자든 매치 (어떤게 오든 상관이 없는)
      • 홍길% : 홍길로 시작하되 뒤에 어떤 값이 오든 상관없다!
      • %홍길 : 끝이 홍길이면 어떤 값이 오든 O
      • %홍길% : 홍길이 포함되면 O
      • %홍%길% : 홍과 길 포함 O, 하지만 ~길홍~이면 안됨! 홍이 먼저 길이 후에

서브 쿼리

SELECT mem_name, height 
	FROM member 
	WHERE height > (select height from member where mem_name LIKE '에이핑크');
  • 2개의 SQL문을 하나로 만듦

📏 ORDER BY - 조회된 데이터를 정렬

-- debut_date 값을 기준으로 정렬 (기본 ASC)
SELECT * FROM member
	ORDER BY debut_date;
  • ORDER BY절은 데이터를 정렬한다.
  • WHERE 절 다음에 나와야 함
  • ASC (ascending order) : 오름차순 → (생략시 기본값)
  • DESC (descending order) : 내림차순
-- height 컬럼 값이 164 이상인 데이터를 조회하여 
-- height 값 기준 내림차순 정렬하고 동일한 값이라면 debut_date 값 기준 오름차순 정렬
SELECT * FROM member
  	WHERE height >= 164
	ORDER BY height DESC, debut_date;
  • 콤마(,)로 여러 정렬 조건 지정 가능

📏 LIMIT - 출력 개수 제한

SELECT * FROM member
	LIMIT 3;    		-- 상위 3건만 조회

SELECT * FROM member
	LIMIT 3, 2; 		-- 3번째 데이터부터 2건만 조회
	LIMIT 2 OFFSET 3; 	-- 위와 동일
  • LIMIT 시작, 개수
  • LIMIT 뒤에 하나의 숫자만 입력시 처음부터 N까지의 데이터만 가져옴
  • LIMIT 과 OFFSET 조합으로도 출력 개수를 제한할 수 있다.

📏 DISTINCT - 중복 데이터 제거

-- addr 의 모든 컬럼 값을 중복을 제거하여 조회
SELECT DISTINCT addr
	FROM member;
  • DISTINCT를 열 이름 앞에 붙이면 중복된 값은 1개만 출력된다.

0개의 댓글