/*수치형 함수의 종류와 기능 설명
ㅈ함수들이 다 엑셀에 동일하게 존재한다
테이블에잇는 값이 아니라
한 숫자의 결과에대해서 결과값을 반환해주는 식의 sql을 작성해볼것임.
최소한의 문장은 select와 from으로 작성되어야 한다고 했음.
*/

-- 1. ABS(입력값) 절대 값 산출
    SELECT ABS (-1) AS COL1
      FROM ;  --이렇게 입력하면 결과가 나오지 않는다. 테이블 명을 입력 해줘야함.
    SELECT ABS (-1) AS COL1
      FROM DUAL ; --테이블을 사용하지않고 수치형에대한 결과를 연산해보려고 해도, 최소한의 구조는 잡아주어야 하기때문에 테이블은 DUAL로 입력.
                  --DUMMY TABLE이라고 해서 임시적인 변수를 사용해서 자리를 맞춰준다고 가볍게 생각.

-- 2. ROUND(입력 값, 자리수지정) 반올림
    SELECT ROUND (123.4567) AS COL1  --엑셀에서는 반올림 안할경우 옵션을 0으로 줘야했지만, SQL에서는 굳이 조건을 주지 않아도 넘어간다.(123.4567,0)
           , ROUND (123.4567, -1) AS COL2
           , ROUND (123.4567, 1) AS COL3
      FROM DUAL;
      
      SELECT salary 
           , salary/150
           , sqrt(power(round(salary/150), 2)) as rd1
      FROM employees
      ;

-- 3. MOD (입력 값, 나눌 수)
 SELECT MOD (10, 3) AS COL1
      FROM DUAL 
      ;
      
--4. SQRT (입력 값) -제곱근
 SELECT SQRT( 2 ) AS COL1
      FROM DUAL ;

-- 5. POWER(입력 값, 제곱 수)/????? 값이 8나오는데 이게맞나
 SELECT POWER (2, 3) AS COL1
      FROM DUAL ;
      
-- 6.  CEIL(입력 값)
 SELECT CEIL (123.4567) AS COL1  --양의자리에서 반올림
        , FLOOR (123.4567) AS COL2  -- 1의자리 이후 소수점 다 버림. 
      FROM DUAL ;
-- 7. FLOOR( 입력 값)

-- 8. TRUNC(입력값, 자리수)   --올림을 하지 않음. 정해진 자리 이후를 전부다 절삭하는것임.
  SELECT TRUNC(123.4567) AS COL1
        , TRUNC(123.4567, 2) AS COL2
        , TRUNC(123.4567, -2) AS COL3
    FROM DUAL;
    
--엑셀 기능에있는것들이 똑같이 작용한다.

사용자가 지정한 값을 가진 데이터들을 가져오려면
조건문where에서

@@Like는 문자열 조회할때 사용(패턴이나 원하는문자열포함하거나 원하는글자수 만족하는 데이터를 가져올수잇음)
@@In은 숫자와 문자열데이터 모두 사용 가능
column = 값1 AND column = 값2 AND ...을 짧게 썼다고 보면됨


SELECT *
  FROM 지역별설치현황;

SELECT 도로명주소, 전체카메라수, 비상벨설치대수, 유관기관연계여부
  FROM 지역별설치현황;
  
SELECT 시군구명 AS 서울시구   ---컬럼명을 정해준다.
      , 동리명 AS 서울시동
      , 전체카메라수
      , 비상벨설치대수
      , 유관기관연계여부
  FROM 지역별설치현황;
  
--구와 동을 이어본다(연결연산자)
SELECT 시군구명||' '||동리명 AS 서울시구동
 , 전체카메라수
 , 비상벨설치대수
 , 유관기관연계여부
FROM 지역별설치현황
WHERE 비상벨설치대수 >= 3 --비상벨 설치대수가 3대 이상인것
 AND 유관기관연계여부 = 'Y' ;
 
 --전체카메라수 5대이고 신림동인것
 SELECT 시군구명||' '||동리명 AS 서울시구동
 , 전체카메라수
 , 비상벨설치대수
 , 유관기관연계여부
FROM 지역별설치현황
WHERE (시군구명||' '||동리명) LIKE '%신림동%'
 AND 전체카메라수 >= 5;
 
SELECT 번지주소, 쓰레기단속용, 생활방범용, 교통단속용
 FROM 지역별설치현황
 --쓰레기단속용이 0으로보이는데 한개이상 존재하는 지 확인하려면
 WHERE 쓰레기단속용 > 0 ;
--
SELECT 번지주소, 쓰레기단속용, 생활방범용, 교통단속용
 FROM 지역별설치현황
 WHERE 번지주소 LIKE '%54번지'
 
 ;
 --
 SELECT 번지주소, 쓰레기단속용, 생활방범용, 교통단속용
  FROM 지역별설치현황
  WHERE 번지주소 LIKE '%중랑구%' 
        OR 번지주소 LIKE '%성북구%' 
        OR 번지주소 LIKE '%용산구%' AND 생활방범용 >= 5;
