형변환
; 다른 작업에 사용하기 위해 자료의 타입을 반환해야 하는 경우가 있다.
convert(x, 타입) : x를 지정된 타입으로 변환
- binary, char, date, datetime, decimal,inerger, time
# 학생이름에 '님', 나이에 '세', 학년에 '학년'을 붙여서 출력하시오
select 학생이름, 나이, 학년 from 학생;
select concat(학생이름,'님') 학생이름, concat(convert(나이,char), '세') 나이, concat(convert(학년,char),'학년') 학년 from 학생;
desc 학생;
Group정의
; 같은 종류의 데이터를 묶어서 검색하는 것
- 단순 그룹질의 + 함수적용 그룹질의 + Group By ~ Having 조건
. avg(), count(), group_concat(), max(), min(), sum()
select [그룹함수][컬럼,,] from 테이블 group by 컬럼명... [having 조건]
select * from 학생;
select distinct 소속학과 from 학생;
select 소속학과 from 학생 group by 소속학과;
select * from 강의;
select 이수구분, count(*) as 이수종류수 from 강의 group by 이수구분;
select count(*) as 교수수 from 교수 where 퇴사일 is null;
# 학생 테이블에서 소속학과별로 최고령자와 최연소자의 소속학과를 출력하시오
select 소속학과, max(나이) 최고령자, min(나이) 최연소자 from 학생 group by 소속학과;
# 학년별 학생수를 출력하시오
select 학년, count(*) 학생수, group_concat(학생이름) 학생명단 from 학생 group by 학년;
select 학년, 성별, 소속학과, group_concat(학생번호), group_concat(학생이름), group_concat(전화번호)
from 학생 group by 학년, 성별;
select 이수구분, count(*) from 강의 group by 이수구분;
select 이수구분, count(*) from 강의 group by 이수구분 having count(*) >=2 order by 이수구분 asc;
Union(결합)
. 두개의 select 문을 결합
select문 union select문
. 같은 스키마, 컬럼명의 순서나 데이터 타입이 일치해야 한다.
select 학생번호, 학생이름, 소속학과, 나이 from 학생 where 소속학과 = '컴퓨터과학과'
union
select 학생번호, 학생이름, 소속학과, 나이 from 학생 where 나이 >= 25;
select 학생번호, 학생이름, 소속학과, 나이 from 학생 where 소속학과 = '컴퓨터과학과' || 나이>=25 order by 소속학과 asc;
조인 (join)
; 두개 이상의 테이블에서 테이블간의 관련성을 이용해서 임시적으로 레코드를 통합하고, 데이터를 검색하는 기법
SELECT ~~~ FROM 테이블 inner join 테이블2 [on 조인조건] [where 조건]
- 종류
내부조인 : 조인조건에 일치하는 레코드만 결합하여 조인결과를 생성
-- 동등조인 : 동등연산자(=) 사용
-- 비동등조인 : 비교연산자 사용
외부조인 : 조건에 맞지않는 레코드도 결과에 생성
-- 왼쪽 외부조인 : 왼쪽전체 + 오른쪽 조건만 맞는 것
-- 오른쪽 외부조인 : 오른쪽전체 + 왼쪽 조건만 맞는 것
-- 완전 외부조인 : 양쪽 모두출력+ 조건맞는것 + 아닌것은 null로 표시
- 출력하고자 하는 컬럼이 한 테이블에 존재하지 않을 때, 조인검색으로 처리한다.
- 테이블간의 교집합으로 출력하고자 할 때는 inner 조인
- 한쪽 테이블을 기준으로 상대테이블이 조건에 맞게 출력되고자 할 경우, outer 조인
- 자신의 테이블을 참조해야할 경우(재귀참조) 테이블명의 별칭을 반드시 다르게 하여 조인한다.
select 학생.학생이름, 학생.소속학과, 학생.전화번호, 수강신청.신청시각
from 학생 inner join 수강신청 on 학생.학생번호 = 수강신청.학생번호 where 수강신청.강의번호 = 'LA01';
'IT 공부 > MySQL' 카테고리의 다른 글
view (0) | 2022.07.14 |
---|---|
join 2 (0) | 2022.07.14 |
select, 함수 (0) | 2022.07.13 |
테이블 수정, 인덱스 (0) | 2022.07.12 |
테이블 생성 (0) | 2022.07.11 |