728x90
SELECT절
@2024.05.02
[ MYSQL 관련 추천 참고 사이트 ]
MySQL :: MySQL 8.0 Reference Manual :: 14.8 String Functions and Operators
테이블 목록 조회
-- 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(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 |