--키워드 탐색할때는 LIKE를 사용한다. 숫자+문자가 들어있는 구문에서 ? 문자열을 검색하는 LIKE는 IN을 쓸수없다. (숫자는가능) 다양한 조건 여러번반복시 OR LIKE 사용해야함.

--복합조건 검색 
SELECT *
 FROM 지역별설치현황 
 WHERE 시군구명 IN( '용산구' , '강남구' , '구로구', '중구') 
  AND 전체카메라수 > 3 AND 전체카메라수 <= 10
  AND 시도명 IS NOT NULL;
 
 

아침부터 해내서 뿌듯하당 ㅎ_ㅎ 
 
--복합논리연산자인 AND / OR / NOT : 원하는 행 선택하기
--논리연산자 활용하여 행제어하는시간
/*두가지 조건을 걸어서 일치하는것만 출력하게
*/

SELECT *
  FROM employees
 WHERE SALARY >= 10000
--  AND (department_id = '90' or department_id = '100'
--    OR department_id = '110' or department_id = '120' );
  --금여가 만보다 크고 AND는 하나의컬럼과 다른컬럼을 연결해주고, 동시에 성립한다는 의미. 
  ---WHERE절에서 문장을 이어줄때는 콤마가 들어가지 않는다. AND OR 넣어서 복합필터링 조건을 걸어줄수 있다.
  
--OR 사용할경우 쓸데없이 문장이 많아질수있음, 이럴경우 IN을 사용할수 있다.
AND (department_id NOT IN('90', '100', '110', '120'));   
--IN 조건 사용시 앞에 NOT이 붙은경우 이 여러 조건들이 모두 충족하지 않는 것들이 보여진다 =AND로 성립. (완전 반대)
/* IN=90 또는 100또는 110또는 120중 하나라도 충족하는 결과를 도출
  NOT IN=10,20,30,40 이 모두 아닌 결과 도출
*/

--이상 이하
SELECT * 
 FROM employees
 where salary BETWEEN 10000 AND 20000;
 
--초과 미만 
SELECT *
  FROM employees
  WHERE salary > 10000 AND  salary < 20000;
 
--10000미만 15000이상
SELECT *
  FROM employees
  WHERE salary < 10000 OR salary >= 15000; 
  
  
--초과 미만 + 부서번호가 30인것
SELECT *
  FROM employees
  WHERE (salary > 10000 AND  salary < 20000)
    AND department_id IN('30', '100');
    --- 컬럼안에 null로 나오는 칸은 데이터가 있는지없는지조차 확인할수 없는 부분. 
    --  이걸검색하는 조건은 IS NULL
SELECT  *
 FROM employees
 WHERE commission_pct is null;
   ---null 아닌부분 검색할때는 is not null

설치하고 직접 실습해보니까 재미있는거같다 따라하다보면 강의는 10분인데 훌쩍 넘어가버린다.ㅎㅎ 

/* where 절을 활용하여 원하는 형태의 행을 선택해보는 시간 
엑셀에 있어 필더링과 같은 기능을 한다고 생각하면 된다. 필터 설정하고 화살표방향 누르면 같음,같지않음,보다큼, 등등 다양한 연산자의 조건들이 나타암. 
문자인 경우에도 텍스트필터라고해서 강음,같지않음,포함 등등의 조건들도 있음
SQL 작성순서
    SELECT 컬럼명
      FROM 테이블명
    WHERE 조건 대상 컬럼명 연산자 비교값 

*/
--숫자 비교 연산자 ( =. !=, <>, ^=, >, >=, <, <=, BETWEEN A AND B)
-- 이중에 !=  <>  ^=  세가지는 같지 않다라는 표현이다.

--사원테이블의 급여가 10000인 대상자 정보 전체 출력
SELECT *
  FROM employees 
 WHERE salary = 10000
 ;
--급여가 10000이 아닌 사람
SELECT *
  FROM employees 
 WHERE salary <> 10000
 ;
 

--급여가 15000이 이상인사람
SELECT *
  FROM employees 
 WHERE salary >= 15000
 ;

--급여가 17000이 초과하는 사람
SELECT *
  FROM employees 
 WHERE salary > 17000
 ;
 
--급여가 17000이 미만인 사람
SELECT *
  FROM employees 
 WHERE salary <= 17000
 ;
 
 
 --해당범위 지정 BETWEEN
SELECT *
  FROM employees 
 WHERE salary BETWEEN 10000 AND 17000
 ;
 
--*****문자 비교 연산자 ( =, !=, 포함한다, 포함하지 않는다)

