MySQL 구문을 보기 쉽게 포맷팅 쉽게 해주는 사이트
https://www.dpriver.com/pp/sqlformat.htm
샘플데이터 만들기
- 먼저 다음의 코드를 사용하여 book_data.sql 파일을 생성하세요:
- book_shop데이터 베이스를 만든 후 아래 테이블 만들기
DROP DATABASE IF EXISTS book_shop;
CREATE DATABASE book_shop;
USE book_shop;
- books데이터
CREATE TABLE books
(
book_id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(100),
author_fname VARCHAR(100),
author_lname VARCHAR(100),
released_year INT,
stock_quantity INT,
pages INT,
PRIMARY KEY(book_id)
);
INSERT INTO books (title, author_fname, author_lname, released_year, stock_quantity, pages)
VALUES
('The Namesake', 'Jhumpa', 'Lahiri', 2003, 32, 291),
('Norse Mythology', 'Neil', 'Gaiman',2016, 43, 304),
('American Gods', 'Neil', 'Gaiman', 2001, 12, 465),
('Interpreter of Maladies', 'Jhumpa', 'Lahiri', 1996, 97, 198),
('A Hologram for the King: A Novel', 'Dave', 'Eggers', 2012, 154, 352),
('The Circle', 'Dave', 'Eggers', 2013, 26, 504),
('The Amazing Adventures of Kavalier & Clay', 'Michael', 'Chabon', 2000, 68, 634),
('Just Kids', 'Patti', 'Smith', 2010, 55, 304),
('A Heartbreaking Work of Staggering Genius', 'Dave', 'Eggers', 2001, 104, 437),
('Coraline', 'Neil', 'Gaiman', 2003, 100, 208),
('What We Talk About When We Talk About Love: Stories', 'Raymond', 'Carver', 1981, 23, 176),
("Where I'm Calling From: Selected Stories", 'Raymond', 'Carver', 1989, 12, 526),
('White Noise', 'Don', 'DeLillo', 1985, 49, 320),
('Cannery Row', 'John', 'Steinbeck', 1945, 95, 181),
('Oblivion: Stories', 'David', 'Foster Wallace', 2004, 172, 329),
('Consider the Lobster', 'David', 'Foster Wallace', 2005, 92, 343);
- 이어서 그 파일을 가져오세요.
source book_data.sql
- 작업 결과를 확인하세요.
DESC books;
SELECT * FROM books;
문자열 연결 : CONCAT
- 문자열을 연결한다.
- 데이터 베이스는 그대로 남아있으며, 출력만 원하는대로 보일 수 있게 해준다.
- 예
- 저자의 성만, 이름만, 성과이름 둘다 이용하는 경우 등등에 이용
- 각 정보를 따로 갖고있으면 잇기 쉽다.
- 코드
- 먼저 합치려는 데이터 확인하기
SELECT author_fname, author_lname FROM books;
2. CONCAT을 이용하여 데이터 합치기
- SELECT문 안에서 실행해야 한다.
- 예시 (db와 관련 x)
SELECT CONCAT('Hello', 'Word'); SELECT CONCAT('Hello', ',,,', 'Word');
- 두 값이 공백 없이 바로 연결된다.
SELECT CONCAT ( 열이름1, 열이름2) FROM table;
SELECT CONCAT (author_fname, author_lname) FROM books;
- 공백을 추가하여 연결하고 싶은 경우
SELECT CONCAT(author_fname, ' ' , author_lname) FROM books;
- 다른방법도 이용 가능 ( 더 이쁘게 나타남 )
SELECT CONCAT(author_fname, ' ' , author_lname) AS 'full name' FROM books;
- 성, 이름 성+이름 보여주기
SELECT author_fname AS first, author_lname AS last,
CONCAT(author_fname , author_lname) AS full
FROM books;
CONCAT_WS
- 열 사이에 반복적으로 들어갈 문자열을 쉽게 나타낼 수 있다.
SELECT
CONCAT_WS(' - ', title, author_fname, author_lname)
FROM books;
문자열 선택 : SUBSTRING = SUBSTR
- 문자열의 각 부분을 선택하는 함수
숫자가 두개 주어질 경우
- MySQL은 시작 Index는 1부터 시작한다.
- startIndex-lastIndex까지의 값 반환
SELECT SUBSTRING( '작업해야할 문장' , startIndex, lastIndex);
ex)
SELECT SUBSTRING('Hello World', 1,4);
=> Hell
숫자가 한개 주어질 경우
- 해당 인덱스부터 끝까지
SELECT SUBSTRING('Hello World', 7);
index값을 -(음수)로 전달할 경우
- -n일경우
- 문자열 끝에서부터 시작해 n개의 str까지 나타낸다.
SELECT SUBSTRING('Hello World', -3);
=> rld
열을 사용하고 싶을 경우
- title을 사용하고 싶을 경우
- 먼저 테이블에서 title 확인하기
SELECT title from books;
- title의 특정 개수의 str만 표시하고싶을 경우
SELECT SUBSTRING(title, 1, 10) FROM books;
or
//조금 더 예쁘게 출력된다.
SELECT SUBSTRING(title, 1, 10) AS 'short title' FROM books;
CONCAT + SUBSTRING
→ 예를들어 위에서 특정 개수의 title str을 뽑고 그 뒤에 …을 붙이고 싶은 경우
- 문자열을 자른다.
- …을붙인다.
- 코드
SELECT CONCAT
(
//문자열을 자르고 붙인다.
SUBSTRING(title,1,10), '...'
) AS 'short Title'
From books;
문자열 치환 : REPLACE
- 문자열의 일부를 치환한다.
- 특정문자를 제거하거나, 모든 공백을 다른 문자열로 바꾸고 싶을 때 사용한다.
- 문법
- 정적인데이터 사용
- (문자열, 제거하려는문자열, 치환문자열) 이용
SELECT REPLACE('Hello World', 'Hell' '5454');
- 다른예시
- 다른예시 : 테이블 이용
SELECT REPLACE(title, 'e', '3') FROM books;
Replace + 다른 문자열 함수 섞기
SELECT
CONCAT(
SUBSTIRNG(
REPLACE (title,'e','3')
,1,10),',,,')
from books;
문자열 뒤집기 : REVERSE
- 문자열을 뒤집는다 .
- 대문자나 공백은 유지되고 순서만 뒤바뀐다.
- 코드
SELECT REVERSE('Hello World');
- 다른 문자열 함수 섞어서 사용
SELECT
CONCAT
( REVERSE('woof'),
'woof')
;
- 테이블에 적용
SELECT REVERSE(열이름) from table;
SELECT REVERSE(author_fname) from books;
문자열 길이 : CHAR_LENGTH
- 주어진 문자열에 몇개의 문자가 있는지 알려준다.
- 예시
SELECT CHAR_LENGTH('Hello World');
- 테이블에 적용
SELECT author_lname, CHAR_LENGTH(author_lname) AS 'length' FROM books;
- 다른 문자열 함수와 결합
- 예시 : “특정한 저자 is 문자길이 characters long”를 출력하고 싶은 경우
SELECT CONCAT
(author_lname,' is ', CHAR_LENGTH(author_lname), ' characters long')
FROM books;
대소문자로 바꾸기 : UPPER () LOWER()
- 코드
SELECT UPPER ('hello world');
SELECT LOWER ('Hello WORLD');
'Back-End > DataBase [ MySQL]' 카테고리의 다른 글
[MySql] 데이터 집계함수들_ COUNT, GROUP BY, Min, Max, SUM, AVG (0) | 2022.06.25 |
---|---|
[MySql] 선택사항 정교화하기 _DISTINCT, ORDER BY, LIMIT, LIKE (0) | 2022.06.25 |
[MySql] CRUD명령 _Create, Read , Update, Delete (0) | 2022.06.21 |
[MySql] 테이블에 데이터 삽입하기 _ INSERT (0) | 2022.06.18 |
[MySql] 데이터베이스와 테이블 만들기 (0) | 2022.06.16 |
댓글