데이터베이스14 트리거 Trigger 트리거 Trigger 트리거는 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생하 때마다 자동적으로 수행되는 사용자 정의 프로시저이다. 트리거는 TABLE과는 별도로 DATABASE에 저장된다. 트리거는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의될 수 있다. 트리거는 SQL의 제약조건 방법을 통해 명시할 수 없는 무결성 제약조건을 구현하고, 관련 테이블의 데이터를 일치시킬 때 주로 사용된다. 제약조건과 함께 데이터 무결성을 지키는 하나의 방법으로써 특정 이벤트에 대해서 연속적으로 자동 동작하는 특수한 형태의 저장 프로시저라고 볼 수 있다. 일반적으로 사용처는 많지만 예를 들어보자면 "입고"테이블에 새로운 제품이 들어왔을 때 그 수량을 "재고"테이블에 자동으로 반영되게 하는.. 데이터베이스/Oracle 2024. 4. 9. Sequence 시퀀스 오라클에서는 자동 증가 컬럼을 사용할 수가 없다. 다른 DB에서는 컬럼 자체에 옵션이 있으나, 오라클에서는 컬럼의 값을 증가시키기 위해서는 MAX(컬럼) + 1 또는 시퀀스를 사용하여 일련번호를 부여해야 한다. 시퀀스 사용전 방법 1. count를 이용하는 방법 -> 에러발생 insert into board(boardid, title) VALUES ((select count(*) from BOARD)+1,'1번글'); insert into board(boardid, title) VALUES ((select count(*) from BOARD)+1,'2번글'); insert into board(boardid, title) VALUES ((select count(*) from BOARD)+1,'3번글'); .. 데이터베이스/Oracle 2024. 4. 4. view (뷰) 뷰(View) 뷰(View)는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체입니다. 실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할 수 있습니다. 또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있습니다. 뷰는 실제로 데이터를 저장하고 있지는 않지만 DML 작업이 가능한 가상의 테이블이라고 생각하면 된다. 뷰(View)의 사용 목적 여러개의 테이블에서 필요한 정보를 뽑아 사용할때가 많습니다. 이때 좀 더 편리하게 사용할 수 있는 방법중의 하나가 바로 뷰입니다. 뷰를 사용하면 복잡한 질의를 쉽게 만들어 줍니다. 여러테이블의 JOIN과 GROUP BY 같은 같은 복잡한 쿼리를 view로 저장시켜놓으면 다음부터는 저장한 view.. 데이터베이스/Oracle 2024. 4. 4. 가상컬럼 가상 컬럼 하나의 테이블에 존재하는 다른 컬럼들을 이용하여 새로운 값을 만들어 내는 것 ( Virtual Column은 테이블에있는 하나 이상의 컬럼값을 기반으로 계산식을 적용할 수 있는 기능이다.) 컬럼명 타입 GENERATED ALWAYS AS 표현식 VIRTUAL create table vtable ( no1 number, no2 number, no3 number GENERATED ALWAYS as (no1+no2) virtual ) insert into vtable(no1, no2) values (100, 200); 가상열에는 insert를 할 수 없다. ( 오류발생함) select * from vtable; 데이터를 업데이트 해도 update vtable set no1 = 300 where no.. 데이터베이스/Oracle 2024. 4. 3. oracle 테이블 복사 및 구조 복사 , PL-SQL(반복문) PL-SQL (반복문) Begin for i in 1..100 loop insert into temp2(id) values ('A' || to_char(i)); end loop; end; 테이블 구조 및 데이터 복사하기 CREATE TABLE 신규테이블명 AS SELECT * FROM 복사할테이블명 [WHERE] /* 새로운 테이블을 생성하고 원하는 테이블 구조(복제): 스키마 + 데이터 삽입 단점 : 제약은 복제가 안된다 ( pk, fk) 순수한 데이터 구조 + 데이터가 복사된다. */ create table copyemp as select * from emp; select * from copyemp; 테이블이 존재할경우 데이터만 복사하기 테이블이 존재할경우, 데이터만 복사하기(구조가 같은경우) INS.. 데이터베이스/Oracle 2024. 4. 3. 서브쿼리 (subQuery) [스칼라,인라인 뷰,중첩] // all any some 연산자 서브 쿼리는 메인 쿼리 내부에 작성하는 쿼리를 뜻하며, 주로 아래의 3가지 서브 쿼리로 분류한다. 스칼라 서브 쿼리 SELECT 절에 위치하며 칼럼의 역할을 하므로 해당 서브쿼리의 결과는 반드시 단일 행 or 단일 값으로 리턴되어야 한다. *다중 행 값이 조회되면 "ORA-01427: single-row subquery returns more than one row" 라는 오류가 발생하므로 주의 만약을 대비해서 서브 쿼리 마지막에 AND ROWNUM = 1을 붙이기도 함 [한개만 반환되게] select e.EMPNO, e.ENAME, e.DEPTNO, (select d.DNAME from dept d where d.DEPTNO = e.DEPTNO) as dname from emp e where e.sal.. 데이터베이스/Oracle 2024. 4. 2. inner Join, Outer Join Oracle Join , ANSI Join 오라클에서 조인을 할 때 오라클 조인(Oracle Join)과 안시 조인(ANSI JOIN)을 사용할 수 있다. 오라클 9i 까지는 오라클 조인만 사용할 수 있으며, 오라클 10g부터는 안시 조인을 추가로 사용할 수 있다. 최근 구축되는 시스템은 대부분 안시 조인을 사용하지만, 과거에 구축되어 있는 시스템은 오라클 조인을 많이 사용하고 있기 때문에 오라클 조인 방식도 꼭 알고 있어야 한다. --오라클 조인 ( 옛날 기술 ) select * from m, S where m.m1 = s.S1; select m.m1, m.m2, s.s2 from m, S where m.m1 = s.s1; ---------------- -- ansi ( 현업 ) select * fro.. 데이터베이스/Oracle 2024. 4. 2. 1) MySQL 사용자 생성, 삭제, 조회, 권한 부여,권한 확인, 사용자 생성과 동시에 권한부여 사용자 생성 create user '사용자'@'host' identified by '비밀번호'; # ex1) 내부 접근을 허용하는 사용자 추가 create user 'test'@'localhost' identified by '0000'; # ex2) 외부 접근을 허용하는 사용자 추가 create user 'test'@'%' identified by '0000'; # ex3) 특정 ip만 접근을 허용하는 사용자 추가 create user 'test'@'123.456.789.100' identified by '0000'; # ex4) 특정 ip 대역을 허용하는 사용자 추가 create user 'test'@'192.168.%' identified by '0000'; ex) create user wogusJW.. 데이터베이스/MySQL 2023. 8. 3. 프로그래머스1/상위 n개 레코드/limit limit는 제일 뒤에 적어준다. https://school.programmers.co.kr/learn/courses/30/lessons/59405 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr -- 코드를 입력하세요 SELECT name from animal_ins order by datetime asc limit 1 데이터베이스/MySQL 문제 풀이 2023. 3. 29. 프로그래머스4/오프라인/온라인 판매 데이터 통합하기/union,서브쿼리,null https://school.programmers.co.kr/learn/courses/30/lessons/131537 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr union( 데이터 중복 상관없이 다 합침) union all ( 중복된 데이터는 하나만 냅두고 합침) union한 결과에다가 조건을 붙이고 싶다면 그 결과를 서브쿼리로 사용한다. 서브쿼리에는 별칭부여해야함 Null을 사용해야한다면 Null 쓰고 별칭부여 select * from ( SELECT date_format(sales_date,'%Y-%m-%d') as sales_date, produc.. 데이터베이스/MySQL 문제 풀이 2023. 3. 29. 프로그래머스2/재구매가 일어난 상품과 회원 리스트 구하기/group by 컬럼2개 https://school.programmers.co.kr/learn/courses/30/lessons/131536 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT user_id,product_id from online_sale group by product_id, user_id having count(*) >1 order by user_id,product_id desc group by 속성 2개 사용가능 group by는 그룹화 시킨다. select를 이용해서 조회할때 그룹별 하나씩 값을 조회된다고 생각하면 된다. 데이터베이스/MySQL 문제 풀이 2023. 3. 28. 프로그래머스4/서울에 위치한 식당 목록 출력하기/group by,join,avg,round https://school.programmers.co.kr/learn/courses/30/lessons/131118 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT ri.rest_id, ri.rest_name, ri.food_type, ri.favorites, ri.address, round(avg(rr.review_score),2) as score from rest_info ri join rest_review rr on ri.rest_id = rr.rest_id where ri.address like '서울%' group by rest_id .. 데이터베이스/MySQL 문제 풀이 2023. 3. 28. 이전 1 2 다음