목록DataBase (11)
미래학자
지금까지 헤드퍼스트 SQL 책을 정리했다. 물론 SQL에는 더 많은 내용을 가지고 있다. 지금까지 다뤘던 내용은 기본적으로 많이 사용하는 내용을 위주로다뤘다. 지금부터는 큰 주제로 다루지 못한 내용을 간단히 살펴 보려고 한다. 뷰 (VIEW)CHECK트랜잭션DATE 1. 뷰 (VIEW) 뷰에 대한 설명은 다음과 같다. 쿼리를 저장하여 결과를 여러번 반복해서 확인하는 방법. 흔히, 가상 테이블이라 한다. 실제로 동작하는 것은 내부적으로 서브 쿼리를 호출한다. 뷰의 유용성테이블 구조가 변경되어도 뷰를 계속 사용가능어플리케이션 코드에 복잡한 쿼리가 존재하지 않게 할 수 있다.쿼리가 어플리케이션에 노출 되지 않음SELECT 할 수 있는 데이터는 모두 뷰로 만들 수 있다. 2. CHECK 만약, 성별 데이터를 '..
권한 기본 설정 (GRANT)특정 데이터 베이스에 대한 권한 주기여러가지 권한권한 취소 1. 권한 기본 설정 (GRANT) 루트(root) 사용자 암호 설정 5.7 버전을 기준으로 명령어가 바뀌었다. 사용자 추가 및 테이블에 대한 권한 설정 1 : test_user라는 사용자를 추가하며 비밀번호는 'test'이다. 3 : test_user는 study_db 데이터 베이스의 color 테이블에 대해 SELECT 할 수 있는 권한을 가진다. 2. 특정 데이터 베이스에 대한 권한 주기 1 : a_user 사용자는 study_db 데이터베이스의 모든 table에 대해서 SELECT, INSERT 권한을 가진다.2 : 데이터 베이스의 모든 테이블에 대해 모든 권한을 준다.3 : a_user는 모든 데이터 베이스의..
이번 시간에는 상당히 큰 데이터를 이용하여 쿼리를 해보겠다. 샘플 데이터는 아래의 링크에서 받을 수 있다. https://github.com/datacharmer/test_db.git Download ZIP 을한 후 압축을 푼 후 해당 디렉토리로 이동 한다. 그리고 아래와 같이 Import를 한다. $ mysql -u root -p < employees.sql 실행 하면 위처럼 임포트 결과를 확인할 수 있다. show databases; use emplyees; 명령을 통해 아래와 같이 employees 데이터 베이스가 추가된 것을 확인할 수 있다. 테이블 구조는 다음과 같다. 위와 같은 방법으로 데이터 베이스 내부의 데이터 수를 확인할 수 있다. https://gist.github.com/tmmoond..
저번 시간에는 JOIN을 배웠다. JOIN을 잘 활용하면 많은 일을 할 수 있다. 그러나 상황에 따라서는 UNION을 함께 써야 될 때가 있다.그리고 쿼리 결과를 INSERT 또는 UPDATE 할 필요가 있을 때, JOIN으로는 할 수 없다. 이럴 때 서브 쿼리가 유용하게 사용된다. 차례 대로 진행하지 않으신 분은 gril_group 테이블과 professor 테이블을 추가하기 바란다. 1. 유니온 (UNION) 지금까지 테이블의 데이터는 아래와 같다. 두 테이블에서 이름만 꺼내서 아래와 같이 하나의 테이블로 나타내고 싶다. UNION은 몇개 라도 계속해서 연결할 수 있다. 유니온의 규칙 하나의 ORDER BY만 사용할 수 있다.각 SELECT의 열수, 표현식가 같아야 한다.SELECT 문들 끼리 순서는..
조인은 관계형 데이터 베이스에서 일반적으로 많이 사용하며, 충분한 이해 없이 사용하기 쉬운 내용이다. 이번 시간에는 여러 조인의 종류가 그 사용하는 예에 대해서 공부해보자. INNER 조인LEFT OUTER, RIGHT OUTER, OUTER 조인카티전 조인 (CROSS 조인)셀프 조인우선 JOIN을 할 두 테이블을 생성하자. 아래 사진과 같이 테이블이 만들어 진다. 1. INNER 조인 INNER 조인은 우리가 생각하는 일반적인 용도에 사용한다. * ON 대신 WHERE를 쓸 수 있다. INNER 조인은 MySQL에서는 간략히 JOIN으로 나타낸다. 일반적으로 사용하는 JOIN 이다. 핵심은 JOIN뒤에 ON인데, 두 테이블이 결합하는 조건을 나타낸다. 두 테이블 모두 노래의 _id를 가지고 있으며, ..
이제 지금 까지 배웠던 내용을 실제로 실습해 볼 것이다. 제약조건 참조키 설정, 테이블 연산으로 값 채우기1NF 실습 1. 제약조건 참조키(Foreign Key) 설정 1장에서 공부한 student 테이블을 생성하자. 이미 student 테이블이 있다면 DROP 후 재 생성하는 것을 추천한다. 현재 student 테이블이 있으니 학과를 나타내는 department 테이블을 생성한다. 학과의 종류는 IDE, CSE, ESE, MSE, IME 이렇게 5 종류다. 첫 번째 쿼리 : department 테이블 생성7~9 : SELECT를 통해 가져온 결과를 바로 테이블에 INSERT 한다.7 : department 테이블의 department_code에 값을 넣는다.8 : student 테이블의 belong값을..
이전까지 MySQL의 기본적인 사용방법을 다뤘습니다. 이번 시간에는 정규화에 대해 간단히 공부할 생각입니다. 정규화에 대한 이해가 없으시면, 정규화가 조금 난해하게 다가올 수 있습니다.그 동안 정규화는 1NF, 2NF, 3NF, BCNF.... 가 있으며, 1NF는 원자적 데이터를 만족해야 하고, 2NF는 부분적 함수종속이 없어야 하며,,단계가 높아질 수록엄격해고,,, 이런 사전적인 정의만으로 공부하셨다면 제 글이 도움이 될 것입니다. 저는 이번 시간에 딱 1NF, 2NF, 3NF 만 다루겠습니다. 이 글은 4장에서 배운 합성키와, 함수적 종속의 이해가 필요합니다. 정규화는 왜 할까요? 아래는 위키백과에 있는 정규화의 목적입니다. 1. 고려되지 않은 삽입, 갱신, 삭제 의존에서부터 관계의 집합을 배제한다..
이번 시간에는 데이터 베이스에서 키의 종류와 함수적 종속의 의미를 공부할 생각입니다. 키의 종류 (Primary Key, Foreign Key)함수적 종속 (부분적 함수종속, 이행적 함수 종속) 1. 키의 종류 (Primary Key, Foreign Key) KEY의 종류를 먼저 나열하면 후보키 (Candidate Key) : 테이블을 구석하는 열 중에서 유일하게 식별할 수 있는 열기본키 (Primary Key) : 테이블에서 유일하게 식별하기 위해 사용하는 키대체키 (Alternate Key) : 후보키 중 기본키를 제외한 나머지 후보키 테이블에서 기본키가 꼭 필요한 것은 아니지만, 테이블과의 관계를 사용할 때는 그리고 실무에서는 매우 중요하다. 외래키 (Foreign Key) : 외래키란 테이블 내의..
저번 시간을 통해 데이터를 선택하고, 변경하는 것에 대해 알아봤다. 이번 시간에 알아볼 것은 mySQL 에서 효율적으로 데이터를 처리하는방법에 대해 공부하려 한데이터 베이스에서 쓰지않는 데이터를 모두 가져오는 일은 좋은 것이 아니다. 테이블 조차도 필요한 칼럼에 중복을 최소화 하는 것이 좋다. 내부 함수 사용하기 (SUM, COUNT, AVG)문자열을 다루는 내부함수 사용하기 (RIGHT, SUBSTRING_INDEX, UPPER)데이터의 그룹별 선택 (GROUP BY) 아래 링크를 통해 1장 과정을 통해 생기는 테이블과 데이터를 추가하실 수 있습니다.https://gist.github.com/a12b884cfa4480714f6e4b998f2991d7.git 현재 student 테이블의 내용입니다. (2..
저번 1장(DB와 테이블 생성, Link : SELECT http://futurists.tistory.com/11)에 이어 이번 시간에는 테이블을 변경 시키는 것에 대해이야기 해볼까 합니다. 조건 검색, 효율적인 방법 (BETWEEN, IN)데이터 베이스, 테이블, 데이터 삭제 (DROP, DELETE)테이블 변경 (UPDATE, CHANGE)데이터 변경생성문 보기 (SHOW)아래 링크를 통해 1장 과정을 통해 생기는 테이블과 데이터를 추가하실 수 있습니다.https://gist.github.com/a12b884cfa4480714f6e4b998f2991d7.git 1. 조건 검색, 효율적인 방법 (BETWEEN, IN) 저번 시간에 배웠던 WHERE 절을 AND 또는 OR로 연결하는 것을 기억할 것이다...