5월 18일 화요일 (7일차) - 리터럴문자열,중복제거ㅇ
<목차>
ㅇ 연결 연산자
ㅇ 리터럴 문자열
ㅇ 중복 데이터 삭제
ㅇ 연결 연산자
(현업에서 사용하진 않아서 가볍게 보자)
- 보고서 만들 때 사용하는 명령문이야
(실제에서는 sql+ 사용해서 보고서 만들지는 않으니까) - 열 또는 문자열을 다른 열에 연결 (2개의 데이터를 하나로 출력)
- 두 개의 세로선 (||) 으로 표시
ㅇ 리터럴 문자열
- 명령문, 테이블, 컬럼이름, 연산자를 제외한 모든 문자, 날짜, 숫자들 전부
- 문자와 날짜는 작은따옴표 (' ') 붙이기
- 문자에 '' 안 붙이면 alias 돼버려
- 쌍따옴표(" ") 붙여도 alias 돼버려
- 숫자는 ' ' 붙이지 않아 : 데이터베이스에서 테이블, 컬럼 이름이 반드시 문자로 시작(숫자로 시작하지 않아)해서 알리아스가 아니라 숫자로 바로 인식해
- '7' 이렇게 하면 문자로 인식해버려
- 예) 라스트 네임 || ' is a' || 잡 아이디
- where라는 조건절에서 리터럴문자가 엄청 중요해져
- 포인트는 작은 따옴표(' ')를 쓴다는 점
CF. 정리하면 알리아스는 쌍따옴표, 리터럴문자열은 따옴표
ㅇ 중복 데이터 삭제 : distinct
ㅇ 컬럼 1개
SELECT DISTINCT 컬럼이름 FROM 테이블이름;
- SELECT 명령어 다음에 위치
- 전체 문장에서 단 한 번만 사용
ㅇ 실습1 : 사원이 근무하는 부서들을 알고 싶어
SELECT department_id FROM employees;
- 직역 : 사원들의 부서 아이디
- d테이블의 d_id는 우리 회사의 부서번호
e테이블의 d_id는 현재 사원들이 근무하고 있는 부서번호
- d테이블의 d_id는 우리 회사의 부서번호
- 의역 : 사원들이 근무하고 있는 부서번호
- 부서 번호가 무엇무엇이 있나
- 숫자 중복 = 하나의 부서에 여러 명 사원 근무하고 있다
- 중복제거하면
SELECT DISTINCT department_id FROM employees;
12 rows selected.
- 결과가 12행 나왔으니까 사원이 근무하는 12개 부서 존재한다?? NO
- NULL 값도 여러 개가 있으면 DISTINCT에 중복제거 되고 1개 남아
- NULL 값이 있어. 한 칸 비니까 11개 부서 있겠구나~해야지
- 행 그대로 해버리면 착오 발생
ㅇ 컬럼 2개
SELECT DISTINCT 컬럼이름1, 컬럼이름2 FROM 테이블이름;
- 앞의 컬럼들의 그룹화를 통해 중복제거
- 첫 번째 컬럼의 데이터가 이렇다면
10 20 10 20 10 - 같은 것끼리 모아서 (= 그룹화) 그중 하나만 반환(return)
10 10 10 / 20 20 => 10, 20
- 첫 번째 컬럼의 데이터가 이렇다면
- 마지막 컬럼은 그룹 내에서 중복제거
ㅇ 실습2
SELECT DISTINCT department_id, job_id FROM employees;
- 컬럼 단위로 보면 20,20 겹쳐서 중복제거 안 된 것처럼 보이지만,
행 단위로 보면 중복제거 된 거야. (20, MK_MAN)과 (20, MK_REP)는 다르니까 - 의역 : 부서별로 직업들이 무엇무엇이 있나
ㅇ 3개면??
- 첫 번째 그룹화. 그 안에서 두 번째 그룹화. 세 번째에서 중복 제거
ㅇ 만약 pk(프라이머리 키)를 첫 번째로 두고 여러 컬럼 중복제거 한다면??
- pk라서 각각이 하나의 그룹이 돼
ㅇ 첫 번째 컬럼이 뭐냐에 따라 그룹 개수가 달라질 수 있어
(내 생각) 그룹의 개수는 달라질 수 있지만, 중복제거의 결과는 같을 듯 - 더 고민해보자
ㅇ 76P iSQL+
인터넷으로, 마우스나 커서 이용해서 쉽게 하는 거 만들었는데
네트워크로 디비 접속하는 건 보안에 취약해
Author And Source
이 문제에 관하여(5월 18일 화요일 (7일차) - 리터럴문자열,중복제거ㅇ), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@data_sy/5월-18일-화요일-7일차-리터럴문자열중복제거저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)