나의 분석일기 ♬

[SQL] SQL 기본 문법 본문

Tools/SQL

[SQL] SQL 기본 문법

Screening Jang 2023. 3. 18. 15:52

(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
Comments