1. 문자열 함수
- concat : 복수의 문자열을 연결해주는 문자열 함수
select concat('안녕하세요!','MySQL') as concat;
# concat 안녕하세요!MySQL
select * from member;
select concat(address1, ' ', address2, ' ', address3) as address
from member where userid = 'orange';
# address 서울시 서초구 양재동 XX아파트 201동
- left, right: 왼쪽 또는 오른쪽에서 길이만큼 문자열을 가져옴
select left('ABCDEFGHIJKLMN',5);
select userid, left(userid,2) as leftfunc from member;
- substring: 문자열의 일부를 가져옴
-- substring(문자열,시작위치): 시작위치부터 끝까지
-- substring(문자열,시작위치,길이): 시작위치부터 길이만큼
select substring('ABCDEFGHIJKLMN',5) as sub;
select substring('ABCDEFGHIJKLMN',5, 3) as sub;
- char_length: 문자열의 길이를 반환
select char_length('ABCDEFGHIJKLMN') as cnt;
select email, char_length(email) as len from member;
- lpad, rpad: 왼쪽 또는 오른쪽의 해당 길이만큼 늘리고, 빈 공간을 채울 문자열을 반환
-- lpad(문자열, 총길이, 채울 문자열)
select lpad('ABCDEFG', 10, 0) as pad;
select lpad(point, 5, 0) as pad from member;
- ltrim, rtrim, trim: 왼쪽, 오른쪽, 모든 공백을 제거
select rtrim(' ABCDEF ') as rtrim;
select trim(' ABCDEF ') as trim;
- replace: 문자열에서 특정 문자열을 변경
-- replace(문자열, 대상, 바꿀 문자열)
select replace('ABCDEFG', 'CD', ',') as repl;
2. 유니온(Union)
합집합을 나타내는 연산자로, 중복된 값을 제거해서 출력합니다.
서로 같은 종류의 테이블(컬럼이 같아야 함)에서만 적용이 가능합니다.
select 컬럼명1, 컬럼명2,... from 테이블1 union select 컬럼명1, 컬럼명2,...from 테이블2
아래서는 regdate (현재시간) 값이 모두 다르기 때문에 플립5 제품이 겹쳐도 모두 출력됩니다
select code, name, price, regdate from product
union
select code, name, price, regdate from product_new;
regdate (현재시간) 값을 삭제하니 플립5의 모든 값이 같으므로 중복값이 제거되어 출력됩니다.
select code, name, price from product
union
select code, name, price from product_new;
중복된 값을 제거하지 않으려면 union all을 사용하면 됩니다.
-- 중복된 값을 제거하지 않음
select code, name, price from product
union all
select code, name, price from product_new;
3. 뷰(view)
뷰는 가상의 테이블을 생성하는 것 입니다. 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않습니다. 뷰를 만드는 이유는 SQL 코드를 간결하게 만들기 위해, 내부 데이터 중 일부만 공개하고 이로 인해 삽입, 삭제, 수정에 제한 사항을 두고 싶을 때 사용할 수 있습니다.
create view 뷰이름 as 쿼리 ...
자주 확인하는 userid, name, hp, gender 만으로 view 생성.
select * from member;
select userid, name, hp, gender from member;
create view vw_member as select userid, name, hp, gender from member;
select * from vw_member;
-- member의 userid, name, hp와 profile의 mbti를 출력하는 뷰를 만들기
select m.userid, m.name, m.hp, p.mbti from member m left join profile p on m.userid = p.userid;
create view vw_member_profile as
select m.userid, m.name, m.hp, p.mbti
from member m left join profile p
on m.userid = p.userid;
'데이터베이스' 카테고리의 다른 글
SQL 서브쿼리/사용자 관리/Transaction (0) | 2023.09.20 |
---|---|
MySQL join과 데이터 (비)정규화 (0) | 2023.09.20 |
MySQL 조건절과 그룹함수 (0) | 2023.09.20 |
SQL 데이터 수정,삭제,검색,연산 (0) | 2023.09.19 |
SQL 테이블 생성과 데이터 삽입 (0) | 2023.09.18 |