추씨의DBMS일기5편(국비Ver)

2023. 10. 23. 12:42DBMS

금일강의내용정리

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

1. 데이터베이스 백업
백업(mysqldump) <-> 복원(mysql)

이거시험문제
mysqldump -u아이디 -p 디비전체 > 20231023_grp.dump
mysqldump -u아이디 -p 디비 테이블 > 20231023_grp.dump

mysqldump -uroot -p 디비 > 20231023_grp.dump
mysqldump -uroot -p 디비 테이블 > 20231023_grp.dump

DDL : create, drop, alter


use  shopdb;
drop table if exists employees;

create table employees(
emp_id int not null auto_increment,
emp_name varchar(30),
emp_salary int,
primary key(emp_id)
);


INSERT INTO employees VALUES(NULL, '홍길동', 100);
INSERT INTO employees (emp_id, emp_name, emp_salary)VALUES(null, '이영희', 200);
INSERT INTO employees(emp_id)VALUES(null);
* not null은 필수

INSERT INTO employees VALUES(NULL, '부산', 300), (NULL, '서울', 400), (NULL, '광주', 500);

SELECT * FROM employees;

SELECT * FROM employees WHERE emp_name IS null;
SELECT * FROM employees WHERE emp_name IS NOT null;
SELECT * FROM employees WHERE  emp_salary >= 300;

집계함수 : 결과가 하나나옴 => COUNT(), MAX(), MIN(), SUM(), AVG(), DISTNCT()
 DISTNCT(컬럼명), DISTNCT 컬럼명 : 중복 제거


EX) SELECT COUNT(*) AS '사원 수' FROM employees WHERE  emp_salary >= 300;
     SELECT SUM(emp_salary) AS '사원 수' FROM employees WHERE  emp_salary >= 300;
     SELECT MAX(emp_salary) AS '사원 수' FROM employees WHERE  emp_salary >= 300;
     SELECT MIN(emp_salary) AS '사원 수' FROM employees WHERE  emp_salary >= 300;


예제) 번호, 이름, 비번, 성별(M, F), 자기소개, 가입일

- 테이블 생성
CREATE TABLE member(
mem_id int not null auto_increment,
mem_name varchar(10) not null,
mem_pwd varchar(20) not null,
mem_gender char(1) not null,
mem_intro text,
mem_regdate date,
primary key(mem_id)
);


컬럼 값 추가
   INSERT INTO member VALUES(NULL, '홍길동', '1234', 'M', '자기소개1', now());
   INSERT INTO member VALUES(NULL, '홍길동', '5678', 'M', '자기소개2', sysdate());
   INSERT INTO member VALUES(NULL, '이영희', '0000', 'F', '자기소개3', curdate());

   INSERT INTO member VALUES(NULL, '김부산', '8888', 'M', '자기소개4', '2023-01-01');
   INSERT INTO member VALUES(NULL, '김부산', '8888', 'M', '자기소개4', now() + 1);

컬럼 전체 출력
   SELECT * FROM member;

중복제거
  SELECT DISTNCT mem_name FROM member;
  SELECT DISTNCT(mem_name) FROM member;


예제1) 2023년 01월 01일 ~ 2023년 12월 31일에 입사한 사원의 이름과 날짜를 출력하시오.
SELECT mem_name, mem_regdate FROM member
WHERE mem_regdate >= '2023-01-01' AND mem_regdate <= '2023-12-31';

예제2) 2023년 01월 01일 ~ 2023년 12월 31일에 입사한 사원의 수를 출력하시오.
SELECT COUNT(*) FROM member
WHERE mem_regdate >= '2023-01-01' AND mem_regdate <= '2023-12-31';

예제3) 성별이 남자인 사람의 아이디와 성별을 출력하시오.
SELECT mem_id, mem_gender FROM member
WHERE mem_gender = 'M';

