본문 바로가기

분류 전체보기273

[MySQL] 기본 문법 - 4 (Join 개쉬움) - SELECT * FROM program, teacher - 이렇게 하면 가능한 모든 조합의 행을 다 뽑아주므로 필터링을 해야한다. - SELECT * FROM program, teacher WHERE program.teacherID = teacher.teacherID ORDER BY program.teacherID - 이런식으로 해야하는데, JOIN을 주로 사용한다. 1. INNER JOIN : TABLE 두개 합치기 - 사용법 - 응용 예시 program teacher product INNER JOIN 예시 결과물 - teacherID와 productID가 중복되는 것을 볼 수 있는데, 중복을 제거하려면 * 대신에 필요한 열만 선택해서 가져오면 된다. 2. LEFT, RIGHT JOIN : 테이블.. 2023. 5. 4.
[MySQL] 기본 문법 - 3 (정규화 개쉬움) 1. SQL DDL(Data Definition Language) - TABLE 삭제 : DROP TABLE 테이블명 - COL 추가 : ALTER TABLE 테이블명 ADD 컬럼명 타입 옵션 - COL 수정 : ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 타입 옵션 - COL 삭제 : ALTER TABLE 테이블명 DROP COLUMN 컬럼명 2. 제약조건 (Constraint) : 옵션자리에 들어가는 것들 - NOT NULL : 빈 값 금지 - UNIQUE : 중복 금지(행마다 달라야함) - CHECK(조건식) : 조건식에 맞아야함 - PRIMARY KEY : _id 같은 고유값(고유 행을 구분하기 위한 값), NOT NULL과 UNIQUE가 자동으로 부여된다. - AUTO_INC.. 2023. 5. 4.
[MySQL] MySQL 기본 문법 -2 1. DATA Analysis - MAX : SELECT MAX(Column명) FROM table명 - MIN : SELECT MIN(Column명) FROM table명 - AVG(평균), COUNT(개수) 도 가능하다. - AS '새이름' 으로 출력 column 명을 변경할 수 있다. cf) 이미 인덱스가 존재하는 경우 최대/최소값을 구하는 건 정렬이 빠를 수 있다. - 특정 그룹의 연산 응용 : SELECT user_rank, MAX(price) FROM table명 WHERE user_rank = 'vip' - 중복 제거(DISTINCT) : SELECT AVG(DISTINCT price) FROM table명 2. DATA 조작 후 출력하기 - 산술연산 : SELECT price*100 FRO.. 2023. 5. 4.
[MySQL] MySQL 기본 문법 - 1 1. Database - DB의 기본 개념은 알고있다고 가정한다. 자세한 개념과 설계, 용도와 장단점 등의 세부사항 등에 대해서는 심화편에서 정리한다. 2. MySQL - 가장 많이쓴다. Mac도 지원한다. Oracle , Postgre 가 뒤를 잇는다. - RDBMS 이며, 무난무난하다. 3. 띄우기 : mysql -u root -p - mysql : 접속을 위한 명령어 (MySQL 클라이언트를 실행) - -u : user의 축약어로 사용자 이름을 지정하는데 사용 - root : 사용자 이름, root사용자는 가장 높은 권한을 가진다. - -p : password의 축약어로, 사용자가 암호를 입력하도록 요청한다. 4. DB, TABLE 만들기 1) DB - CREATE DATABASE db이름 옵션; .. 2023. 5. 4.
[Refactoring] 변수 추출하기 1. 개요 - 지역변수를 활용해 표현식을 쪼개서 관리하기 쉽게 만든다 - 표현식에 이름을 붙이는 것 - 함수 추출하기와 상당히 유사하다. - 반대로 작업하면 변수 인라인하기이다. 2. 절차 - 불변 변수를 하나 선언하고 이름을 붙일 표현식의 복제본을 대입한다. - 원본 표현식을 새로 만든 변수로 교체한다. - 테스트 - 표현식을 여러 곳에서 사용한다면 변수로 바꿔준다. - 주기적으로 테스트해준다. 3. 예시 - 주문수량 * 개별가격 부분을 추출해보자 - 다음은 수량 할인 / 배송비 부분을 추출해본다. - 주석은 지워도 된다. 리턴 뒤 표현식 자체가 주석처럼 이해하기 쉽게 정리되었기 때문이다. 4. 예시 2 - OOP에서 - 변수로 추출할 수도 있지만, 메서드로 추출할 수도 있다. - 덩치가 큰 클래스에서.. 2023. 5. 3.
[Refactoring] 함수 인라인하기 1. 함수 인라인하기 : - 함수의 본문이 제목보다 읽기 명확한 경우에는 함수제목이 거슬릴 뿐이다. 함수를 인라인으러 넣어버리는 작업을 행하기도 한다. - 이전 단계에서 함수 추출하기의 반대 행위이며, 함수의 목적과 행위의 흐름을 파악하기 좋은 방향으로 추출 혹은 인라인을 진행한다. - 좋은 코드는 컴퓨터가 읽기 좋은 코드가 아니고 사람이 읽기 좋은 코드이다. 그래서 이짓거리(리팩터링)를 하는거다. - 간접호출을 너무 과하게 쓰는 코드도 인라인 대상이다. 위임관계가 복잡하게 얽혀 있으면 인라인 해버려서 차라리 한눈에 파악이라도 하는 방향이 낫다. 2. 함수 인라인 절차 1) 다형 메서드인지 확인한다 : 다형메서드란 동일한 이름을 가지지만 호출되는 객체의 유형에 따라 다른행동을 수행하는 메서드이다. - 서.. 2023. 5. 1.
[Refactoring] 함수 추출하기 1. 함수 추출하기 - 목적과 구현을 분리하는 방식을 기준으로 함수를 추출하는 방법 - 함수의 호출이 많아져 성능이 저하될까 걱정하는 부분에 대해서는 일반지침을 따르자. - 성능최적화의 일반지침 : "최적화를 할 때는 두 규칙을 따른다. 첫 번째, 하지마라. 두 번째, 아직 하지마라." - M. A. 잭슨 - 이름짓기 : 함수 추출의 가장 핵심적인 부분이다. 목적과 하는 일에 대해서 가장 직관적인 이름을 지어라. - 함수의 이름은 나를 당장이라도 때릴 수 있는 사람이 내 코드를 유지/보수 해야된다고 생각할 정도로 확실하고 명확하게 짓는다. 2. 함수 추출하기의 절차 1) 함수를 새로 만들고 목적을 잘 드러내는 이름을 붙인다. ('무엇을' 하는지가 드러나야 한다. '어떻게' 가 아니다. 추상화의 영역이다... 2023. 5. 1.
[JS] 맨날 까먹는 for 반복 관련 문법 다시 총정리 let arr = [1, 2, 3, 4, 5]; let obj = {a: 1, b: 2, c: 3}; 1. for loop : 자유롭게 정해서 순회 for (let i = 0; i < arr.length; i++) { console.log(arr[i]); } 2. for of : 배열의 각 요소 순회 (배열) for (let val of arr) { console.log(val); } 3. for in : 객체의 각 key 순회 (객체) for (let key in obj) { console.log(key, obj[key]); // a 1, b 2, c 3 } 4. .forEach() : 함수형 프로그래밍 스타일을 따른다. (배열) arr.forEach(function(val, index) { conso.. 2023. 5. 1.