본문 바로가기

프로그래밍/Database

MySQL_UPDATE 구문과 WHERE 조건절, UNIQUE 제약

반응형

UPDATE 구문

: UPDATE 구문은 이미 존재하는 테이블의 레코드를 수정하는 명령문이다.
이 구문은 WHERE절을 포함하여 사용된다. WHERE 절을 사용하여 특정 조건에 해당하는 레코드만 수정할 수 있다.
 

UPDATE [테이블 이름]
SET[칼럼 이름1] = [새로운 값1], [칼럼 이름2] = [새로운 값2], ...
WHERE[조건];

→ SET 절은 테이블의 특정 칼럼 값을 변경하는 부분이다. WHERE 절은 조건에 해당하는 레코드만 변경할 수 있도록 필터링 한다.

 

조건절(WHERE)

: MySQL에서 WHERE 절은 SELECT, UPDATE, DELETE 문에서 조건을 지정하여 해당하는 데이터를 선택하거나 수정하거나 삭제할 때 사용하는 절이다.
 
WHERE 절은 기본적으로 조건식을 포함하며, 조건식은 연산자와 피연산자로 이루어져 있다.
연산자는 비교 연산자(=, <>, <, <=, >, >=)나 논리 연산자(AND, OR, NOT) 등이 있으며, 피연산자는 컬럼명, 상수값, 서브쿼리 등이 올 수 있다.
 
AND 그리고는 논리곱 → 두 개 조건식 전부 true이어야 한다.
OR 또는 논리합 → 둘 중 하나라도 참이면 true이다.
 

조건절에서 사용할 수 있는 대표 연산자

  • = (equal)
  • > (greater than)
  • < (less than)
  • = (greater than or equal to)
  • <= (less than or equal to)
  • <> or != (not equal to)
  • BETWEEN (between a range of values)
  • LIKE (search for a pattern)
  • IN (search for multiple values)

 

`order` 테이블 데이터

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE `order` (
  id INT PRIMARY KEY,
  order_name VARCHAR(20NOT NULL,
  product_name VARCHAR(20NOT NULL,
  quantity INT NOT NULL,
  order_date DATE NOT NULL
);
 
 
INSERT INTO `order` (id, order_name, product_name, quantity, order_date) 
VALUES
(1'홍길동''피자'2'2022-02-26'),
(2'김영희''치킨'3'2022-02-26'),
(3'이철수''햄버거'1'2022-02-27'),
(4'박지민''스테이크'2'2022-02-27'),
(5'최영희''짬뽕'1'2022-02-27'),
(6'박서준''초밥'3'2022-02-28'),
(7'김민지''파스타'2'2022-02-28'),
(8'정재은''토스트'1'2022-02-28'),
(9'신은주''감바스'2'2022-03-01'),
(10'유지훈''돈까스'1'2022-03-01');
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SELECT * FROM `order`;
DESC `order`;
 
-- id가 1인 주문의 상품 수량을 5개로 수정
UPDATE `order`
SET quantity = 5
WHERE id = 1;
 
-- id가 3인 사람에게 메뉴를 감바스로 수정
UPDATE `order`
SET product_name = '감바스'
WHERE id = 3;
 
-- id가 5인 주문의 주문 일자를 2022-01-05로 수정
UPDATE `order`
SET order_date = '2022-01-05'
WHERE id = 5;
 
-- 테이블에 컬럼 추가하는 방법 
ALTER TABLE `order` ADD address VARCHAR(100);
 
-- 주문 수량이 1개 이하이고, 상품명이 '감바스'인 주문의 수령인 주소를 '경기도 성남시'로 수정
UPDATE `order`
SET address = '경기도 성남시'
WHERE quantity <= 1
    AND product_name = '감바스';
 
SELECT * FROM `order`;
cs

 

UNIQUE 제약

: UNIQUE 제약 조건은 데이터베이스에서 특정 열에 대한 고유한 값을 가지도록 강제하는 조건이다.
해당 열의 각 레코드(row) 값이 모두 고유한 값을 가져야 한다. UNIQUE 제약조건은 데이터의 중복을 방지하고 데이터 일관성을 유지하는 데 도움이 된다.
또한 UNIQUE 제약 조건은 데이터베이스에서 인덱스(index)를 생성할 때도 사용된다. UNIQUE제약 조건이 설정된 열은 인덱스를 생성할 때 자동으로 인덱스로 지정 되어 검색 속도를 높일 수 있다.

member 테이블 데이터

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE member(
  id INT PRIMARY KEY AUTO_INCREMENT
  name VARCHAR(50NOT NULL
  email VARCHAR(50UNIQUE
  phone VARCHAR(20), 
  address VARCHAR(100NOT NULL
);
 
 
INSERT INTO member (name, email, phone, address)
VALUES 
('홍길동''hong@test.com''010-1234-5678''서울시 강남구'),
('김영희''kim@test.com''010-2345-6789''서울시 서초구'),
('이철수''lee@test.com''010-3456-7890''서울시 종로구'),
('박민지''park@test.com''010-4567-8901''서울시 마포구'),
('최재영''choi@test.com''010-5678-9012''서울시 강서구'),
('강영식''kang@test.com''010-6789-0123''서울시 송파구');
cs

→ email에 UNIQUE 제약을 걺.

인덱스란 ?

: MySQL에서 인덱스(index)는 데이터베이스 내에 별도로 저장되어 있다.
인덱스는 데이터 베이스에서 데이터 검색 속도를 향상시키기 위해 사용되는 구조로, 데이터베이스의 열(column) 값을 이용하여 검색을 빠르게 하기 위한 데이터 구조이다.

PK 선언하면 자동으로 인덱스가 걸림.
UNIQUE 선언하면 자동으로 인덱스가 걸림.
 

테이블 생성시 인덱스 추가 쿼리

1
2
3
4
5
6
7
8
CREATE TABLE student (
  id INT PRIMARY KEY,
  name VARCHAR(50NOT NULL,
  grade INT NOT NULL,
  major VARCHAR(50NOT NULL,
  english_score INT NOT NULL,
  INDEX idx_major (major)
);
cs

이미 생성된 테이블에 인덱스를 추가하는 쿼리

1
ALTER TABLE student ADD INDEX idx_grade (grade);
cs

→ grade 컬럼에 인덱스를 추가함
→ idx_grade는 컬럼명으로 인덱스가 있는 컬럼에는 idx_로 표시해주는 게 좋다.
 
 

반응형