TIL/DB
SQL JOIN ์ ์๋ธ์ฟผ๋ฆฌ
SELECT ์ปฌ๋ผ๋ช FROM ํ ์ด๋ธ์ด๋ฆ ๋ณ์นญ[INNER] JOIN ํ ์ด๋ธ ์ด๋ฆ ๋ณ์นญ ON ๋ณ์นญ.์ปฌ๋ผ๋ช = ๋ณ์นญ.์ปฌ๋ผ๋ช ; -- on ์ด where์ ์ญํ ์ ์ํ SELECT ์ปฌ๋ผ๋ช FROM ํ ์ด๋ธ๋ช 1 ๋ณ์นญ1 [INNER] JOIN ํ ์ด๋ธ2 ๋ณ์นญ2 ON ๋ณ์นญ1.์ปฌ๋ผ๋ช = ๋ณ์นญ2.์ปฌ๋ผ๋ช [INNER] JOIN ํ ์ด๋ธ3.๋ณ์นญ3 ON ๋ณ์นญ2.์ปฌ๋ผ๋ช = ๋ณ์นญ3.์ปฌ๋ผ๋ช left join ๋๋ left outer join SELECT p.NAME, POSITION, p.deptno, p.profno, s.name, studno, grade, s.deptno1 FROM professor p LEFT OUTER join student s ON p.deptno = s.deptno1; right join ๋๋ right out..
SQL ์ฐ์ต๋ฌธ์ 1
-- dept, emp, salgrade table -- 1. ์ฌ์ ํ ์ด๋ธ์ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์กฐํํ์์ค. SELECT * FROM emp; -- ํ์ ๋ถ์ฌ์ ์ถ๋ ฅํ๊ธฐ -- row_number() over(์ ๋ ฌ๊ธฐ์ค) => row_number() over(order by id desc) SELECT ROW_NUMBER() OVER(ORDER BY empno DESC) AS NO, e.* FROM emp e; -- 2. ์ฌ์๋ช ๊ณผ ์ ์ฌ์ผ์ ์กฐํํ์์ค. SELECT ename,hiredate FROM emp; -- 3. ์ฌ์๋ฒํธ์ ์ด๋ฆ์ ์กฐํํ์์ค. SELECT empno, ename FROM emp; -- 4. ์ฌ์ํ ์ด๋ธ์ ์๋ ์ง์ฑ ์ ๋ชฉ๋ก์ ์กฐํํ์์ค.(์ค๋ณต์ ๊ฑฐํ๊ณ ๋ณด๊ธฐ) SELECT DISTINCT job F..
sql group by , having
group by SELECT grade, SUM(height), AVG(height), MAX(height), MIN(height) FROM student GROUP BY grade; ์ง๊ณ ํจ์๋ ์ฃผ๋ก group by ์ ๊ณผ ๊ฐ์ด ์ฐ์ having SELECT ์ด1, ์ด2, ์ง๊ณํจ์(์ด) AS ๋ณ์นญ FROM ํ ์ด๋ธ GROUP BY ์ด1, ์ด2 HAVING ์กฐ๊ฑด; SELECT grade, SUM(height), AVG(height), MAX(height), MIN(height) fROM student GROUP BY grade HAVING AVG(height) > 160; ์ง๊ณ ํจ์๋ where์ ์ ์ฌ์ฉ ๋ถ๊ฐ where๊ณผ ๋น์ทํ ๊ฐ๋ ์ผ๋ก ์กฐ๊ฑด ์ ํ์ ์ ํํ๋ ๊ฒ์ด์ง๋ง, ์ง๊ณ ํจ์์ ๋ํด์ ์กฐ๊ฑด ์ ํ havi..
SQL ๋ด์ฅํจ์ ์ ์ดํจ์ ( if , ifnull, nullif, case when)
if(์์, ์ฐธ, ๊ฑฐ์ง) SELECT if( 10 > 5, 'true' , 'false'); --— true IFNULL(a,b) a = null → b a ≠ null → a SELECT IFNULL(email, 'No email') AS result FROM employees; ์ด๋ฉ์ผ ์ฃผ์๊ฐ NULL์ด ์๋๋ฉด ํด๋น ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๋ฐํํ๊ณ , NULL์ด๋ฉด "No email"์ ๋ฐํ NULLIF(a,b) a = b → null a ≠ b → a SELECT NULLIF(email, 'noemail@example.com') AS result FROM employees; ์ด๋ฉ์ผ ์ฃผ์๊ฐ "noemail@example.com"์ผ ๊ฒฝ์ฐ NULL์ ๋ฐํ ๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๋ฐํ NULLIF ํจ์๋ ํน์ ..
SQL ๋ฐ์ดํฐ ํ๋ณํ ํจ์
ํ๋ณํ ๋ช ์์ ํ๋ณํ ์์์ ํ๋ณํ cast() / convert() CAST( ์นผ๋ผ๋ช AS ๋ณํํ๊ณ ์ ํ๋ ํ์ ) CONVERT(๋ฐ์ดํฐ ํ์ , ์นผ๋ผ๋ช ) SELECT CAST('1' AS UNSIGNED INTEGER); -- 1 SELECT CAST(123 AS char CHARACTER SET UTF8); -- 123 ์ซ์ & ๋ฌธ์ ๊ฒฐํฉ(์์์ ํ๋ณํ) SELECT 100 + 200; SELECT '100' + '200'; -- ๋ฌธ์ + ๋ฌธ์ = ์ ์ ๋ณํ๋์ด ์ฐ์ฐ๋จ //300 SELECT CONCAT('100','200'); //100200 SELECT CONCAT(100,'200'); -- ์ ์์ ๋ฌธ์ ์ฐ๊ฒฐ(์ ์๊ฐ ๋ฌธ์๋ก ๋ณํ๋์ด ์ฒ๋ฆฌ๋จ)//100200 SELECT 1 > '2mega'; -- s..
SQL DELETE, DROP, TRUNCATE ์ฐจ์ด
DROP TRUNCATE DELETE ์ข ๋ฅ DDL DDL(์ผ๋ถ DML ์ฑ๊ฒฉ) DML commit autocommit autocommit ์ฌ์ฉ์commit ROLLBACK ๋ถ๊ฐ๋ฅ ๋ถ๊ฐ๋ฅ commit ์ด์ ์ ๊ฐ๋ฅ STORAGE storage ์ญ์ (ํ ์ด๋ธ ์คํค๋ง ์ญ์ ) ์ต์ด ํ ์ด๋ธ ์์ฑ ์ ํ ๋น๋ storage ๋ง ๋จ๊ธฐ๊ณ ์ญ์ (ํ ์ด๋ธ ์คํค๋ง ์ ์ง) ๋ฐ์ดํฐ ๋ชจ๋ delete ํด๋ storage ์ญ์ x ์งํ ํ ์ด๋ธ ์ ์ ์์ฒด ์ญ์ ํ ์ด๋ธ์ ์ต์ ์์ฑ๋ ์ด๊ธฐ ์ํ๋ก ๋ง๋ฌ ๋ฐ์ดํฐ๋ง ์ญ์ ๋ก๊ทธ ์๋จ๊น ์๋จ๊น ๋จ๊น ์๋ ๋น ๋ฆ ๋น ๋ฆ ๋๋ฆผ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ์ sqld ์๊ฒฉ์ฆ ๊ณต๋ถ๋ฅผ ํ๋ ๋ด์ฉ์ด ์ด๋ ๊ฒ ๋์์ด ๋๋ค. ๋น๋ก ์๊ฒฉ์ฆ์ ๋จ์ด์ก์ง๋ง ์ง์์ ๋จ๋๋ค..
MariaDB ์ค์น ๋ฐ ํ๊ฒฝ๋ณ์ ๋ฑ๋กํ๊ธฐ
โ๏ธ ๋ค์ด๋ก๋ https://mariadb.org/ MariaDB Foundation - MariaDB.org … Continue reading "MariaDB Foundation" mariadb.org ํ์ต์ฉ์ผ๋ก ๊ณต๋ถํ๊ธฐ ์ํด ์ต์ ๋ฒ์ ๋ณด๋ค ๋ฎ์ถฐใ MariaDB 10.11.5 ๋ฒ์ ์ค์น ํฉ๋๋ค. ์คํํ๋ฉด ๋์ฐ๊ธฐ ์ฑ๊ณต! โ๏ธ ํ๊ฒฝ ๋ณ์ ๋ฑ๋กํ๊ธฐ ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๋ฉด, ํ๋ก๊ทธ๋จ ์ค์น ๊ฒฝ๋ก๊ฐ ์๋ ๊ฒฝ์ฐ ํ๊ฒฝ๋ณ์์ ์ ์ฅ๋ ๊ฒฝ๋ก๋ก ์ด๋ํ์ฌ ํ๋ก๊ทธ๋จ ์คํ