정리

정리

select 사용법

SELECT 필드명 FROM 테이블명;

- 테이블로부터 필드명을 선택해 불러온다

insert 사용법

INSERT INTO <테이블명>(속성3, 속성1, 속성2, ...) VALUES(값3, 값1, 값2, ...);

삽입시 주의사항) 속성을 입력한 순서에 맞게 값도 순서대로 입력해야 한다

값이 문자열일 경우 ""으로 묶어준다

UPDATE 사용법

UPDATE 테이블명 SET 필드명 값 조건

DELETE 사용법

DELETE FROM 테이블명 조건;

create 테이블 생성

CREATE TABLE 테이블이름 ( 필드이름1 필드타입1, 필드이름2 필드타입2, ... )

select join 사용법

JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 줍니다.

이러한 JOIN은 보통 SELECT 문과 함께 자주 사용됩니다.

표준 SQL에서는 레코드를 조합하는 방식에 따라 JOIN을 다음과 같이 구분합니다.

1. INNER JOIN

2. LEFT JOIN

3. RIGHT JOIN

INNDER JOIN

1. 첫번째테이블이름 INNER JOIN 두번째테이블이름 ON 조건 2. 첫번째테이블이름 JOIN 두번째테이블이름 ON 조건

LEFT JOIN

첫번째테이블이름 LEFT JOIN 두번째테이블이름 ON 조건

RIGHT JOIN

첫번째테이블이름 LEFT JOIN 두번째테이블이름 ON 조건

select subquery 사용법

서브쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELETE 문을 의미합니다.

서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브쿼리는 내부쿼리(inner query)라고도 부릅니다.

서브쿼리는 반드시 괄호(())로 감싸져 있어야만 합니다.

서브쿼리의 특징

서브쿼리를 사용하면 다음과 같은 장점을 얻을 수 있습니다.

1. 서브쿼리는 쿼리를 구조화시키므로, 쿼리의 각 부분을 명확히 구분할 수 있게 해줍니다.

2. 서브쿼리는 복잡한 JOIN이나 UNION과 같은 동작을 수행할 수 있는 또 다른 방법을 제공합니다.

3. 서브쿼리는 복잡한 JOIN이나 UNION 보다 좀 더 읽기 편합니다.

SELECT ... FROM (서브쿼리) [AS] 이름 ...

multi select 사용법

다중 행 서브 쿼리

서브 쿼리에서 여러 행이 검색되는 쿼리문이다. 연산자를 제외하면 단일 행 서브 쿼리와 같다.

SELECT [DISTINCT] 컬럼, 컬럼 … FROM 테이블 WHERE 컬럼 <다중 행 연산자> (SELECT 컬럼 FROM 테이블);

다중 열 서브 쿼리

여러 개의 컬럼을 검색하는 서브 쿼리이다.

다중 열 서브 쿼리는 주로 'IN'을 사용하지만 '='도 사용 가능하다. 'IN'의 사용을 권한다.

SELECT [DISTINCT] 컬럼, 컬럼 … FROM 테이블 WHERE (컬럼1, 컬럼2, …) IN (SELECT 컬럼1, 컬럼2, … FROM 테이블);

select insert

SELECT 결과 INSERT 하기

SELECT된 결과를 가지고 INSERT 쿼리를 실행하는 문법은 아래와 같다.

All Column

INSERT INTO 들어갈테이블명 SELECT * FROM 조회할테이블명

Some Column

INSERT INTO 들어갈테이블명 (컬럼명1, 컬럼명2, 컬럼명3) SELECT 컬럼명1, 컬럼명2, 컬럼명3 FROM 조회할테이블명

select union

UNION

UNION은 여러 개의 SELECT 문의 결과를 하나의 테이블이나 결과 집합으로 표현할 때 사용합니다.

이때 각각의 SELECT 문으로 선택된 필드의 개수와 타입은 모두 같아야 하며, 필드의 순서 또한 같아야 합니다.

SELECT 문에 UNION을 적용하는 문법은 다음과 같습니다.

SELECT 필드이름 FROM 테이블이름 UNION SELECT 필드이름 FROM 테이블이름

UNION ALL

중복되는 레코드까지 모두 출력하고 싶다면, ALL 키워드를 사용해야 합니다.

