본문 바로가기
  • 문과생의 백엔드 개발자 성장기

|Playdata_study/SQL.Oracle12

210602_DB9-2 / DB ↔ 파이썬 연동 파이썬 이용, 오라클 DB작성 ✔ 연결 후 작성 및 실행 (기본) # -*- CODING : UTF-8 -*- import cx_Oracle dsn = cx_Oracle.makedsn("localhost", 1521, 'xe') # 오라클 주소 기입 db = cx_Oracle.connect('SCOTT', 'TIGER', dsn) # 오라클 접속 유저정보 cur = db.cursor() # 커서 객체 가져오기 sql_cmd = "CREATE TABLE day30 (id number, name varchar2(20))" cur.execute(sql_cmd) # SQL문장 실행 ## placeholder 를 콜론(:)을 사용한다. sql_cmd02 = "INSERT INTO day30 VALUES (:id,.. 2021. 6. 2.
210602_DB9 (SQL) / CURSOR Q1) 부서 번호 20번인 사원의 부서 번호, 이름, 봉급을 구하는 프로시저를 만들자 [워크시트] SELECT EMPNO, ENAME, SAL --INTO V_EMPNO, V_ENAME, V_SAL FROM EMP WHERE DEPTNO = 20; SET SERVEROUTPUT ON EXEC EMP_EX01 SELECT EMPNO, ENAME, SAL --INTO V_EMPNO, V_ENAME, V_SAL FROM EMP WHERE DEPTNO = 20; # ===== 1. 워크시트 창에 출력할 내용 생성 # ===== 2. EMP_EX01 프로시저 생성 (아래코드참고) SET SERVEROUTPUT ON EXEC EMP_EX01 # ===== 3. SET SERVEROUPTPUT ON 선언 후 EMP_.. 2021. 6. 2.
210601_DB8 (SQL) / 프로시저,함수 Q1) 1에서 10까지 반복하여 TEST1 테이블에 저장하라 (FOR문 사용) CREATE TABLE TEST1(BUNHO NUMBER(3), IRUM VARCHAR2(10)); CREATE TABLE TEST1(BUNHO NUMBER(3), IRUM VARCHAR2(10)); Table created. SET SERVEROUTPUT ON BEGIN FOR I IN 1..10 LOOP INSERT INTO TEST1 VALUES (I,SYSDATE); END LOOP; END; / SERVEROUTPUT ON -- 1번만 사용 BEGIN FOR I IN 1..10 LOOP -- 문법 점 두개 INSERT INTO TEST1 VALUES (I,SYSDATE); END LOOP; END; / PL/SQL p.. 2021. 6. 1.
20210531_DB7 (SQL) / VIEW, PL/SQL ✨ VIEW의 개념을 이해하고 기술할 수 있다. ✨ PLSQL 의 문법을 이해하고 실행할 수 있다. VIEW (뷰) 다른 테이블이나 뷰에 포함된 데이터의 맞춤 표현Tailored Presentation STORED QUERY OR VIRTUAL TABLE로 간주되는 데이터베이스 객체 하나 또는 하나 이상의 테이블/뷰에 포함된 데이터 부분집합을 나타내는 논리적인 객체 → 선택적인 정보만 제공 가능 자체적인 데이터를 포함하지 않는다. ※ 베이스 테이블: 뷰를 통해 보여지는 데이터를 포함하고 있는 실제 테이블 ✔ 사용 목적 및 장점 1. Restricted data access : 뷰에 접근하는 사용자는 미리 정의된 결과만 볼 수 있음 → 데이터 접근을 제한함으로써 중요한 데이터를 보호할 수 있다. 2. hi.. 2021. 5. 31.
210528_DB6 (SQL) / 제약조건 ✨ 제약 조건에 대해 살펴보고 컬럼 레벨과 테이블 레벨을 통해 구현할 수 있다. ✨ 제약조건을 수정하고 삭제할 수 있다. ✨ 제약조건의 정보를 확인할 수 있다. 제약 조건 NOT NULL : 해당 컬럼에 NULL을 포함 하지 않도록 선언 (컬럼) UNIQUE : 해당 컬럼 또는 컬럼 조합 값이 유일 하도록 함 (컬럼, 테이블) PRIMARY KEY : 식별 값 (컬럼, 테이블) REFERENCES TABLE(COLUMN) : 해당 컬럼이 참조하고 있는 (부모) 테이블의 특정 컬럼 값 들과 일치하거나 또는 NULL이 되도록 보장한다. (컬럼, 테이블) CHECK : 해당컬럼에 특정 조건을 만족시키도록 한다. (컬럼, 테이블) ※ PRIMARY KEY = UNIQUE + NOTNULL 제약 조건 확인 : D.. 2021. 5. 28.
210527_DB5(SQL) / 트랜잭션 Transaction Transaction 이란 논리 작업 단위를 형성하는 DML문의 모음을 말한다. 예를들어, 은행업무 데이터베이스에서 은행 고객이 보통 예금에서 당좌 예금으로 금액을 이체하는 경우, 보통예금 잔액 감소,, 당좌 예금 잔액 증가 및 트랜잭션 기록이라는 세 가지 작업을 묶어서 하나의 Transaction이라 한다. 이 세 가지 작업 중 하나라도 수행되지 못하면, 나머지 작업도 최소 되어야 만 해당 계정에 정확한 잔액이 유지될 수 있다. ✔ 트랜 잭션이란?? 하나 혹은 두 개 이상의 SQL 문들로 이루어진 작업의 논리적인 단위 하나의 트랜잭션 안의 모든 SQL은 동일한 효과를 내며 성공하면 전부 성공하고 실패하면 전부 실패한다. 하나의 트랜잭션은 커밋(COMMIT)될 수도 있고 롤백(ROL.. 2021. 5. 27.
210526_DB4 (SQL) / INSERT, UPDATE, DELETE, MARGE ✨ 테이블 데이터 조작을 구현하는 명령을 수행할 수 있다. ✨ INSERT문을 이용한 테이블 새로운 행 추가 ✨ UPDATE문을 기존 데이터 수정 ✨ DELETE문을 이용한 기존 제이터 삭제 ✨ MARGE 문을 이용한 테이블 병합. INSERT [형식] INSERT INTO TABLE([칼럼명, , ,]) → 칼럼명은 명시하지 않아도 됨 VALUES(값, , , ); - 테이블에 열 목록을 사용하지 않는 경우에는 테이블의 기존 열 순서에 따라 모두 나열해야 한다. - 열 목록은 테이블의 순서와 같을 필요는 없다. INSERT INTO EMP(DEPTNO, ENAME) VALUES (50, '888'); - VALUES절에 나열된 열의 순서와 개수는 INSERT 절에 나열된 열의 순서 및 개수와 같아야 한.. 2021. 5. 26.
210525 _DB3 (SQL) / 집합(SET)연산, 서브쿼리 ✨ 집합(SET) 연산자를 이해하고 기술 할 수 있다. ✨ SUBQUERY를 기술할 수 있다. 집합(SET)연산 SET 연산자는 두 개 이상의 질의 결과를 하나의 결과로 통합하며, SET 연산자를 포함하는 질의를 복합 질의라고한다. → 여기서 질의는 쿼리를 말함. UNION 두 질의 중 어느 것 하나에 의해서라도 선택된 모든 구분 (DISTINCT) 행을 결과로 한다. 양쪽 질의에 의해서 선택된 행을 모두 포함한다. 중복 값은 한번만 리턴하며, 첫번째 컬럼을 기준으로 ASC 정렬한다. UNION ALL 중복 행을 포함하여 두 질의 중 어느 것 하나에 의해서 선택된 모든 행을 결과로한다. DISTINCT 와 같이 사용 불가. INTERSECT 두 질의에 공통으로 선택된 모든 구분(DISTINCT) 행을 결.. 2021. 5. 25.
210524 _DB3 (SQL) / 분석함수, JOIN ✨ 분석함수 종류를 살펴보고 활용하자. ✨ join 또는 subquery를 살펴보고 구현해보자. 분석함수 분석함수를 사용하는 이유 : RDB상에서 컬럼과 컬럼연산, 비교, 연결은 쉬운반면 행과 행간의 관계를 정의하거나, 비교, 연산하는 것을 하나의 SQL로 처리하기 힘든점 프로그램 작성, 인라인 뷰를 이용해서 복잡한 SQL문 작성 분석함수를 도입해서 행간의 연산을 원활하게 연동한다. 단 중첩해서 사용하지 못하지만 서브 쿼리에서 사용할 수 있다. [형식] SELECT Analytic_Function(arguments) OVER ([PARTITION BY 절] [ORDER BY 절] [Windowing 절] 중 택1) FROM 테이블명; ✔ Analytic_Fungtion( ) : avg, count, la.. 2021. 5. 24.