Simple DBMS 이영준 개발환경 플랫폼 : Windows 7 32bit 언어 : Java (JavaSE-1.6) 개발툴 : Eclipse Java EE IDE for Web Developers (Indigo Service Release 2) 32bit + Java
|
|
- 영범 진
- 5 years ago
- Views:
Transcription
1 Simple DBMS 이영준 개발환경 플랫폼 : Windows 7 32bit 언어 : Java (JavaSE-1.6) 개발툴 : Eclipse Java EE IDE for Web Developers (Indigo Service Release 2) 32bit + JavaCC Eclipse Plug-in Berkeley DB Java Edition 첨부된파일 실행파일 : DBMS.jar 소스파일 ( 이클립스프로젝트 ) : Eclipse_Project.zip 실행방법 실행파일 DBMS.jar에는버클리DB 라이브러리 (jar) 가함께패키징되어있으므로별도의버클리DB 라이브러리설치과정없이바로실행가능하다. Windows 콘솔에서아래와같이실행가능하다. JavaSE-1.6 기반으로빌드되었으므로 JRE 6 이상의버전에서만동작가능하다. 만약그이하버 전에서실행할경우아래와같은에러가발생한다. 빌드방법 첨부된 Eclipse_Project.zip을압축해제하면이클립스프로젝트폴더 (DBMSProject) 가있다. 이를 JavaCC Plug-in이설치된이클립스에서 Import하여빌드한다
2 프로그램사용법 SQL_ > command line에 query를입력한다. 단일 query를입력할수도있고, 여러 query를동시에입력할수도있다. 각 query는 semicolon(;) 으로구분한다. query의문법 / 의미가올바르다면성공메시지가출력된다. query의문법이잘못되었다면아래와같은에러가출력된다. query가 semantic error를갖고있다면각상황에알맞은에러메시지가출력된다. 여러오류를갖고있다면그중하나의에러메시지가출력된다. ( 주로가장먼저검출된에러가출력됨 ) 여러 query를동시에입력한경우순차적으로처리된다. 만약중간 query에서문법오류가발생한다면그앞에있던 query들까지만처리된다. 여러 query를입력한경우결과가아래와같이출력된다. 만약 2 번째 query 에서문법오류가발생한다면아래와같은결과가출력된다. Syntax Error 관련제약 query에사용되는모든키워드는소문자로입력해야한다. 즉, 아래와같은 query는문법에맞다. create table account ( number int, name char(15) ); 하지만아래와같은 query 등은문법에맞지않다. CREATE TABLE account ( number int, name char(15) ); desc account; select, from, where, create, table, is, not, and, or, insert, into, delete, null, desc, drop, show, tables, values, as, primary, foreign, key, into, int, char, date, references, exit는 id로사용될수없다. ( 편의상위문자열들을키워드라부르겠다.) 즉, 아래와같은쿼리는문법오류이다. desc select; select * from TaBle; id는대소문자를구분하지않으므로 TaBle과같은경우도 id가아닌키워드로인식된다. 위키워드들은다른토큰들과붙여서사용할수없다. 즉, 아래와같은 query는문법오류이다., \t, \n, \r 등이 1개이상들어가야한다. select * fromaccount; 혹은 create table account(numberint); - 2 -
3 그리고 create table 등과같이한토큰이두단어로이루어진키워드의경우단어사이는반드시 space 하나로구분된다. create와 table 사이에 \t, \n, \r이들어가면문법오류이다. deletefrom account where number=1; 여러 query를한번에입력할때마지막 query의끝에개행문자가포함되지않았다면 enter를입력해야마지막 query가처리된다. query의끝에개행문자가포함되었다면콘솔에붙여넣기를하는순간해당 query가수행된다. 즉, 위의경우 enter를입력해야마지막 show tables; 쿼리가처리된다. 괄호, 쉼표, 마침표, 세미콜론의앞뒤에는공백이들어가도되고들어가지않아도된다. a b c 는공백이 2개들어간길이 5인 char string으로인식한다 의경우올바른 int가아니다. int의범위는제한하지않는다. 즉충분히크거나작은정수값을가질수있다. 수식은 <VALUE> 로처리되지않는다 은 <DATE VALUE> 로처리한다. 달 / 일의범위및윤년처리는하지않는다. <INT VALUE> 는 0으로시작할수있다. query의앞뒤에공백이포함된것은 trim된다. 즉, 아래와같은질의는올바른질의이다. (_ 는공백을뜻한다.) show tables; query는개행문자로구분하여쓸수있다. 즉, 아래와같은 query가가능하다. create table account ( name int, primary key(name) ); 하지만아래와같이 2개이상의단어로이루어진키워드를개행문자로구분해쓸수없다. 반드시 space 하나로구분되어야한다. insert into account values(1); 특히 is [not] null 키워드도한덩어리로인식한다. 즉, 아래와같은 query는문법에러이다. select * from account where name is not null; create table 질의의경우 primary key가반드시입력될필요는없다. 본 parser는 syntax error만을검출한다. semantic error에대해서는검사하지않는다
4 Semantic Error 관련제약 create table 퀴리 - column name이중복정의된경우 - primary key 절이여러번등장한경우 - foreign key 절에서참조의대상이되는두 column의 type이다른경우 - foreign key 절에서 non primary key를참조하도록설정된경우 - foreign key 절에서존재하지않는 column을참조하도록설정한경우 - foreign key 절에서존재하지않는테이블을참조하도록설정한경우 - foreign key 절에서참조하는 column이현재생성될테이블에정의되지않은경우 - primary key 절에서현재생성될테이블에정의되지않은 column을지정한경우 - char 타입의길이가 0 이하인경우 (1보다작은경우 ) - 이미존재하는테이블이름을사용한경우 - 이때, foreign key 절에서 non primary key를참조하는경우라함은아래와같은경우는예를들어다음과같다. 만약 student 테이블의 primary key가 {id, name} 인경우아래와같은 foreign key 절들은의미오류이다.... foreign key(id) references student(id), foreign key(name) references student(name),... 위두절을함께이어쓰더라도의미오류이다. 반드시아래와같이작성해야한다.... foreign key(id, name) references student(id, name)... - 또한존재하지않는테이블을참조하는것이불가능하다고함은, 현재생성되는테이블 ( 자기자신 ) 을참조할수없다는말을내포한다. 자기자신테이블은아직생성완료된것이아니므로참조하는것이불가능하다. 즉, 존재하지않는테이블이다. drop table 쿼리 - 존재하지않는테이블을지정한경우 - 다른테이블에의해참조를받고있는경우 desc 퀴리 : 존재하지않는테이블을지정한경우 show tables 쿼리 : DB에테이블이존재하지않은경우 insert into 쿼리 - column name list가입력되지않은경우반드시모든컬럼의값들을모두기입해줘야한다, 즉, 테이블 A가 id, name 컬럼을갖고있을때 insert into A values(1, LEE ) 는가능하지만 insert into A values(1) 은불가능하다. (InsertTypeMismatchError 에러발생 ) - column name list가입력된경우 column name list에명시되지않은컬럼에는 null 값이쓰여진다. 만약그컬럼이 non-nullable이라면 InsertColumnNonNullableError 에러가발생한다. - 존재하지않는테이블에대해삽입할때 NoSuchTable 에러가발생한다. - 삽입하려는값의타입이 table scheme에등록된해당컬럼의타입과다를때 InsertTypeMismatchError 에러가발생한다. - 존재하지않는컬럼에대해삽입할경우 InsertColumnExistenceError 에러가발생한다
5 - primary key constraint를어길경우 InsertDuplicatePrimaryKeyError가발생한다. ( 즉, 같은 primary key를갖는 tuple이이미삽입되어있는경우 ) - foreign key constraint를어길경우 InsertReferentialIntegrityError 에러가발생한다. delete from 쿼리 - 존재하지않는테이블에대해삭제할때 NoSuchTable 에러가발생한다. - where절이명시되지않은경우테이블내의모든 tuples에대해삭제를시도한다. - 삭제가완료된후에는삭제에성공한행의개수와실패한행의개수가출력된다. 삭제에실패한이유는 referential integrity 때문이다. 1개행을삭제하는데성공하고 1개행을삭제하는데실패한경우아래와같은메시지가뜬다. - 행이삭제될때에는 cascade update를한다. 즉, 삭제될행을참조하는값을 null로바꿔준다. 만약 non-nullable이라면 referential integrity를어기는것이므로삭제되지않는다 select 쿼리 - 만약해당테이블에 tuples가하나도존재하지않으면아래와같이출력된다. - column 이름을 alias 했다면 alias 된이름으로결과가출력된다. - table 이름을 alias 했다면출력결과역시 alias 된 table 이름으로표시된다. - from절에기입된테이블이름중존재하지않는테이블이있을경우 SelectTableExistenceError 에러가발생한다. - select 뒤에기입된컬럼이름중존재하지않는컬럼이거나, 모호한컬럼인경우 SelectColumnResolveError가발생한다. 모호한컬럼이라함은예를들어 id 컬럼을출력하고자하는데 from절에기입된두테이블이모두 id 컬럼을가질경우를뜻한다
6 - 두개의다른테이블이같은이름으로 alias 되면아래와같은오류가발생한다. - 두개의다른컬럼이같은이름으로 alias되어도위와같은오류가발생한다. - where절이없으면테이블의모든행이출력된다. create table 쿼리에서 column 정의이전에 primary key, foreign key 절이등장가능하다. 즉, 특정 column 정의이전에그 column에대한 primary key, foreign key 절사용이가능하다. 한 column에대해여러 foreign key 정의가가능하다. drop table 시참조를받고있는테이블은삭제가불가능하다. 그러므로그테이블을참조하는모든테이블을제거한후에는 drop table이가능하다. 예를들어테이블 a를테이블 b, c가참조하고있는경우아래와같은시나리오가가능하다. 특정 column 이 primary key 이면서 foreign key 인경우 desc 시 PRI 만출력된다
7 상세구현 1: Parser SQLParser 클래스정의 본 parser 의클래스이름은 SQLParser 이며아래와같이정의하였다. 19줄에서 SQLParser 클래스를생성한다. 이때입력을 standard input으로부터받아오도록지정한다. 20줄의 while문을돌며 query를읽어온다. 25줄의 one_line() 함수가한개의 query를읽어오는역할을한다. 유의미한문자열 ( 즉, query) 이들어올때까지 block 되며, 하나의완성된 query가들어온경우문법에맞는지체크한다. 문법체크후리턴된결과는 String 타입의변수 s에저장된다. s 변수값이 exit 라면 exit; 명령이입력된것이므로프로그램을종료한다. 만약그렇지않은경우올바른질의가들어온것이므로적절한메시지를출력한다. 문법체크도중에러가발생했을경우 try~catch 문에의해 32줄혹은 38줄로이동된다. Syntax error 라는메시지를출력하고다음입력을기다리게된다. 상세한에러내용을확인하고싶다면 35줄과 41줄을주석해제하여실행해본다
8 SKIP 선언 SKIP 절에선언된토큰들은기본적으로인터프리터가토큰을검사하는과정에서생략된다., \t, \r, \n 과같은공백들을무시하게된다. 그러므로 delete from account where name= Peter ; 와같이 query를여러줄에나눠쓰거나토큰사이를여러공백으로띄워쓰는것이가능해진다. <LEGAL_IDENTIFIERS> 토큰정의 본 parser에서가장빈번히쓰이는 token은 <LEGAL_IDENTIFIERS> 이다. <LEGAL_IDENTIFIERS> 는 case-insensitive하며, 미리예약된키워드는 <LEGAL_IDENTIFIERS> 로인식될수없다. 그러므로아래와같이 token을정의하였다. IGNORE_CASE 옵션을지역적으로주어해당 TOKEN 절에서선언된토큰들이대소문자를구분하지않도록지정한다. 139~141줄에는 <LEGAL_IDENTIFIERS> 와그에필요한토큰들이선언되어있다. IGNORE_CASE 옵션을주었으므로 <ALPHABET> 토큰에는소문자만정의해놓으면된다. 112~138줄에는 <LEGAL_IDENTIFIERS> 로인식되어선안되는키워드들이정의되어있다. 인터프리터가토큰들을검사할때 <LEGAL_IDENTIFIERS> 보다위의키워드들의우선순위가높기때문에키워드들을 <LEGAL_IDENTIFIERS> 로인식하지않게된다. 역시 IGNORE_CASE 옵션을주었기때문에해당키워드가대문자를포함하고있더라도 <LEGAL_IDENTIFIERS> 로인식하지않는다
9 query 를정의하는데쓰이는토큰들 이제 query 구문을정의하는데쓰이는토큰들을설명한다. query를정의하는데쓰이는토큰들이란 키워드 를의미한다. 즉, create table, select, where 등과같이반드시소문자로쓰여야하며이후나오는토큰들과공백으로구분되어야하는키워드토큰들을의미한다. 위에서 <LEGAL_IDENTIFIERS> 를정의할때 <IC_SELECT : select > 와같이키워드들을정의해놓았지만, IGNORE_CASE 옵션을주었기때문에 SELECT * from accout; 와같은 query가가능해진다. 또한키워드들은이후나오는토큰들과공백으로구분되어야하는데, 앞서 SKIP 절에서공백들을생략하겠다고선언했기때문에 selectname from account; 와같은 query가가능해진다. 이를해결하기위해앞서정의하였던 TOKEN 절위에새로운 TOKEN 절을정의해야한다. <#SPACES> 토큰은 SKIP 절에서지정하였던공백들이 1개이상이어진것을의미한다. local token으로지정하여 SKIP 절과중복정의되지않도록한다. <#SPACES_SOME> 토큰은공백들이 0개이상이어진것을의미한다. 63줄의 <DROP_TABLE> 토큰을보면 drop table 키워드를한덩어리로정의한것을볼수있다. 또한맨뒤에 <SPACES> 토큰을붙여 drop table 뒤에반드시 1개이상의공백이등장해야하도록처리하였다. null 과같은키워드는뒤에반드시공백이올필요가없다. 그러므로 <#SPACES_SOME> 토큰을붙였다. 키워드뒤에공백이올필요가없다고해서 <SPACES_SOME> 을생략할경우 129줄에정의하였던 <IC_NULL> 과중복정의된것으로인식된 - 9 -
10 다. 이미모든단일키워드들이 112~138 줄에정의되어있기때문에반드시위토큰들은 112 줄 위에정의해주어야한다. 그래야만인터프리터가 <IC_...> 꼴의토큰이아닌 query 를위한키워 드토큰으로인식할수있다. 기타토큰들 <NON_QUOTE_CHARACTER>, <NON_QUOTE_SPECIAL_CHARACTERS> 는편의상 <CHAR_STRING> 토큰내에정의하였다. <DATA_TYPE> 의경우 int, char, date 앞에 1개이상의공백이오도록했다. 공백을포함하지않을경우앞서정의한 <INT>, <CHAR> <DATE> 토큰에의해 <DATA_TYPE> 이 unreachable token이될뿐더러 create table account ( numberint ); 와같은 query가가능해지게된다. 그러므로 int, char, date 앞에 1개이상의공백이오도록정의하였다. Productions 앞서소개했던 one_line() Production 은위와같이정의되어있다. query() Production 의 return value (String 타입 ) 를그대로 return 한다. query() Production 뒤에 <SEMICOLON> 이붙은경우 만올바른하나의 query 로인식한다. 만약 <EXIT><SEMICOLON> 인경우 exit 라는문자열을
11 리턴한다. query() Production 은입력으로들어온문자열이어떤 query 인지를판단한다. 그리고 해당 query 에대한결과문자열을리턴한다. 위그림은 select 질의에대한 productions이다. 다른 query에대한 productions는자명하므로설명은생략한다. select 질의의경우 left-recursion이존재한다. 그러므로 boolean_value_expression(), boolean_term() 을위와같이정의하여 left-recursion을제거하였다. 또한 predicate() 은 LOOKAHEAD를 3으로지정해야한다. LOOKAHEAD를지정하지않은경우 comp_operand() 의정의에의해올바른 predicate() 이들어오더라도 <LEGAL_IDENTIFIERS> 로인식하게된다. 그러므로 LOOKAHEAD를 3으로지정해주어 <LEGAL_IDENTIFIERS> 뒤의토큰들을미리검사하게해야한다. 상세구현 2: Scheme Store and Access SQLParser.jj 에서 data parsing 프로젝트1-1에서구현한 SQLParser.jj를수정하여데이터를파싱할수있게하였다. 기본적으로왼쪽과같이특정토큰을 Token 객체로저장한후 image 멤버변수를읽어들여 String 값을추출한다. 각 Productions에서리턴되는타입은 String, DataType, Column 등으로다양하며 create_table_query() Production 은최종적으로 Table 객체를리턴한다. 이때 Table 객체의값들은 semantic check가완료되지않은상태이다. data parsing을하는동안에는 2가지 semantic error 만으로체크한다
12 한 foreign key 절에서참조하는 column과참조되는 column의개수가다르면 ReferenceTypeError를발생시키고 (273줄), 또참조되는 key가그테이블의 primary key인지검사한다 (276~278줄). DBManager 클래스관련설명은아래에소개된다. 쿼리처리 Main 클래스에서는 SQLParser 가파싱한쿼리를목적에맞게처리한다. 먼저저장될 DB의이름과 DB Environment의경로는 15~16줄과같다. 18~20줄에서는 Environment 경로가존재하지않으면그디렉토리를생성한다. DB와 Environment는실행파일과같은경로의 db 폴더에저장된다. 그후 while문을돌며 query를계속 standard input으로부터읽어오고각각에맞는처리를한다
13 위처럼 create table 퀴리를받은경우쿼리의결과로 Table 객체를받는다. 그후 DB를 open하고 (DBManager의생성자 ), DB에테이블을 create한후 DB를닫는다. 그후성공메시지를출력한다. 만약위의과정에서 semantic error가발생한경우 MyDBException이 throw되고, 이를 catch하여적절한에러메시지를출력한다. DB 를추상화하는객체 본프로그램에서는 DB 의각구성요소를쉽게추상화하여표현하고동작시킬수있도록클래스로 정의하였다. 위객체는테이블을추상화하는 Table 클래스이다. 먼저테이블의 name을갖고있고, columns를 HashMap의형태로갖고있다. key는 column name이고 value는 Column 객체이다. primary keys는 ArrayList<String> 으로관리된다. 여러 columns가 primary key를이룰수있기때문이다. referenced는이테이블이 참조받는 것에대한정보이다. 이테이블의특정 column이어떠한테이블의 column에의해참조받고있는지에대한정보가들어있다. 즉, referenced HashMap의 key는이테이블의특정 column name이고, value는 ArrayList<Reference> 이다. Reference 클래스는참조정보를담는클래스로서추후에설명된다. referenced는이테이블이참조를받는것에대한정보이므로이테이블이 create 되는시점에서는빈값을가진다. 이후다른테이블이 foreign key로서이테이블을참조할경우 DB에서이테이블에대한정보가 load된후 referenced에참조정보가기록된후다시 DB에저장된다. referencing은반대로이테이블이 참조하는 것에대한정보이다. 쉽게말해서 foreign keys에대한정보가들어있다. referenced와마친가지로이테이블의특정 column name이 Hash key이고 value는 ArrayList<Reference> 이다. 각 column이어떤테이블의어떤 column을참조하는지를저장해둔다. Reference 클래스의정의는아래와같다. 참조의대상이되는테이블의이름과그테이블의 column name을담고있다. 만약 Reference 객체가 referencing에쓰인다면이때 Reference.table_name은이테이블을 참조하는 테이블이되고, referenced에쓰인다면 참조받는 테이블이된다. 즉, 예를들어... foreign key(id, name) references student(id,name), foreign key(id) references instructor(id) 와같이입력한경우 referencing HashMap은아래와같은형태를띄게된다
14 Column 클래스는위와같다. column name 와 data type, 그리고 not null 인지여부를담고있다. DataType 클래스는아래와같다. type 은 int, char, date 중하나의문자열을가지며 length 는 char type 인경우 char 길이를 뜻한다. int, date 인경우 length 의값은무의미하다. ForeignKey 클래스의정의는위와같다. 이클래스는데이터파싱시데이터를캡슐화하여손쉽 게이동하는데에만쓰일뿐그이후에는사용되지않는다. Table 클래스의 referenced HashMap 에참조정보가저장되어있기때문이다. create table 매커니즘 우선테이블을생성하려면 DB 를 open 해야한다. 앞서소개된 main 함수에서 DBManager 클래 스의생성자를호출하면 DB 가열린다. 만약 DB 나 Environment 가존재하지않는다면새롭게생성될수있도록 23, 28 줄에서 setallowcreate(true) 하였다
15 테이블을생성하는것은 DBManager의 createtable() 을호출함으로써수행할수있다. 34줄에서 createtable_check() 는테이블생성시선행되어야할 semantic check를수행한다. 35줄의 setnotnullprimarykey() 는 Table 클래스내에정의된함수로서 primary key인 column은 not null 로설정해준다. semantic error가발생한다면 createtable_check() 함수는내부적으로 MyDBException을 throw하고테이블생성은수행되지않는다. semantic check가완료된후에는 Table 객체를직렬화하여 byte array로변형한후 DB에기록한다. 40줄의 TableToByteArray() 는 Table 객체를직렬화해준다. 42줄에서는테이블이름을 key로등록한다. 이때소문자로변형하여등록해야한다. table name, column name은 case insensitive하므로 key 값으로등록될때에는무조건소문자로변환하여등록하도록했다. 44줄의 putnooverwrite() 함수를이용해 DB에테이블을기록한다. putnooverwrite() 는중복 key가있을경우에러를발생시킨다. 하지만 createtable_check() 함수내에서그와같은 semantic error를검출하므로 putnooverwrite() 의리턴값에대해선고려하지않는다. createtable_check() 함수는코드가길기때문에 line number를이용하여설명한다. 앞서설명했듯이 createtable_check() 는 create table 시의거의대부분은 semantic check를수행한다. 52줄에서는현재 DB에저장된테이블중현재생성하려는테이블과이름이같은것이있는지확인한다. 56~63줄에서는 primary key 절이정의되지않은 column을지정하고있는지확인한다. Table 객체의 pri_keys 리스트는 primary keys의이름을갖고있으므로 Table.hasColumn() 을호출하여각 column이존재하는지검사한다. hascolumn() 함수는특정이름을가진 column이테이블내에존재하는지검사하는함수이다. 물론 case insensitive하게검사한다. 65~94줄에서는 foreign key에대한검사를한다. 즉, Table 객체의 referencing에대해서검사한다. referencing HashMap을순회하면서각 column이제대로정의된 column인지 (71줄), 참조하는테이블이존재하는지 (81~84줄), 참조하는테이블의 column이존재하는지 (88줄), 그테이블의 column과현재테이블의 column의 type이일치하는지 (91줄) 를검사한다. issametypecolumn() 함수는 Table 클래스의멤버함수로서두 column이같은 type인지검사한다. char type의경우 length까지같아야같은 data type으로취급된다. 96줄에서는 Table 객체의 getreferencinginfo() 를호출한다. 이함수는 key로참조되는테이블의이름을갖고 value로그테이블의 column name을갖는 HashMap을리턴한다. Table 객체의
16 referencing HashMap은자기자신테이블의특정 column name을 key로갖고있기때문에 foreign key constraint를체크하는데사용하기힘들다. 그러므로참조되는테이블의이름을 key 로갖는 HashMap을재생산한것이다. 이 refinfo를이용해참조받는 columns이그테이블의 primary key인지검사한다. 109줄의 isprimarykeys() 함수는 Table 클래스의멤버함수로서 column name의 list를인자로받아자신의테이블의 pri_keys 리스트와비교한다. 두리스트가일치한다면인자로들어온 column name list는 primary key인것이다. 이제모든 constraint 검사가완료되었다. 이제남은작업은 참조받는 테이블의 referenced 정보를업데이트하는것이다. 참조하는테이블에서만참조정보를기억하도록할수도있지만 drop table 시그테이블이참조받고있는지에대한정보를바로알수있게하기위해 referenced 정보를업데이트한다. drop table 시에는그테이블의 referenced HashMap의 size를확인하기만하면된다. 만약 size가 0이라면참조를받고있지않다는뜻이므로 drop table이가능하다. 현재테이블의 referencing 정보를다시읽어들여그테이블의 addreferencedkey() 를호출해 referenced 정보를업데이트한다. 정보를모두업데이트하고난후에는다시 DB에기록해주어야한다.(136줄) 이때는이미 DB에존재하는테이블을다시덮어쓰는것이므로 put 함수를호출한다. 기타쿼리에대한 semantic check에대한소개는위에소개한 create table에서쓰인함수들을이용하는것이므로생략한다. 다만 drop table 시에는그테이블이참조하는테이블의 referenced 정보를삭제해준다. 207~219줄에서는먼저삭제될테이블이참조하고있는테이블들의이름을 list로얻어온다. 그후 22~229줄에서는 list에저장된테이블이름에해당하는테이블들을하나씩 DB에서꺼내 referenced 정보를지운다. 이는 Table 객체의 removereferencedkey() 함수를이용해수행된다. 작업이완료되면그테이블을다시 DB에기록해준다 (229줄). 위작업이모두완료되고난후에야 drop table이수행된다 (233줄). 상세구현 3: Data Insert, Delete and Select where 절 Condition 클래스는조건하나에대한정보를가진다. 즉, 2개의 operand와 1개의 operator에대한정보를가진다. where 절의조건들은 Condition 객체하나를노드로가지는트리로서구성된다. 쿼리파싱을하면서 where 절에대한트리를구성해간다. 2개의 operand는모두 Condition 객체이다. 트리의리프노드는 Predicate 객체이다. Predicate 객체는 and, or, not이아닌단일조건절에대한정보를갖는다. 즉, 등호 / 부등호를이용하는조건절이나 is null / is not null을이용하는조건절이 Predicate이다. 특정 tuple이 where절에제시된조건에부합하는지를체크하기위해 Condition 객체의 eval() 를호출한다. eval() 은내부적으로 left/right operand에대해각각 eval() 을재귀적으로호출한다. eval() 의결과는 TRUE, FALSE, UNKNOWN이다. 두평가결과토대로 operator를통한최종평가
17 결과를리턴한다. 이렇게재귀적으로평가를수행함으로써구현을간단히할수있다. UNKNOWN으로평가된 tuples는 select 쿼리의결과로출력되지않는다. delete from 쿼리의경우 UNKNOWN으로평가된 tuples는삭제대상에포함되지않는다. Alias select문의 from절에기입된 table name은 alias 될수있다. AliasTable 클래스는 select문에기입된모든 table name에대한 alias 정보를담고있다. 이를이용해 where 절의조건평가시 alais 된 table name을사용할수있다. column name에대한 alais 정보는 AliasCol에저장된다. Cartesian product select문에서는 cartesian product를사용해야한다. 두테이블의 cartesian 결과는특별한이름을갖는테이블로서디스크에임시로저장된다.( 버클리DB 이용 ) 여러테이블을 cartesian 해야할경우앞의두테이블부터차례로 cartesian을수행한다. 중간결과로저장되는임시테이블들은계산과정을거치면서자동으로삭제된다. tuples 의저장 create table문은테이블스키마를디스크에저장하였다. 즉, Project 1-2에서생성된 DB는 table schemes만을담고있다. Project 1-3의 tuples는 table schemes와는독립적으로저장된다. 예를들어테이블 A에대한 tuples를저장할경우 MyDB라는 DB에는 A라는이름으로테이블스키마가저장되고, tuples는 tuples.a라는별도의 DB에저장된다. 테이블스키마만을확인해야하는작업의경우 MyDB에서스키마만을꺼내서확인할수있다. 만약 MyDB에스키마뿐만아니라 tuples가함께저장되어있을경우스키마만필요한작업에대해서도모든 tuples들이포함된테이블을메모리에올려야하므로오버해드가발생한다. 그러므로 tuples를별도에 DB에저장하였다
InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins
Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.
More information강의 개요
DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationDBMS & SQL Server Installation Database Laboratory
DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.
More informationMySQL-.. 1
MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition
More informationMicrosoft PowerPoint - 10Àå.ppt
10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어
More information@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a
1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL
More information슬라이드 1
Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치
More information윈도우시스템프로그래밍
데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More information컴파일러
YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More information윈도우시스템프로그래밍
데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More information목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE
ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More information강의 개요
정규화와 SELECT (II) 웹데이터베이스 학과 학생 과목 학과 지도교수 학과학번성명 수강과목 담당교수 A 김수정 A 0001 고길동 성질이론 김수정 B 허영만 A 0002 둘리 한식의멋 허영만 C 강풀 B 0003 희동이 심리학의이해 강풀 과목 _ 성적 학번 수강과목 성적 0001 성질이론 A 0001 한식의멋 C 0002 성질이론 A 0002 한식의멋
More information문서 템플릿
HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,
More informationSpring Boot/JDBC JdbcTemplate/CRUD 예제
Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.
More informationC 프로그램의 기본
C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석
More informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More information10.ppt
: SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL
More information<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>
제 8강 SQL: 관계데이터베이스언어 강의목표 관계데이타베이스언어로서상용 DBMS에서가장널리사용되는 SQL의동작원리에관하여학습하고, 이를이용하여다양한질의문을작성하는방법을습득한다 기대효과 SQL의데이터정의기능을이해한다 SQL의데이터조작기능중질의기능을이해한다 SQL의데이터조작기능중데이터갱신기능을이해한다 SQL의데이터조작기능중뷰및인덱스관련기능을이해한다 SQL 의개요
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.
More informationTITLE
CSED421 Database Systems Lab MySQL Basic Syntax SQL DML & DDL Data Manipulation Language SELECT UPDATE DELETE INSERT INTO Data Definition Language CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE
More information6장. SQL
학습목표 SQL이 무엇인지 개념을 설명 테이블을 생성, 변경, 제거할 할 수 있다. 수 있다. 데이터를 검색, 갱신, 삽입, 삭 제할 수 있다. 뷰, 시스템 카탈로그, 저장 프 로시저, 트리거에 대한 개념 을 설명할 수 있다. 2 목차 SECTION 01 SQL의 개요 11 SQL의 역사 12 SQL의 유형별 종류 SECTION 0 21 스키마 22 테이블
More informationEclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일
Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More informationLec. 2: MySQL and RMySQL
1 / 26 Lec. 2: MySQL and RMySQL Instructor: SANG-HOON CHO DEPT. OF STATISTICS AND ACTUARIAL SCIENCES Soongsil University 1. Introduction 2 / 26 이번강의에서는 MySQL 관계형데이터베이스관리시스템 (RDBMS, Relational Database
More informationPowerPoint 프레젠테이션
MySQL - 명령어 1. 데이터베이스관련명령 2. 데이터베이스테이블관련명령 3. SQL 명령의일괄실행 4. 레코드관련명령 5. 데이터베이스백업및복원명령 1. 데이터베이스관련명령 데이터베이스접속명령 데이터베이스접속명령 mysql -u계정 -p비밀번호데이터베이스명 C: > mysql -ukdhong p1234 kdhong_db 데이터베이스생성명령 데이터베이스생성명령
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More information8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )
8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More informationMicrosoft PowerPoint - Chapter 6.ppt
6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; // 컴파일오류 3 C 의 const (1)
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More informationWINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역
WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,
More informationuntitled
시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationPowerPoint Template
16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //
More information13주-14주proc.PDF
12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float
More informationiii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.
Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:
More information4S 1차년도 평가 발표자료
모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components
More informationLab 4. 실습문제 (Circular singly linked list)_해답.hwp
Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More informationDocsPin_Korean.pages
Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google
More informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More informationMicrosoft PowerPoint - Java7.pptx
HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)
More informationMicrosoft PowerPoint - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More informationMicrosoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse
More informationMicrosoft PowerPoint Python-DB
순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 학습내용 데이터베이스 SQLite 데이터베이스 파이썬과데이터베이스연결 순천향대학교컴퓨터공학과 2 데이터베이스 (Database) 소개 데이터베이스 DBMS (DataBase Management System) 이라고도함 대용량의데이터를매우효율적으로처리하고저장하는기술 SQLite, 오라클, MySQL 등이있음
More information프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음
프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y
More informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More informationuntitled
(shared) (integrated) (stored) (operational) (data) : (DBMS) :, (database) :DBMS File & Database - : - : ( : ) - : - : - :, - DB - - -DBMScatalog meta-data -DBMS -DBMS - -DBMS concurrency control E-R,
More information빅데이터분산컴퓨팅-5-수정
Apache Hive 빅데이터분산컴퓨팅 박영택 Apache Hive 개요 Apache Hive 는 MapReduce 기반의 High-level abstraction HiveQL은 SQL-like 언어를사용 Hadoop 클러스터에서 MapReduce 잡을생성함 Facebook 에서데이터웨어하우스를위해개발되었음 현재는오픈소스인 Apache 프로젝트 Hive 유저를위한
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More information<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>
2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More information1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과
1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas
More information구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한
수업환경구축 웹데이터베이스구축및실습 구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 http://chrome.google.com 한림대학교웹데이터베이스 - 이윤환 APM 설치 : AUTOSET6
More informationMicrosoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
More informationPowerPoint Presentation
FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org
More informationObservational Determinism for Concurrent Program Security
웹응용프로그램보안취약성 분석기구현 소프트웨어무결점센터 Workshop 2010. 8. 25 한국항공대학교, 안준선 1 소개 관련연구 Outline Input Validation Vulnerability 연구내용 Abstract Domain for Input Validation Implementation of Vulnerability Analyzer 기존연구
More information슬라이드 1
정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함
More informationResearch & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W
Research & Technique Apache Tomcat RCE 취약점 (CVE-2019-0232) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE-2019-0232 취약점은 Windows 시스템의 Apache Tomcat 서버에서 enablecmdlinearguments
More information슬라이드 제목 없음
4.2 SQL 개요 SQL 개요 SQL은현재 DBMS 시장에서관계 DBMS가압도적인우위를차지하는데중요한요인의하나 SQL은 IBM 연구소에서 1974년에 System R이라는관계 DBMS 시제품을연구할때관계대수와관계해석을기반으로, 집단함수, 그룹화, 갱신연산등을추가하여개발된언어 1986년에 ANSI( 미국표준기구 ) 에서 SQL 표준을채택함으로써 SQL이널리사용되는데기여
More informationMicrosoft PowerPoint - additional06.ppt [호환 모드]
보조자료 6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park 복습 : Const 키워드왜사용? C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; //
More informationMicrosoft PowerPoint - QVIZMVUMWURI.pptx
데이타베이스시스템 2011.03 충북대학교경영정보학과조완섭 (wscho@chungbuk.ac.kr) Chap. 4 SQL 질의어 C4 2 목차 - SQL2에서데이터정의, 제약조건및스키마변경 - SQL에서의기본질의 - 더복잡한 SQL 질의들 - SQL에서삽입, 삭제, 갱신구문 - SQL 뷰 - 주장으로추가적인제약조건명시 - SQL의부가적인기능들 Ch4 3 SQL
More informationgnu-lee-oop-kor-lec06-3-chap7
어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base
More informationJUNIT 실습및발표
JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected
More information목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate
ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition
More informationData Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager
Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager are trademarks or registered trademarks of Ari System, Inc. 1 Table of Contents Chapter1
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More information쉽게
Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법
More information표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인
표준프레임워크로구성된컨텐츠를솔루션에적용하는것에문제가없는지확인 ( S next -> generate example -> finish). 2. 표준프레임워크개발환경에솔루션프로젝트추가. ( File -> Import -> Existring Projects into
More informationChapter 1
3 Oracle 설치 Objectives Download Oracle 11g Release 2 Install Oracle 11g Release 2 Download Oracle SQL Developer 4.0.3 Install Oracle SQL Developer 4.0.3 Create a database connection 2 Download Oracle 11g
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More informationC++ Programming
C++ Programming 상속과다형성 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 상속의이해 상속과다형성 다중상속 2 상속과다형성 객체의이해 상속클래스의객체의생성및소멸 상속의조건 상속과다형성 다중상속 3 상속의이해 상속 (Inheritance) 클래스에구현된모든특성 ( 멤버변수와멤버함수 )
More informationPowerPoint Presentation
6 장 SQL (section 4-6) 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) 2-5 제약조건 SECTION 03 데이터조작어 (DML)
More information슬라이드 1
2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)
More information제목 레이아웃
웹해킹이라고무시하는것들보소 2017.07.10 RUBIYA805[AT]GMAIL[DOT]COM SQL Injection 끝나지않은위협 2017.07.10 RUBIYA805[AT]GMAIL[DOT]COM Who am I 정도원 aka rubiya Penetration tester Web application bughuter Pwned 20+ wargame @kr_rubiya
More information목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4
ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More information(Microsoft Word - \301\337\260\243\260\355\273\347.docx)
내장형시스템공학 (NH466) 중간고사 학번 : 이름 : 문제 배점 점수 1 20 2 20 3 20 4 20 5 10 6 10 7 15 8 20 9 15 합계 150 1. (20 점 ) 다음용어에대해서설명하시오. (1) 정보은닉 (Information Hiding) (2) 캡슐화 (Encapsulation) (3) 오버로딩 (Overloading) (4) 생성자
More information쉽게 풀어쓴 C 프로그래밊
Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.
More information@ p a g e c o n te n tt y p e = " te x t/ h tm l;c h a rs e t= u tf- 8 " fo r (in t i= 0 ; i< = 1 0 ; i+ + ) { o u t.p rin tln (" H e llo W o rld " + i + " < b r/> " ); = re s u lt + re s u lts u m ()
More information