본문 바로가기

전체 글72

MySQL(그룹조회, 조인) 그룹 조회 GROUP BY 절 특정 칼럼 값을 기준으로 테이블의 전체 행을 그룹별로 나누기 위한 절 select {컬럼이름 [as 별칭], 그룹함수(컬럼명)} from 테이블이름 [where 검색조건][group by 컬럼이름] [order by 컬럼이름[정렬옵션] ] 그룹핑 전에 WHERE 절을 사용하여 그룹 대상을 먼저 선택 가능. GROUP BY절에는 반드시 칼럼 이름이 포함되어야 하며 별명 사용 불가. SELECT 절에서 집계 함수 없이 나열된 칼럼 이름이나 표현식은 GROUP BY 절에 반드시 포함되어야 함. GROUP BY 절에서 나열된 칼럼 이름은 SELECT 절에 명시하지 않아도 됨. SELECT 절에서 그룹 함수를 사용할 경우 group by 절에서 나눈 그룹 안에서 집계를 수행. 그룹 .. 2020. 6. 18.
MySQL(함수) SQL 함수 저장되어 있는 데이터를 집계하거나 조회, 저장, 수정하는 과정에서 값을 가공하기 위하여 제공되는 모듈화된 기능 각 DBMS에 따라 차이를 보이지만, 기본적으로 많이 사용되는 함수들은 공통으로 포함하고 있음. 함수의 사용방법 데이터 조회 시 -> 조회하고자 하는 컬럼의 값을 함수로 가공하거나 검색조건의 값을 지정할 때 사용 select 함수이름(컬럼이름) from 테이블이름 [where 함수가 적용된 검색조건] 문자열 관련 함수 함수이름 설명 left(값, 길이) 값을 길이의 글자 수 만큼 왼쪽부터 자름. right(값, 길이) 값을 길이의 글자 수 만큼 오른쪽부터 자름. substring(값, 시작위치, 길이) 값을 시작위치부터 길이만큼 자름. 길이가 주어지지않을경우 끝까지 자름. ※ 주의 .. 2020. 6. 18.
MySQL(연산자, 정렬) 연산자 WHERE 절에서 사용됨. BETWEEN 연산자 1) 조회 조건값의 범위를 설정하는 BETWEEN 연산자 BETWEEN 연산자는 특정 칼럼의 데이터 값이 하한값 'A'와 상한값 'B' 사이에 포함되는 행을 검색하기 위함. select 컬럼이름 from 테이블이름 where 컬럼이름 between A and B; BETWEEN 연산자는 두개의 비교식을 AND 연산자로 묶은것과 동일한 결과를 얻을 수 있다. select 컬럼이름 from 테이블이름 where 컬럼이름 >= A and 컬럼이름 NULL 데이터 확인. 3) 특정 컬럼에 저장된 데이터에 대한 Null 여부 검사 select 컬럼이름 from 테이블이름 where 컬럼이름 is [not] null; IS NULL 컬럼 값 중에서 NULL을 .. 2020. 6. 17.
MySQL(데이터베이스) 1. 데이터베이스 접근하기 1) 서버와 클라이언트 이름 설명 서버 다른 프로그램이 요청에 적절한 결과를 만들어 응답을 보내는 소프트웨어 클라이언트 서버에 접속해 요청을 보내는 소프트웨어, 서버의 통신규격을 따라야 함. 예) 웹 크롤링 할때, 파이썬(클라이언트) 에서 OpenAPI(서버)에게 URL형태로 요청을 하면 OpenAPI는 json형태로 응답을 한다. 2) 데이터베이스 서버 MySQL, Oracle, MSSQL과 같은 DBMS는 다른 프로그램의 요청에 따라 데이터를 조회, 입력, 수정, 삭제하고 그에 따라 결과를 돌려주는 역할을 하므로 "데이터베이스 서버" 라 한다. 웹 브라우저의 종류가 다양하듯 MySQL에 접속하기 위한 클라이언트도 다양함. 3) Excel과의 비교 Excel DBMS 속성 *.. 2020. 6. 17.
JAVA(fileIO, JSONObject) java.io.File File 클래스는 파일 또는 폴더에 대한 정보를 제공하는 클래스. 파이썬에서 os 클래스와 비슷하다고 보면됨. File 클래스의 객체는 정보를 조회하고자 하는 파일이나 폴더의 경로에 대한 문자열을 생성자 파라미터로 전달하는 형태로 만들 수 있음. 이 때 파라미터로 전달되는 경로가 실제로 존재하지 않더라도 File 객체의 생성이 가능함. 경로 설정하기 운영체제간의 호환성 유지를 위한 '/' 의 사용 경로 설정시 윈도우에서는 역슬래시()를 사용하지만 이 경우 '\'의 형식으로 사용해야하고, 가급적 다른 운영체제와의 호환성을 위해 '/' 를 사용하는것이 좋음. 절대 경로 작업 디렉토리와 관계없이 절대적인 위치를 의미하는 경로 리눅스 예시 : /.. 2020. 6. 16.
JAVA(예외처리, 날짜처리, 컬렉션) 예외상황 : 에러가 발생하여 실행을 못하는 것. 에러의 종류 컴파일 에러 소스코드 구문오류로 인한 컴파일 불가. 이클립스에서 빨간색밑줄로 표시됨. 프로그램이 실행되기전에 발견되므로 상대적으로 수정에 용이함. 런타임 에러 구문상 에러는 없으나, 실행과정에서 다양한 경우의 수에 대응하지 못하여 발생하는 예외상황. 런타임 에러시 프로그램 강제종료. 우리가 흔히 말하는 프로그램 에러는 대부분 런타임 에러에 해당. 런타임 에러 종류 논리오류 논리적 모순이 생기지 않도록 코드를 작성해야 함. 자바가상머신 자체 오류 (메모리 과다사용) 프로그래머가 책임 질 수 있는 수준의 오류가 아님. 예외 프로그램 실행 중에 발생할 수 있는 예기치 찮은 사건으로, 프로그래머의 노력으로 처리가능. 자바가상머신은 프로그램 실행중에 예.. 2020. 6. 15.
JAVA (Static, 익명클래스) Static 클래스 설계 시, 모든 객체에서 공통적으로 사용해야 하는 멤버변수 앞에 static을 붙인다. 메모리를 효율적으로 사용이 가능하다(객체 1개당 4byte 생성) 일반메서드 -> static메서드 호출가능, static메서드 -> 일반메서드 호출불가. static은 프로그램 전체에서 사용 할 수 있는 전역변수 라 생각 해도 무방. 고정영역 : 프로그램이 작동하는 동안 할당되는 영역 (설치된파일, 프로그램) 코드영역 프로그램의 코드가 저장되는 영역 CPU가 하나씩 가져가 실행한다. 데이터영역 전역변수 와 static 으로 선언되는 변수 이 영역에 할당되는 변수들은 프로그램 시작과 동시에 메모리 공간이 할당되어 종료될 때 까지 남아있는다. 동적영역 : 소스코드가 실행될 때 할당되는 영역 (소스코드.. 2020. 6. 11.
JAVA(추상화, 인터페이스) Override 처리의 문제발생 가능성 '@Override' 키워드를 사용하지 않고 메서드 재정의 과정에서 메서드이름에 오타가 발생하더라도 에러가 아닌 새로운 메서드로 인식. '@Override' 키워드를 사용하더라도 자식클래스를 구현하는 개발자의 실수로 인해 부모의 기능이 재정의 되지 않으면 다형성 구현 실패. 추상화 위 와 같은 문제발성 가능성을 없애고자 부모클래스를 상속받은 경우, 부모의 특정 메서드들을 무조건 재정의 하도록 하는 기법 자식클래스들이 재정의 해야 할 메서드를 알려줌으로써 가이드 의 역할을 할 수 있음. 추상화는 Java클래스를 작성하기 위한 설계도 를 소스코드형태로 제시하는 역할. 추상클래스 추상메서드를 포함한 클래스 // 추상 클래스의 정의 - 'abstract' 키워드 사용 pu.. 2020. 6. 10.
JAVA(객체형변환, 객체배열) 객체 형변환 // 형변환 규칙 부모클래스 객체이름 = new 자식클래스(); 객체 참조변수의 경우에도 형변환이 이루어짐. 위 소스코드에서 왼쪽 항(Parent)과 오른쪽 항(Child)의 객체 유형이 다른 경우, 서로 상속관계에 있고 왼쪽객체(Parent)가 오른쪽 객체(Child)의 상위 클래스인 경우에만 암묵적 형변환 이 일어난다. 암묵적 형변환 암묵적 형변환이 되면 자식클래스가 부모클래스에게 상속받은 기능만 사용하도록 제한 주의할 점 : 원래 자식클래스의 기능을 사용하지못하게 하는것이지 없애는것 은 아니다. 명시적 형변환 // 명시적 형변환 방법 부모클래스 객체이름 = (부모클래스) 자식클래스; 부모클래스의 객체를 자식클래스 형태로 변환 명시적 형변환 조건 객체가 최초 생성될 때 자식클래스형태로 생.. 2020. 6. 10.