2023. 10. 26. 12:24ㆍDBMS
금일강의내용정리
==========================================================================
1. Group by
부서별 직원 수를 출력하시오
use grpdb;
create table company (
com_id int not null auto_increment,
com_buseo varchar(10) not null,
com_name varchar(10),
primary key(com_id)
);
INSERT INTO company VALUES(NULL, '통신과', '이명철');
INSERT INTO company VALUES(NULL, '정작과', '안주영');
INSERT INTO company VALUES(NULL, '인사과', '권현지');
INSERT INTO company VALUES(NULL, '정작과', '주세현');
INSERT INTO company VALUES(NULL, '정작과', '임종서');
INSERT INTO company VALUES(NULL, '인사과', '방유미');
SELECT COUNT(*) as '전체 간부 수' FROM company;
SELECT COUNT(DISTINCT(com_buseo)) as '전체 부서 수' FROM company;
부서별 직원 수를 출력하시오 단, 직원수가 2명 이상인 부서만 출력하시오.
예시 - 인사과(3), 자재과(10), 임원수(2) 형태로 출력하시오.
SELECT com_buseo, count(com_name) FROM company
GROUP BY com_buseo
HAVING count(com_name) >= 2
ORDER BY com_buseo
DESC LIMIT 1, 1;
------------------------------------------------------------------------------------------------
MySQL 내장함수
create table scores(
family char(1),
name varchar(10),
passwd varchar(10),
score int,
birth date
);
INSERT INTO scores VALUES('h', '홍길동', '1234', 82.33333, '1990-01-01');
INSERT INTO scores VALUES('k', '김철수', '0000', 95.77777, '2000-01-01');
INSERT INTO scores VALUES(' ', 'null', 'null', 0, '2010-01-01');
점수가 0보다 크면 응시 아니면 미응시로 출력하시오.
SELECT name, if(score > 0, '응시', '미응시') as '응시/미응시', score FROM scores;
1990년대 생은 '90s', 2000년대 생은 '00s'로 표시하시오.
SELECT if(birth >= '2000-01-01', '90s', '00s') as 'Generation' FROM scores;
family 컬럼의 값을 대문자 : upper( ), Lower( )
SELECT UPPER(family) FROM scores;
trim 좌우공백제거
INSERT INTO scores VALUES('c', '코리아', ' 1234&', 99, '2023-01-01');
SELECT passwd FROM scores;
SELECT trim(passwd) FROM scores;
replace(컬러명, '원본', '바꿀내용')
SELECT passwd FROM scores;
SELECT REPLACE(passwd, '&', ' ') FROM scores;
SELECT REPLACE(trim(passwd), '&', ' ') FROM scores;
CREATE TABLE tel(
tell1 char(3),
tell2 char(4),
tell3 char(4)
);
INSERT INTO tel VALUES('010', '1234', '6789');
INSERT INTO tel VALUES('011', '5555', '5432');
010-1234-5678
이어붙이기(concat), 잘라내기(left, right), 바꾸기(6789 -> ****)
공백 제거
SELECT TRIM(LEFT(concat(tell1, ' - ', tell2, ' - ', tell3), 3)) AS '통신사' FROM tel;
휴대폰번호 끝자리만 ****
SELECT INSERT(TRIM(RIGHT(concat(tell1, tell2, tell3), 4)), 1, 4, '****') FROM tel;
SELECT concat(tell1, tell2, tell3) FROM tel;
------------------------------------------------------------------------------------------------
CREATE TABLE timer(
time1 datetime,
time2 datetime,
time3 datetime,
time4 datetime
);
INSERT INTO timer
VALUES(now(), sysdate(), curdate(), current_timestamp());
SELECT time1 FROM timer;
년 YEAR()
월 MONTH()
일 DAY()
SELECT YEAR(time1), MONTH(time1), DAY(time1) FROM timer;
날짜 포멧 변경 DATE_FORMAT(값, 형식)
날짜 포멧 변경 DATE_FORMAT(값, '%Y-%M-%D');
날짜 포멧 변경 DATE_FORMAT(값, '%Y.%M.%D');
날짜 포멧 변경 DATE_FORMAT(값, '%Y-%M-%D' %H:%I:%S');
SELECT time1 FROMAT timer;
SELECT DATE_FORMAT(time1, '%Y.%M.%D') FROM timer;
SELECT DATE_FORMAT(time1, '%Y/%M/%D') FROM timer;
SELECT DATE_FORMAT(time1, '%Y.%M.%D %H:%I:%S') FROM timer;
------------------------------------------------------------------------------------------------
테이블 조인(primary key, foreign key)
- 테이블에 null 값이 들어가지 못하게 함.
shop -> member, buyer
CREATE TABLE member(
userid varchar(20) not null,
passwd varchar(10) not null,
name varchar(20) not null,
regdate date,
primary key(userid )
);
CREATE TABLE buyer(
item_name varchar(20),
item_price int,
item_amount int,
item_regdate date,
user_id varchar(20) not null,
foreign key(user_id) references member(userid)
);
- 조인(연결해서 하나처럼 사용할 때)
1. pk(기본키 : 중요도 가장) : null 값, 중복 데이터 x
2. fk(외래키 : 자식 테이블)
- 외래키는 부모테이블의 기본키와 동일해야 한다.
(외래키로 지정하는 컬럼은 기본키의 데이터 타입, 사이즈와 동일해야 한다)
* member, buyer
삭제는 자식부터...
DROP TABLE buyer;
DROP TABLE member;
여기까지 금일강의내용 정리
==========================================================================
느낀점 : 피곤타
==========================================================================
오늘의 결론
.
.
.
.
.
.
.
한번의 실패와 영원한 실패를 혼동하지 마라 -F.스콧 핏제랄드
'DBMS' 카테고리의 다른 글
추씨의DBMS일기10편(국비Ver) (1) | 2023.10.30 |
---|---|
추씨의DBMS일기9편(국비Ver) (0) | 2023.10.27 |
추씨의DBMS일기7편 (0) | 2023.10.25 |
추씨의DBMS일기6편(국비Ver) (0) | 2023.10.25 |
추씨의DBMS일기5편(국비Ver) (1) | 2023.10.23 |