본문 바로가기

728x90
반응형

배우기

(265)
[문제풀이] SQL | Oracle 연산자문제 1~10번 문제 1) EMP 테이블에서 급여가 1300에서 1700 사이인 사원의 성명, 업무, 급여, 부서번호(deptno)를 출력하여라. 문제 2) EMP테이블에서 사원번호(empno)가 7902, 7788, 7566 인 사원의 사원번호, 성명, 업무, 급여, 입사일자(hiredate)를 출력하여라. 문제 3) EMP테이블에서 입사일자가 82년도에 입사한 사원의 사 원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라. 문제 4) EMP 테이블에서 이름의 첫 글자가 ‘M’인 사원의 이름, 급여를 조회하라. 문제 5) EMP 테이블에서 이름의 두 번째 글자가 ‘L’인 사원의 이 름, 업무를 조회하라. 문제 6) EMP 테이블에서 보너스(comm)가 NULL인 사원의 사원 번호, 이름, 업무, 급여, ..
[복습] SQL | Oracle 엑셀 데이터를 DB에 import하는 방법(DB화) + 복습후기(20231027) 마지막으로 엑셀 데이터를 DB화 하는 법을 배웠다. 1. table 생성하기 미리 선생님이 공유해주신 화면으로 엑셀에 저장된 데이터 형태를 파악했기에 아래와 같이 작성할 수 있었다. 이렇게 작성한 후 실행하면 테이블이 만들어진다. 만일 실수로 생성하여 지우고 싶다면 drop table movie_table; 하면 생성된 테이블을 지울 수 있다. 그리고 생성된 table에 실데이터 값을 넣어보자. 2) table에 데이터 값 넣기 위 메뉴에 Tools 로 들어가 Load Tool 을 클릭한다. Load 탭이 생성된 것을 확인할 수 있으며 접속한 계정으로 Connect 한다. table에서 생성했던 MOVIE_TABLE을 찾을 수 있으며 이 table을 선택하면 우측 화면이 아래와 같이 나타난다. 일단 아까..
[복습] SQL | Oracle 날짜 함수: 날짜 추출 함수(extract, to_char) 앞선 글에서 emp 테이블에서 각 직원의 이름과 입사연도를 출력하라는 연습문제가 있었다. 이제까지 배운 문자 함수로는 풀 수가 없었다. 특히 substr로 풀기에는 아래처럼 접근이 적절치 않았다. 이러한 결말은 바로 다음과 같기 때문이다. 날짜 타입은 각 DBMS마다 기본 저장 포맷이 있다. 내가 테스트하고 있는 orcl이라는 현 DB는 YY/MM/DD라는 포맷을 가지고 있으며, 날짜 데이터 출력 시 사용한 개발 툴의 날짜 출력 포맷에 따라 출력된다. 내가 사용하는 개발 툴은 orange이며 이 경우는 YYYY/MM/DD 이다. 따라서 substr을 쓰면 원하는 포맷대로 출력이 되지 않는다. 먼저 내가 현 DB에 저장된 날짜 포맷이 YY/MM/DD임을 아는 경우 월을 추출하는 방법을 써보겠다. 우선 이 ..
[복습] SQL | Oracle 문자 함수: 문자열 치환(삭제) 함수(replace) 그리고 translate 문자열 치환(삭제) 함수인 replace는 replace(원본대상, 찾을 문자열[, 바꿀 문자열]) 형태로 변형된다. 아래 여러가지 방법으로 실습을 해보았다. replace('abcba', 'ab', 'AB') 는 abcba에서 앞의 ab를 AB로 바뀌었다. 여기서 보면 ab는 바꾸었으나 ba는 바꾸지 않았다. 즉 같은 문자열인 ab에만 영향이 간 것을 알 수 있다. replace('abcba', 'ab')는 바꿀 문자열을 생략한 것으로 바꿀 문자열을 생략하면 ab를 없앤다는 의미가 되므로 ab가 삭제된다. replace('abcba', 'ab', '')는 바로 직전 실습과 마찬가지로 ab를 작은따옴표 안으로 바꾼다는 의미인데 작은 따옴표 안에는 아무 내용도 없으므로(스페이스바로 띄운 공란 조차 없음) ..
[복습] SQL | Oracle 문자 함수: 문자열 삽입 함수(lpad, rpad), 문자열 삭제 함수(trim, ltrim, rtrim) 문자열 삽입 함수로 lpad, rpad가 있다. 활용 예시를 보면 아래와 같다. abcd라는 네 글자의 단어 길이를 10길이로 만들고 그 빈 공간을 *로 채워서 총 10길이로 만들 수 있다. lpad는 왼쪽, rpad는 오른쪽 공간을 채우게 된다. 잘 쓰지 않는 기능이나, 주로 줄맞추기 할 때 사용된다. orange에서는 공백과 영문 글자 사이즈가 달라 정렬이 잘 보이지 않으므로 cmd 창에서 실습해보면 아래와 같다. orange에서는 위와 같이 오른쪽 정렬이 잘 보이지 않고, 이렇게 cmd에서 보면 오른쪽 정렬이 되어있다. 이렇게 왼쪽정렬, 오른쪽 정렬할 때 사용하기도 하나 ★다음 활용 예시가 매우 중요하다. 예를들어 년: 2018 월: 2 일: 1 인 자료가 있다고 하자. 이 자료를 || 를 사용하여..
[복습] SQL | Oracle 문자 함수: 문자열 위치 함수(instr), 문자열 길이 함수(length) 지역번호를 추출하려고 하는 경우 지역번호가 두 글자인 것도 있고 세 글자인 것도 있다. 이 경우는 어떻게 접근해야 할까? 이럴 떄에는 문자열 위치 함수를 사용한다. 문자열 위치 함수는 instr이며, instr(원본대상, 찾을 문자열[, 시작위치] [, 발견횟수]) 형태로 사용된다. 시작위치 생략 시 처음부터 추출되며, 시작위치가 음수일 경우에는 거꾸로 스캔한다. ★역방향으로 스캔한다는 점은 substr과 다르므로 헷갈리지 말자. 또한 발견 횟수 생략 시 첫 번쨰로 발견되는 문자열의 위치를 리턴한다. 그리고 자리수를 추출하므로 리턴 데이터 타입은 숫자이다. 찾을 문자열이 없으면 0을 리턴하게 된다. 한 줄씩 해석하자면 instr('a#b#c#','#')은 #이 첫 번째로 발견되는 위치이므로 2를 리턴 i..
[복습] SQL | Oracle 문자 함수: 대소치환 함수(upper, lower, initcap), 문자추출 함수(substr) 먼저 함수란, input value와 output value의 관계를 정의한 객체이다. 그러므로 input value가 필요하고(떄에 따라 생략 가능, 여러 개도 가능) output value가 반드시 리턴된다. 참고로 input value가 없는 함수: select sysdate
[복습] SQL | Oracle 논리연산자와 기타연산자 + 복습 후기(20231026) 논리연산자 먼저 살펴보자. and: 모든 조건을 만족하는 대상 선택(교집합) or: 한 조건을 만족하는 대상 선택(합집합) not: 부정연산자(여집합) 부정연산자인 not의 경우에는 정해진 위치가 있다. - not between, not in, not like, is not null 예제) emp에서 10번 부서이면서 급여가 4000 이상인 직원의 이름, 부서번호, 급여 출력 예제) emp에서 job이 manager 이거나 clerk 이면서 급여가 2000 미만인 직원의 이름, job, 급여 출력 manager는 급여가 2000미만은 없나보다. manager가 되어야겠다. 논리연산자에는 우선순위가 있다. not > and > or 순이 되겠다. 마지막으로 기타연산자이다. 1) between A and B..
[복습] SQL | Oracle 테이블 레이아웃 확인 방법과 Null의 개념 desc 로 테이블 레이아웃을 확인할 수 있다. 여기서 컬럼명, 컬럼순서, Null 허용여부, 데이터 타입 확인이 가능하다. Not Null은 Null을 허용하지 않는데, 예를 들어 홈페이지 가입을 할 때 공란으로 두지 못하도록 하는 문항을 짤 때 쓰는 것과 비슷하다는 생각이 들었다. 분석을 할 때 Null 때문에 예기치 못한 상황이 발생하기도 한다. 월급에 보너스를 합한 값인 연봉이 궁금하다고 치자. Null을 포함한 연산은 그 값도 Null이 나오는 것을 알 수 있다. 즉, Null을 포함한 산술연산의 결과는 항상 Null이 리턴되므로 사전에 Null 치환이 필요하겠다.
[복습] SQL | Oracle 정렬(오름차순, 내림차순)과 연결연산자 || 정렬은 문자, 숫자, 날짜의 정렬시 사용한다. 기본정렬 순서는 오름차순(asc, 생략가능), 내림차순 정렬시 컬럼 뒤에 한 칸 띄고 dsec를 명시하면 된다. 여러 컬럼으로 정렬 시에는 컬럼명을 나열하면 된다. 아직 소수점 정리하는 법을 못 배워서 소수점이 있는 인상급여 자료도 있다. select * from student order by height; 의 위 문장에서 키가 같은 경우 몸무게가 큰 순서대로 표현하고자 한다면 이렇게 표현하면 된다. 이어서 연결연산자(||)를 살펴보자. 연결연산자는 분리된 두 문자열의 결합을 위하여 사용한다. 여기에서 표준몸무게 값들 뒤에 kg을 붙여주고자 한다면 이렇게 ||를 사용하여 kg을 붙여 줄 수 있다. 예제) emp 테이블에서 부서번호가 10번을 제외한 나머지 나..

728x90
반응형