MySQL(18)
-
[MySQL] 해시 암호화
# 기존 회원 비밀번호 암호화 비교 조회 SELECT loginPw, SHA2(loginPw, 256) FROM `member` WHERE id != 14; # 기존 회원 비밀번호 암호화 수행 UPDATE `member` SET loginPw = SHA2(loginPw, 256) WHERE id != 14;
2021.01.25 -
[MySQL] SUBSTRING_INDEX()
SUBSTRING_INDEX(문자열, 구분자, 인덱스) 해당 문자열을 구분자를 기준으로 나누고, 입력한 인덱스까지 있는 모든 문자가 나타난다. #변수설정 SET @hashStr = '#sql #DB #table'; SET @hashSign = '#'; ## SUBSTRING_INDEX() 함수 예제 ### @hashSign을 기준으로 앞에서부터 n개까지 나오게 SELECT SUBSTRING_INDEX(@hashStr, @hashSign, 1); #결과: "" SELECT SUBSTRING_INDEX(@hashStr, @hashSign, 2); #결과: "#sql" SELECT SUBSTRING_INDEX(@hashStr, @hashSign, 3); #결과: "#sql #DB" SELECT SUBSTRIN..
2021.01.16 -
[MySQL] CONCAT(문장1, 문장2)
문장1과 문장2를 붙인다. SET @string1 = '문장아무거나1'; SET @string2 = '문장아무거나2'; SELECT CONCAT(@string1, @string2); #결과:"문장아무거나1문장아무거나2"
2021.01.16 -
[MySQL] IF()
If( 조건문, 조건이 참일 경우 할 행동, 거짓일 경우 할 행동 ) IF ( GROUP_CONCAT(tag.body) IS NOT NULL, CONCAT("#", GROUP_CONCAT(tag.body)), "" ) 해석: 만약 tag.body 값이 null이 아니면(참이면), tag.body 앞에 #을 붙이고 그렇지 않으면(거짓이면) 공백으로 둔다.
2021.01.16 -
[MySQL] 21.01.16 태그 조회, 신규 태그 추가 쿼리 복습
DROP DATABASE IF EXISTS `textBoardTest`; CREATE DATABASE `textBoardTest`; USE `textBoardTest`; #article 테이블 생성 CREATE TABLE `article`( id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, regDate DATETIME NOT NULL, updateDate DATETIME NOT NULL, title CHAR(100) NOT NULL, `body` TEXT NOT NULL ); #게시물 생성 INSERT INTO article SET regDate = NOW(), updateDate = NOW(), title = '테스트 제목 1', `body` = '..
2021.01.16 -
[MySQL] IFNULL(칼럼명, '원하는 문구')
IFNULL 만약 해당 칼럼명안의 데이터가 null이면 '원하는 문구'가 나타나게 한다. SELECT A.id, A.title, GROUP_CONCAT(T.body) AS Tags FROM article AS A LEFT JOIN tag AS T ON A.id = T.relId AND T.relTypeCode = 'article' GROUP BY A.id 결과 : id가 1인 article의 tag의 body에는 데이터가 없어 (NULL)이라고 나온다. SELECT A.id, A.title, IFNULL(GROUP_CONCAT(T.body), 'DATA 없음' )AS Tags FROM article AS A LEFT JOIN tag AS T ON A.id = T.relId AND T.relTypeCode..
2021.01.14 -
[MySQL] GROUP_CONCAT()
GROUP_CONCAT 구분자를 활용한 문자열 묶음을 해주는 함수이다. GROUP BY로 된 레코드들 중에서 구분자를 이용하여 해당하는 문자열을 보고자 할 때 사용한다. 기본적으로 GROUP BY를 하게되면 여러개의 레코드가 합쳐져도 문자열은 하나만 보이게 된다. GROUP_CONCAT(컬럼명)을 하면 각 레코드안에 있는 모든 문자열들이 뒤따라 보이게 된다. SELECT A.id, a.title, T.body FROM article AS A LEFT JOIN tag AS T ON a.id = T.relId AND T.relTypeCode = 'article' 결과 : id가 2인 article의 tag의 body에는 DB, INSERT, SQL이 한개씩 들어있다. SELECT A.id, a.title, ..
2021.01.14 -
[MySQL] RAND() 함수
#게시물 랜덤 생성 INSERT INTO `article` SET `regDate` = NOW(), `updateDate` = NOW(), `title` = CONCAT('제목_',RAND()), `body` = CONCAT('내용_',RAND()), `boardId` = FLOOR(RAND()*2) + 1, `memberId` = FLOOR(RAND()*2) + 1;
2020.12.15 -
[MySQL] GROUP BY, HAVING
GLOUP BY - 특정 컬럼 이름을 지정해주면 그 컬럼의 UNIQUE한 값에 따라서 데이터를 그룹 짓고, 중복된 열은 제거 HAVING - HAVING은 GROUP BY한 결과에 조건을 붙이고 싶을때, 즉, GROUP BY의 WHERE 절 역할 수행 날짜데이터 추출 아래에 MySQL 함수들은 날짜 데이터에서 일부만을 추출할 수 있다. YEAR : 연도 추출 MONTH : 월 추출 DAY : 일 추출 (DAYOFMONTH와 같은 함수) HOUR : 시 추출 MINUTE : 분 추출 SECOND : 초 추출 출처: https://extbrain.tistory.com/60 [확장형 뇌 저장소] 변수 선언 - 크게 사용자 정의 변수, 지역 변수, 시스템 변수 3가지 종류가 있다. 더보기 자세한 내용 참조: t..
2020.11.23 -
[MySQL] Round(), FLOOR(), CEIL()
[반올림] Round() SELECT d.name, ROUND(AVG(income)) AS `부서별 최저연봉` FROM emp AS e INNER JOIN dept AS d ON e.deptId = d.id GROUP BY deptId; [버림] FLOOR() SELECT d.name, FLOOR(AVG(income)) AS `부서별 최저연봉` FROM emp AS e INNER JOIN dept AS d ON e.deptId = d.id GROUP BY deptId; [올림] CEIL() SELECT d.name, CEIL(AVG(income)) AS `부서별 최저연봉` FROM emp AS e INNER JOIN dept AS d ON e.deptId = d.id GROUP BY deptId;
2020.11.22