복잡한 로직 복잡한 로직은 복잡한 DAO로 직결되는가? 아니지 않을까… 비즈니스 로직이 복잡하다고 해서 SQL이 복잡해 질 필요는 없다. 재고 마감 로직을 생각해보자. 모든 창고에 들어있는 모든 상품들의 전일 재고량, 금일 입고량, 금일 출고량을 가져와서 금일 재고량을 계산한다고 치자. 이걸 가지도 또 상품 카테고리 별로 묶고 창고 별로 묶어서 집계를 내야 하는데.. 일단은 그 전 단계까지만 해보자.
오라클 Chapter 14: Case Study: Building a Product Catalog 참조 : The Programmer’s Guide to SQL 오라클에서 테이블 만들기 CREATE TABLE Category (CategoryID INT NOT NULL PRIMARY KEY,DepartmentID INT NOT NULL,Name VARCHAR(50) NOT NULL,Description VARCHAR (200) NULL,FOREIGN KEY (DepartmentID) REFERENCES Department (DepartmentID)); CREATE SEQUENCE CategoryIDSeq; CREATE OR REPLACE TRIGGER CategoryAutonumberTriggerBEFORE INSERT ON CategoryFOR
SQL The Programmer's Guide to SQL Chapter 1: Understanding SQL and Relational Databases Chapter 2: Retrieving Data with SQL Chapter 3: Modifying Data Chapter 4: Summarizing and Grouping Data Chapter 5: Performing Calculations and using Functions Chapter 6: Combining SQL Queries Chapter 7: Querying Multiple Tables Chapter 8: Hiding Complex SQL with Views Chapter 10: Transactions
오라클 Chapter 12: Working with Database Objects 참조 : The Programmer’s Guide to SQL 데이터베이스 만들기 – CREATE DATABASE db이름 – 오라클은 보통 DB를 한 개만 사용하고 스키마를 이용해서 관련있는 테이블들과 다른 객체를 그룹핑한다.데이터베이스 제거 – 오라클에서는DROP DATABASE가 아니라 CREATE DATABASE 로 제거 테이블 만들기 – CREATE
오라클 Chapter 11: Users and Security 참조 : The Programmer’s Guide to SQL 인증 : 이부분에 대한 SQL-99 표준은 없다. 따라서 DBMS마다 각기 다른 방법을 사용하지만 대부분 비슷하다.권한 : SLQ-99 표준에 두 개의 키워드를 정의하고 있다. GRANT, REVOKE 사용자 계정 만들기 CREATE USER username IDENTIFIED BY password;ROLE 종류 CONNECTION : DB에 연결
트랜잭션 Chapter 10: Transactions 참조 : The Programmer’s Guide to SQL 트랜잭션의 특징 ACID – Atomic – Consistency – Isolation – Durable 오라클은 기본으로 Auto Transaction 상태. – 첫 번째 SQL문을 실행할 때, 트랜잭션이 자동으로 시작 됨. – 따라서 START TRANSACTION(
오라클 Chapter 8: Hiding Complex SQL with Views 참조 : The Programmer’s Guide to SQL 뷰 사용하면 좋은 점. – 같은 쿼리를 매번 작성하지 않아도 됨. – 데이터를 좀 더 편한 상태로 포맷해서 볼 수 있다. – 데이터가 아닌 뷰에 접근하게 함으로써 보안. – 데이터의 변경을 별도의 작업 필요없이
오라클 Chapter 7: Querying Multiple Tables 참조 : The Programmer’s Guide to SQL 조인은 두 집합에 대한 곱셈연산인 데카르트 곱이다. 데카르트 곱이란 예를 들어, 집합 {a, b, c} 와 집합 {a, b}가 있을 때 그 결과는 {(a, a), (a, b), (b, a), (b, b), (c, a), (c, b)}다. 기본 문법(데카르트 곱)
오라클 Chapter 6: Combining SQL Queries 참조 : The Programmer’s Guide to SQL 두 개 이상의 테이블의 데이터가 필요할 때 서브쿼리나 조인을 사용할 수 있다. 이번 챕터는 서브쿼리에 대해 공부한다. 서브쿼리에는 두종류가 있다. 독립적인 서브쿼리 non-correlated subquery : 포함된 쿼리가 한 번만 수행되며, 그 결과가 외부 쿼리에 전달된다. 연관된 서브쿼리 correlated : 외부 쿼리의 데이터를 필요로 하며,
오라클 Chapter 5: Performing Calculations and using Functions 참조 : The Programmer’s Guide to SQL 사칙연산/비트연산/괄호 사용법 모두 자바와 동일 SELECT 절의 조건은 컬럼 이거나 어떤 값들이든지 될 수 있다. WHERE 절의 조건은 Boolean 형태여야 한다. 숫자 다루기 (오라클) 내림 FLOOR() 올린 CEIL() 반올림 ROUND(컬럼, 자릿수) 문자 다루기 (오라클) SUBSTR(컬럼, x, y) : x는
오라클 Chapter 4: Summarizing and Grouping Data 참조 : The Programmer’s Guide to SQL 레코드 갯수 세기 COUNT(*) : 모든 레코드 갯수 COUNT(DISTINCT 컬럼) : 해당 컬럼의 값이 NULL이 아니고 중복되지 않는 레코드 갯수 COUNT(ALL 컬럼) : COUNT(컬럼) 형태로 쓰면 default로 ALL을 붙여서 사용함. 중복 허용. 합계 구하기 SUM(DISTINCT 컬럼) SUM(ALL 컬럼) 평균 구하기
오라클 Chapter 3: Modifying Data 참조 : The Programmer’s Guide to SQL 새로운 값 추가하기 INSERT INTO 테이블 (컬럼들) VALUES (값들); INTO는 MySQL에서는 생략가능 하지만, SQL-99 스팩이며 오라클에서는 필수다. 컬럼명을 안 써도 되는 경우 RDBMS가 값을 반드시 자동 생성 해주는 경우. ex) 주키 컬럼 RDBMS가 갑을 자동으로 채워줄 수 있는 경우. ex) 기본값을 설정해둔
오라클 Chapter 2: Retrieving Data with SQL 참조 : The Programmer’s Guide to SQL ‘모든 컬럼 가져오기(SELECT * FROM Student;)’의 안 좋은 점. 해당 테이블에 몇 개의 컬럼이 있는 DB가 알아봐야 하는 부과작업 필요해짐. 컬럼들이 어떤 순으로 어떤게 올지 예측할 수 없다. 간단한 테스트 용도 외에는 잘 안써. 예약어Reseved나 SQL 키워드를 테이블 명이나
오라클 Chapter 1: Understanding SQL and Relational Databases 참조 : The Programmer’s Guide to SQL (중고로 2달러 짜리도 있네요.) SQL을 DDL, DML, DCL로 나눠볼 수 있다. SQL의 역사 : SQL-89 => SQL-92 => SQL-99 비교 연산의 결과는 세 가지. True, False, Unknown. NULL 인지 확인할 때 = NULL 이 아니라 is NULL 로 물어봐야 해. = 는 비교 연산자인데, NULL
인코딩 SimpleFormController 에피소드2 아래 발생한 문제는 SimpleFormController와는 전혀 관계가 없는 내용일 수도 있다는 것을 미리 알려드리고 시작해야겠습니다. 이유는 결론을 보시면 알게 되실듯. 위와 같은 리스트가 있습니다. 오호 분명히 “기선”이라는 사람이 매우 많이 있습니다. 왼쪽에 있는 search로 이동해서 “기선”을 찾아 봅시다. 이렇게 기선을 입력하고 enter 또는 search 버튼을