본문 바로가기
MYSQL

SELECT절

by 융디's 2024. 5. 5.
728x90
SELECT절

SELECT절

@2024.05.02

[ MYSQL 관련 추천 참고 사이트 ]

MySQL :: MySQL 8.0 Reference Manual :: 14.8 String Functions and Operators

SQL Tutorial (w3schools.com)

테이블 목록 조회

--  MySQL 서버의 버전 정보 출력
select version();

-- 해당 데이터베이스의 모든 테이블 출력
show tabels;

-- 각 테이블의 구조 출력
desc 테이블명1;
desc 테이블명2; 
  • 테이블
    • 관계 데이터 베이스 모델에서 자료의 구조를 2차원 표로 나타낸 것
    • 행과 열의 형태로 관리되며, 를 지정함으로써 원하는 자료를 빠르고 쉽게 찾는다.
  • 열(Column) = 속성(attribute)
    • 관계형 데이터베이스 테이블에서 특정 단순 자료형의 일련의 데이터 값과, 테이블의 각 열
  • 행(Row) = 레코드(Record) = 튜플(Tuple)
    • 테이블에서 단일 구조 데이터 항목을 가리킨다.
    • 각 행은 일련의 관련 자료를 나타내며, 테이블에서 모든 행은 동일한 구조를 가지고 있다.
  • 필드(Field)
    • 항목, 어떠한 의미를 지니는 정보의 한 조각
    • 데이터베이스 시스템에서 처리의 최소 단위

SELECT 구문

💡
테이블에서 데이터를 가져오기 위해 SELECT 구문 사용


@ 기본 구조

SELECT(DISTINT) 칼럼명(ALIAS)
FROM 테이블명
WHERE 조건식
GROUP BY 칼럼 명
HAVING 조건식
ORDER BY 칼럼이나 표현식 (ASC/DESC)
  • SELECT
    • 검색하고자 하는 데이터를 나열
  • DISTINCT
    • 중복 행 제거
  • ALIAS
    • 나타날 칼럼에 대한 별칭 설정
  • FROM
    • 선택한 칼럼이 있는 테이블명 명시
  • GROUP BY
    • 전체 데이터를 소그룹으로 나눈다.
  • HAVING
    • GROUP에 대한 조건문
  • ORDER BY
    • 결과 정렬
-- employees 테이블에서 전체 데이터 출력
SELECT * FROM employees;

-- 특정 컬럼만 출력
SELECT first_name, last_name FROM emplopyees;

--  컬럼에 ALIAS 부여
SELECT first_name AS 이름, hire_date AS 입사일 FROM employees;

-- 중복되는 행 제거 
SELECT DISTINCT manager_id FROM employees;

ORDER BY 절

💡
SELECT 문에서 결과를 정렬하는 데 사용되며, 이를 통해 결과 집합을 특정 열의 값을 기준으로 오름차순 또는 내림차순으로 정렬한다.
  • ASC(생략 가능) : 오름차순
  • DESC : 내림차순
-- 오름차순 정렬
SELECT first_name, last_name, hire_date FROM emplopyees ORDER BY hire_date;

-- 내림 차순 정렬
SELECT first_name, last_name, hire_date FROM emplopyees ORDER BY hire_date DESC;

WHERE 절

💡
SQL 질의어에서 사용되며, 주어진 조건에 맞는 행만을 선택하여 반환하는 데 사용
  • 주로 데이터베이스 테이블의 특정 조건을 충족하는 행을 필터링하는데 사용
  • 조건식은 칼럼 이름이나 표현식의 상수, 연산자로 구성
-- 이름이 king인 사람만 모든 컬럼 출력
-- MySQL은 대소문자 구문 하지 않지만, DB 값은 대소문자 구분 
SELECT * FROM employees WHERE last_name  = 'king';

-- 급여가 2000이상인 직원만 모든 컬럼 출력
SELECT * FROM employees WHERE sal > 2000;

연산자

  • AND, OR 연산자
-- 부서번호가 20번이면서 급여가 2000보다 큰 사원 출력
SELECT * FROM employees WHERE sal > 2000 AND deptno = 20; 

-- 부서번호가20번이거나 급여가 2000보다 큰 사원 출력
SELECT * FROM employees WHERE sal > 2000 OR deptno = 20; 
  • =, !=, >, <, < = , > = 연산자
SELECT * FROM employees WHERE deptno = 20;
SELECT * FROM employees WHERE deptno != 20;
SELECT * FROM employees WHERE deptno > 20;
SELECT * FROM employees WHERE deptno < 20;
SELECT * FROM employees WHERE deptno >= 20;
SELECT * FROM employees WHERE deptno <= 20;
  • NULL 연산자
    • NULL은 빈 값 또는 알 수 없는 값
-- comm열이 NULL인 행을 모두 선택하여 출력 
SELECT * FROM employees WHERE comm is null;

-- comm열이 NULL이 아닌 행을 모두 선택하여 출력 
SELECT * FROM employees WHERE comm is not null;
  • IN 연산자 : 목록 안에 포함된 값들 중 하나와 일치하는 행 선택
  • ANY 연산자 : 서브 쿼리에서 반환된 값 중 어느 하나와 일치하는 행 선택
  • ALL 연산자 : 서브 쿼리에서 반환된 모든 값과 일치하는 행 선택
-- department_id가 1 또는 2 또는 3인 직원의 레코드 출력
SELECT * FROM employees WHERE department_id IN (1, 2, 3);

-- salary가 관리자들 중 어느 한명보다 높은 직원의 레코드 출력
SELECT * FROM employees WHERE salary > ANY (SELECT salary FROM managers);

-- salary가 모든 관리자보다 높은 직원의 레코드 출력
SELECT * FROM employees WHERE salary > ALL (SELECT salary FROM managers);

LIKE 와일드 카드

  • 문자열 패턴 매칭을 수행하는 데 사용되며, 주로 특정 패턴을 가진 문자열을 검색하는데 이용
  • 와일드카드 문자
    • %(퍼센트 기호)
      • %는 임의의 문자열을 나타낸다.
    • _(언더 스코어)
      • 임의의 단일 문자를 나타낸다.
-- 성이 sm으로 시작하는 모든 직원의 레코드 출력
SELECT * FROM employees WHERE last_name LIKE 'Sm%';

-- 제품이름에 apple이 포함된 모든 제품의 레코드 출력
SELECT * FROM products WHERE product_name LIKE '%apple%';

--이름의 세번째 글자가 A인 직원의 레코드 출력 
SELECT * FROM employees WHERE last_name LIKE '__A%';

728x90

'MYSQL' 카테고리의 다른 글

[내장 함수] 숫자형 함수  (0) 2024.05.05
[내장 함수] 문자형 함수  (0) 2024.05.05
MySQL DB/사용자 생성 및 사용자 권한 설정  (0) 2024.05.04
Docker을 이용해 MYSQL 설치  (0) 2024.05.04
데이터베이스  (0) 2024.05.03