SELECT 필드이름 FROM 테이블이름 UNION ALL SELECT 필드이름 FROM 테이블이름

함수

MySQL 내장 함수

MySQL은 사용자의 편의를 위해 다양한 기능의 내장 함수를 미리 정의하여 제공하고 있습니다.

MySQL에서 미리 정의하여 제공해 주는 대표적인 내장 함수의 종류는 다음과 같습니다.

1. 문자열 함수

2. 수학 함수

3. 날짜와 시간 함수

문자열함수

문자열 길이

LENGTH() 함수는 전달받은 문자열의 길이를 반환합니다.

SELECT LENGTH('12345678');

문자열 결합

CONCAT() 함수는 전달받은 문자열을 모두 결합하여 하나의 문자열로 반환합니다.

만약 전달받은 문자열 중 하나라도 NULL이 존재하면, NULL을 반환합니다.

SELECT CONCAT('Ora', 'cle Cor', 'poration'), CONCAT('Oracle', NULL, 'Corporation');

특정 문자열의 위치 검색

LOCATE() 함수는 인수로 전달받은 문자열이 특정 문자열에서 처음으로 나타나는 위치를 찾아서, 해당 위치를 반환합니다.

만약 전달받은 문자열이 특정 문자열 내에 존재하지 않으면 0을 반환합니다.

다른 대부분의 프로그래밍 언어에서는 문자열의 첫 번째 문자의 인덱스를 0부터 시작하여 그 위치를 계산합니다.

하지만 MySQL에서는 문자열의 첫 번째 문자의 인덱스를 언제나 1부터 시작하여 계산하므로, 주의를 기울여야 합니다.

이때 세 번째 인수로 특정 문자열에서 전달받은 문자열을 찾기 시작할 인덱스를 전달할 수도 있습니다.

SELECT LOCATE('abc', 'ababcDEFabc'), LOCATE('abc', 'ababcDEFabc', 4);

문자열 추출

LEFT() 함수는 전달받은 문자열의 왼쪽부터 명시한 개수만큼의 문자를 반환합니다.

RIGHT() 함수는 전달받은 문자열의 오른쪽부터 명시한 개수만큼의 문자를 반환합니다.

SELECT LEFT('MySQL PHP HTML Java', 5), RIGHT('MySQL PHP HTML Java', 4);

문자열 대소문자 변경

LOWER() 함수는 전달받은 문자열의 문자를 모두 소문자로 변경합니다.

UPPER() 함수는 전달받은 문자열의 문자를 모두 대문자로 변경합니다.

SELECT LOWER('MySQL PHP HTML Java'), UPPER('MySQL PHP HTML Java');

문자열 대체

REPLACE() 함수는 전달받은 문자열에서 특정 문자열을 찾은 후에, 찾은 문자열을 대체 문자열로 교체합니다.

SELECT REPLACE('MySQL', 'My', 'MS ');

문자열 다듬기

TRIM() 함수는 전달받은 문자열의 앞이나 뒤, 또는 양쪽 모두에 있는 특정 문자를 제거합니다.

TRIM() 함수에서 사용할 수 있는 지정자는 다음과 같습니다.

1. BOTH : 전달받은 문자열의 양 끝에 존재하는 특정 문자를 제거함. (기본 설정)

2. LEADING : 전달받은 문자열 앞에 존재하는 특정 문자를 제거함.

3. TRAILING : 전달받은 문자열 뒤에 존재하는 특정 문자를 제거함.

만약 지정자를 명시하지 않으면, 자동으로 BOTH로 설정됩니다.

또한, 제거할 문자를 명시하지 않으면, 자동으로 공백을 제거하게 됩니다.

SELECT TRIM(' !!!MySQL PHP HTML Java!!! '), TRIM(LEADING '!' FROM '!!!MySQL PHP HTML Java!!!')

숫자로 이루어진 문자열의 형식화

FORMAT() 함수는 숫자 타입의 데이터를 세 자리마다 쉼표(,)를 사용하는 '#,###,###.##' 형식으로 변환해 줍니다.

하지만 반환되는 데이터의 형식이 숫자 타입이 아닌 문자열 타입이므로, 주의를 기울여야 합니다.

