반응형

Back-end/SQL 18

[스프링 핵심 원리] [01. 객체 지향 설계와 스프링] 05. 좋은 객체 지향 설계의 5가지 원칙(SOLID)

SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP: 단일 책임 원칙(Single responsibility principle) OCP: 개방-폐쇄 원칙(Open/closed principle) LSP: 리스코프 치환 원칙(Liskov substitution principle) ISP: 인터페이스 분리 원칙(Interface segregation principle) DIP: 의존관계 역전 원칙(Dependency inversion principle) SRP: 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으..

Back-end/SQL 2021.04.05

[SQL로 하는 데이터 관리] 03. Foreign Key 제대로 사용하기

Foreign Key 제대로 사용하기 지금 delivery 테이블의 order_id 컬럼을, customer_order 테이블의 id 컬럼을 참조하는 물리적 Foreign Key로 설정하려고 합니다. SQL 문을 써서 직접 Foreign Key를 설정해보세요. 이때 Foreign Key의 이름은 fk_delivery_order로 지으시고, 부모 테이블의 row가 삭제되거나, Foreign Key에 의해 참조당하는 컬럼의 값이 갱신될 때에 관한 정책은 ON DELETE의 경우 그 row를 참조하던 자식 테이블의 row들의 컬럼에 NULL이 들어가도록 설정하고, ON UPDATE의 경우 그 row를 참조하던 자식 테이블의 row들의 컬럼도 같은 값으로 갱신되도록 설정하세요. ALTER TABLE delive..

Back-end/SQL 2021.03.31

[SQL로 하는 데이터 관리] 02. 테이블 다루기

기존 테이블로 새 테이블 만들기 특히 20세 이상 30세 미만의 회원들이 남긴 리뷰들만 따로 beta_review_20s라는 이름의 테이블로 저장해두려고 합니다. 이 테이블의 컬럼 구조와 똑같은 구조를 가진 테이블을 새로 만들고 거기에 20대가 남긴 리뷰만 넣으면 될 것 같네요. SQL 문으로 직접 이 작업을 수행해보세요. CREATE TABLE beta_review_20s LIKE beta_review; INSERT INTO beta_review_20s SELECT * FROM beta_review WHERE age >= 20 AND age < 30; 본 내용은 Codeit의 '개발자를 위한 SQL 데이터베이스' 강의를 참고하여 작성한 내용입니다.

Back-end/SQL 2021.03.30

[SQL로 하는 데이터 관리] 02. 테이블 다루기

컬럼에 속성 주기 각 컬럼의 현재 데이터 타입 및 속성은 다음과 같습니다. id : INT NOT NULL AUTO_INCREMENT isbn : VARCHAR(50) NULL page : INT NOT NULL author : VARCHAR(20) NOT NULL kind : VARCHAR(10) NOT NULL location : VARCHAR(10) NOT NULL 이 테이블에 관해서 다음과 같은 작업을 수행하세요. a. isbn 컬럼에 NOT NULL 속성과 UNIQUE 속성 주기 b. page 컬럼에 0보다 큰 값이 들어와야 한다는 제약사항 설정하기(제약 사항 이름은 page_rule 이라고 짓기) c. kind 컬럼의 이름을 genre_code로 바꾸면서, 동시에 그 데이터 타입을 INT로 설..

Back-end/SQL 2021.03.30

[SQL로 하는 데이터 관리] 02. 테이블 다루기

컬럼 구조 변경 과제 이 테이블에 다음과 같은 작업을 하려고 합니다. a 작업 : name 컬럼의 이름을 model로 수정 b 작업 : size 컬럼의 데이터 타입을 INT에서 DOUBLE로 수정 c 작업 : brand 컬럼을 삭제 d 작업 : stock 컬럼(데이터 타입이 INT이고, NOT NULL 속성을 가진 컬럼) 추가 일단 실행기에서 DESCRIBE 문으로 현재 각 컬럼의 데이터 타입과 속성을 확인하시고, 그 다음 위의 4가지 작업을 순서대로 수행해보세요. 이때 작업 내용에 없는 컬럼의 기존 속성들은 그대로 유지해주세요. ALTER TABLE shoes RENAME COLUMN name TO model; ALTER TABLE shoes MODIFY size DOUBLE NOT NULL; ALTE..

Back-end/SQL 2021.03.29

[SQL로 하는 데이터 관리] 01. 데이터베이스와 테이블 구축