예제4) 성별이 남자인 사람의 수를 출력하되 컬럼명은 회원(남자)로 출력하시오.
SELECT COUNT(*) AS '회원(남자)' FROM member 
WHERE mem_gender = 'M';

* 일치 조건 <-> 유사 검색

예제5) 입사일이 2023년 01월 01일 ~ 2023년 12월 31일인 사람의 수를 출력하시오.
SELECT COUNT(*) FROM member
WHERE mem_regdate >= '2023-01-01' AND mem_regdate <= '2023-12-31';

예제6) 입사일이 2023년 01월 01일 ~ 2023년 12월 31일인 사람의 수를 출력하시오.(속도 up)
컬럼명 Between A and B;

SELECT COUNT(*) FROM member
WHERE mem_regdate Between '2023-01-01' AND '2023-12-31';

AND 연산 : 이고, 이면서 - 조건을 모두 만족
OR 연산: 이거나, 또는 - 조건 중 하나만 만족

예제7) 성별이 여자인 사람의 이름과 성별을 출력하시오.
SELECT mem_name, mem_gender FROM member
WHERE mem_gender = 'F';

- OR 연산
  성별이 남자이거나 여자인 사람의 이름과 성별을 출력하시오.
SELECT mem_name, mem_gender FROM member
WHERE mem_gender = 'M' OR mem gender = 'M';

- OR 연산 : 컬럼명 IN(값1, 값2 값3)
  성별이 남자이거나 여자인 사람의 이름과 성별을 출력하시오.
SELECT mem_name, mem_gender FROM member
WHERE mem_gender in('M', 'F');



유사어 검색 : _, %
_ : 글자 한 글자
% : 글자 수 제한 x

- 컬럼명 LIKE '%검색어%'

- 컬럼명 LIKE '%검색어'
- 컬럼명 LIKE '검색어%'


mem_name, mem_intro
예제1) 이름이 홍으로 시작하는 사람의 모든 정보를 출력하시오.
          SELECT * FROM member 
          WHERE mem_name LIKE '홍%';

예제2) 이름이 홍으로 시작하는 사람의 수를 출력하시오.
          SELECT COUNT(*) AS '홍으로 검색된 회원 수' FROM member 
          WHERE mem_name LIKE '홍%';

예제3) mem_intro 컬럼에 자기소개가 포함되어 있는 회원의 회원번호와 이름, 성별을 출력하시오.
SELECT mem_id, mem_name, mem_gender FROM member
WHERE mem_intro LIKE '%자기소개%';

예제4) mem_intro 컬럼에 자기소개가 포함되어 있는 회원의 회원번호와 이름, 성별을 출력하시오.
(단, 이름의 오름차순으로 정렬하시오.)

- 오름차순
SELECT mem_id, mem_name, mem_gender FROM member
WHERE mem_intro LIKE '%자기소개%'
ORDER BY mem_name ASC;

예제4) mem_intro 컬럼에 자기소개가 포함되어 있는 회원정보를 전부 출력하시오.
(단, 이름의 내림차순으로 출력하되 최근 2개만 출력되도록 하시오.)
SELECT * FROM member
WHERE mem_intro LIKE '%자기소개%'
ORDER BY mem_name DESC
LIMIT 2;

* 조건 + 정렬 + (LIMIT)

 

여기까지 금일강의내용 정리

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

느낀점 :

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

오늘의 결론

.

.

.

.

.

.

.

어리석은 자는 멀리서 행복을 찾고, 현명한 자는 자신의 발치에서 행복을 키워간다 -제임스 오펜하임

'DBMS' 카테고리의 다른 글

추씨의DBMS일기7편  (0) 2023.10.25
추씨의DBMS일기6편(국비Ver)  (0) 2023.10.25
추씨의DBMS일기4편(국비Ver)  (0) 2023.10.20
추씨의DBMS일기3편  (0) 2023.10.19
추씨의DBMS일기2편  (0) 2023.10.16