이때 두 번째 인수로 반올림할 소수 부분의 자릿수까지 전달할 수 있습니다.

SELECT FORMAT(123456789.123456, 3);

수학 함수

올림과 내림

FLOOR() 함수는 인수로 전달받은 값과 같거나 작은 수 중에서 가장 큰 정수를 반환합니다.

CEIL() 함수는 반대로 인수로 전달받은 값과 같거나 큰 수 중에서 가장 작은 정수를 반환합니다.

SELECT FLOOR(10.95), FLOOR(11.01), FLOOR(-10.95), FLOOR(-11.01);

SELECT CEIL(10.95), CEIL(11.01), CEIL(11), CEIL(-10.95), CEIL(-11.01);

SELECT ROUND(10.49), ROUND(10.5), ROUND(-10.5), ROUND(-10.49);

지수와 로그

SQRT() 함수는 전달받은 수의 제곱근 중 양수값을 반환합니다.

POW() 함수는 전달받은 수의 거듭제곱을 반환합니다.

POW() 함수의 첫 번째 인수로는 밑수를 전달하고, 두 번째 인수로는 지수를 전달합니다.

EXP() 함수는 인수로 지수를 전달받아, e의 거듭제곱을 계산하여 반환합니다.

LOG() 함수는 전달받은 수의 자연로그 값을 계산하여 반환합니다.

SELECT SQRT(4), POW(2, 3), EXP(3), LOG(3);

삼각 함수

MySQL에서는 다음 함수를 사용하여 쿼리에 간단히 삼각 함수를 사용할 수 있습니다.

SIN() 함수는 전달받은 수의 사인값을, COS() 함수는 코사인값을, TAN() 함수는 탄젠트값을 반환합니다.

SELECT SIN(PI()/2), COS(PI()), TAN(PI()/4);

기타 함수

ABS(X) 함수는 전달받은 수의 절댓값을 반환합니다.

RAND() 함수는 0.0보다 크거나 같고 1.0보다 작은 하나의 실수를 무작위로 생성하여 반환합니다.

SELECT ABS(-3), ROUND(RAND()*100, 0);

날짜와 시간 함수

현재 날짜와 시간 정보

NOW() 함수는 현재 날짜와 시간을 반환합니다.

이때 반환되는 값은 'YYYY-MM-DD HH:MM:SS' 또는 YYYYMMDDHHMMSS 형태로 반환됩니다.

CURDATE() 함수는 현재 날짜를 반환합니다.

이때 반환되는 값은 'YYYY-MM-DD' 또는 YYYYMMDD 형태로 반환됩니다.

CURTIME() 함수는 현재 시각을 반환합니다.

이때 반환되는 값은 'HH:MM:SS' 또는 HHMMSS 형태로 반환됩니다.

SELECT NOW(), CURDATE(), CURTIME();

특정 날짜와 시간 정보

DATE() 함수는 전달받은 값에 해당하는 날짜 정보를 반환합니다.

MONTH() 함수는 전달받은 값에서 월에 해당하는 값만을 반환하며, 0부터 12 사이의 값을 가집니다.

DAY() 함수는 전달받은 값에서 일자에 해당하는 값만을 반환하며, 0부터 31 사이의 값을 가집니다.

HOUR() 함수는 전달받은 값에서 시간에 해당하는 값만을 반환하며, 0부터 23 사이의 값을 가집니다.

MINUTE() 함수는 전달받은 값에서 분에 해당하는 값만을 반환하며, 0부터 59 사이의 값을 가집니다.

SECOND() 함수는 전달받은 값에서 초에 해당하는 값만을 반환하며, 0부터 59 사이의 값을 가집니다.

SELECT DATE('2016-02-19 12:34:56'), MONTH('2016-01-02 12:34:56'), DAY('2016-01-02 12:34:56'), HOUR('12:34:56'), MINUTE('12:34:56'), SECOND('12:34:56');

요일과 월 이름

MONTHNAME() 함수는 전달받은 값의 월에 해당하는 이름을 반환합니다.

DAYNAME() 함수는 전달받은 값의 요일에 해당하는 이름을 반환합니다.

SELECT MONTHNAME('2017-02-19'), DAYNAME('2017-02-19');

연도별, 월별, 주별 일수

