- 기본문형 :
SELECT(DISTINCT) 컬럼명(ALIAS) FROM 테이블명;
- SELECT : 검색하고자 하는 데이터(컬럼)을 나열한다.
- SELECT 뒤에 *를 넣어 전체 데이터를 검색할 수 있다.
- DISTINCT : 중복행을 제거한다.
- ALIAS : 나타날 컬럼에 다른 이름 부여한다.
- FROM : 선택한 컬럼이 있는 테이블 명시한다.
- Ex)
select * from departmnet;
: departmnet 테이블의 모든 컬럼을 출력해주세요select distinct deptno from employee;
: employee 테이블에서 부서번호를 중복되지 않게 출력해주세요select empno as 사번, name as 이름, job as 직업 from employee;
: employee 테이블에서 empno(사번), name(이름), job(직업)을 각 별칭을 넣어 출력해주세요- CONCAT : 컬럼을 합성할 때 사용한다.
- Ex)
select concat(empno,'-',deptno as '사번-부서번호' from employee;
: employee 테이블에서 사번과 부서번호를 ‘-‘로 합쳐 ‘사번-부서번호’ 라는 별칭으로 출력해주세요- ORDER BY 컬럼 (ASC; 기본값) : 컬럼을 기준으로 오름차순 정렬한다.
- ORDER BY 컬럼 DESC : 컬럼을 기준으로 내림차순 정렬한다.
- Ex)
select empno, name, job from employee order by name;
: employee 테이블에서 name 기준으로 오름차순 정렬하여 empno, name, job을 출력해주세요select empno as 사번, name as 이름, job as 직업 from employee order by name desc;
: employee 테이블에서 name을 기준으로 내림차순 정렬해서 empno(사번), name(이름), job(직업)을 각 별칭으로 출력해주세요- WHERE : 컬럼 이름, 표현식의 상수, 연산자로 조건을 걸 수 있다.
- in (배열) : 다수의 조건을 선택할 때 사용
- Ex) in (1,2,3) » 1 or 2 or 3
- like ‘문자’ : 와일드 카드를 이용해 특정 문자를 포함한 값에 대한 조건을 처리
- %: 0부터 여러 개의 문자열
- _: 단 하나의 문자를 나타내는 와일드카드
- Ex) like ‘%S%’ » S가 들어간 데이터,
- like ‘_B%’ » B의 앞자리에 어떤 문자든 하나가 존재하는 데이터
- Ex)
select name as 이름, hiredate as 고용일 from employee where hiredate < '1981-01-01';
: employee 테이블에서 hiredate가 1981년 전인 name(이름), hiredate(고용일)을 각 별칭으로 출력해주세요select name, deptno from employee where deptno = 30;
: employee 테이블에서 deptno 값이 30인 name, deptno를 출력해주세요select name,deptno from employee where deptno in (10,30)
: employee 테이블에서 deptno 값이 10 또는 30인 name, deptno를 출력해주세요select name, job, from employee where name like '%B%';
: employee 테이블에서 name에 B가 있는 name, job 데이터를 출력해주세요
- from 다음에 테이블이 없을 경우에 테이블에서 조회하는 것이 아니다.
- UCASE(‘문자열’), UPPER(‘문자열’) : 대문자로 바꿔주는 함수
- LCASE(‘문자열’), LOWER(‘문자열’) : 소문자로 바꿔주는 함수
- SUBSTRING(‘문자열’,N, M) : 문자열의 N번째 문자를 시작으로 M개를 출력하는 함수
- LPAD(‘문자열’,N,’특수문자(예:)’), RPAD(‘문자열’,N,’특수문자(예:)’) : LPAD는 문자열을 N개로 늘려주고 나머지를 특수문자로 채워주는 함수이다. LPAD는 문자열 왼쪽, RPAD는 문자열 오른쪽에 채워준다.
- Ex)
select lpad('star',7, '*');
»***star
- TRIM, LTRIM, RTRIM : 앞 뒤 공백을 제거해주는 함수, LTRIM은 문자열 시작 공백 제거, RTRIM은 문자열 끝 부분 공백 제거
- Ex)
select ltrim(' hi hi ');
»hi hi
select trim(BOTH 'x' FROM 'xxxhixxx');
» hi
- BOTH: 양쪽,
- LEADING: 문자열 좌측,
- TRAILING: 문자열 우측
- 뒤에 아무것도 안쓰면 공백 제거
- ABS(N) : N의 절대값을 구하는 함수
- MOD(N,M) (N%M): N을 M으로 나눈 나머지 값을 구하는 함수
- FLOOR(x) : 내림 함수, BIGINT로 자동 변환
- CEILING(x) : 올림 함수
- ROUND(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의 차이 개월을 반환
- CAST(expr AS type), CONVERT(expr,type) : 타입을 변환하는 함수
- type에 들어갈 수 있는 종류 : BINARY, CHAR, DATE, TIME, DATETIME, SIGNED(INTEGER, 음수 가능), UNSIGNED(INTEGER, 양수만 가능 범위 2배 늘려줌)
- Ex)
select cast(now() as date)
: 현재 시간을 date 타입으로 출력해주세요 » 2003-09-25select cast(1-2 as unsigned);
» 18446744073709551615 (unsigned는 음수가 없음 대신 범위를 2배 늘려줌)
- Ex)
select avg(salary),sum(salary) from employee where deptno = 30;
: employee 테이블에서 deptno 값이 30인 직원의 급여 평균과 급여 총합계를 출력해주세요select deptno ,avg(salary),sum(salary) from employee group by deptno
: employee 테이블에서 각 deptno 별(부서번호별) 직원의 부서번호, 급여 평균, 급여 총합계를 출력해주세요
Reference: