하기 텍스트 입력(앞에 use yh_db 작성하고)
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); |
-- 작가 이름을 가져오세요.
select author_fname,author_lname from books;
-- SQL은 다 함수다, 문자끼리 더하는 등의 문법은 없음
-- sql은 다 함수로 되어있으며, 대소문자를 가리지는 않는다.
-- 컬럼이름도 마찬가지로 대소문자를 가리지는 않는다. 다만 데이터는 대소문자를 구분한다!
-- 컬럼 합치기
-- 작가 이름을 합쳐서, full_name으로 가져오세요.
select concat(author_fname,' ', author_lname) as full_name
from books;
-- 합치려고 하는 컬럼을 먼저 가져온다.
-- concat이라는 함수를 사용한다. 괄호 안에다가, 두 컬럼 이름을 넣어준다.
-- 합쳐진 이름이, 깨끗하지 않다.
-- 컬럼 이름 바꾸는 건 concat 함수를 사용한 그 라인에서 작업한다. as를 이용하여.
select concat_ws('-',author_fname, author_lname,pages)
from books;
-- concat_ws : ws whith space. 첫번째 파라미터에 세팅을 해줘야한다. 중간에 붙일 때 어떻게 붙일것인지.
-- 해당 함수의 장점은 여러 데이터를 합칠 때에, 하나하나 쓸 필요가 없음. 한번에 다 알아서 연결해줌
-- 문자열의 일부분만 가져오기. (파이썬의 슬라이싱과 비슷하다)
select *
from books;
-- 제목을 처음부터 10글자 까지만 가져오기
select substring(title,1,10 ) as title
from books;
-- 첫번째 파라미터가 컬럼이름, mySQL은 인덱스 숫자가 1부터 시작한다.
-- 2~3번째 파라미터가 몇부터 몇개까지 가져올지 숫자로 적어주기.
-- 공백도 문자열에 포함한다.
-- 제목의 맨 뒤에서 5번째 글자부터 끝까지 가져오기.
select substring(title, -5) as title
from books;
-- 제목의 5번째 글자부터 12번째 글자까지 가져오시오.
select substr(title,5,12) as title
from books;
-- substr = substring
-- 제목의 처음부터 10글자를 가져오되, 뒤에 ...을 붙여서 가져오시오.
select concat(substr(title,1,10), '...') as short_title
from books;
-- 함수의 괄호 안에서부터 고려하도록 하자
-- '나쁜놈아 그렇게 살지마라' 같은 욕을 ***로 처리하고 싶다.
select replace('나쁜놈아 그렇게 살지마라', '나쁜놈', '***');
-- 첫번째 파라미터는, 원래 문자열, 두번째 파라미터는 내가 바꾸고 싶은 것, 세번째 파라미터는 내가 뭘로 바꿀것인가.
-- 제목 컬럼에 들어있는 e를 숫자 3으로 바꿔서 가져오세요..
select replace(title, 'e','3')
from books;
-- 문자열의 순서를 거꾸로 뒤집는 함수 reverse
-- 'hello' -> 'olleh'
-- author_fname을 뒤집어서 가져오세요.
select reverse(author_fname)
from books;
-- 길이 구하는 함수, char_length()
-- 책 제목의 길이를 구하시오
select char_length(title) as length
from books;
-- 책 제목 길이는 12
-- 책 제목 길이는 15
select concat('책 제목 길이는 ', char_length(title))
from books;
-- 대문자, 소문자 바꾸기
select upper(title)
from books;
select lower(title)
from books;
-- 실습 select replace(title,' ', '->') as title from books; select author_lname as forwards, reverse(author_lname) as backwards from books; -- select concat(upper(author_fname), ' ', upper(author_lname)) -- from books; select upper(concat(author_fname, ' ', author_lname)) as 'full name in caps' from books; -- 컬럼 이름에 공백이 있을 경우에 문자열로 적어준다. select concat(title,' was released in ',released_year) as blurb from books; select title,char_length(title) as 'character count' from books; select concat(substring(title,1,10),'...') as short_title, concat_ws(', ' ,author_lname, author_fname) as author, concat(stock_quantity, ' in stock') as quantity from books; select * from books; |
'프로그래밍 언어 > MySQL' 카테고리의 다른 글
[MySQL] 정렬하기: order by/ 몇 행의 데이터 가져오기: limit (0) | 2022.05.16 |
---|---|
[MySQL] 중복없이 데이터 가져오기: distinct (0) | 2022.05.16 |
[MySQL] delete from ..where, select ..from (0) | 2022.05.14 |
[MySQL] use, show, desc, insert into... values, select, from, update/set/where (0) | 2022.05.14 |
[MySQL] Null의 뜻, 테이블 수정, NN/Default 설정 (0) | 2022.05.14 |