--문자에서 포함한다, 포함하지 않는다는 LIKE함수를 쓸수가 있음.  '%문자' 입력시 %뒤에 어떤게와도 상관없다. 

--성북 앞뒤에 어떤게와도 상관없다
SELECT *
    FROM 지역별설치현황
  WHERE 번지주소 LIKE '%성북%'
    ;
    
--서울로 시작하고 뒤에 어떤게와도 상관없다
SELECT *
    FROM 지역별설치현황
  WHERE 번지주소 LIKE '서울%'
    ;
--앞에는 상관없고 뒤에 번지로 끝나면 좋겠다. 
SELECT *
    FROM 지역별설치현황
  WHERE 번지주소 LIKE '%번지'
    ;
    
--포함하지 않는다는 어떻게 쓸까?
SELECT *
    FROM 지역별설치현황
  WHERE 번지주소 NOT LIKE '성북%'
    ;

 

오라클 설치파일도 비법노트에 들어있었다는걸이제알고..ㅎ_ㅎ 설치 포기할뻔

속이다시원하다 오늘도끝!

 

--SELECT절의 출력 제어하는 시간
--중복제거, 사칙연산, 연결연산자, 명칭변경에 대해 배웠음.

SELECT job_id, department_id, salary
FROM employees
;

--distint / unique 두가지 명령을 사용해서 특정 컬럼을 중복제거 해보겠다.
SELECT distinct job_id
    FROM employees;
    
SELECT unique job_id
    FROM employees;    
--distint / unique 실행시 결과가 같음

--만약에 두가지의중복을 같이 제거하고 싶을 경우.
SELECT distinct job_id, department_id
    FROM employees;
    
SELECT unique job_id, department_id
    FROM employees;

/* as를 이용해서 컬럼명을 바꿀수있다. 같은결과지만 다른이름의 컬럼으로 출력되는것 확인가능. 
중복 전체제어 되었고, 컬럼명을 바꾸는 방법이 아래 3개임. 
쌍따옴표를 통해서 컬럼 지정할 경우 제약사항이 몇가지 있음. 쌍따옴표 쓰지않고 출력시에는 파랑부분 명령어같은경우엔 컬럼명으로 지정할수 없음. 
또는 띄어쓰기를 해서 컬럼을 바꾸겟다 하는 경우는 무조건 쌍따옴표를써서 출력해야한다.
*/
SELECT distinct 시군구명 as 서울시구
    , 시군구명 as "S E L E C T"
    , 시군구명 구
    FROM 지역별설치현황;
    
    
SELECT job_id as "직업 ID"
    ,department_id as "부서 ID"
    FROM employees;
    
--연결연산자 사용시/ 하나의 컬럼으로 결합하여 출력하고싶다 하는경우. | "파이프"라고함. 연결연산자.
--너무붙어서 구분이 안갈경우 파이프 사이에 공백을 넣어준다. || > ||' '||
--공백은 ' '이걸로 나타냄. 바깥에 헤더부분에 컬럼명의 문구를 띄울때는 "문구" 이렇게 넣어야함.

SELECT distinct 시도명||' '||시군구명 "서울시 구"
    FROM 지역별설치현황;
    
--컬럼에 대한 사칙연산도 충분히 가능.
SELECT salary 
    , salary+1000 
    , salary-5000 
    , salary/10 
    , salary* 5
    FROM employees;

'📝수업후기 잊지말기 > 빡공단31기 SQL' 카테고리의 다른 글

빡공단 31기 SQL 8강  (0) 2023.02.08
빡공단 31기 SQL 7강  (0) 2023.02.07
빡공단 31기 SQL 5강  (0) 2023.02.05
빡공단 31기 SQL 4강  (1) 2023.02.04
빡공단 31기 SQL 3강  (0) 2023.02.03

C드라이브에 파일만들어서 SQL 파일 저장
그다음에 경로복사해서 본문에 붙여넣고 앞에\ 뒤에; 표시 붙여서 컨트롤+엔터
연습용 테이블을 하나 더 만들었음. ㄴ작성기창에 메모할경우

주석으로 메모할경우 -- 앞에 붙히면됨
/*
*/ 이걸로 주석달을수있음

실습용 파일 붙혀넣기 한것을 앞에 -- 달아서 주석으로 만들고

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER
순서가 어긋나면 절대 안된다
최소한의 SQL문 구성은 SELECT-FROM 임
SELECT 컬럼명
FROM 테이블명

엑셀에서 설명
더블클릭하고 엑셀 실행된 역할을 FROM절이 대신하고, 해당하는 열을 선택하는 역할을 SELECT가 하는것임
EX)
SELECT * <<테이블에 존재하는 모든 컬럼을 가져오도록 하는 것임.
FROM 지역별설치현황;

