SQL에 대한 내용을 배운다.
- Declarative 선언적 : what을 작성해야함 (how가 아님)
- Implemented widel : 적용하기 쉽다?라는건가
- constrained : turing-complete한 일들을 타켓으로 하지 않음
=> turing complete란? https://ko.wikipedia.org/wiki/%ED%8A%9C%EB%A7%81_%EC%99%84%EC%A0%84
뭔소린지,,, turing-complete한 것들은, 저장공간을 크게 신경쓰지 않고 (대충 무한대라고 생각하고?) task를 수행하는것..인가?
- General-purpose and feature-rech : 범용적이고 기능이 많다
-> 수년에 걸쳐 기능이 추가되어왔음!
-> extensible (확장가능성)
Relations들의 집합 (즉,, 여러 테이블의 집합)
- 정의 : A database is a structured collection of data that is stored and accessed electronically. It serves as a container for organizing and managing data.
데이터베이스는 데이터의 구조화된 콜렉션인데, 이건 컴퓨터로 저장하고, 접근이 가능하다. 데이터를 관리하기 위해 컨테이너 형태로 제고오된다.
- 목적 : It allows for efficient data storage, retrieval, and management.
효율적인 데이터 저장, 검색, 관리가 가능하다.
- 예를들어,,, 도서관 데이터베이스는 책, 저자, 출판사에 대한 정보를 저장하고 있을것
- 정의 : A table is a specific structure within a database that organizes data into rows and columns. Each table represents a single entity type (e.g., customers, orders).
테이블은 데이터 베이스 안에 있는 특정 구조물인데, 이건 데이터를 행(row)과 열(column)으로 관리한다. 각각의 테이블은 하나의 entity 타입을 나타낸다.
- 목적 : Tables are used to store related data. Each row in a table represents a unique record, while each column represents a specific attribute of that record.
데이블은 서로 관련된 데이터들을 저장하기 위해 사용된다. 테이블 속하나의 행(row)은 유일한 record를 나타내며, 각각의 열(column)은 record의 특정한 속성(attribute)를 나타낸다.
- 예를들어,,, "고객" 테이블에는 '고객ID', '이름', '이메일', '핸드폰 번호' 가 속성 (attribute)로 들어간다 (== 열로 들어감)
- 엔티티, 관계가 모두 테이블 형태로 표현될 수 있다.
테이블의 column을 스키마라고 한다 (아래 설명하는 스키마와 똑같은 단어지만,,, 다른의미!) -> 일종의 설명! attribute! metadata!
테이블의 row를 instance라고 한다. -> 스키마 구조를 만족시키는 데이터 모음.. 하나의 객체로 생각하면 될것같다.
이렇게 "학생" 테이블에는
스키마 : 학번, 이름, 나이 와 같이 각 column에 대한 설명
인스턴스 : 실제 객체의 데이터들 (철수학생, 영희학생, 길동학생,,,)
이렇게 잘라서 보면,,,
- attribute : 왼쪽사진 == column, field
- tuple : 오른쪽 사진 == record, row
스키마는 고정되어 있다
-> 유니크한 속성(attribute)이름, atomic한 타입을 가진다
속성이름은 중복될 수 없다! (같은 테이블 안이라면, 이름은 꼭 달라야함)
atomic == 쪼개질 수 없음 == 구조체, 클래스 같은건 타입으로 못옴
인스턴스는 계속해서 바뀔 수 있다.
음,,, 데이터베이스의 일부분 이라고 생각하면 될것같다. 여러 테이블의 집합인데, 데이터베이스보다는 규모가 작은?
- 정의 : A schema is the organizational blueprint of a database. It defines how data is structured, including the tables, fields, data types, relationships, and constraints.
스키마는 데이터베이스의 청사진이다. (청사진 : 파란배경에 하얀색으로 그려져있는 건축물의 설계도) 이건 데이터가 어떻게 구성되어있는지를 결정한다. 이것에는 테이블, 필드, 데이터타입, 관계, 제약 등이 포함된다.
- 목적 : Schemas provide a way to logically group tables and define how they interact with one another. They can also enforce rules about data integrity.
스키마는 논리적으로 테이블을 그룹짓는 방법을 제공하고, 다른 테이블과 어떻게 연관있는지를 정의한다. 스키마는 데이터 일관성(integrity)과 관련된 규칙을 적용한다.
- 예를들어,,, [sales]라는 스키마는 고객, 주문, 상품과 같은 table을 포함할 수 있을것이다. 여기에는 테이블간의 fk같은 관계가 포함된다.
- 몇몇 DBMS에서는 데이터베이스==스키마 로 취급한다고 한다. (즉 굳이 스키마라는걸 이렇게 구분하지 않는다는것같음)
결론적으로
데이터베이스는 데이터를 전체적으로 모은것이다.
테이블은 데이터베이스 안에서 행렬 형식으로 데이터를 표현하는 구조물이다.
스키마는 데이블과 관계를 포함하며, 데이터베이스의 조직과 구조를 정의한다.
- DDL : Data Definition Language
스키마 정의, 수정과 관련된것들
- DML : Data Manipulation Language
쿼리문 같은것들
RDBMS는 효율적인 실행을 해줘야 한다.
-> 그러기 위해 쿼리 결과에는 영향을 끼치지 않는 알고리즘 선택을 잘 해야한다!
4개의 테이블을 가지고 실습을 진행해보자!
1. 테이블 CREATE하기 (DDL) -> 각 테이블의 스키마(속성, 컬럼)을 정해준다. 자료형도 같이 정해주어야한다.
CREATE TABLE Sailors(
sid INTEGER,
sname CHAR(20),
rating INTEGER,
age FLOAT,
PRIMARY KEY (sid)
);
CREATE TABLE Boats(
bid INTERGER,
bname CHAR(20),
color CHAR(10),
PRIMARY KEY (bid)
);
CREATE TABLE Reserves(
sid INTEGER,
bid INTEGER,
day DATE,
PRIMARY KEY(sid, bid, day)
FOREIGN KEY(sid)
REFERENCES Sailors,
FOREIGN KEY(bid)
REFERENCES Boats
);
-> 연결되는 경우, FK지정 해주기!
2. 쿼리문으로 데이터 다루기 (DML)
=> 요구사항에 맞게 적절히 쿼리문을 작성해준다.
Q. 시리야 27살인 Sailors를 찾아줘
A. 네 알겠습니다.
SELECT *
FROM Sailors As S
WHERE S.age = 27;
Q. rating까지는 안궁금하고, 어짜피 27살뿐이니까 age정보도 필요 없을것같은데
A. 네 알겠습니다.
SELECT S.sname
FROM Sailors As S
WHERE S.age = 27;
이런식으로,,, 시리에 빙의해서 해주면 된다(??)
https://youtube.com/shorts/7u48ApO51FA?si=j5csv6KROt50pv1n
8. 5장 SQL: QUERIES,CONSTRNNTS, TRIGGERS - DML, multi-table (2) | 2024.10.16 |
---|---|
7. 5장 SQL: QUERIES,CONSTRNNTS, TRIGGERS - DML , Basic Singe-table Queries (0) | 2024.10.15 |
5. 4장 RELATIONAL ALGEBRA AND CALCULUS (0) | 2024.10.11 |
4. 2장 데이터베이스 설계 (database design) (4) - Logical Database Design (2) | 2024.10.10 |
3. 2장 데이터베이스 설계 (database design) (3) - Conceptual Database Design (5) | 2024.10.10 |