1. Domain SQL Types
2. Create table
- ()는 할당된 메모리 크기를 말한다.
- name column의 타입을 정의할 때 not null을 해주면 null삽입의 시도를 막을 수 있다.
- 참고로 primary key같은 제약을 걸어주면 ID에는 null 값이 못 들어오게 된다.
- 여러개의 foreign key를 선언할 수도 있다.
3. Insertion
- course라는 테이블에 해당 record를 삽입한다.
4. Select
- instructor 테이블에서 where 조건을 만족하는 name record의 name을 가져와라
- 결과는 relation으로 반환한다.
- 기본적으로 sql은 중복을 허용한다. 따라서 instructor relation에서 dept_name colum만 따로 떼어와도 중복된 내용이 있을 수 있다.
- distinct를 써주면 중복이 제거된다.
- select에서 column에 대해서 연산을 수행함은 물론 이름도 바꿔서 가져오도록 할 수 있다.
- from에 여러 relation이 들어가는 경우를 살펴보자
- 위의 예시는 insructor와 teaches의 곱의 결과에서 select를 하게 된다.
- 조건이 있다면 곱의 결과에서 조건을 만족하는 tuple을 가져오게 된다.
- product를 하면 의미없는 tuple쌍이 생길 수 있기 때문에 where에서 조건을 설정하고 필요한 column들을 가져온다.
- 정리를 해보면 아래와 같다.
5. Deletion
- table의 튜플만 제거한다. 테이블은 사라지지 않는다.
- drop table r 이라고 하면 r 이라는 테이블까지 통째로 삭제한다.
6. Update
7. Rename
- 첫번째 instructor를 T, 두번째 instructor를 S라고 바꿔서 사용할 수 있다.
- 두 instructor를 구분시키기 위해서는 개명이 반드시 필요하다.
- 참고로 위 구문의 의미는 some instructor of comp.sci 보다 salary가 많은 instructor를 뽑는다 이다.
8. String Operation
- 문자열 타입인 column의 경우 substring 또는 한두개의 문자로 해당 변수를 찾고 싶을 때 쓸 수 있다.
- 위의 예시는 교수의 이름이 뭔지는 모르겠으나 dar가 중간에 들어간 사람을 찾는 문장이다.
9. Ordering
- select하여 결과를 display할때 sort option을 줄 수 있다.
- order by에 두 property를 넣어주면 1차 dept_name으로 정렬하고 2차 name으로 정렬한다는 뜻이다.
- 한가지 유의할 점이 있는데, order by를 먼저 수행하고 select구문이 수행된다. 만약 그 반대로 instructor에서 name을 먼저 뽑아버렸다면 dept_name으로는 정렬이 불가능 하기 때문이다.
- asc, desc : 오름차순, 내림차순
10. Between, Tuple comparison
- between은 범위를 좀더 쉽게 정의할 수 있게 해준다.
- 크거나 같고 작거나 같은 범위를 정의한다.
- tuple이 같음을 더 쉽게 정의할 수 있게 해준다.
11. set operation
- 집합 연산도 제공한다.
- 당연히 집합 연산의 피연산자들은 호환성이 맞아야 한다(동일한 컬럼으로 구성되어있음)
- select는 중복을 허용한다고 했다. 즉 select후에 동일한 tuple이 존재할 수 있다.
- 하지만 set연산을 수행한결과는 기본적으로 중복을 제거한다.
- set연산 후에도 중복된 tuple을 그냥 남겨두고 싶다면 뒤에 "all"을 붙여주면 된다.
12. null
- 반대로 not null을 찾고 싶다면 "is not null"을 쓰면된다.
- 한가지 주의 할 점을 살펴보자.
- null > 5, null = null 등은 판정을 할 수가 없다.
- 따라서 위같은 경우는 unknown이라고 한다.
- 즉 조건의 판정은 T, F, unknown 세가지 상태로 가능하고 and, or 연산도 가능하다. ex) unknown or F = unknown
*자 그럼 이제 어떤 조건의 결과가 unknown이 되었다고 하자. 이는 false로 간주하고 select등의 문장들이 수행된다.
*select는 오직 where가 T인 tuple만 가져온다.
13. MySQL 설치, 설정, 실행 (OS X)
- 설치
1. brew update
2. brew search mysql
3. brew install mysql
- 설정
1. mysql.server start
2. mysql_secure_installation -> 비밀번호, option 설정
- 실행
1. mysql -uroot -p (로그인)
2. exit, quit (로그아웃)
3. mysql.server stop (서버 종료)
14. MySQL 실습
- create database [이름];
- show databases;
- use database [이름];
- create table [이름] ();
- show tables;
- insert
- select
- select where
- delete
'ComputerScience > Database' 카테고리의 다른 글
DB - 6. More SQL statements(1) (0) | 2021.09.29 |
---|---|
DB - 5. Schema Diagram, Relational Algebra (0) | 2021.09.15 |
DB - 4. Keys (at relational DB) (0) | 2021.09.15 |
DB - 3. Relational Database (0) | 2021.09.08 |
DB - 1. Introduction (0) | 2021.09.01 |