[TIL:36]リレーショナル・データベース設計
5221 ワード
✔勘定科目勘定科目SQL:SQLマスター構文
データベースの作成
CREATE DATABASE 데이터베이스_이름;
データベースの使用USE 데이터베이스_이름;
データベースの削除DROP DATABASE 데이터베이스_이름;
テーブルの作成CREATE TABLE 테이블_이름 (
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(255),
email varchar(255)
);
表情報の表示DESCRIBE 테이블_이름;
テーブルの削除DROP TABLE 테이블_이름;
練習問題:SQL Quiz・SQL Exercises✔SQLコマンド概要
SELECT:データセットに含める属性を指定する
SELECT 특성
FROM:結果をエクスポートするデータベース・テーブルを指定します.SELECT 특성_1 // 특성_1, 특성_2, 특성_3 처럼 ','로 복수선택 가능, '*'로 전체선택 가능
FROM 테이블_이름
WHERE:フィルタとして使用されるクエリー文(オプション)SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 = "특정 값" // 특정 값과 동일한 데이터 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 <> "특정 값" // 특정 값을 제외한 값 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 LIKE "%특정 문자열%" // 문자열에서 특정 값과 비슷한 값들을 필터링할 때,
// 'LIKE'와 '\%' 혹은 '\*' 를 사용
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 IN ("특정값_1", "특정값_2") // 리스트의 값들과 일치하는 데이터 찾기
SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NULL // 값이 없는 경우 찾기
ORDER BY:返されたデータ結果をどのような基準で並べ替えて出力しますか(オプション、デフォルトは昇順).SELECT *
FROM 테이블_이름
ORDER BY 특성_1 DESC // 내림차순으로 정렬
LIMIT:出力結果のデータ数(オプション、最後に追加)SELECT *
FROM 테이블_이름
LIMIT 55 // 55개만 출력
DISTINCT:ユニークな価格が欲しい場合SELECT DISTINCT 특성_1
FROM 테이블_이름
INNER JOINまたはJOIN:2つ以上のテーブルを共通部分に基づいて接続するSELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
OUTER JOIN:同じ値のない行を返すSELECT *
FROM 테이블_1
LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B // 테이블_1 기준
SELECT *
FROM 테이블_1
RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B // 테이블_2 기준
INSERT INTO:データの追加INSERT INTO 테이블_이름 (특성_1, 특성_2)
VALUE (값_1, 값_2)
UPDATE SET:データの修正UPDATE 테이블_이름
SET 바꿀 특성 = 변경값
WHERE 조건
DELETE:データの削除DELETE FROM 테이블_이름
WHERE 조건
勘定科目の関係データベースの設計
❓
스키마(schema)
データベース内のデータの組織方法および異なるエンティティ間の関係の説明を定義します.つまり、データベースの「青写真」のようなものです.リレーショナル・データベースのキーワード
데이터(Data)
:各項目に格納されている値테이블(Table)
:予め定義された列のデータ型を用いて書き込まれたデータを行蓄積필드(Field)
:行列に相当する列레코드(Record)
:表に格納されている項目、行列の行に適用키(key)
:表の各レコードの値を区別できます.各レコードには、プライマリ・キー(プライマリ・キー)と外部キー(外部キー)を含む独自の値があります.❓ Foreign Key, Primary Key
기본키(primary key)
:リレーショナル・データベース・テーブルの各レコードの属性を固有に識別する.외래키(foreign key)
:他のTable参照用.リレーショナル・データベース
1:1
:1枚のレコードが別のテーブルの1枚のレコードにつながっている.直接保存したほうがいいかもしれないので、あまり使いません.1:N
:1レコードが複数の異なるレコードに関連付けられている場合.△親子関係.N:N
:複数のレコードは、他のテーブルの複数のレコードに関連しています.1:N(1対多)関係と似ていますが、2つの方向に複数のレコードを持つことができます.管理のためのJoinテーブルを作成します.
N:N
関係は2つ1:N
関係形状は同じ.2つのテーブルと1:N(1対多)の関係を形成する新しいテーブルで、N:N(複数対多)の関係を表すことができ、このテーブルを結合テーブルと呼ぶ.self referencing
:テーブル内にも関係が必要な場合に使用します.リレーショナル・データベース設計の体験
以下は私が作ったInstagramのアーキテクチャ設計です.スキーマを使用すると、エンティティ間の関係やデータ型、フィールドなどがわかります.
Table Users {
id int [pk, increment] // auto-increment
name varchar
created_at timestamp
}
Table Followers {
user_id int
following_id int
}
Table Posts {
id int [pk, increment]
user_id int
textcontent varchar
created_at timestamp
}
Table Img {
post_id int
img_url varchar
}
Table Posts_hashtags {
post_id int
hashtag_id int
}
Table Hashtags {
id int [pk, increment]
hashtag varchar
}
Table Comments {
id int [pk, increment]
post_id int
user_id int
content varchar
created_at timestamp
}
Table Likes {
user_id int
target_id int
}
Ref: Posts.user_id > Users.id // 외래키를 사용하요 기본키를 참조해 관계를 나타낸다.
Ref: Followers.user_id > Users.id
Ref: Followers.following_id > Users.id
Ref: Posts_hashtags.post_id > Posts.id
Ref: Posts_hashtags.hashtag_id > Hashtags.id
Ref: Img.post_id > Posts.id
Ref: Comments.post_id > Posts.id
Ref: Comments.user_id > Users.id
Ref: Likes.user_id > Users.id
Ref: Likes.target_id > Posts.id
Ref: Likes.target_id > Comments.id
https://dbdiagram.io/利用Reference
この問題について([TIL:36]リレーショナル・データベース設計), 我々は、より多くの情報をここで見つけました https://velog.io/@pearpearb/TIL-35-관계형-데이터베이스실습テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol