SQL study [21.08.18]
본문 바로가기
Data Base/Daily_study

SQL study [21.08.18]

by 조훈이 2021. 8. 19.

SQL study [21.08.18]


MySQL workbench Study / Programmers Study

   : HOUR(DATETIME) # DATETIME 의 시간만 따 오는 것.

   : 이름이 있는 동물들을 찾으려면 IS NOT NULL

 

SHOW DATABASES;
USE world;
SHOW TABLES;
DESC city;

SELECT COUNT(*)
FROM city; # city table 에 있는 모든 도시들의 수가 나옴

SELECT AVG(Population)
FROM city; # 도시들의 평균 인구수

SELECT CountryCode, MAX(Population)
FROM city
GROUP BY CountryCode
HAVING MAX(Population) > 8000000;
# HAVING 은 GROUP BY 에 의한 집계그룹에 사용할 수 있다
# CountryCode 그룹에서 그룹내 가장 인구수가 많은 도시 중 800만 초과의 인구수를 가진 곳을 출력

#ROLL UP 은 중간합계/총합등이 필요할 때 Permutation 형태로 각각의 모든 집계 결과를 보여준다.
SELECT CountryCode, Name, SUM(Population)
FROM city
GROUP BY CountryCode, Name WITH ROLLUP;

SELECT *
FROM city
JOIN country ON city.CountryCode = country.Code;
# JOIN 은 DB내의 여러 table에서 가져온 레코드를 조합하여 하나의 table이나 결과 집합으로 표현
# 하지만 JOIN 을 하는 기준을 선정해야 하며 ON 을 통해서 한다.
# 위에선 city table 의 CountryCode 와 country table 의 Code 가 같은 경우를 체크

SELECT *
FROM city
JOIN country ON city.CountryCode = country.Code
JOIN countrylanguage ON city.CountryCode = countrylanguage.CountryCode;
# 세 개의 table 이 join 된 형태

# 내장함수
SELECT LENGTH('sdfajas');
# 'sdfajas'의 길이를 출력

SELECT CONCAT('My', 'SQL', ' Study');
# System.out.print("My" + "SQL" + " Study");
# 한 문장이라도 NULL 문장이 있으면 NULL 을 출력

SELECT LOCATE('abc', 'abdabcbabababc'); 
# 'abc' 가 위치한 곳의 index 출력
# 보통 arr index 시작은 0이지만 MySQL 에선 1이다.
# 위에선 4가 출력이 됨

SELECT LEFT('MySQL is an open source RDBMS', 5);
# 해당 문장에서 좌측에서부터 5개의 문자를 출력
SELECT RIGHT('MySQL is an open source RDBMS', 5);
# 해당 문장에서 우측에서부터 5개의 문자를 출력

SELECT LOWER('Hi everyone this is John');
# 해당 문자열을 전부 소문자로 출력
SELECT UPPER('Hi everyone this is John');
# 해당 문자열을 전부 대문자로 출력

SELECT REPLACE('MSSQL', 'MS', 'My');
# 'MSSQL'문자열에서 'MS'를 'My'로 바꾼다

SELECT TRIM('         MySQL         ');
# 좌우의 공백을 없애버린다. JAVA 랑 똑같다!
SELECT TRIM(LEADING '#' FROM '###MySQL###');
# 특정 문자도 없앨 수 있다.
# 좌측에 있는 '#'들을 없앤다.
SELECT TRIM(TRAILING '#' FROM '###MySQL###');
# 우측에 있는 '#'들을 없앤다.

SELECT FORMAT(819841.23192134, 3);
# 소수점을 셋 째 자리까지 반올림

SELECT FLOOR(10.95), CEIL(10.95), ROUND(10.95);
# 내림, 올림, 반올림. C++ 에서 쓰는거랑 같네.

SELECT SQRT(4), POW(2, 3), LOG(2.7);
# 양의제곱근, 2^3, ln3

SELECT SIN(PI() / 2), COS(PI()), TAN(PI());
# sin, cosine, tangent
# pi 는 PI()

SELECT ABS(-3), RAND(), ROUND(RAND()*100, 0);
# 절대값, 랜드함수-> 임의의 실수가 생성이 됨.
# 맨 우측처럼 하면 0 ~ 99 가 무작위 생성이 되는 거 같다.

SELECT NOW(), CURDATE(), CURTIME();
# 현재 날짜/시간, 현재 날짜, 현재 시간
# DATE() --전달받은 값에 	해당하는 날짜 정보 반환
# MONTH() --         	월에 해당하는 값을 반환 (0 ~ 12)
# DAY() -- 				일에 해당하는 값을 반환 (0 ~ 31)
# HOUR() --				시간에 해당하는 값을 반환 (0 ~ 23)
# MINUTE() -- 			분에 해당하는 값을 반환 (0 ~ 59)
# SECOND() --			초에 해당하는 값을 반환 (0 ~ 59)

SELECT DATE(NOW()); # 현재 날짜를 알려줘
SELECT MONTHNAME(NOW()), DAYNAME(NOW());
# 현재 월과 요일을 알려줘!

SELECT DAYOFMONTH(NOW()),
DAYOFWEEK(NOW()),
DAYOFYEAR(NOW());
# 현재 날짜, 월~금에서 몇 번째 요일인지, 1년중 몇 일 됐는지!

SELECT DATE_FORMAT(NOW(), '%D %y %a %d %m %n %j');
# 날짜에 대한 원하는 정보를 C언어 printf 처럼 print 한다.

오늘의 한 마디 : 오늘 서점에 가서 SQL에 관련된 책들을 훑어보고 왔다. 흥미로운 하루였다.

728x90

'Data Base > Daily_study' 카테고리의 다른 글

SQL study [21.08.23]  (0) 2021.08.24
SQL study [21.08.19]  (0) 2021.08.19
SQL study [21.08.17]  (0) 2021.08.18
SQL study [21.08.16]  (0) 2021.08.17
SQL study [21.08.15]  (0) 2021.08.15

댓글