나의 분석일기 ♬
[SQL] SQL 기본 문법 본문
(1) 기본 형태
select (컬럼명) from (테이블명)
where (조건문)
(2) 데이터 정렬
order by ASC (오름차순) DESC (내림차순)
(3) 원하는 만큼만 데이터 가져오기
limit (가져올 갯수) limit (건너뛸 갯수), (가져올 갯수)
(4) 사칙연산
+,-,*,/ 나머지 : %,MOD
mysql은 문자열과 숫자열을 연산할때 문자열을 0으로 인식.
숫자로 구성된 문자열은 숫자로 자동인식
!=, <> : 양쪽 값이 다름
between () and () : 두 값 사이에 있음
not between () and () : 두 값 사이가 아닌 곳에 있음
in (...) : 괄호 안의 값들 가운데 있음
not in (...) : 괄호 안의 값들 가운데 없음
LIKE '...%...' : 0~N개 문자를 가진 패턴
LIKE '..._...' : _ 갯수만큼의 문자를 가진 패턴
(5) 숫자관련 함수
round : 반올림, ceil : 올림, floor : 내림
abs : 절댓값
greatest(...) : (괄호 안에서) 가장 큰 값
least(...) : (괄호 안에서) 가장 작은 값
max : 가장 큰 값, min : 가장 작은 값
count : 갯수(NULL값 제외), sum : 총합, avg : 평균 값
pow(A,B), POWER(A,B) : A를 B만큼 제곱
sqrt : 제곱근
truncate(N,n) : N을 소숫점 n자리까지 선택
(6) 문자 관련 함수
UCASR, UPPER : 모두 대문자로
LCASE, LOWER : 모두 소문자로
CONCAT(...) : 괄호 안의 내용 이어붙임
CONCAT_WS(S, ...) : 괄호 안의 내용 S로 이어붙임
SUBSTR, SUBSTRING(시작할 자리, 갯수) : 주어진 값에 따라 문자열 자름
LEFT : 왼쪽부터 N글자, RIGHT : 오른쪽부터 N글자
LENGTH : 문자열의 바이트 길이, CHAR_LENGTH, CHARACTER_LENGTH : 문자열의 문자길이
TRIM : 양쪽 공백 제거, LTRIM : 왼쪽 공백 제거, RTRIM : 오른쪽 공백 제거
LPAD(S,N,P) : S가 N글자가 될 때까지 P를 이어붙힘
RPAD(S,N,P) : S가 N글자가 될때까지 P를 이어붙힘
REPLACE(S,A,B) : S 중 A를 B로 변경
INSTR(S,s) : S 중 s의 첫 위치 반환, 없을 시 0
(7) 시간/날짜 관련 및 기타 함수들
CURRENT_DATE, CURDATE : 현재 날짜 반환
CURRENT_TIME, CURTIME : 현재 시간 반환
CURRENT-TIMESTAMP, NOW : 현재 시간과 날짜 반환
DATE : 문자열에 따라 날짜 생성, TIME : 문자열에 따라 시간 생성
YEAR : 주어진 DATETIME값의 년도 반환
MONTH : 주어진 DATETIME값의 월 반환
MONTHNAME : 주어진 DATETIME값의 월(영문) 반환
WEEKDAY : 주어진 DATETIME값의 요일값 반환(월요일 : 0)
DAYNAME : 주어진 DATETIME값의 요일명 반환
DAYOFMONTH, DAY : 주어진 DATETIME값의 날짜(일) 반환
HOUR : 주어진 DATETIME의 시 반환
MINUTE : 주어진 DATETIME의 분 반환
SECOND : 주어진 DATETIME의 초 반환
ADDDATE(),DATE_ADD : 시간 날짜 더하기 ex) ADDDATE('2023-03-04', INTERVAL 1 YEAR) : 2024-03-04
SUBDATE, DATE_SUB : 시간 날짜 빼기
DATE_DIFF/TIME_DIFF : 두 날짜/시간 간 일자/시간 차
LAST_DAY : 해당 달의 마지막 날짜
DATE_FORMAT : 시간/날짜를 지정한 형식으로 변환
%Y 년도 4자리, %y 년도 2자리, %M 월 영문, %m 월 숫자
%D 일영문(1st,..), %d, %e : 일숫자, %T hh:mm:ss
%r hh:mm:ss AM/PM, %H, %k 시(~23), %h,%l 시(~12)
%i 분, %S,%s 초, %p : AM/PM
(8) 기타 함수
IF(조건,T,F) : 조건이 참이라면 T, 거짓이면 F 반환
CASE
WHEN THEN
WHEN THEN
ELSE
END
IFNULL(A,B) : A가 NULL일 시 B출력
(9) 그룹함수
NULL값은 집계하지 않음
GROUP BY HAVING(그룹 후 집계에 사용, WHERE은 그룹 전 집계에 사용)
WITH ROLLUP
DISTINCT 중복값 제거, 집계함수 함께 사용 X
(10) 서브쿼리
~ ALL : 서브쿼리의 모든 결과에 대해 ~하다
~ ANY/IN : 서브쿼리의 하나 이상의 결과에 대해 ~하다
EXISTS/NOT EXISTS
(11) 데이터 삽입 INSERT INTO
INSERT INTO people
(person_id, person_name, age, birthday)
VALUES
(1,'홍길동',21,'2000-01-31'),
(2,'장상영',26,'1998-12-11')
;
(12) 테이블 생성
테이블 생성 시 제약 넣기
AUTO_INCREMENT : 새 행 생성시마다 자동으로 1증가
PRIMARY KEY : 기본키, 중복입력 불가, NULL(빈값) 불가, 테이블마다 하나만 가능,
보통 AUTO_INCREMENT 와 함께 사용, 각 행을 고유하게 식별 가능- 테이블마다 하나씩 둘것
UNIQUE : 중복 입력 불가
NOT NULL : NULL(빈값) 입력 불가
UNSIGNED : (숫자일시) 양수만 가능
DEFAULT : 값 입력이 없을 시 기본값
CREATE TABLE people (
person_id INT AUTO_INCREMENT PRIMARY KEY,
person_name VARCHAR(10) NOT NULL,
nickname VARCHAR(10) UNIQUE NOT NULL,
age TINYINT UNSIGNED,
is_married TINYINT DEFAULT 0
);
DELETE FROM (테이블 명)
WHERE (조건);
UPDATE - 주어진 조건의 행 수정
UPDATE (테이블명)
SET
WHERE
조건문 없이는 모든 행 변경
'Tools > SQL' 카테고리의 다른 글
| [SQL] 순위 함수 - cume_dist, percent_rank, ntile (0) | 2023.03.21 |
|---|---|
| [SQL] first_value() / last_value() 함수 (0) | 2023.03.21 |
| [SQL] lead()/lag() 함수 (0) | 2023.03.21 |
| [SQL] JOIN(조인) (0) | 2023.03.18 |
| [SQL] 공부 시작 (0) | 2023.03.18 |