Database

[MySQL] MySQL문법: 2

Anna-Jin 2022. 2. 27. 20:15
728x90
반응형

 

http://www.tcpschool.com/mysql/mysql_basic_update

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 


WHERE

MySQL의 조건문

여러가지 문법을 수행할 때 특정한 조건을 주는 역할을 한다. 

 

하나의 조건을 사용할 때에는 

WHERE 컬럼명 = 조건

과 같이 사용하면 되고

 

AND, OR, NOT, LIKE 등등이 있는데, 더 자세한 문법은 연산자 파트에서 하기로 하고 우선 단순하게 사용하기로 한다.

 

 


UPDATE

UPDATE문을 이용해서 조건에 맞는 데이터를 수정할 수 있다.

 

UPDATE 테이블명
SET 컬럼명1 = 데이터값1, 컬럼명2 = 데이터값2, ...
WHERE 컬럼명 = 데이터값

실명인 데이터명은 가렸다,,

 

id가 5인 name = '테스트'인 값을 변경해보자

 

UPDATE user
SET name = '븨나네'
WHERE id = 5;

 

 


DELETE

DELETE문을 이용해서 조건에 맞는 데이터를 삭제할 수 있다.

DELETE FROM 테이블이름

WHERE 컬럼명 = 데이터값

 

이번엔 UPDATE문에서 쓰인 테이블에서 name = '임꺽정' 인 데이터를 지워보자

 

DELETE FROM user WHERE name = '임꺽정';

 

 

DELETE문으로 데이터를 삭제하고나서 새로운 값을 추가하면 id가 자동으로 재정렬되는 것이 아니라 기존에 추가되었던 id 이후 번호로 추가가 된다.

 

여기서 AUTO_INCREMENT는 자동으로 초기화되지 않는다는 점을 알 수 있다.

따라서 순서대로 다시 id를 정렬하려면 초기화 과정을 진행해야한다.

 

id 재정렬

set @cnt = 0;
update 테이블이름 set 테이블이름.해당컬럼이름 = @cnt := @cnt+1;

 

 

id를 다시 순서대로 insert하기

 

ALTER TABLE 테이블명 AUTO_INCREMENT=추가하려는번호;
name = '테스트2', birth_day = '2022-02-02'와 name = '테스트3', birth_day = '2022-02-02' 추가

정상적으로 추가되는 것을 확인할 수 있다.


SELECT

다양한 방법으로 테이블을 조회할 수 있는 SELECT문은 위에서 데이터들을 조회하기 위해 많이 사용해왔다.

기본 구조는 다음과 같다.

SELECT 컬럼명 
FROM 테이블명
WHERE 조건;

 

테이블의 모든 데이터 조회

SELECT * FROM 테이블명;

필드명을 입력하는 곳에 *를 넣으면 모든 테이블의 컬럼을 조회할 수 있다.

 

특정 데이터 조회(WHERE)

위에서 언급했듯이 WHERE절에 다양한 연산자를 이용하여 더 자세하게 데이터를 조회할 수 있다.

SELECT * FROM user
WHERE name = '테스트';

 

이번엔 id가 5보다 크면서 birth_day가 2022-02-23인 데이터를 조회해보자

 

SELECT * FROM user
WHERE id > 5 AND birth_day = '2020-02-23';

birth_day가 2022-02-23인 데이터는 id가 7인 데이터밖에 없었으므로 같은 결과가 출력된다.

 

 

특정 컬럼만을 선택

SELECT name, birth_day FROM user;

SELECT 다음에 *대신 특정 컬럼명을 입력하면 해당 테이블의 특정 컬럼만 가져올 수 있다.

쉼표(,)로 여러개의 컬럼을 한번에 명시할 수 있다.

 

중복되는 값 제거(DISTINCT)

만약 같은 필드에 중복되는 값을 가지는 레코드가 있다면, DISTINCT 키워드를 사용하여 그 값이 한 번만 선택되도록 설정할 수 있다.

기존 필드에는 중복되는 값이 없으므로 중복되는 값을 추가하여 진행하였다.

 

SELECT DISTINCT name FROM user;

name이 중복되는 값을 제외하고 출력한다.

 

마지막에 추가되었던 '테스트'가 제외된 것을 확인할 수 있다!

 

 

선택한 결과를 정렬(ORDER BY)

이번엔 특정한 기준으로 데이터를 정렬해서 출력하는 방법이다.

실제로 테이블이 정렬되는 것이 아니라 출력할 때만 정렬하는 것이므로 헷갈리지 말 것!

 

기본 정렬은 오름차순이고 ASC 키워드로 직접 오름차순으로 명시할 수도 있다.

또, DESC는 내림차순 정렬이다.

 

종종 헷갈리는데 오름차순은 작은 수 -> 큰 수 순서이고, 내림차순은 큰 수-> 작은 수 순서이다

 

SELECT * FROM user
ORDER BY birth_day DESC;

birth_day 컬럼 기준으로 내림차순을 해보자.

 

birth_day 컬럼을 보면 내림차순으로 성렬된 것을 확인할 수 있다.

 

별칭(alias)을 붙여 조회

컬럼명에 특정한 별명을 붙여서 조회할 수도 있다.

별칭은 복잡한 테이블명이나 컬럼명을 좀 더 보기 쉽게 만들어주는 역할을 한다.

 

// 필드명에 별칭 붙이기
SELECT 필드명 AS 별칭
FROM 테이블명;

// 테이블명에 별칭 붙이기
SELECT 필드명
FROM 테이블명 AS 별칭;

 

name과 birth_day 컬럼에 각각 '이름'과 '생일'이라는 별칭을 붙여주었다.

별칭 역시 테이블 자체를 변경하는 것이 아니라 조회하는 순간의 결과만 바꿔주는 점을 잊지 말자

 

SELECT name AS '이름', birth_day AS '생일' FROM user;

 

보통은 별칭으로 한글을 안붙이는 것 같지만 눈에 쉽게 보여서 공부하기 좋게 표현해보았다!

 

 


기본 문법인 create, alter, drop, insert, update, delete, select의 정리가 끝났다.

MySQL과 Spring boot를 연동하고나서 자주 사용하게 될 기본 문법들이고, 한번 삽질까지 제대로 했으니 꾸준히 복습하면서 까먹지 않도록 하자...

728x90
반응형

'Database' 카테고리의 다른 글

[MySQL] 제약 조건  (0) 2022.03.02
[MySQL] 연산자와 함수  (0) 2022.03.01
[MySQL] 타입: 숫자, 문자열, 날짜와 시간  (0) 2022.03.01
[MySQL] MySQL 문법: 1  (0) 2022.02.20
[MySQL] MySQL : 시작하기  (0) 2022.02.14