# SELECT문 및 연산자
SELECT문은 데이터베이스로부터 젖아되어 있는 데이터를 검색 하는데 사용한다.
-Select [DISTINCT] {*, column [alias], ....}
중괄호 : 안의 구문들 무조건 1개 이상 사용 / 대괄호 : 필요없으면 생략 가능 / * : 모든 필드명 선택 /
[alias] : 해당 column에 대해서 다른 필드명 부여할 떄 사용 / DISTINCT : 중복되는 행을 제거하는 옵션
- FROM table name
해당 table로 부터 데이터를 가져온다는 의미
table_name : 질의 대상 테이블명
-[WHERE condition]
WHERE절 조건식은 FROM절 뒤에 적고 조건을 만족하는 행들만 검색/ 마찬가지로 대괄호 안의 구문 생략 가능
-[ORDER BY {column, expression} [ASC | DESC]
질의 결과 정렬을 위한 옵션(ASC:오름차순(Default), DESC:내림차순)
-그 외
문자 결합함수 concat 사용 시 두개의 컬럼을 하나의 컬럼으로 결합
CAST형변환 : CAST(expression AStype) or CONVERT(expression type)
MySQL 타입 : binary, char, date, datetime,. signed(interger), time,. unsigned(integer)
-SELECT구문에서 사용하는 함수
- UCASE('str'), UPPER('str') : 문자열을 대문자로 변환
- LCASE('str'), LOWER('str') : 문자열을 소문자로 변환
- substring('str',idx,cnt) : 문자열의 idx부터 cnt개 출력
- LPAD('str',num,'ch'), RPAD('str',num,'ch') : num크기의 길이를 두고
str의 나머지 부분을 ch로 왼쪽 또는 오른쪽에 채워줌 - TRIM('str'), LTRIM, RTRIM : 문자열의 앞뒤, 왼쪽, 오른쪽 공백 제거
- ABS(x) : x의 절댓값 반환
- MOD(n,m) , % : n을 m으로 나눈 나머지 값 반환
- FLOOR(x) : x보다 크지 않은 가장 큰 정수를 반환. BIGINT로 자동 변환
- CEILING(x) : x보다 작지 않은 가장 작은 정수를 반환
- ROUND(x) : x에 가장 근접한 정수를 반환
- POW(x,y) POWER(x,y) : x의 y 제곱 승을 반환
- GREATEST(x,y,...) : 가장 큰 값을 반환
- LEAST(x,y,...) : 가장 작은 값을 반환
- CURDATE(),CURRENT_DATE : 오늘 날짜를 YYYY-MM-DD나 YYYYMMDD 형식으로 반환
- CURTIME(), CURRENT_TIME : 현재 시각을 HH:MM:SS나 HHMMSS 형식으로 반환
- NOW(), SYSDATE() , CURRENT_TIMESTAMP : 오늘 현시각을 YYYY-MM-DD HH:MM:SS나 YYYYMMDDHHMMSS 형식으로 반환
- DATE_FORMAT(date,format) : 입력된 date를 format 형식으로 반환
- PERIOD_DIFF(p1,p2) : YYMM이나 YYYYMM으로 표기되는 p1과 p2의 차이 개월을 반환
출처: https://ivory-room.tistory.com/6 [개발로 자기개발]
# SQL문의 작성 방법
- SQL문장은 대소문자를 구별하지 않는다
- SQL문장은 한 줄 또는 여러 줄에 입력될 수 있다.
- 일반적으로 키워드는 대문자로 입력한다. 다른 모든 단어, 즉 테이블 이름, 열 이름은 소문자로 입력한다.(권장)
- 가장 최근의 명령어 1개가 SQL buffer에 저장 된다.
- sql문 마지막 절의 끝에 " ; "를 기술하여 명령의 끝을 표시 한다
ex) SQL> SELECT emp_no as '사번', first_name '성명', gender FROM employees WHERE gender = 'M';
= emp_no와 first_name은 각각 사번과 성명이라는 컬럼 별칭(alias)으로 만들어 출력했다. alias를 사용할 때 as라는 키워드를 사용해도 되고 생략할 수도 있다.
# 오라클 연산자
1. 산술 연산자 : +, -, *, /
2. 비교 연산자 : =, !=, <>, ^=, >, <, >=, <=
3. 논리 연산자 : AND 또는 &&, OR 또는 ||
4. WHERE절에 사용될 수 있는 SQL연산자
| 연산자 | 설명 |
| BETWEEN a AND b | a와 b 사이의 데이터를 출력한다. (a, b값 포함) |
| IN (list) | list의 값 중 어느 하나와 일치하는 데이터를 출력한다. |
| LIKE | 문자 형태로 일치하는 데이터를 출력한다.(%, _ 사용) |
| IS NULL | NULL값을 가진 데이터를 출력한다 |
| NOT BETWEEN a AND b | a와 b사이에 있지 않은 데이터를 출력한다. (a, b,갑 미포함) |
| NOT IN (list) | list의 값과 일치하지 않는 데이터를 출력한다 |
| NOT LIKE | 문자 형태와 일치하지 않는 데이터를 출력한다 |
| IS NOT NULL | NULL값을 가지지 않는 데이터를 출력한다 |
# IN, NOT IN, BETWEEN 연산자
IN연산자 : 연산자 OR연산의 결과를 보여준다
ex) SQL> SELECT emp_no, first_name, FROM employees WHERE emp_no IN(10005, 10009);
= 사번이 10005번, 10009번인 사원의 사번과 성명 출력

