/* 문자열을 길이만큼 늘린 후에 빈곳을 채울 문자열로 채움 */SELECT LPAD('김이박', 5, '##'), RPAD('김이박', 5, '##'); -- '##김이박', '김이박##' 출력
LTRIM(문자열), RTRIM(문자열)
/* 문자열의 왼쪽, 오른쪽 공백을 제거. 가운데 공백은 제거하지 않음. */SELECT LTRIM(' 김이박'), RTRIM('김이박 '); -- '김이박', '김이박' 출력
TRIM(문자열), TRIM(방향 자를문자열 FROM 문자열)
/* TRIM() 앞뒤 공백을 모두 제거함
방향: LEADING 앞쪽, BOTH 양쪽, TRAILING 뒤쪽 */SELECTTRIM(' 김이박 '); -- '김이박' 출력SELECTTRIM(BOTH'ㅎ'FROM'ㅎㅎㅎ힘들다.ㅎㅎㅎ'); -- '힘들다.' 출력
REPEAT(문자열, 횟수)
SELECT REPEAT('김이박', 3); -- '김이박김이박김이박' 출력
REPLACE(문자열, 원래문자열, 바꿀문자열)
SELECT REPLACE ('이제는 잘 수 있겠다.', '있겠다' , '없겠다'); -- '이제는 잘 수 없겠다'로 변경 출력
REVERSE(문자열)
SELECT REVERSE ('김이박'); -- '박이김' 출력
SPACE(길이)
SELECT CONCAT('이제는', SPACE(10), '졸립다'); -- '이제는 졸립다' 출력
SUBSTRING(문자열, 시작위치, 길이) or (문자열 FROM 시작위치 FOR 길이)
/* 시작위치부터 길이만큼 문자를 반환. 길이가 생략되면 준마열 끝까지 반환 */SELECTSUBSTRING('이제그만자자', 3, 2); -- '그만' 출력/* SUBSTRING(), SUBSTR(), MID()는 모두 같은 함수 */
SUBSTRING_INDEX(문자열, 구분자, 횟수)
/* 문자열에서 구분자의 횟수번째 나오는 부분 뒤를 버림. 횟수가 음수면 우측부터 횟수번째 나오는 앞을 버림. */SELECT SUBSTRING_INDEX('cafe.daum.net', '.', 2); -- cafe.daum 출력SELECT SUBSTRING_INDEX('cafe.daum.net', '.', -2); -- daum.net 출력
[MariaDB] 마리아DB SQL 쿼리 고급 - 변수 사용 및 데이터 형 변환 (MySQL)
변수의 사용
SET @변수이름 = 변수의값 ; -- 변수의 선언 및 값 대입SELECT @변수이름 ; -- 변수의 값 출력/* 사용 예제 */
USE DB명;
SET @변수명1=4 ; -- 변서 선언 및 값 대입SET @변수명2=2 ;
SET @변수명3=3.25 ; -- 실수 대입SET @변수명4='지역명--> ' ; -- 문자 대입SELECT @변수명1 ; -- 정수 출력SELECT @변수명2+ @변수명3 ; -- 정수+실수는 실수 출력SELECT @변수명4 , 지역명열이름 FROM 테이블명 ; -- 1열은 '지역명-->' 출력, 2열은 테이블의 지역명열 내용 출력
LIMIT에 변수 사용방법(기본적으로 변수 사용 불가능하나 PREPARE와 EXECUTE문을 활용해서 사용 가능)
SET @변수1=5 ;
PREPARE 쿼리이름
FROM'SELECT 열이름1, 열이름2 FROM 테이블명 ORDER BY 열이름1 LIMIT ?'; -- ?에 값이 입력될 준비EXECUTE 쿼리이름 USING @변수1 ; -- 여기서 ?에 @변수1 값을 대입하게 됨
데이터 형 변환
// 데이터 형 변환 방식1 CAST
CAST (expression AS 데이터형식 [(길이)])
// 데이터 형 변환 방식2CONVERTCAST (expression , 데이터형식 [(길이)])
// 형 변환 예시: 평균(AVG)가 소숫점으로 나오지 않도록 SIGNED INT로 형변환 출력
SELECTCAST(AVG(amount) AS SIGNED INTEGER) AS'평균 구매 개수'FROM 테이블명 ;
SELECTCONVERT(AVG(amount) , SIGNED INTEGER) AS'평균 구매 개수'FROM 테이블명 ;
// 형 변환 예시: 날짜 데이터 형식으로 변환하기
SELECTCAST('2022$12$12'ASDATE); -- 결과값: 2020-12-12SELECTCAST('2022/12/12'ASDATE); -- 결과값: 2020-12-12SELECTCAST('2022%12%12'ASDATE); -- 결과값: 2020-12-12SELECTCAST('2022@12@12'ASDATE); -- 결과값: 2020-12-12 (모두 같은 결과)// 암시적인 형 변환
SELECT'100'+'200' ; -- 문자와 문자를 더함 (정수로 변환되서 연산됨)SELECT CONCAT('100', '200'); -- 문자와 문자를 연결 (문자로 처리)SELECT CONCAT(100, '200'); -- 정수와 문자를 연결 (정수가 문자로 변환되서 처리)SELECT1>'2mega'; -- 정수 2로 변환되어서 비교SELECT3>'2MEGA'; -- 정수 2로 변환되어서 비교SELECT0='mega2'; -- 문자는 0으로 변환됨
USE DB명;
DELETEFROM 테이블명 WHERE 조건문;
//예시
DELETEFROM 테이블명 WHERE 이름열 ='김이박'; -- 이름열 값이 김이박인 행들을 모두 지움
DELETE, DROP, TRUNCATE 차이
DELETEFROM 테이블명; -- DML문. 트랜젝션 로그를 기록하여 느림. 테이블 모든 행 삭제.DROPTABLE 테이블명; -- DDL문. 트랜젝션 발생하지 않아 빠름. 테이블 자체를 삭제.TRUNCATETABLE 테이블명; -- DDL문. 트렌젝션을 발생하지 않아 빠름. 테이블의 모든 행 삭제