본문 바로가기

SQL

(21)
SQL [20] - PL/SQL 1. PL/SQL이란? 오라클에서 제공하는 프로그래밍 언어 일반 프로그래밍 언어적인 요소를 다 가지고 있어서 실무에서 요구되는 절차적인 데이터 처리를 다 할 수 있다. 특히 SQL과 연동되어 막강한 기능을 구현할 수 있다. 2. PL/SQL의 구조 선언부(Declare) / 실행부(Begin) / 예외처리부(Exception)로 구성된다. Declare - 모든 변수나 상수를 선언하는 부분 Executable - 제어문, 반복문, 함수 정의 등의 로직을 기술함 Exception - 실행 도중 에러 발생시 해결하는 문장들을 기술함 ** PL/SQL의 결과를 출력해보기 위해서는, SET SERVEROUTPUT ON; 명령어를 통하여 출력 기능을 활성화해야 합니다. -- 예시 양식 Declare vno num..
SQL [19] - Sequence -- 오라클에서만 사용됨 -- 자동 번호 증가 객체 -- 2개의 구문 밖에 없음 -- 1) 시퀀스이름.nextval : 다음 번호 리턴 -- 2) 시퀀스이름.currval : 현재까지 최종 번호. 세션에서 반드시 nextval 사용 이후에 사용 가능함 1. 시퀀스 생성 (1) 테이블 생성 no, name 컬럼을 가진 test111 테이블 생성하기 create table test111 ( no number(4), name varchar2(30) ); (2) 조회 select * from test111; (3) test111 테이블에서 사용한 시퀀스 생성 create sequence test111_no; (4) test1 테이블에 시퀀스 nextval을 이용하여, 순번 데이터를 저장 insert into t..
SQL [18] - 가상 테이블 View 가상 테이블 : 물리적으로 메모리 할당이 없다. 테이블과 같이 조인 가능, from 구문에 기술할 수 있다. DB 내 개별 사용자로 접속시 view 생성 권한이 처음에는 없다. 그래서 처음에 오류가 발생한다. ㄴ 관리자 계정으로 개별 사용자에게 view 생성 권한을 받아야 함 ㄴ 관리자 계정에서 grant create view to 사용자 ; 라는 구문을 입력해줘야 함 1. 뷰 생성과 수정하기 (Create or Replace) -- Quiz. 사원 테이블에서 사원번호, 사원이름, 직업 정보만 조회할 수 있는 view_emp 뷰 생성하기 (1) 뷰생성 (create는 뷰생성, replace는 존재하는 뷰를 수정하는 구문인데, create or replace로 보통 사용함) create or replace..
SQL [17] - DDL(create, alter, drop, truncate)과 제약조건 Table을 생성, 구조 변경, 테이블 제거, 데이터만 제거하는 명령어입니다. Transaction 처리는 불가능하며, auto commit됩니다. (1) Create : 테이블 생성 (2) Alter : 테이블 수정 (3) Drop : 테이블을 제거(테이블 제거 or 테이블에 저장된 데이터 삭제) (4) Truncate : 테이블의 모든 데이터 삭제 (테이블은 삭제 x) 제약조건이란, 테이블의 컬럼에 들어갈 값들에 조건을 설정해주는 것이다. 예를 들면, 아래 테이블에서 순번 테이블은 필수로 들어가야할 값이기 때문에 NULL 값이 들어가면 안된다는 제약 조건을 걸어주어야 한다. (not null) 또한, ID는 다른 사람의 ID와 중복되면 안되기 때문에, 유일 값으로 지정해주어야 한다. (unique) ..
SQL [16] - Delete 조건에 맞는 레코드 삭제 delete [from] 테이블명 -- [ ] 안의 내용은 생략이 가능하다는 뜻입니다. [where 조건문] ; ** where 조건문이 없는 경우 모든 테이블의 레코드가 삭제되니 주의해야합니다. Quiz. dept3 테이블에서 부서코드가 9000번대인 부서의 정보를 삭제하기 (1) 삭제 전 데이터 조회 select * from dept3 where dcode between 9000 and 9999; (2) 부서코드 9000번대인 dept3의 데이터 삭제 delete from dept3 where dcode between 9000 and 9999; (3) 삭제 후 데이터 조회 select * from dept3 where dcode between 9000 and 9999;
SQL [15] - Update 기존 레코드의 컬럼 값을 변경해주는 명령어 update 테이블명 set 컬럼명1 = 값1, 컬러명2 = 값2, ... [where 조건문] ㄴ 변경되는 레코드를 선택하는 조건 / where이 없으면 모든 레코드를 수정합니다. Quiz. 교수 테이블에서 직급이 조교수인 교수의 보너스를 99만원으로 수정하기 (1) 수정 전 데이터 조회 select name, bonus from professor where position = '조교수'; (2) 포지션이 조교수인 레코드의 보너스를 99로 모두 수정하기 update professor set bonus = 99 where position ='조교수'; (3) 수정 후 데이터 조회 select name, bonus from professor where positi..
SQL [14] - Insert 새로운 레코드를 추가하는 명령어 Insert into 테이블 [(컬럼명1,컬럼명2...) ] values (값1,값2...) ; 컬럼명 생략시 데이터베이스에 설정된 스키마 순서대로 입니다. 컬럼명 생략시 반드시 모든 컬럼을 스키마에 정의된 순서대로 값을 설정해야합니다. -> 다만, 권장하지 않는 방식입니다. ​ -- 컬럼명을 기술해야 하는 경우 1. 모든 컬럼에 값을 입력하지 않는 경우 2. 스키마의 순서를 모르는 경우. 순서를 개발자가 지정할 때 3. db구조가 자주 변경될 때 -- Quiz. dept2 테이블에 9000번 부서를 추가하기 (1) 추가 전 데이터 셋 조회 select * from dept2 ; (2) 데이터 추가 insert into dept2 (dcode,dname,pdept,area..
SQL [13] - SUB QUERY 서브 쿼리 (단일행, 다중행) select 구문 내부에 select를 사용하는 것입니다. (1) 단일행 서브쿼리 : 서브쿼리의 결과가 1개인 경우. 사용 가능 연산자 : = , > , = , = (select sal from emp where ename = 'SCOTT') ; -- Quiz. 김진욱 학생보다 높은 학년의 이름, 학년, 학과번호, 학과명 출력하기 1단계 : 김진욱 학생의 학년을 출력하기 (단일행 서브쿼리) select grade from student where name = '김진욱'; 2단계 : 위의 구문을 where 조건에 이용하여 위의 데이터 조회하기 (서브쿼리식은 괄호로 묶어줘야합니다.) 다만, 해당 문제는 이름,학년,학과번호는 student 테이블 / 학과명은 department 테이블에 존재하는 데이..