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

2023. 10. 25. 12:49DBMS

금일강의내용정리

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

Heidsql : GUI 환경에서 데이터베이스 관리하는 툴

1. 개발 프로그램(groupware -> grpdb -> 테이블)
 (1) View 구성(html, css, js)
 (2) form 되어 있는 view -> db생성 -> 테이블 생성
 (3) 테이블 확인 후 객체 생성
 (4) Spring에서 환경설정 후 작업


ex) CREATE TABLE employee(
emp_id int not null auto_increment,
emp_name varchar(5) not null,
emp_salary int(4) not null,
emp_hire date,
primary key(emp_id)
)auto_increment=100;

테이블 구조 : desc employee;


INSERT INTO employee VALUES
(NULL, '홍길동', 5, now()),
(NULL, '이영희', 100, now()),
(NULL, '김철수', 10, now());

SELECT - WHERE - ORDER BY - LIMIT
ASC : 오름차순, DESC : 내림차순

SELECT * FROM employee ORDER BY emp_id DESC;

* 집계함수는 결과가 1만 출력되므로 ORDER BY, LIMIT 사용 X
COUNT, DISTINCT, SUM, AVG, MAX, MIN

SELECT COUNT(*) AS '사원수' FROM employee;
SELECT SUM(emp_salary) as '급여의 총합' FROM employee;


이름과 급여만을 출력하시오.
단, 이름의 오름차순으로 정렬하시오.

SELECT emp_name, emp_salary FROM employee
ORDER BY emp_name ASC;

회원번호와 이름, 입사일을 출력하시오.
단, 입사일이 2023년 01월 01일 이전에 입사한 사원만 출력하시오.

SELECT emp_id, emp_name, emp_hire FROM employee
WHERE emp_hire >= '2023-01-01';

SELECT COUNT(*) AS '검색된 회원수' FROM employee
WHERE emp_hire >= '2023-01-01';

2023년에 입사한 직원의 수를 구하시오.
AND(컬럼 여러개)
SELECT COUNT(*) AS '2023년에 입사한 회원수' FROM employee
WHERE emp_hire >= '2023-01-01' AND emp_hire <= '2023-12-31';

2023년에 입사한 직원의 이름을 출력하시오.
(단, 이름을 기준으로 내림차순 정렬하시오.)
컬럼명 Between 조건1 AND 조건2;

SELECT emp_name FROM employee
WHERE emp_hire Between '2023-01-01' AND '2023-12-31'
ORDER BY emp_name DESC;

데이터와 데이터를 연결 : concat(데이터1, 데이터2)


연습출력
SELECT concat('010', '1234') as 'tel';

create table member(
tel1 010
tel2 1234
tel3 567
);

SELECT concat(tel1, '-', tel2, '-', tel3) as 'tel';

SELECT concat(emp_id, ' ', emp_name) as info FROM employee;


급여가 천만원 이상인 직원의 사번과 이름을 출력하시오.(단위 백만원)
SELECT emp_id, emp_name FROM employee
WHERE emp_salary >= 10;

사번이 101이고 이름이 홍길동인 사람의 사원정보를 출력하시오.(일치)
SELECT * FROM employee 
WHERE emp_id = 101 AND emp_name = '홍길동';

이름에 '철'이 포함되어 있는 사람의 이름을 출력하시오.
(유사 : WHERE 컬럼명 LIKE '%검색어%';)

성이 '김'인 사람이 몇명입니까?

SELECT count(*) FROM employee
WHERE emp_name LIKE '김%';

 

SELECT * FROM employee;

사원을 아이디의 내림차순으로 정렬하고 최근에 입사한 2명만 출력하시오.
SELECT * FROM employee ORDER BY emp_id DESC LIMIT 2;
=
SELECT * FROM employee ORDER BY emp_id DESC LIMIT 0, 2;

LIMIT 배열시작번호, 개수

사원을 아이디의 내림차순으로 정렬하고 입사일 제일 오래된 회원을 출력하시오.
SELECT * FROM employee ORDER BY emp_id DESC LIMIT 1, 1;


ex) 현대차(3), 기아(2), 쌍용차(1)
SELECT 회사명, 집계함수 FROM car
GROUP BY 회사명;

CREATE TABLE car(
company varchar(20) not null,
carName varchar(20) not null
);

등록된 전체 차종의 수는 10입니다.
SELECT COUNT(*) AS '등록된 전체 차종의 수는' FROM car;

요약된 회사의 차량 개수가 5보다 큰 것만 표시하시오.
Group by 일반컬럼 Having 집계함수;

현대차(개수)
SELECT * FROM car;

SELECT company, count(*) FROM car;

SELECT company, count(*) FROm car GROUP BY company;

SELECT company, count(*) as 'cnt' FROM car 
GROUP BY company
HAVING count(*) >= 5
ORDER BY company
Limit 0, 1;

현대차(3), 기아(2), 쌍용차(1)
SELECT company, COUNT(*) as cnt FROM car 
GROUP BY company
ORDER BY company ASC;

INSERT INTO car VALUES('현대차', '아반떼');
INSERT INTO car VALUES('현대차', '소나타');
INSERT INTO car VALUES('현대차', '제네시스');

INSERT INTO car VALUES('기아', '모닝');
INSERT INTO car VALUES('기아', 'K3');
INSERT INTO car VALUES('기아', 'K5');
INSERT INTO car VALUES('기아', 'K7');
INSERT INTO car VALUES('기아', 'K9');

INSERT INTO car VALUES('쌍용차', '렉스턴');
INSERT INTO car VALUES('쌍용차', '티블리');

 

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

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

느낀점 : 이따 저녁수업

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

오늘의 결론

.

.

.

.

.

.

.

위대한 정신을 가진 사람들은 생각을 논한다. 평범한 사람들은 사건을 논한다. 마음이 좁은 사람들은 사람들을 논한다. – 엘리너 루즈벨트

'DBMS' 카테고리의 다른 글

추씨의DBMS일기8편(국비Ver)  (0) 2023.10.26
추씨의DBMS일기7편  (0) 2023.10.25
추씨의DBMS일기5편(국비Ver)  (1) 2023.10.23
추씨의DBMS일기4편(국비Ver)  (0) 2023.10.20
추씨의DBMS일기3편  (0) 2023.10.19