본문 바로가기

CS 과목(CS科目)/데이터 베이스(データベース)

7. SQL로 데이터 조회하기(SQLでデーター照会)PART 3 NULL SQL문의 의도는 birth_date값이 NULL인 tuple를 골라 id값을 출력학 싶었던 것이다. 그러나 결과는 Empty Set!!!! 즉, birth_date가 NULL인 것이 employee에는 없다라는 것이...다??????? 결론부터 말하면 그렇게 생각하면 안된다. SQL에서의 NULL은 조금 다르게 취급을 해 줘야 한다. birth_date = NULL 과 같이 ' = '을 붙여 주면 안 된다. SQL에서는 NULL 앞에는 반드시 is가 들어 가야 한다. 만약 NULL이 아닌 생일을 가진 직원의 id를 알고 싶다면 SQL문이 어떻게 되야 할까?? -> SELECT id FROM employee WHERE birth_date IS NOT NULL NULL과 Three-valued-l.. 더보기
6. SQL로 데이터 조회하기(SQLでデーターを照会)PART 2 SELECT with SubQuery SubQuery를 이용하면, 좀 더 정밀하고,세세한 조건의 SQL문을 작성 가능하다. 위 그림의 2개의 SQL문을 이용하여 예제를 풀 수가 있다. Q. SQL문을 2개나 쓰는 것은 뭔가 귀찮다. 2개의 SQL문을 1개의 SQL문으로는 바꿀 수가 없을까? A. 쌉가능.(아래 그림 참조) 2번째 Query문에서의 ' 1992 - 08 - 04 '는 1번째 Query문의 결과이다. '1992-08-04' 부분을 1번째 Query문으로 치환을 시키면, 아래의 그림과 같이 1개의 SQL문이 만들어 진다. subquery "SELECT birth_date from employee where id = 14" : SELECT문에 포함된 또 다른 Query문(약간, 재귀 함수 같은 .. 더보기
5. SQL로 데이터 조회하기(SQLでデーターを照会しょう)part 1 SELECT문에 있어서 WHERE id=9 와 같은 조건문을 selection condition이라고 부른다. name, position과 같은 attribute를 projection attribute라고 부른다. 위 예제를 풀기 위해서는 아래의 2개의 테이블이 이용된다. 임직원의 id,이름과 직군 -> employee 테이블 project 2002를 leading하고 있는 임직원id -> project 테이블 SQL의 실행 흐름 1. projcet 테이블에서 id가 2002인 tuple을 찾는다. 2. 그 tuple에서 leader_id값을 읽는다. 3. leader_id는 foreign key로서 employ.id를 참조하고 있으므로, leader_id로 employee 테이블에 O(1)의 시간 복잡.. 더보기
4. SQL로 DB에 데이터를 추가(insert)하고 수정(update)하고 삭제(delete)하는 방법(SQLでDBへデーターを挿入(insert)/修正(update)/削除(delete)する方法) 데이터 추가 INSERT INTO [테이블 명] VALUES( ...) : VALUES 안에 Attribute값을 넣어 준다. 그리고 table을 정의했을 때의 Attribute 순서대로 넣어 주면 된다. 이때 모든 Attribute에 대한 값을 다 넣어 줘야 한다. ( 모든 Attribute값을 안 넣어 줘도 되게 하는 방법이 아래쪽에 나와 있음) 위 명령어를 실행을 하면 정상적으로 작동을 할까?? -> Nope!!! "111"이라는 dept_id Attribute는 DEPARTMENT Table의 값을 참조하고 있는데, 위 시점에서는 아직 DEPARTMENT Table에는 어떠한 id값도 넣어 지지 않았기 때문에, DEPARTMENT Table의 id Attribute에 없는 값(111)을 참조하게 .. 더보기
3. SQL의 개념과 SQL로 데이터베이스를 정의(SQLの概念とSQLでDBを作ろう) SQL의 기본 개념 relational database에서는 tuple들의 중복은 불가능하였지만, SQL에서의 relation, 즉 table에서는 중복된 tuple이 존재 가능하다. (multiset : 동일 항목이 여러 개 출현하는 것을 허락하 는 집합체.) 또한 관계형 DMBS마다 정의된 SQL의 문법이 조금씩 다르다. ( 그러나, SQL이 표준 언어로 약속은 되어 있다.) 그래서, MySql과 Oracle 등의 관계형 DBMS들 사이에 SQL 문법이 약간씩 다르다. ( 고로 Query문이 다른 DBMS상에서 100% 호환되지 않는다.) 예제를 통해 SQL로 DB 정의!!( MySQL 설치 방법 및 CMD에서의 실행법 ) InnoDB : Mysql이 제공하는 여러 DB Engine 중 하나! DB .. 더보기
2. 관계형 데이터베이스(relational database)개념과 relation, primary key(기본키), foreign key(외래키), constraints DB에서 말하는 "Relation", 즉 "관계"는 수학에서 나오는 "관계"이다. 고로, 먼저 수학에서의 "관계"가 무엇인지를 알아야 한 다. 그에 앞서 먼저 set이란 무엇인지를 알고 가자. 참고로, set과 list의 차이점에 대해서도 알아 놓자. 차이점은 단 한가지, "순서"에 있다. set은 element들의 순서가 고려돼 있지 않다. 그러나 list들은 element들의 순서가 고려돼 있다. (아래의 관계 부분은 list개념이다.) A X B ={ {1->p} ,{2->q}, {3->r} ..... {2->r} }, 총 6개의 list로 구성이 돼 있다.( Tuple : 1개의 list가 n개의 element로 구성이 돼 있을 때, 그 list를 n-tuple이라고 한다.) 위 그림과 같이 Se.. 더보기
1.데이터 베이스의 기본 개념(データベースの基本的な概念) 대부분 three-schema-architecture를 사용한다. 물리적 구조가 바뀌어도 user application차원에서는 구조가 바뀌지 않게 하기 위함이다. external scheme는 실제 사용자가 바라보는 schema라고 이해하면 된다. 여~~러 유저들이 있지만, 각각의 유저들이 필요로 하는 데이터는 다르다. external schema는 특정 유정가 필요로 하는 데 이터만 표현을 한다. 원래 초기에는 external schema, internal schema 이 2개가 전부였다. 그러나 특정 유저에게 필요한 데이터만 표현을 하다 보니, 중복되는 데이터가 있음에도 불구하고 조금씩 다른 여러 개의 internal shema가 생겨 버렸다. -> 관리 어려워짐, 데 이터 불일치 문제 발생. 이러.. 더보기