- 데이터베이스 생성x
CREATE DATABASE 데이터베이스명 ;
CREATE DATABASE shopping_mall;
-데이터베이스 지정
USE 데이터베이스명 ;
USE shopping_mall;
- 테이블 생성 작성
CREATE TABLE 테이블명 (
id 데이터 타입 NOT NULL,
컬럼1 데이터타입,
컬럼2 데이터타입 NULL,
PROMARY KEY(id)
);
CREATE TABLE product (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(40) NULL,
`price` INT NOT NULL,
`feature` VARCHAR(400) NULL,
PRIMARY KEY(`id`)
);
- 테이블 값 작성
INSERT INTO 테이블명 (id,컬럼1, 컬럼2)
VALUES (id값, 컬럼1값, 컬럼2값);
INSERT INTO product (id, name, price, feature) VALUES(1, '무지반팔', 29000, '아이보리색, 모달소재');
INSERT INTO product (id, name, price, feature) VALUES(2, '반팔셔츠', 49000, '흔하지 않은 피치색의 반팔셔츠, 바스락 거리는 소재로 기분 UP');
INSERT INTO product (id, name, price, feature) VALUES(3, '부츠컷데님', 79000, '촌스럽지 않은 라인의 연청데님');
INSERT INTO product (id, name, price, feature) VALUES(4, '빅토리아슈즈', 54000, '올 여름 당신의 잇아이템');
-테이블 내용 조회
SELECT * FROM 테이블명;
- Primary Key
: 테이블에서 특정 row 하나를 식별하는 역할
① Natural Key : 테이블 내 고유 값 갖고 있는 칼럼에 key 지정
② Surrogate Key : 테이블에 있는 속성 나타내지 않는 key
③ AUTO_INCREMENT : DBMS가 자동으로 1씩 추가해줘 고유값 부여
- 컬럼 값 갱신
UPDATE 테이블명 SET 컬럼명 = '바꿀값' WHERE 컬럼명= '지정row';
UPDATE product SET feature = '깔끔한 아이보리색에 모달소재로 더운 여름 시원하게 보낼 티셔츠~' WHERE id=1;
- row 삭제
DELETE FROM 테이블명 WHERE 컬럼명 = '지정row';
① 물리삭제 : 지정 row 삭제
② 논리삭제 : UPDATE 테이블명 SET 삭제컬럼명 = ‘Y’; 의 식으로 삭제컬럼을 추가해서 삭제된 row 에 표시하기
논리삭제
ALTER TABLE product ADD is_deleted VARCHAR(3); //is_deleted 칼럼 추가
UPDATE product SET is_deleted = 'Y' WHERE id=4; // Y로 값 변경
- Foreign Key(외래키)
: 한 테이블의 컬럼 중에서 다른 테이블의 특정 컬럼을 식별할 수 있는 컬럼
foreign key 테이블 -> 자식테이블
foreign key가 참조당하는 테이블, 즉 primary key가 있는 테이블은 -> 부모테이블
CONSTRAINT 규칙명 FOREIGN KEY (참조칼럼명)
REFERENCES 참조당할테이블 (참조당할칼럼명)
ON DELETE RESTRICT
ON UPDATE RESTRICT;
* 참조무결성 : 참조당하는 primary key 값 범위 내에서 자식테이블의 foreign key 설정 가능
review table 작성(자식테이블)
CREATE TABLE review (
id INT NOT NULL AUTO_INCREMENT,
user_id VARCHAR(20) NOT NULL UNIQUE,
product_id INT NOT NULL,
comment VARCHAR(400) NULL,
PRIMARY KEY(id),
CONSTRAINT fk_review FOREIGN KEY (product_id) REFERENCES product(id)
ON DELETE CASCADE
ON UPDATE SET NULL
);
INSERT INTO review (id, user_id, product_id, comment) VALUES (1, '호호', 1, '모달소재 좋아요~');
INSERT INTO review (id, user_id, product_id, comment) VALUES (2, '가가', 1, '비침이 적어 좋네요');
INSERT INTO review (id, user_id, product_id, comment) VALUES (3, '랄랄', 2, '셔츠색 맘에 들어요~');
INSERT INTO review (id, user_id, product_id, comment) VALUES (4, 'ㅇㅅㅇ', 3, '바지맛집');
INSERT INTO review (id, user_id, product_id, comment) VALUES (5, '수수', 3, '제가 찾던 바지핏입니다');
INSERT INTO review (id, user_id, product_id, comment) VALUES (6, '히힐', 2, '모델 핏 안나와요ㅜ');
INSERT INTO review (id, user_id, product_id, comment) VALUES (7, '다다', 2, '소재가 생각보다 시원하네요');
- 부모테이블의 row 가 삭제 되었을 때 참조하던 자식테이블의 row 처리 방법을 설정할 수 있음
① RESTRICT : 부모테이블 primary key 삭제할 때 참조하는 자식테이블의 foreign key 있으면 부모 primary key 삭제 불가능
② CASCADE(연쇄작용) : 부모테이블 primary key 삭제할 때 참조하는 자식테이블의 foreign key도 함께 삭제 됨
③ SET NULL :부모테이블 primary key 삭제할 때 참조하는 자식테이블의 foreign Key에 null 들어감
-부모테이블의 row 가 갱신 되었을 때 참조하던 자식테이블의 row 처리 방법을 설정할 수 있음
① RESTRICT : 부모테이블 primary key 갱신할 때 참조하는 자식테이블의 foreign key 있으면 부모 primary key 갱신 불가능
② CASCADE(연쇄작용) : 부모테이블 primary key 갱신할 때 참조하는 자식테이블의 foreign key도 함께 갱신 됨
③ SET NULL :부모테이블 primary key 갱신할 때 참조하는 자식테이블의 foreign Key에 null 들어감
-FOREIGN KEY 삭제
ALTER TABLE 테이블명
DROP FOREIGN KEY 규칙명;
'SQL' 카테고리의 다른 글
ORACLE_여러 행을 한 행으로 조회하기 (0) | 2022.08.05 |
---|---|
ORACLE_LOCK 개체 확인 및 KILL(해제) (0) | 2022.08.05 |
SQL_ CASE(조건) 와 NULL(변경) (0) | 2021.08.22 |
SQL_데이터타입 / DATE (0) | 2021.08.21 |
SQL_기초2 (0) | 2021.08.20 |
댓글