데이터 갱신과 삭제 (1) ‘남성정장 상하의 세트' 중고 물품이 너무 팔리지 않아서인지 판매자가 삭제해버렸습니다. 이 row의 is_deleted 컬럼의 값을 Y로 갱신해주세요. (2) is_deleted 컬럼의 값이 Y이면서, 그 게시글 업로드일이 2020년 7월 5일 기준으로 365일보다 더 오래된 상품들의 row를 물리 삭제하세요. *게시글 업로드 날짜는 upload_date 컬럼에 있습니다. 2020년 7월 5일 기준으로 365일보다 더 오래됐는지 확인하려면 날짜 함수를 사용해야 확인할 수 있습니다. SQL 토픽 1의 다음 노트의 내용 중 DATEDIFF라는 함수의 사용법을 읽고 직접 사용해보세요. UPDATE item SET is_deleted = 'Y' WHERE id = 3; DELETE F..

Back-end/SQL 2021.03.29

[SQL로 하는 데이터 관리] 01. 데이터베이스와 테이블 구축

데이터베이스와 테이블 생성 과제 2 한 분식집의 메뉴들의 정보를 저장하기 위해 food_menu 테이블을 준비했다고 합시다. INSERT INTO 문을 사용해서 아래 메뉴 정보들을 테이블에 채워보세요. (라볶이 / 5000 / 라면, 떡, 양파..) (치즈김밥 / 3000 / 치즈, 김, 단무지..) (돈까스 / 8000 / 국내산 돼지고기, 양배추..) (오므라이스 / 7000 / 계란, 당근..) id 컬럼에는 현재 AUTO_INCREMENT 속성이 적용되어 있기 때문에 굳이 값을 주실 필요가 없습니다. INSERT INTO food_menu (menu, price, ingredient) VALUES ('라볶이', 5000, '라면, 떡, 양파..'); INSERT INTO food_menu (men..

Back-end/SQL 2021.03.29

[SQL로 하는 데이터 관리] 01. 데이터베이스와 테이블 구축

데이터베이스와 테이블 생성 1 한 동물원에서 동물들을 관리하기 위해 animal_info라는 테이블을 만들려고 합니다. animal_info 테이블에는 다음과 같은 컬럼들을 두려고 하는데요. id : Primary Key로 사용할 컬럼, 데이터 타입 : INT type : 동물 종류(사자, 코끼리 등), 데이터 타입 : VARCHAR, 최대 길이 : 30자 name : 동물 이름(리오, 조이 등), 데이터 타입 : VARCHAR, 최대 길이 : 10자 age : 나이, 데이터 타입 : TINYINT sex : 성별, 데이터 타입 : CHAR, 최대 길이 : 1자 weight : 몸무게, 데이터 타입 : DOUBLE feature : 특징 묘사, 데이터 타입 : VARCHAR, 최대 길이 : 500자 en..

Back-end/SQL 2021.03.29

[SQL로 하는 데이터 분석] 06. 서브쿼리와 뷰를 활용한 유연한 데이터 분석

뷰와 데이터 분석 실무 (1) 일단, employee 테이블의 컬럼 구조를 살펴보는 SQL 문을 실행해보세요. (2) employee 테이블의 컬럼 구조를 확인했으면, 위에서 말한 두 컬럼을 제외한 컬럼들만 조회해서, v_emp 라는 이름의 뷰를 생성하는 SQL 문을 실행하세요. (3) (2)의 SQL 문 바로 밑에 v_emp의 모든 컬럼을 조회하는 SELECT 문을 적고 실행하세요. employee 테이블로부터 v_emp라는 뷰를 만들고, 잘 만들어졌는지 직접 확인해보는 과제입니다. DESCRIBE employee; CREATE VIEW v_emp AS SELCT id, name, age, department, phone_num, hire_date FROM employee; SELECT * FROM v..

Back-end/SQL 2021.03.28

[SQL로 하는 데이터 분석] 06. 서브쿼리와 뷰를 활용한 유연한 데이터 분석

서브쿼리 종합 (1) 이 세 테이블을 모두 이너 조인(inner join)하고, 거기서 price, star, email 컬럼만 조회하세요. (2) 그 SELECT 문을 derived table로 활용해보세요. (3) 그리고 derived table에는 copang_report(코팡 보고서)라는 alias를 붙여주세요. (4) 조회하는 컬럼은 다음과 같은 3가지 컬럼일 텐데요. 각 컬럼에 아래와 같은 alias를 붙여주세요. 1) MAX(copang_report.price) → max_price 2) AVG(copang_report.star) → avg_star 3) COUNT(DISTINCT(copang_report.email)) → distinct_email_count SELECT MAX(copang..

Back-end/SQL 2021.03.27
반응형
LIST