본문 바로가기

SQL

JAVA SQLLite3 사용하기 (3) ※ 앞서 미리 프로젝트에서 라이브러리가 추가되었고, DBMS 을 통해 데이터베이스가 생성되었다 가정하에 진행합니다. ※ 이미 MySQL, 오라클 같은 JDBC 프로그래밍이나, Arraylist, 제네릭 프로그래밍을 알고있다는 가정하에 진행하겠습니다. (모두 세세히 풀어쓰기엔 좀 무리가 있습니다.) 1. 우선, SQL 매니져로 생성했던, 데이터베이스를 프로젝트내 폴더를 하나 생성해서 복사합니다. (위 프로젝트에서는 resource 라는 폴더명으로 생성후 넣었습니다.) 이제 모든 준비는 끝났습니다. 이제 실제적으로 코드레벨에서 해당 데이터베이스에 접근해보도록 하겠습니다. 먼저, 저는 두개의 패키지를 나누어 관리하겠습니다. com.db 패키지 - Datainfo 라는 클래스는, 데이터베이스에 존재하는 필드인 .. 더보기
JAVA SQLLite3 사용하기 (2) 우선, 첫번째 강좌에서 자바 프로젝트에서 외부라이브러리 호출방법에 대해 익혀보았습니다. 이제, SQLite Manager 을 설치하여 데이터베이스 생성 에 대해 배워보겠습니다. 파이어폭스를 설치후, 부가앱(무료) 에서 SQLite Manager 를 설치하도록 합니다. 설치가 정상적으로 수행되었다면, 도구에 설치된것을 볼수 있습니다. 실행하도록 합니다. 위와 같은 화면의 어플리케이션이 실행됨을 볼수 있습니다. 딱히 어려운 부분은 없으나, 다른 부가적인것은 배재하고 필요한것만 설명하도록 하겠습니다. 이제 데이터베이스를 생성하도록 하겠습니다. 1. 먼저 Database 첫번째 메뉴에서 New Database 를 클릭하도록 하겠습니다. 2. 위와 같은 화면이 뜨게 되는데, 이 화면은 데이터베이스의 이름을 설정하.. 더보기
JAVA SQLLite3 사용하기 (1) SQLLite3 란? - MySQL, MSSQL 등 과같이 데이터베이스 입니다. 단, MySQL 이나 MSSQL 은 서버와 사용자에 대한 권한이 필요한 반면, SQLLite3 는 서버가 불피요하고, 사용자 권한도 필요하지 않는 데이터베이스 입니다. 주로, IOS 혹은 안드로이드 같은 모바일 환경에서 채택하고 쓰고 있습니다. (더 자세한 사항은 인터넷 검색 참고) ------------------------------------------------------------------------------------------------------------ 준비물 : SQLLite3 라이브러리, 파이어폭스 SQLLite3 Manager (부가앱) 이번에는, JAVA 에서 SQLLite3 를 사용하는 방법에 .. 더보기
INSERT SELECT INSERT SELECT 이란? - 이미 존재하는 테이블에 SELECT 한 결과를 삽입할수 있다. 즉, TABLE1 이라는 곳에 TABLE2에 존재하는 기본키의 MAX값을 넣고자 한다면? (먼저, TABLE1 에는 ID 라는 기본키에 대한 애트리뷰트 하나만 존재가정) INSERT INTO `TABLE1` SELECT MAX(id) FROM `TABLE2` 이렇게 된다면, TABLE2에 존재하는 id 라는 값의 최대값을 구해, TABLE1 테이블에 삽입 되게 된다. TABLE2 의 id MAX 값이 60인 경우, TABLE1 에 60 이라는 값이 삽입된됩니다. 더보기
MULTI DELETE 최근 여러 테이블에 존재하는 동일한 필드명을 제거해야 하는 문제가 생겼다.. 그래서 단일로 쿼리를 나누어 뿌렸는데.... 코드 줄만 늘어날 뿐이었다.. A,B,C 테이블에서 A테이블을 기준으로, 특정값을 찾아 3개의 테이블 필드를 삭제해준다. 단일 DELETE DELETE FROM `A` WHERE id = 10 멀티 DELETE DELETE `A`, `B`, `C` FROM `A` left join `B` on A.id = B.id left join `C` on A.id = C.id WHERE A.id = 10 더보기
EXISTS, IN 문제. A 테이블, B 테이블 서로 ID 라는 필드가 존재하며, 해당 필드값은 A,B 양쪽모두 동일해야한다. 단, B테이블에서 제거되어 NULL 이 되었고, A테이블 내 ID필드값 은 여전히 존재한다. 게임으로 생각해보자면.. B 캐릭터 정보 테이블, A 캐릭터 인벤토리 아이템 테이블 캐릭터가 삭제되었으나, 인벤토리 소지템이 DB 에 여전히 쓰레기값으로 존재하고 있다. 이를 지워야한다. 처음 while 문으로 해당 값을 비교하여 일일이 지워줄까도 생각해봤다.. 하지만 이작업은 존나 느리다. 방대한 데이터베이스일수록.. 아래 작업을 이용하면 바로 단 한줄로 모든게 해결된다. EXISTS나 IN을 이용하면 편하게 구할 수 있습니다. SELECT ID FROM B WHERE NOT EXISTS (SELECT .. 더보기