01. 데이터베이스시스템 개론(DBMS)
있습니다.
- 하나의 Excel 파일은 하나의 Database 파일과 대응합니다. 엑셀파일안의
sheet는 하나의 table과 대응합니다.
no name wdate subject passwd <- 컬럼, 열
-----------------------------------------------------------------
1 가길동 2005-01-01 안녕하세요. 123 <-- 레코드, 행
2 나길순 2005-01-02 반갑습니다. 123$
3 다길순 2005-01-01 안녕하세요. 123
4 라길동 2005-01-02 반갑습니다. 123$
5 마길동 2005-01-01 안녕하세요. 123
6 바길순 2005-12-02 반갑습니다. 123$
↖
엑셀 Sheet
테이블 -> 데이터베이스 -> 빅데이터 -> 예측 시스템 -> 인공지능
회원 (기업) (글로벌 기업, 국가 단위)
게시판
자료실
갤러리
MP4 플레이어
설문조사
급여관리
자재관리
입고관리
출고관리
매출관리
리조트
예약
펜션
상품...
6. Row 클래스 : 조회된 결과 집합에서 튜플을 나타냄
7. 데이터 타입
1) 내부에 저장되는 타입
2) 테이블 생성시 명시되는 타입
- http://www.sqlite.org/datatype3.html
8. PK 컬럼의 자동 생성
- 1부터 자동증가하여 레코드를 고유하게 구분하는 PK 컬럼의 값으로 사용됨.
/Home 폴더/sqlite3>sqlite3.exe test.db ← 테이블 생성시 test.db 파일이 없으면 생성됨.
CREATE TABLE COMPANY(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50) ,
SALARY REAL
);
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Paul', 32, 'California', 20000.00 ) ;
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Allen', 25, 'Texas', 15000.00 ) ;
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Teddy', 23, 'Norway', 20000.00 ) ;
SELECT ID, NAME,AGE,ADDRESS,SALARY
FROM COMPANY
ORDER BY ID ASC;
1|Paul|32|California|20000.0
2|Allen|25|Texas|15000.0
3|Teddy|23|Norway|20000.0
03. Sqlite3 Eclipse 연동 설정
1. Client tool 설치
- DB Browser for SQLite 3.9.1 은 한글 깨짐(비권장)
2. Sqlite JDBC library 다운로드
- https://bitbucket.org/xerial/sqlite-jdbc/downloads/
sqlite-jdbc-3.16.1.jar 다운로드
3. Eclipse 설정
1) View 열기
2) Data Source Explorer 열기
3) New Connection Profile 생성
4) SQlite 선택 Name 값은 파일명등 입력
5) 드라이버 신규 등록
* 기존 jar 경로 변경시 'Edit Driver Definition' 선택하여 변경 등록
6) 데이터베이스 드라이버 종류 지정
7) 기존 jar 파일 삭제후 아래 화면처럼 다운로드받은 jar 등록
8) 'test.db' 파일명 집적 입력, [Test Connection] 버튼 클릭하여 'Ping Succeed' 출력 확인
9) sql 파일의 생성, 확장가SQL, DDL 이어야함.
10. 실행할 SQL 블럭 지정후 Popup 메뉴에서 'Execute Selected Text' 선택
11) SQL 실행 결과의 확인
4. SQL 실습
▷ /Home/ws_python/oop/sqlite3/test.sql
-------------------------------------------------------------------------------------
1) 테이블 생성
CREATE TABLE `phonebook` (
`name` INTEGER NOT NULL,
`phone` TEXT NOT NULL,
`email` TEXT NOT NULL,
PRIMARY KEY(`email`)
);
2) INSERT
INSERT INTO phonebook(name, phone, email)
VALUES('가길동', '000-111-1111', 'mail1@mail.com');
INSERT INTO phonebook(name, phone, email)
VALUES('나길동', '000-111-1111', 'mail2@mail.com');
INSERT INTO phonebook(name, phone, email)
VALUES('다길순', '000-111-1111', 'mail3@mail.com');
3) SELECT
SELECT name, phone, email
FROM phonebook
ORDER BY name ASC;
SELECT name, phone, email
FROM phonebook
WHERE name="가길동";
SELECT name, phone, email
FROM phonebook
LIMIT 2 OFFSET 1
4) UPDATE
UPDATE phonebook
SET name = '왕눈이'
WHERE email='mail1@mail.com';
5) DELETE
DELETE FROM phonebook
WHERE email='mail1@mail.com';
6) 테이블 삭제
DROP TABLE phonebook;
-------------------------------------------------------------------------------------
5. id값의 생성과 사용
▷ /Home/ws_python/oop/sqlite3/test_id.sql
-------------------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS movie(
movie_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
country TEXT
)
CREATE TABLE IF NOT EXISTS actor(
actor_id INTEGER PRIMARY KEY AUTOINCREMENT,
movie_id INTEGER,
name TEXT,
gender TEXT,
FOREIGN KEY(movie_id) REFERENCES movie(movie_id)
)
INSERT INTO movie(movie_id, name, country)
VALUES(NULL, '월터의 상상은 현실이된다.', '미국');
SELECT movie_id, name, country
FROM movie
ORDER BY movie_id ASC;
movie_id name country
-------- -------------- -------
1 월터의 상상은 현실이된다. 미국
INSERT INTO actor(movie_id, name, gender)
VALUES(1, '벤스틸러', '남자');
INSERT INTO actor(movie_id, name, gender)
VALUES(2, '크리스튼 위그', '여자');
SELECT actor_id, movie_id, name, gender
FROM actor
ORDER BY actor_id ASC;
actor_id movie_id name gender
-------- -------- ------- ------
1 1 벤스틸러 남자
2 2 크리스튼 위그 여자 ← Foreigh Key가 정상 작동하지 않음.
DELETE FROM movie
WHERE movie_id=1; ← Foreigh Key가 정상 작동하지 않음.
-- 부모 연결 없는 자식 레코드 발생.
SELECT actor_id, movie_id, name, gender
FROM actor
ORDER BY actor_id ASC;
-- sequence 실습
SELECT movie_id, name, country
FROM movie
ORDER BY movie_id ASC;
-- 한번 생성된 일련번호는 초기 상태로 갈 수 없음. 증가만 됨.
INSERT INTO movie(movie_id, name, country)
VALUES(NULL, '인턴', '미국');
SELECT movie_id, name, country
FROM movie
ORDER BY movie_id ASC;
movie_id name country
-------- ---- -------
2 인턴 미국
-------------------------------------------------------------------------------------
'빅데이터 프로그래밍 > Python' 카테고리의 다른 글
[Python] 22. [DBMS] Sqlite3 + Python 연동 실습, 140자 일기장 만들기 (0) | 2017.08.05 |
---|---|
[Python] 21. [DBMS] Sqlite3 + Python 연동 실습 (0) | 2017.08.05 |
[Python] 19. [GUI] wxPython 그래픽 사용자 인터페이스, 다양한 Widget, Menu (0) | 2017.08.02 |
[Python] 18. [GUI] wxPython 그래픽 사용자 인터페이스, 기본 Widget, Sizer (0) | 2017.08.02 |
[Python] 17. [Network] threading module, 채팅 서버/클라이언트 제작 (0) | 2017.08.02 |
댓글