본문 바로가기
SQL

SQL_기초1

by haheaven 2021. 8. 19.

- 데이터베이스 생성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

댓글