connection Statement table exectue Query Table select Table
connection. Statement ①모든 table 생성 ②exectue. Query ⑴Table. select() ⑵Table. update() ⑶Table. inset() Table(String table_name) ①table_name설정 ②File 이름 = table_name; ③file열기 ④file로부터 col_name읽기 ⑤file로부터 col_length읽기 ⑥버퍼생성(col들의 총length) ⑦file로부터 한 레코드 읽기 – 변환: 다음레코드 위치 ⑴Table. unpack() ⑵buff. read() 1)Table. select ①Table. next() = Table. unpack() – buff. Read() ②읽은 레코드에서 where절이 일치하는지 확인 ③where절이 일치하면 ⑴레코드에서 필요한 column을 읽어서 돌려준다 ⑵*이면 모든 column을 돌려준다 ④where절이 일치하지 않으면 ⑴아무 일도 안 한다 ⑤레코드를 tempfile에 저장한다(File. create. Temp. File) ⑥tempfile의 모든 내용을 읽어서 보여준다 2)Table. insert
Select (*) name from Table where height = 1 and weight = 2; -WHERE + 조건식 문자열: ( ' )로 표현 비교 연산자: =, >, >=, <> SQL 비교 연산자: (NOT) BETWEEN. . AND, IN(list), (NOT) LIKE, IS (NOT) NULL 논리 연산자: AND, OR, NOT Insert Memos 1(Name, Email, Title, Post. Date) Values('씨앗', 'seed@wow. com', 'seed', Get. Date()); Update class Set hight = 600 where name = ‘java’;
Table(String table_name) ①table_name설정 ②File 이름 = table_name; ③file열기(header용- Data. Output. Stream이용) Data. Output. Stream. create. New. File() – 파일이 없을경우 생성 ④임의로 크기 1000의 버퍼생성 ⑤header의 col_name_size를 읽기 (file -> buffer -> Table. col_name_size) ⑥header의 col_length_size를 읽기 (file -> buffer -> Table. col_length_size) File에서의 읽은 offset저장해 놓기(실제레코드 있는 위치) ⑦file열기(일반용 – Random. Access. Stream이용) ⑧col_name_size만큼의 버퍼생성 ⑨file로부터 col_name읽기 (file -> buffer -> Table. col_name) File에서의 읽은 offset저장해 놓기 ⑩col_length_size만큼의 버퍼생성 ⑨file로부터 col_length읽기 (file -> buffer -> Table. col_length) File에서의 읽은 offset저장해 놓기 (offset : 실제 레코드를 읽을 위치) ⑪버퍼생성(col들의 총length)
Table(String table_name) ①table_name설정 ②File 이름 = table_name; ③file열기(header용- Data. Output. Stream이용) Data. Output. Stream. create. New. File() – 파일이 없을경우 생성 ④임의로 크기 1000의 버퍼생성 ⑤header의 col_name_size를 읽기 (file -> buffer -> Table. col_name_size) 1번레코드 비였는지 확인, 1번레코드 문자면 에러 -(Integer. parse. Int(buff. SArray 0[0]) ⑥header의 col_length_size를 읽기 (file -> buffer -> Table. col_length_size) 1번레코드 비였는지 확인, 1번레코드 문자면 에러 -(Integer. parse. Int(buff. SArray 0[1]. substring(0, count)) File에서의 읽은 offset저장해 놓기(실제레코드 있는 위치) ⑦file열기(일반용 – Random. Access. Stream이용) ⑧col_name_size만큼의 버퍼생성 <Col_name_size와 col_name에 해당하는 레코드를 읽은 크기와 비교해서 (col_name_size>=col_name에 해당하는 레코드를 읽 은 크기)일때만 다음으로 넘어감> ⑨file로부터 col_name읽기 (file -> buffer -> Table. col_name) File에서의 읽은 offset저장해 놓기 2번레코드 비였는지 확인, 2번레코드 숫자면 에러
- Slides: 5