1. 데이터 유형
(1) 숫자형
- INT, DOUBLE
(2) 문자형
- CHAR, VARCHAR (CHAR: 고정 길이, VARCHAR: 가변 길이)
(3) 날짜 및 시간 타입
- DATE, DATETIME, TIMESTAMP
2. 컬럼의 속성
- Primary key (PK) : 각 행을 식별하는 데 사용되는 고유한 식별자
- Foreign key (FK) : 다른 테이블의 기본 키와 관계를 나타내는 컬럼
- Unique : 중복된 값을 허용하지 않음
- Not NULL : NULL 값을 허용하지 않음
- default : 자동으로 할당되는 값
*데이터 무결성 : 데이터의 정확성, 일관성, 유효성이 유지되는 것을 보장
3. SQL
(1) SQL의 주요 분류
| 분류 | 이름 | 역할 | 예시 |
| DDL | Data Definition Language | 데이터 구조 정의 (테이블, 컬럼 등) | CREATE, ALTER, DROP |
| DML | Data Manipulation Language | 데이터 조작 (삽입, 수정, 삭제) | INSERT, UPDATE, DELETE, SELECT |
| DCL | Data Control Language | 권한 제어 | GRANT, REVOKE |
| TCL | Transaction Control Language | 트랜잭션 관리 | COMMIT, ROLLBACK, SAVEPOINT |
| DQL | Data Query Language | 데이터 조회 전용 (DML에서 SELECT만 따로 보는 경우도 있음) | SELECT |
| CRUD | SQL 구문 |
| Create | INSERT INTO |
| Read | SELECT |
| Update | UPDATE |
| Delete | DELETE FROM |
(2) SQL문 작성할 때 유의사항
1. 예약어를 이름으로 설정하고 싶다면 `로 감싸기
2. 입력받은 서버 시간을 데이터로 사용하고 싶다면 datetime default current_timestamp로
3. 외래키를 사용할 때는 그 전에 이름을 지정하기
4. auto_increment는 insert 항목에서 제외
5. current_timestamp도 insert 항목에서 제외
6. check나 primary key는 해당 열의 코드에 붙여서 작성해도 무방
7. int로 부족한 경우가 있어서 bigint로 작성
CREATE DATABASE shop;
USE shop;
CREATE TABLE Product (
ProductID bigint NOT NULL AUTO_INCREMENT primary key,
`Name` varchar(50) NOT NULL,
Price bigint NOT NULL CHECK (Price>=0),
Description varchar(100) NOT NULL,
StockQuantity bigint NOT NULL CHECK (StockQuantity>0)
);
CREATE TABLE Customer (
CustomerID bigint NOT NULL AUTO_INCREMENT primary key,
`Name` varchar(50) NOT NULL,
Email varchar(100) NOT NULL unique,
Address varchar(100) NOT NULL,
PaymentInfo varchar(100) NOT NULL
);
CREATE TABLE `Order` (
OrderID bigint NOT NULL AUTO_INCREMENT primary key,
OrderDate DATETIME DEFAULT current_timestamp NOT NULL,
CustomerID BIGINT NOT NULL,
ProductID BIGINT NOT NULL,
foreign key(ProductID) references Product (ProductID),
foreign key(CustomerID) references Customer (CustomerID)
);
INSERT INTO Product (`Name`, Price, Description, StockQuantity) values ("리락쿠마 반팔티", 12000, "리락쿠마 귀여워요", 2);
INSERT INTO Product (`Name`, Price, Description, StockQuantity) values ("치이카와 잠옷 세트", 30000, "치이카와 친구들이 그려져 있어요", 4);
INSERT INTO Customer (`Name`, Email, Address, PaymentInfo) values ("김모씨", "kimman@gmail.com", "한국","결제 정보");
INSERT INTO Customer (`Name`, Email, Address, PaymentInfo) values ("김모양", "kimyang@gmail.com", "미국","결제 정보");
INSERT INTO `Order` (CustomerID, ProductID) values (1,2);
INSERT INTO `Order` (CustomerID, ProductID) values (2,1);
SELECT * FROM Product;
SELECT * FROM Customer;
SELECT * FROM `Order`;'멋쟁이사자처럼 13기 > 정기 세션' 카테고리의 다른 글
| [멋사/Mac OS] 4주차 정기 세션 (Part 2. 엔티티 설계) (0) | 2025.06.18 |
|---|---|
| [멋사/Mac OS] 4주차 정기 세션 (Part 1. JPA) (0) | 2025.06.17 |
| [멋사/Mac OS] 3주차 정기 세션 (Part 2. MVC 패턴) (0) | 2025.06.09 |
| [멋사/Mac OS] 3주차 정기 세션 (Part 1. SpringBoot란?) (0) | 2025.06.09 |
| [멋사/윈도우] 2주차 정기 세션 준비 (0) | 2025.03.20 |