개발 노트

정리 본문

데이타베이스/MySQL

정리

알 수 없는 사용자 2021. 12. 24. 16:17

SQL 정리

테이블 : 간단히 말하면 엑셀파일과 비슷함

엑셀파일을 특정 주제별로 저장하듯이 테이블에도 특정 주제별 데이터들이 저장되어있다

 

데이터베이스 : 테이블들이 모여있고 SQL을 실행할수 있도록 해주는 하나의 시스템

줄여서 DB라고도 부른다 DB의 종류는 mysql,mssql,oracle, db2 등 다양하지만 SQL은 database 표준언어로 공통적인 문법으로 사요됨(db별로 약간의 차이는 있음)

select 사용법

SELECT 필드명 FROM 테이블명;

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

예제)

SELECT * FROM dc_account 

 

SELECT aniSeq,aniFeedDate,aniFeedSet1,aniFeed1,aniFeedSet2,aniFeed2,aniFeedSet3,aniFeed3,aniFeedSet4,aniFeed4,aniFeedSet5,aniFeed5 FROM dw_daily_feed;

 

SELECT * FROM APT_LIST LIMIT 10

SELECT 컬럼명나열 혹은 * FROM 테이블명 LIMIT 보여줄 행의 숫자

SELECT 필드명 FROM 테이블명 where 조건

예제)

SELECT * FROM dc_items WHERE itemSeq

SELECT enrollSeq FROM dc_careenroll where NUMBER = '4';

 

 

 

 

//조건문추가 and

예제) SELECT itemSeq FROM dc_items WHERE subject = '식대' AND acount = "지출";

 

BETWEEN

select useddate, accAcount, sum(money)  money FROM dc_account WHERE (usedDate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN ='Y' GROUP BY useddate,accacount ORDER BY useddate asc;

 

LIKE

select accAcount, SUBJECT, sum(money) money FROM dc_account WHERE usedDate LIKE '%-02-%' AND usedDate like '%2022%' AND accAcount = '수입' AND flagYN ='Y' GROUP BY SUBJECT ORDER BY useddate asc;

 

select useddate, accAcount, sum(money) money FROM dc_account WHERE usedDate LIKE '%2022-02%' AND flagYN ='Y' AND accAcount = '수입' GROUP BY useddate,accacount ORDER BY useddate asc;

 

COUNT

예제)

select COUNT(itemSeq) cnt from dawoon.dc_items WHERE subject = '3000' AND acount = '지출' AND flagYN ='Y';

select COUNT(careSeq) cnt from dawoon.dc_caredocument WHERE flagYN ='Y';

 

Group By

예제)

SELECT acount, subject, COUNT(*) FROM dawoon.dc_items GROUP BY acount, subject HAVING COUNT(*) > 1

 

SELECT acount, subject FROM dawoon.dc_items GROUP BY acount, subject

 

select useddate, accAcount, SUM(money)  money FROM dc_account WHERE usedDate LIKE '%-02-%' AND usedDate like '%2022%' AND flagYN ='Y' GROUP BY useddate,accacount ORDER BY useddate asc;

 

MAX

SELECT MAX(accSeq)+1 AS seqMax FROM dc_account;

 

Replace

SELECT REPLACE('99,999',',','')

ORDER BY

SELECT
  aniFeedDate AS time,
  aniFeed1
FROM dw_daily_feed
ORDER BY time

 

CAST

select useddate, accAcount, sum(cast(replace(money,',','') AS INT))  money
FROM dc_account 
WHERE usedDate  BETWEEN '2021-01-01' AND '2022-02-22' 
GROUP BY useddate,accacount 
ORDER BY useddate asc;

 

select accAcount, SUBJECT, sum(cast(replace(money,',','') AS INT))  money
FROM dc_account 
WHERE usedDate  BETWEEN '2021-01-01' AND '2022-02-22' AND accAcount='지출'
GROUP BY SUBJECT
ORDER BY useddate asc;

 

select useddate, accAcount, sum(cast(replace(money,',','') AS INT)) money FROM dc_account WHERE usedDate BETWEEN '2022-02-01' AND '2022-02-23'
AND flagYN ='Y' GROUP BY useddate,accacount ORDER BY useddate asc;

 

insert 사용법

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

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

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

 

UPDATE 사용법

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

DELETE 사용법

DELETE FROM 테이블명 조건;

create 테이블 생성

CREATE TABLE 테이블이름

(

    필드이름1 필드타입1,

    필드이름2 필드타입2,

    ...

)

예제)

CREATE TABLE IF NOT EXISTS `dc_notememo` (
  `noteSeq` varchar(20) NOT NULL COMMENT '번호',
  `userNm` varchar(10) DEFAULT '' COMMENT '이름',
  `memo` varchar(4000) DEFAULT '' COMMENT 'Memo',
  `flagYN` varchar(1) DEFAULT 'Y' COMMENT '가용여부(Y:유효/N:삭제)',
  `regDate` datetime DEFAULT NULL COMMENT '최초저장일',
  `issueDate` datetime DEFAULT NULL COMMENT '최종저장일',
  `issueID` varchar(20) DEFAULT '' COMMENT '최종저장자 ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='사용자 관리';

create table dawoon.dc_posorder(number int not null, menu nvarchar(50) null, pay int null, money numeric(18) null, date DATE NULL, primary key clustered (number asc));

 

select join 사용법

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

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

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

1. INNER JOIN

2. LEFT JOIN

3. RIGHT JOIN


INNER JOIN

1. 첫번째테이블이름

INNER JOIN 두번째테이블이름

ON 조건

2. 첫번째테이블이름

JOIN 두번째테이블이름

ON 조건

예제)

SELECT 문서.careSeq, 등록.number, 문서.careStart, 문서.careFinish, 문서.time, 문서.sympton, 문서.count, 문서.injection, 
문서.oral, 등록.enrollSeq, 문서.age, 등록.birth, 문서.memo, 문서.flagYN, 문서.regDate, 문서.issueDate, 문서.issueID FROM dc_careenroll 
등록 inner JOIN dc_caredocument 문서 ON(등록.enrollSeq = 문서.enrollSeq) GROUP BY 문서.number;

 

LEFT JOIN

첫번째테이블이름

LEFT JOIN 두번째테이블이름

ON 조건

SELECT * FROM dc_account LEFT JOIN dc_items ON dc_account.subject = dc_items.subject;

RIGHT JOIN

SELECT 등록.number, 등록.enrollSeq, 문서.careStart FROM dawoon.dc_caredocument 문서 RIGHT JOIN dawoon.dc_careenroll 등록 ON (등록.number = 문서.number)

 

RIGHT OUTER JOIN

SELECT accSeq, usedDate, dc_items.acount, dc_items.itemSeq, dc_items.subject, dc_account.money, content, dc_account.memo, dc_items.flagYN, dc_items.regDate, dc_items.issueDate, dc_items.issueID FROM dc_account RIGHT OUTER JOIN dc_items ON dc_account.subject = dc_items.subject WHERE dc_items.flagYN = "Y"

 

 

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 테이블이름

예제)

