본문 바로가기

SQL

(30)
#50 [SQL] DB 정규화 (제 1 정규화, 제 2 정규화, 제 3 정규화) 정규화 : DB 설계에 관련된 것 (선임개발자가 정의) 정규화 의미 : 테이블에 중복된 데이터가 없게 만드는 것 - 장점 : 깔끔한 설계 및 중복된 데이터 제거로 용량 절약과 성능 향상(건수가 줄어들어 속도 빠름) - 단점 : 정규화를 하면 1개의 테이블이 여러개로 쪼개져서 조인이 많이 일어나서 오히려 속도 느려짐 (조인을 3개 이상하면 속도 하락) 실무에서 사용하는 정규화 : 3단계 제 1 정규화 : 컬럼에는 오직 1개의 값만 들어가야 함 ex) 아래 설계가 있음 이름 나이 수강과목 홍길동 20 C, C++ => 수강과목의 값에 2개가 들어가있음. 제 1 정규화 위반 장길산 21 JAVA -> 수정 후 : 컬럼에는 오직 1개의 값만 들어가게 수정 이름 나이 수강과목 홍길동 20 C 홍길동 20 C++ ..
#49 [SQL] 모델링 (ERD 개념 / 관계 설정 / 모델링 용어 참고) 27_DB_모델링 (모델링 설계 직접 하진 않지만 봤을 때 이해는 해야함) - 모델링 : DB 설계(건축의 설계도, 청사진 등을 만드는 것) - 주로 선임(시니어) 개발자나 DBA가 작성함 - DB 모델링 툴(도구) : er-win 툴(s/w, 상용 100만원) - 온라인 무료 툴(도구) : ERDCloud (https://www.erdcloud.com/) 가입 후 로그인 (GOOGLE 로그인했음) 1. DB 모델링(그림) 개념 - ER-Diagram(ERD) - Entity-Relation-Diagram 1. 설계 용어 설명 - 테이블(엔티티:Entity), 컬럼(속성), 자료형및크기(도메인) - 스키마(DB에 생성되는 테이블, 인덱스 등 모든것을 총칭함) 2. DB 모델링 표기법 - IE 표기법[삼발..
#49 [SQL] PROCEDURE (수식, SELECT문, 조건문, 반복문), FUNCTION 26_Procedure : (참고) SQL 숙련자들 (중급 개발자, 3년 이상) 이 코딩함, 난이도 높음 - Oracle DB 에 저장됨 - 처리 속도 빠름 - 제어문(조건문/반복문), 변수/상수 있음 * 프로시저 정의 (3단계) 1. 선언부 : 변수 정의 , 변수값 받기(매개변수) 2. 실행부(BEGIN) : 본격적인 코딩 (3. 예외처리(EXCEPTION) : 예외 블럭 처리) 4. 종료(END) : 프로시저 끝 예제 1) 매개변수 2개의 합을 출력 [사용법] CREATE OR REPLACE PROCEDURE 프로시저명 ( 매개변수 in 자료형 (NUMBER, VARCHAR2, DATA) ... ) IS 변수 자료형(자리수); -- 선언부 : 변수 정의 BEGIN 실제 코딩 END; / [화면출력 함..
#49 [SQL] View 연습문제 25_View_Exam 연습 1) 20번 부서에(DNO) 소속된 사원의 사원번호와(ENO) 이름과(ENAME) 부서번호를(DNO) 출력하는 VIEW를 정의하시오.(VW_EMP_DNO) - 대상테이블 : EMPLOYEE CREATE OR REPLACE VIEW VW_EMP_DNO AS SELECT ENO, ENAME, DNO FROM EMPLOYEE WHERE DNO = 20; -- 뷰 조회 SELECT * FROM VW_EMP_DNO; 연습 2) 이미 생성되어 있는 위의 뷰에(1번뷰) 대해 급여(SALARY)도 추가하여 출력하도록 수정해서 재생성하세요 CREATE OR REPLACE VIEW VW_EMP_DNO AS SELECT ENO, ENAME, DNO, SALARY FROM EMPLOYEE; -- ..
#49 [SQL] View 24_View : 1개 이상의 테이블이나 다른 뷰를 이용해서 생성하는 가상의 테이블 ★ 1. 보안을 유지하기 위해 사용 ex) 실무 : 사원테이블(급여 : SALARY, 대외비(비밀)) 2. SQL 문을 미리 코딩해놓고 재활용 : 코딩 생산성 향상 예제 1) JOB 이 SALESMAN 인 사원테이블에서 ENO(사원번호), ENAME(사원명), DNO(부서번호), JOB(직위) 컬럼만 화면에 출력하는 뷰생성 (SCOTT로 접속) [사용법] CREATE OR REPLACE VIEW 뷰이름(컬럼명, 컬럼명2,...) : 생략가능 AS SELECT 출력컬럼명, 출력컬럼명2, ... FROM 테이블명 WHERE 조건식; CREATE OR REPLACE VIEW VW_EMP_JOB(ENO, ENAME, DNO, J..
#49 [SQL] 계정, 권한 연습문제 23_System_Role_Exam 연습 1) KBS라는 사용자를 생성하세요(암호는 pass) CREATE USER KBS IDENTIFIED BY pass; 연습 2) 기본적인 권한 부여를 하지 않으면 데이터베이스에 로그인이 불가능하므로, CONNECT, RESOURCE 롤과 CREATE VIEW 를 KBS 사용자에게 부여하세요. -- 로그인 테스트 : 계정명: kbs , 암호:pass, 서비스명: xepdb1 GRANT CONNECT, RESOURCE, CREATE VIEW TO KBS; 연습 3) 접속테스트 성공한 후에는 위에서 만든 유저 삭제하세요 ( 접속해제 후 삭제하기 ) DROP USER KBS;
#49 [SQL] 계정생성, 권한 부여, 동의어(SYSNONYM) 22_System_Role : 주로 DBA(관리자)의 역할 1. 유저 생성 : System(sys) 최고관리자만 가능 (거의 대부분의 작업을 수행 : 계정생성, 권한주기 등) 예제 1) usertest01 유저를 만들고 암호를 pass1라고 지정하세요 (암호에 특수문자 포함이면 " " 사용) [사용법] CREATE USER 계정명 IDENTIFIED BY 패스워드; CREATE USER usertest01 IDENTIFIED BY pass1; 2. 권한 부여 : GRANT 권한명 TO 유저명; 예제 2) 위에서 만든 usertest01 유저에 접속 권한을 주세요 [사용법] GRANT CREATE SESSION TO 유저명; : 접속 권한 주기 GRANT CREATE SESSION TO usertest01..
#49 [SQL] SEQUENCE, INDEX 연습문제 21_Sequence_Index_Exam 연습 1) 사원 테이블의(EMPLOYEE) 사원번호가(ENO) 자동으로 생성되도록 시퀀스를 생성하시오. 시퀀스 이름 : SQ_EMP , 시작번호 : 1, 증가 : 1, 최대값 : 100000 CREATE SEQUENCE SQ_EMP INCREMENT BY 1 START WITH 1 MAXVALUE 100000; 연습 2) 사원번호를(ENO) 시퀀스로부터 발급(부여)받으시오. - 임시 사원 테이블 : EMP01 - 컬럼명 : EMPNO NUMBER(4) PRIMARY KEY, ENAME VARCHAR2(10), HIREDATE DATE INSERT문을 이용해서 EMPNO에 시퀀스값을(1번에서 만든 SQ_EMP) 추가 하시오. (단, 이름이나 날짜는 임의로(가라성데이..