SELECT 법정동코드
탭키 누르고 번지주소
탭 + 전체카메라수
FROM 지역별설치현황;
이런식으로 여러 컬럼을 선택할수 있음.

<<참고사항>>
문장이 길어질때 오타를 찾기 힘든 경우가 있기때문에
처음에 SELECT FROM 작성할때는 대문자,
컬럼이나 테이블명이 나오는 위치에는 소문자로 표시하는게 눈에 쉽게 띄는편이다
컬럼이 여러개 이어질때는 쉼표로 표시된앞에 한칸씩 엔터를 띄어서 구간이 바뀌는 것을 표시해 주는게 나중을 위해 더 좋은 표현이다.!!
끝나는 문장마다 콜론으 작성해준다. 문장의 마침표 같은 느낌이다.
콜론이 오기 전 문장까지를 하나의 문장으로 인식하기때문에 SQL이 끝난다음에 콜론으로 마침표를 작성해주는 습관을 들이는게 좋다.

테이블 전체에대한 컬럼을 출력하고 몇가지 예시
SELECT SALARY, employees.*
FROM employees;
셀러리를 한번더 출력하고 뒤에 임플로이즈에 존재하는 테이블을 한번더 출력해줄경우 별표 앞에 파일명인 임플로이즈를 입력해준다!

SELECT 번지주소, 지역별설치현황.*
FROM 지역별설치현황;
번지주소가 컬럼이 두개이기때문에 뒤에 번지주소_1이라는 컬럼명이 새로 표시된다.


'📝수업후기 잊지말기 > 빡공단31기 SQL' 카테고리의 다른 글

빡공단 31기 SQL 8강  (0) 2023.02.08
빡공단 31기 SQL 7강  (0) 2023.02.07
빡공단 31기 SQL 6강  (0) 2023.02.06
빡공단 31기 SQL 4강  (1) 2023.02.04
빡공단 31기 SQL 3강  (0) 2023.02.03

필드 - 속성값을 부여하는 데이터
속성값으 형식은 수치,문자,날짜 , 메모 등이 있음
수집데이터의 형식에 따라 고정 길이/ 초기설정값을 갖게되는데, 주요데이터 형식에는 수치데이터를 저장하는 넘버, 날짜시간 저장하는 데이트타입
문자열을 저장하는 캐릭터

10자리형식의 문자로 가정
들어온 데이터가 다섯자리라면, 다섯자리는 공백으로 더해잊ㄴ다 캐릭터에서는
바차2에서는 10자리형식이 정해져도 입력된 크기의 데이터로 저장되게 된다.

레코드와 필드가 모여 구성된 데이터의 집합을 테이블이라 말함.
정보는 유무형의 데이터를 대상으로 기타분석작업을 거친후 가치있는 형태의 데이터로 만드는것
다양한 분석을 통해 정보를 만듬 >인덱스는 데이터베이스를 빠르게 조작하려고 만든 색인,목차임
책의 목차처럼 원하는 단위를 쉽고빠르게 찾아갈수있도록 도와주고 관리되는 영역.

키는 고유한 식별자 역할을 한다.
기본키 : 하나의 키로 최소성과 유일성을 만족하는 대상
테이블에서 오직 한개만 지정 가능, 기본키는 테이블 안에 유일하게 각 행을 구분할수있도록 고유하게 쓰임
null, 중복값을 허용하지 않는다.

외래키는 테이블과 테이블의 데이터 참조하여 서로의 데이터의 관계를 연결하는 것.
참조되는 열의 값은 테이블의 기본키로 설정되어있어야 하며
외래키는 참조되는 테이블의 기본키와 동일한 키와 동일한 속성을 가져야 한다.


'📝수업후기 잊지말기 > 빡공단31기 SQL' 카테고리의 다른 글

빡공단 31기 SQL 8강  (0) 2023.02.08
빡공단 31기 SQL 7강  (0) 2023.02.07
빡공단 31기 SQL 6강  (0) 2023.02.06
빡공단 31기 SQL 5강  (0) 2023.02.05
빡공단 31기 SQL 3강  (0) 2023.02.03

select부분에 집중하는 이유
실무자가 데이터를 배워야하는이유 
데이터베이스 내에서 정의하고 조작할수있음
표준언어이기때문에 다양한 분야에서 응용되고 호환된다
실무자가 sql 다룰수 있다면 효율적이고 능률적인 업무를 수행할수 있다. 

 

'📝수업후기 잊지말기 > 빡공단31기 SQL' 카테고리의 다른 글

빡공단 31기 SQL 8강  (0) 2023.02.08
빡공단 31기 SQL 7강  (0) 2023.02.07
빡공단 31기 SQL 6강  (0) 2023.02.06
빡공단 31기 SQL 5강  (0) 2023.02.05
빡공단 31기 SQL 4강  (1) 2023.02.04

+ Recent posts