마리아 DB를 복습하면서

Kangdh·2026년 9월 5일

파이썬 교육

목록 보기
20/33

마리아 DB를 복습하면서 내가 작성했던 코드를 조금 더 디테일하게 풀어보려고 한다.

  • a6 DB 삭제/생성/선택

    drop database if exists a6;
    create database a6;
    use a6;

    • drop database if exists a6;의 의미는 만약 a6라는 데이터베이스가 있으면 삭제하라는 의미.
    • create database a6; 의 의미는 데이터베이스 a6를 만들라는 의미
    • use a6; 는 데이터베이스 a6를 사용하겠다는 의미

=====================================================

  • 부서(홍보, 기획)

    create table dept(
    id int unsigned not null auto_increment,
    primary key(id),
    regDate datetime,
    name char(100)
    );
    insert into dept
    set regDate = now(),name = '홍보';
    insert into dept
    set regDate = now(), name = '기획';
    select *
    from dept;

    • create table dept();는 dept라는 이름의 테이블을 만들라는 의미이다.
    • id int unsigned not null auto_increment, primary key(id);
      는 id라는 컬럼을 만들고, int는 id가 int의 값을 갖는다는 의미이며 unsigned는 부호를 사용하지 않는다는 뜻이며 + 값만 사용하겠다는 뜻이다.
      그리고 Auto_increment는 숫자가 자동으로 1씩 오른다는 의미이다.

insert into dept는 dept 테이블에 내용을 채우겠다는 뜻이며
set regDate = now(),name = '홍보'; 은 regDate는 지금 등록하는 날짜,시간을 기록하라는 뜻이고 name은 홍보로 하겠다는 뜻이다.

=====================================================

  • 사원(홍길동/홍보/5000만원, 홍길순/홍보/6000만원, 임꺽정/기획/4000만원)

create table emp(
id int unsigned not null auto_increment,
primary key(id),
regDate datetime,
name char(100),
dept char(100),
pay char(100)
);
insert into emp
set regDate = now(), name = '홍길동', dept = '홍보', pay = '5000만원';
insert into emp
set regDate = now(), name = '홍길순', dept = '홍보', pay = '6000만원';
insert into emp
set regDate = now(), name = '임꺽정', dept = '기획', pay = '5000만원';
select *
from emp;

코드가 작동하는 방식은 위와 동일하다.

=====================================================

  • 사원 수 출력

    select count(name) as emp_name from emp;

select count(name) from emp; 는 name컬럼에 몇개의 데이터가 있는지 count하라는 의미이다.
위에서 3명의 데이터를 만들었으니 3이 나온다.
as emp_name은 count한 데이터를 출력한 컬럼이름을 emp_name이라고 만드는것이다.

=====================================================

  • 가장 큰 사원 번호 출력

    select max(id) from emp;

위의 count와 비슷하게 작동하지만 max는 값중에 최고로 높은 값을 뽑는 명령어이다.

=====================================================

  • 가장 고액 연봉

    select max(pay) from emp;

=====================================================

  • 가장 저액 연봉

    select min(pay) from emp;

min은 max와 똑같이 작동하지만 출력값은 가장 작은 값을 출력한다.

=====================================================

  • 회사에서 1년 고정 지출(인건비) # 아마 sum?

    select sum(pay) from emp;

sum는 수의 합이다.

=====================================================

  • 부서별, 1년 고정 지출(인건비)

    select sum(pay)
    from emp
    where dept ='홍보';
    select sum(pay)
    from emp
    where dept = '기획'

=====================================================

  • 부서별, 최고연봉

    select max(pay)
    from emp
    where dept = '홍보'
    select max(pay)
    from emp
    where dept = '홍보'

select ~ from 까지는 똑같게 작동하고 where은 내가 어디의 값에서 전 코드들을 작동시킬지 지정한다.

=====================================================

  • 부서별, 최저연봉

    select min(pay) as 홍보부최저연봉
    from emp
    where dept = '홍보'
    select min(pay) as 기획부최저연봉
    from emp
    where dept = '기획'

=====================================================

  • 부서별, 평균연봉

    select avg(pay) as 홍보부평균연봉
    from emp
    where dept = '홍보'
    select avg(pay) as 기획부평균연봉
    from emp
    where dept = '기획'

avg는 average의 줄인말이다. 평균을 구하는 코드이다

=====================================================

부서별, 부서명, 사원리스트, 평균연봉, 최고연봉, 최소연봉, 사원수
V1(조인 안한 버전)

V2(조인해서 부서명까지 나오는 버전)

V3(V2에서 평균연봉이 5000이상인 부서로 추리기)

0개의 댓글