NOT IN 연산자
ex) SQL> SELECT emp_no, first_name FROM employees WHERE emp_no NOT IN (10005, 10009);
= 사번이 10005, 10009번이 아닌 사원의 사번과 성명 출력

BETWEEN 연산자 : 연산자(AND를 이용해 두 조건을 결합한 검색과 같은 결과값을 보여준다.
ex) SQL> SELECT emp_no, first_name FROM employees WHERE emp_no BETWEEN 30000 AND 30005;
=사원번호가 30000에서 30005인 사원만 선택

# LIKE 연산자
-검색 STRING 값에 대한 와일드 카드 검색을 위해서 LIKE 연산자를 사용한다.
- % : 여러개의 문자열을 나타내는 와일드 카드
- _ :단 하나의 문자를 나타내는 와일드 카드
- ESCAPE : 와일드카드 문자를 일반문자처럼 사용하고 싶은 경우 사용한다. ex) WHERE name LIKE '%a\_y%' ESCAPE '\';
| 구분 | 설명 |
| LIKE 'A%' | 컬럼이 'A'로 시작하는 데이터들만 검색한다 |
| LIKE '%A' | 컬럼이 'A'로 끝나는 데이터들만 검색한다 |
| LIKE '%'KIM%' | 컬럼에 'KIM'문자가 있는 데이터들만 검색한다 |
| LIKE '%K%A%' | 컬럼에 'K'문자와 'I'문자가 있는 데이터들만 검색한다 |
| LIKE '_A%' | 컬럼에 'A'문자가 두번째 위치한 데이터들만 검색한다 |
-'%'를 이용한 LIKE검색
ex) SQL> SELECT emp_no, first_name FROM employees WHERE first_name LIKE '%K%';
=employees테이블로부터 사원넘버와 이름을 가져오는데 'K'가 들어가는 데이터만 검색

-'_'를 이용한 LIKE검색
ex) SQL> SELECT emp_no, first_name FROM employees WHERE first_name LIKE '_I%';
=employees테이블로부터 사원넘버와 이름을 가져오는데 'I'가 두번째 글자에 들어가는 데이터만 검색

# ORDER BY(ASC, DESC)
ORDER BY 절은 데이터의 정렬을 위해 사용한다. ASC 나 1은 오름차순, DESC는 내림차순을 의미한다.
ex) SQL> SELECT emp_no, first_name FROM employees WHERE gender = 'F' && first_name like '_T%' ORDER BY emp_no ASC;

'MySQL' 카테고리의 다른 글
| [TIL 22.01.27] MySQL 내장함수(날짜처리, 변환) , 그룹함수 (0) | 2022.01.28 |
|---|---|
| [TIL 220119] MySQL이란? / SQL문 기초 / 데이터 조작, 제어 언어 (0) | 2022.01.19 |
| MySQL Workbench 단축키 11가지 정리 (0) | 2022.01.18 |
댓글