본문 바로가기

Database

(20)
MyBatis 개념 MyBatis (마이바티스) ORM(Object Relational Mapping : 객체 관계 매핑) 프레임워크 자바에서 JDBC를 이용할 경우 Java 언어와 SQL언어가 한 파일에 존재해서 재사용성이 좋지 않음 MyBatis는 JDBC의 이런 단점을 개선하여 SQL 명령어를 별도의 XML 파일에 분리하여 SQL 명령어와 자바 객체를 매핑해주는 기능 제공 SQL 명령어 재사용 MyBatis 특징 SQL 명령어를 자바 코드에서 분리하여 별도의 XML 파일에서 관리 XML을 매퍼(Mapper)로 부름
[연습문제] 서브 쿼리 -- 서브 쿼리 연습문제 /* 연습문제 1. 호날두(고객명)가 주문한 도서의 총 구매량 출력 2. ‘종로출판사’에서 출간한 도서를 구매한 적이 있는 고객명 출력 3. 베컴이 주문한 도서의 최고 주문수량보다 더 많은 도서를 구매한 고객명 출력 4. 서울에 거주하는 고객에게 판매한 도서의 총 판매량 출력 */ -- 1. 호날두(고객명)가 주문한 도서의 총 구매량 출력 SELECT SUM(bsQty) "총 구매량" FROM bookSale WHERE clientNo = (SELECT clientNo FROM client WHERE clientName = '호날두'); -- 서브 쿼리 결과가 단일 행인 경우에는 =과 IN 둘 다 사용 가능 SELECT SUM(bsQty) "총 구매량" FROM bookSale ..
[연습문제] JOIN -- 연습문제 -- 1. 모든 도서에 대하여 도서의 도서번호, 도서명, 출판사명 출력 SELECT B.bookNo, B.bookName, b.bookauthor, P.pubName FROM book B INNER JOIN publisher P ON B.pubNo = P.pubNo ; -- 2. '서울 출판사'에서 출간한 도서의 도서명, 저자명, 출판사명 출력 -- (조건에 출판사명 사용) SELECT B.bookName, B.bookAuthor, P.pubName FROM book B INNER JOIN publisher P ON B.pubNo = P.pubNo WHERE P.pubName = '서울 출판사'; -- 3. '종로출판사'에서 출간한 도서 중 판매된 도서의 도서명 출력 -- 중복된 경우 한 ..
ORDER BY - 한글 영문 숫자 / 영문 한글 숫자 순서로 정렬 - 영어 대문자 A ~ Z : 65 ~ 90 - 영어 소문자 a ~ z : 97 ~ 122 - 숫자 0 ~ 9: 48 ~ 57 한글 - 영문 - 숫자 순서로 정렬 SELECT * FROM book ORDER BY (CASE WHEN ASCII(SUBSTRING(bookName, 1)) BETWEEN 48 AND 57 THEN 3 WHEN ASCII(SUBSTRING(bookName, 1)) < 122 THEN 2 ELSE 1 END), bookName; 영문 - 한글 - 숫자 순서로 정렬 SELECT * FROM book ORDER BY (CASE WHEN ASCII(SUBSTRING(bookName, 1)) BETWEEN 48 AND 57 THEN 3 WHEN ASCII(SUBSTRING(bookNam..
[연습문제] DML INSERT /* 연습문제 INSERT 문을 사용하여 학과 / 학생 테이블에 다음과 같이 데이터 입력 SELECT 문으로 조회 */ -- 학과 테이블 생성 CREATE TABLE department( dptNo VARCHAR(10) NOT NULL PRIMARY KEY, dptName VARCHAR(30) NOT NULL, dptTel VARCHAR(13) ); -- 학생 테이블 생성 CREATE TABLE student ( stdNo VARCHAR(10) NOT NULL PRIMARY KEY, stdName VARCHAR(30) NOT NULL, stdYear INT DEFAULT 4 CHECK(stdYear >= 1 AND stdYear = '2018-01-01' AND bookDate = 25000..
csv 파일 import 시 주의사항 text 타입 데이터들을 VARCHAR() 타입으로 변경 기본키 제약조건을 포함한 필요한 제약조건들 추가 -- 기본키인 prdNo를 VARCHAR(10) NOT NULL로 변경 ALTER TABLE product MODIFY prdNo VARCHAR(10) NOT NULL; -- 모든 text 타입을 VARCHAR 타입으로 변경 ALTER TABLE product MODIFY prdName VARCHAR(20), MODIFY prdMaker VARCHAR(30), MODIFY prdColor VARCHAR(10), MODIFY ctgNo VARCHAR(10); -- 기본키 제약조건 추가 ALTER TABLE product ADD CONSTRAINT PK_product_prdNo PRIMARY KEY (p..
[연습문제] DDL_ALTER /* 테이블 ALTER 연습문제 1. product 테이블에 숫자 값을 갖는 prdStock과 제조일을 나타내는 prdDate 열 추가 2. product 테이블의 prdCompany 열을 NOT NULL로 변경 3. publisher 테이블에 pubPhone, pubAddress 열 추가 4. publisher 테이블에서 pubPhone 열 삭제 */ -- 1. product 테이블에 숫자값을 갖는 prdStock과 -- 제조일을 나타내는 prdDate 열 추가 ALTER TABLE product ADD (prdStock INT, prdDate DATE); -- 2. product 테이블의 prdCompany 열을 NOT NULL로 변경 ALTER TABLE product MODIFY prdCompan..
[DDL] 기본키 제약 조건을 설정하는 다양한 방법 -- 1 CREATE TABLE product( prdNo VARCHAR(10) NOT NULL PRIMARY KEY, prdName VARCHAR(30) NOT NULL, prdPrice INT, prdCompany VARCHAR(30) ); -- 2 CREATE TABLE product2( prdNo VARCHAR(10) NOT NULL, prdName VARCHAR(30) NOT NULL, prdPrice INT, prdCompany VARCHAR(30), PRIMARY KEY(prdNo) ); -- 3 CREATE TABLE product3( prdNo VARCHAR(10) NOT NULL, prdName VARCHAR(30) NOT NULL, prdPrice INT, prdCompany VARC..
파일을 읽어오는 내장함수 LOAD_FILE() & 데이터 파일로 내보내기 LOAD_FILE() 함수 : 대용량 데이터 저장 : LOAD_FILE(파일 경로) : 파일 용량이 현재 설정된 크기보다 큰 경우 데이터 저장 안 됨 -> my.ini 파일에서 파일 최대 크기 변수 변경 -> 파일 업로드/다운로드 하는 폴더 경로를 별도로 허용하는 내용 추가 (파일이 저장 경로 지정) -- movie 테이블 생성 CREATE TABLE movie ( movieId VARCHAR(10) NOT NULL PRIMARY KEY, movieTitle VARCHAR(30), movieDirector VARCHAR(20), movieStar VARCHAR(20), movieScript LONGTEXT, movieFilm LONGBLOB ); -- 데이터 입력 INSERT INTO movie VALU..