SELECT useddate, MAX(`수입`) `수입`, MAX(`지출`) `지출` 
FROM (
select useddate, sum(money) `수입` ,0 `지출`  FROM dc_account 
WHERE (usedDate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN ='Y'  AND accacount='수입'
GROUP BY useddate
UNION all
select useddate, 0 `수입`, sum(money) `지출`  FROM dc_account 
WHERE (usedDate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN ='Y'  AND accacount='지출'
GROUP BY useddate
) Z group by useddate ORDER BY useddate ASC;

 

SELECT z.useddate, MAX(`수입`) `수입`, MAX(`지출`) `지출` 
FROM (
SELECT SUBSTRING(dc.useddate,6,2) useddate, sum(money) `수입` ,0 `지출`  FROM dc_account dc
WHERE (dc.usedDate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN ='Y'  AND accacount='수입'
GROUP BY dc.useddate
UNION all
select substring(dc.useddate,6,2) useddate, 0 `수입`, sum(money) `지출`  FROM dc_account dc
WHERE (dc.usedDate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN ='Y'  AND accacount='지출'
GROUP BY dc.useddate
) Z group BY z.useddate ORDER BY z.useddate ASC;

 

SELECT useddate, MAX(`수입`) income, MAX(`지출`) outcome FROM(select useddate, sum(money) `수입` , 0 `지출`  FROM dc_account WHERE(usedDate BETWEEN '2022-02-01' AND '2022-02-28') AND flagYN = 'Y'  AND accacount = '수입' GROUP BY useddate UNION all select useddate, 0 `수입`, sum(money) `지출`  FROM dc_account WHERE(usedDate BETWEEN '2022-02-01' AND '2022-02-28') AND flagYN = 'Y'  AND accacount = '지출' GROUP BY useddate) Z group by useddate ORDER BY useddate ASC;

 

SELECT z.useddate, MAX(`수입`) `수입`, MAX(`지출`)`지출`
FROM (
SELECT SUBSTRING(dc.useddate,6,2) useddate, SUM(money) `수입`, 0 `지출` FROM dc_account dc
WHERE (dc.useddate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN='Y' AND accacount='수입'
GROUP BY dc.useddate
UNION ALL
SELECT SUBSTRING(dc.useddate,6,2) useddate, 0 `수입`, SUM(money) `지출` FROM dc_account dc
WHERE (dc.useddate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN='Y' AND accacount='지출'
GROUP BY dc.usedDate) z GROUP BY z.useddate ORDER BY z.useddate ASC;

 

SELECT useddate, MAX(`수입`)`수입`,MAX(`지출`)`지출` FROM
(SELECT useddate, SUM(money)`수입`,0`지출` FROM dc_account
WHERE(useddate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN='Y' AND accacount='수입' GROUP BY useddate
UNION ALL
SELECT useddate, 0 `수입`, SUM(money)`지출` FROM dc_account
WHERE (useddate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN='Y' AND accacount='지출' GROUP BY useddate)z 
GROUP BY useddate ORDER BY useddate ASC;

 

SELECT useddate, MAX(`수입`)`수입`,MAX(`지출`)`지출` FROM
(SELECT useddate, SUM(money)`수입`,0`지출` FROM dc_account
WHERE(useddate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN='Y' AND accacount='수입' GROUP BY useddate
UNION ALL
SELECT useddate, 0 `수입`, SUM(money)`지출` FROM dc_account
WHERE (useddate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN='Y' AND accacount='지출' GROUP BY useddate)z 
GROUP BY useddate ORDER BY useddate ASC;

 

SELECT useddate, MAX(`수입`) income, MAX(`지출`) outcome 
FROM(select useddate, sum(money) `수입` , 0 `지출`  
FROM dc_account 
WHERE(usedDate BETWEEN '2022-02-01' AND '2022-02-28') AND flagYN = 'Y'  AND accacount = '수입' 
GROUP BY useddate UNION all select useddate, 0 `수입`, sum(money) `지출`  
FROM dc_account 
WHERE(usedDate BETWEEN '2022-02-01' AND '2022-02-28') 
AND flagYN = 'Y'  AND accacount = '지출' GROUP BY useddate) Z group by useddate ORDER BY useddate ASC;

 

SubString

SELECT useddate, MAX(`수입`)`수입`,MAX(`지출`)`지출` FROM
(SELECT useddate, SUM(money)`수입`,0`지출` FROM dc_account
WHERE(useddate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN='Y' AND accacount='수입' GROUP BY useddate
UNION ALL
SELECT useddate, 0 `수입`, SUM(money)`지출` FROM dc_account
WHERE (useddate BETWEEN '2022-01-01' AND '2022-02-28') AND flagYN='Y' AND accacount='지출' GROUP BY useddate)z 
GROUP BY useddate ORDER BY useddate ASC;

 

함수

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() 함수에 인수로 전달할 수 있는 날짜와 시간 표현의 형식은 다음과 같습니다.

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

프로시저

sql문을 매번 하나하나 수행하기보다는 프로시저로 만들어놓은 다음 불러오는 방식

 

select * from memberTBL where memberName = '당탕이';

select * from productTBL where productName = '냉장고';

 

 

트리거

트리거란 테이블에 부착되어서 테이블에 insert나 update 또는 delete 작업이 발생되며 실행되는 코드를 말한다.

 

이벤트

mysql 문법중에는 예약 작업을 수행할 수 있는 이벤트 스케줄러가 있다.
이벤트 스케줄러는 말그대로 특정 이벤트를 자동으로 정기적으로 수행시킬 수 있다.

이벤트 스케줄러 생성하기

CREATE EVENT IF NOT EXISTS [이벤트 이름]

    ON SCHEDULE

    [수행, 반복 할 시간]

    ON COMPLETION NOT PRESERVE

    ENABLE

    COMMENT [코멘트]

    DO

    [수행할 명령]

END

[이벤트이름] 은 해당 이벤트 스케줄의 이름을 정해준다.

[수행,반복 할 시간] 은 해당 명령을 수행하거나 반복할 시간 및 기간을 정해준다.

[코멘트] 는 해당 이벤트의 내용을 입력해주면 된다.

[수행할 명령] 은 해당 이벤트 시간의 수행할 명령을 입력하면 된다.

뷰는 가상의 테이블이라고 생각하면 된다.

뷰는 실제 행동 데이터를 가지고 있지 않다. 실체를 가지고 있지 않으며 진짜 테이블에 링크된 개념이라고 생각하면된다

 

 

 

 

 

'데이타베이스 > MySQL' 카테고리의 다른 글

SQL 정리 지금까지썼던것들  (0) 2022.03.29
MYSQL Select  (0) 2022.03.02
SQL  (0) 2022.02.25
그라파나설정  (0) 2022.02.22
정리  (0) 2021.12.24