실습할데이터베이스에접속
AWS RDS (database-1) zerobase 에접속
mysql -h "database-1.aaaaaaaaa.ap-northeast-1.rds.amazonaws.com" -P 3306 -u admin -p 비밀번호입력
실습할데이터확인
sandwich 데이터확인 (50 rows)
use zerobase;
show tables;
select * from sandwich;
+------+-----------+-----------+-------+-------------------------+
| 순위 | cafe | menu | price | address |
+------+-----------+-----------+-------+-------------------------+
| 1 | Old Oak | BLT | 10 | 2109 W. Chicago Ave |
| 2 | Au Cheva | Fried Bo | 9 | 800 W. Randolph St |
| 3 | Xoco | Woodland | 9.5 | 445 N. Clark St |
영문을대문자로반환하는함수
UCASE 문법
SELECT UCASE(string);
UCASE 예제 1
다음문장을모두대문자로조회
SELECT UCASE('This Is ucase Test.');
=> THIS IS UCASE TEST.
UCASE 예제 2
$15 가넘는메뉴를대문자로조회
SELECT UCASE(menu), price FROM sandwich WHERE price > 15;
=> | UCASE(menu) | price |
+--------------------------------+-------+
| LOBSTER ROLL | 16 |
| GRILLED LAUGHING BIRD SHRIMP A | 17 |
| SHAVED PRIME RIB | 21 |
영문을소문자로변환하는함수
LCASE 문법
SELECT LCASE(string);
LCASE 예제 1
SELECT LCASE('This Is LCASE Test.');
=> this is lcase test.
LCASE 예제 2
$5 가안되는메뉴를소문자로조회
SELECT LCASE(menu), price FROM sandwich WHERE price < 5;
LCASE(menu) | price |
+--------------+-------+
| meatball sub | 4.5 |
문자열부분을반환하는함수
SELECT MID(string, start_position, length);
- string : 원본문자열
- start : 문자열반환시작위치. (첫글자는 1, 마지막글자는 -1)
- length : 반환할문자열길이
MID 예제 1
1번위치에서 4글자를조회
SELECT MID('This Is mid Test.', 1, 4);
=> This
MID 예제 2
6번위치에서 5글자를조회: 각글자가 1개, 1부터 시작, 공백포함, 6번째 위치 I에서부터 공백포함 5글자 가져옴
SELECT MID('This Is mid Test.', 6, 5);
=> Is mi
MID 예제 3
-4번위치 (뒤에서 4번째위치) 에서 4글자를조회
SELECT MID('This Is mid Test', -4, 4);
=> Test
MID 예제 4
-8번위치 (뒤에서 8번째위치) 에서 3글자를조회
SELECT MID('This Is mid Test', -8, 3);
=> mid
MID 예제 5
11위카페이름중두번째단어만조회 - 6번위치에서 4글자
SELECT cafe FROM sandwich WHERE 순위 = 11;
=>
cafe |
+-----------+
| Lula Cafe |
SELECT MID(cafe, 6, 4) FROM sandwich WHERE 순위 = 11;
=>Cafe
11위카페이름중두번째단어만조회 - -4번위치 (뒤에서 4번째) 에서 4글자
SELECT MID(cafe, 6, 4) FROM sandwich WHERE 순위 = 11;
=>Cafe
문자열의길이를반환하는함수
SELECT LENGTH(string);
LENGTH 예제 1
다음문장의길이를조회
SELECT LENGTH('This is len test');
=> 16
LENGTH 예제 2
문자가없는경우길이도 0
SELECT LENGTH('');
=> 0
LENGTH 예제 3
공백의경우에도문자이므로길이가 1
SELECT LENGTH(' ');
=> 1
LENGTH 예제 4
NULL 의경우길이가없으므로 NULL
SELECT LENGTH(NULL);
=> NULL
LENGTH 예제 5
sandwich 테이블에서 Top 3의주소길이를검색
SELECT LENGTH(address), address FROM sandwich WHERE 순위 <=3;
| LENGTH(address) | address |
+-----------------+---------------------+
| 19 | 2109 W. Chicago Ave |
| 18 | 800 W. Randolph St |
| 16 | 445 N. Clark St |
지정한자리에서숫자를반올림하는함수
SELECT ROUND(number, decimals_place);
- number : 반올림할대상
- decimals : 반올림할소수점위치 (Option)
ROUND 예제 1
반올림할위치를지정하지않을경우, 소수점자리 (0) 에서반올림
SELECT ROUND(315.625);
=> 316
ROUND 예제 2
소수점첫번째위치는 0
SELECT ROUND(315.625, 0);
=> 316
ROUND 예제 3
소수점첫번째위치는 1
SELECT ROUND(315.625, 1);
=> 315.6
ROUND 예제 4
소수점첫번째위치는 2
SELECT ROUND(315.625, 2);
=> 315.63
ROUND 예제 5
일단위위치는 -1
SELECT ROUND(315.625, -1);
=> 320
ROUND 예제 6
십단위위치는 -2
SELECT ROUND(315.625, -2);
=> 300
ROUND 예제 7
sandwich 테이블에서소수점자리는반올림해서 1달러단위까지만표시 (최하위 3개만표시)
SELECT 순위, price, ROUND(price) FROM sandwich ORDER BY 순위 DESC LIMIT 3;
순위 | price | ROUND(price) |
+------+-------+--------------+
| 50 | 6.85 | 7 |
| 49 | 8.75 | 9 |
| 48 | 7.5 | 8 |
현재날짜및시간을반환하는함수
SELECT NOW();
=> 2022-11-08 15:19:19 |
숫자를천단위콤마가있는형식으로반환하는함수
FORMAT 문법
SELECT FORMAT(number, decimal_place);
- number : 포맷을적용할문자혹은숫자
- decimals : 표시할소수점위치
FORMAT 예제 1
소수점을표시하지않을경우 0 (반올림해서 출력함)
SELECT FORMAT(12345.6789, 0);
=> 12,346
FORMAT 예제 2
소수점두자리까지표시할경우 2
SELECT FORMAT(12345.6789, 2);
=> 12,345.68
FORMAT 예제 3
소수점열자리까지표시
SELECT FORMAT(12345.6789, 10);
=> 12,345.6789000000
FORMAT 예제 4
oil_price 테이블에서가격이백원단위에서반올림했을때 2000원이상인경우천원단위에콤마를넣어서조회
SELECT FORMAT(가격, 0) FROM oil_price WHERE ROUND(가격, -3) >= 2000;
<문제5>
- 1. sandwich 테이블에서 가게 이름은대문자, 메뉴이름은소문자로조회하세요.
SELECT UCASE(cafe), LCASE(menu) FROM sandwich;
| UCASE(cafe) | LCASE(menu) |
+--------------------------------+--------------------------------+
| OLD OAK TAP | blt |
| AU CHEVAL | fried bologna |
- 2. sandwich 테이블에서 10위 메뉴의마지막단어를조회하세요.
11위카페이름중두번째단어만조회
select 순위, cafe, menu from sandwich where 순위=10;
=> 일단 확인
순위 | cafe | menu |
+------+------+--------------------------------+
| 10 | Nana | Grilled Laughing Bird Shrimp a |
SELECT MID(menu, -1, 1) FROM sandwich where 순위 = 10;
=> a
(실습강의에서는 and까지 보임
SELECT MID(menu, -3, 3) FROM sandwich where 순위 = 10;
=> 끝에서 3글자에서부터 3글자를 뱉어줘라.
=> 답: and
- 3. sandwich 테이블에서메뉴이름의평균길이를조회하세요.
SELECT menu, length(menu) FROM sandwich limit 3;
SELECT avg(length(menu)) FROM sandwich;
=> 13.8600
SELECT sum(length(menu)) FROM sandwich;
=> 693
- oil_price 테이블에서가격을십원단위에서반올림해서조회하세요.
- oil_price 테이블에서가격이십원단위에서반올림했을때 2000원이상인경우, 천단위에콤마를넣어서조회하세요.