DAYOFWEEK() 함수는 전달받은 값의 일자가 해당 주에서 몇 번째 날인지를 반환합니다.

이 함수는 1부터 7 사이의 값을 반환합니다. (일요일 = 1, 토요일 = 7)

DAYOFMONTH() 함수는 전달받은 값의 일자가 해당 월에서 몇 번째 날인지를 반환합니다.

이 함수는 0부터 31 사이의 값을 반환합니다.

DAYOFYEAR() 함수는 전달받은 값의 일자가 해당 연도에서 몇 번째 날인지를 반환합니다.

이 함수는 1부터 366 사이의 값을 반환합니다.

SELECT DAYOFMONTH('2017-02-19'), DAYOFWEEK('2017-02-19'), DAYOFYEAR('2017-02-19');

날짜와 시간의 형식화

DATE_FORMAT() 함수는 전달받은 형식에 맞춰 날짜와 시간 정보를 문자열로 반환합니다.

DATE_FORMAT() 함수에 인수로 전달할 수 있는 날짜와 시간 표현의 형식은 다음과 같습니다.

형태설명예시

%a 요일을 세 개의 문자로 표현함. Sun부터 Sat %b 월의 축약형을 세 개의 문자로 표현함. Jan부터 Dec %c 월을 숫자로 표현함. 0부터 12 %D 날짜 뒤에 영어 서수를 붙임 0th, 1st, 2nd, 3rd, ... %d 날짜를 두 자리 숫자로 표현함. 00부터 31 %e 날짜를 숫자로 표현함. 0부터 31 %f 마이크로초를 여섯 자리 숫자로 표현함. 000000에서 999999 %H 24시간 형식 시간을 두 자리 숫자로 표현함. 00부터 23 %h 12시간 형식 시간을 두 자리 숫자로 표현함. 01부터 12 %I 12시간 형식 시간을 두 자리 숫자로 표현함. 01부터 12 %i 분을 두 자리 숫자로 표현함. 00부터 59 %j 일 년 중 몇 번째 날인지를 세 자리 숫자로 표현함. 001부터 366 %k 24시간 형식으로 시간을 표현함. 0부터 23 %l 12시간 형식으로 시간을 표현함. 1부터 12 %M 월을 완전한 문자열로 표현함. January부터 December %m 월을 두 자리 숫자로 표현함. 00부터 12 %p 오전과 오후의 대문자를 표현함. AM 또는 PM %r hh:mm:ss AM/PM 형식으로 시간을 표현함. (12시간 형식) 00:00:01 AM %S 초를 두 자리 숫자로 표현함. 00부터 59 %s 초를 두 자리 숫자로 표현함. 00부터 59 %T hh:mm:ss 형식으로 시간을 표현함. (24시간 형식) 23:01:01 %U 일 년 중 몇 번째 주인지를 숫자로 표현함. (한 주는 일요일부터 시작함) 00부터 53 %u 일 년 중 몇 번째 주인지를 숫자로 표현함. (한 주는 월요일부터 시작함) 00부터 53 %V 일 년 중 몇 번째 주인지를 숫자로 표현함.

(한 주는 일요일부터 시작하고, %X 형식을 사용함) 00부터 53 %v 일 년 중 몇 번째 주인지를 숫자로 표현함.

(한 주는 월요일부터 시작하고, %x 형식을 사용함) 00부터 53 %W 요일을 완전한 문자열로 표현함. Sunday부터 Saturday %w 요일을 숫자로 표현함. 0(일요일)부터 6(토요일) %X 연도를 완전한 네 자리 숫자로 표현함.

(한 주는 일요일부터 시작하고, %V 형식을 사용함) 1999나 2003 %x 연도를 완전한 네 자리 숫자로 표현함.

(한 주는 월요일부터 시작하고, %v 형식을 사용함) 1999나 2003 %Y 연도를 완전한 네 자리 숫자로 표현함. 1999나 2003 %y 연도를 두 자리 숫자로 표현함. 99나 03 %% '%' 문자 %

SELECT DATE_FORMAT('2017-02-19 12:34:56', '%D %y %a %d %m %b %j');

프로시저

트리거

이벤트

공유하기 글 요소 저작자표시

from http://capri.tistory.com/18 by ccl(A) rewrite - 2021-12-24 17:27:12