๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

    0125 ์ง‘๊ณ„ ํ•จ์ˆ˜ ์ง‘๊ณ„ ์ดํ•ฉ rollup cube having ์ˆœ์œ„ํ•จ์ˆ˜(rank over row_number over) ๋‚ ์งœํ•จ์ˆ˜(add_months months_between) subquery ์„œ๋ธŒ์ฟผ๋ฆฌ (create insert delete select)

    *์ง‘๊ณ„ํ•จ์ˆ˜ -group by์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉด ๊ทธ๋ฃน๋ณ„ ์ง‘๊ณ„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ -group by์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ํ•˜๋‚˜๋กœ ์ง‘๊ณ„ํ•จ select ***group by์— ์„ค์ •๋œ ์ปฌ๋Ÿผ๋ช…๋งŒ ์ •์˜*** , ์ง‘๊ณ„ํ•จ์ˆ˜(์ผ๋ฐ˜์ปฌ๋Ÿผ - ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์—ฌ์ง„ ์ผ๋ฐ˜ ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์ง‘๊ณ„๋ฅผ ์ˆ˜ํ–‰) from group by ์ปฌ๋Ÿผ๋ช… *์ง‘๊ณ„์— ๋Œ€ํ•œ ์ดํ•ฉ -rollup๊ณผ cube๋ฅผ ์‚ฌ์šฉ 1) group์œผ๋กœ ๋ฌถ์ธ ์ปฌ๋Ÿผ์ด ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉ๋ฒ•) group by rollup(์ปฌ๋Ÿผ๋ช…) group by cube(์ปฌ๋Ÿผ๋ช…) rollup: ์†Œ๊ณ„ ํ›„ ์ „์ฒด ํ•ฉ๊ณ„๊ฐ€ ์ถœ๋ ฅ๋จ cube: ์ „์ฒด ํ•ฉ๊ณ„๊ฐ€ ๋จผ์ € ์ถœ๋ ฅ๋œ ํ›„ ์†Œ๊ณ„๊ฐ€ ์ถœ๋ ฅ๋จ 2) group์œผ๋กœ ๋ฌถ์ธ ์ปฌ๋Ÿผ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ -์‚ฌ์›ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ์— ํ•ด๋‹นํ•˜๋Š” ์ง๋ฌด๋ณ„ rollup(deptno, job) ํ˜น์€ ..

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋… ์š”์•ฝ ์ •๋ฆฌ

    ๋ฐ์ดํ„ฐ๋ž€? ๊ด€์ฐฐ์˜ ๊ฒฐ๊ณผ๋กœ ๋‚˜ํƒ€๋‚œ ์ •๋Ÿ‰์ , ์ •์„ฑ์ ์ธ ์‹ค์ œ ๊ฐ’ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€? ์กฐ์ง์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„ ๊ตฌ์กฐ์ ์œผ๋กœ ํ†ตํ•ฉํ•ด ๋†“์€ ๊ฒƒ ๊ฐ ์กฐ์ง์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„ ํ†ตํ•ฉํ•˜๊ณ  ์„œ๋กœ ๊ณต์œ ํ•˜์—ฌ ์ƒ๊ธฐ๋Š” ์žฅ์ ์„ ์ด์šฉํ•˜๋Š” ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋… ํ†ตํ•ฉ๋œ ๋ฐ์ดํ„ฐ(intergrated data) : ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ํ•˜๋‚˜๋กœ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ, ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ์ค‘๋ณต ์ €์žฅ์œผ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ํ˜„์ƒ ์ œ๊ฑฐ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ(stored data): ๋ฌธ์„œ๊ฐ€ ์•„๋‹Œ ์ปดํ“จํ„ฐ ์ €์žฅ ์žฅ์น˜(๋””์Šคํฌ, ํ…Œ์ดํ”„ ๋“ฑ)์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ, ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋””์Šคํ”Œ๋ ˆ์ด ํ˜น์€ ์ธ์‡„๋ฌผ๋กœ ์ถœ๋ ฅ ์šด์˜ ๋ฐ์ดํ„ฐ(operational data): ์กฐ์ง์˜ ๋ชฉ์ ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ, ์—…๋ฌด๋ฅผ ์œ„ํ•ด..

    0120 ๊ตญ๋น„ ์ˆ˜์—… ์˜ค๋ผํด ๋ฌธ์ž์—ด ํ•จ์ˆ˜(concat trim replace pad substr) null ๋ณ€ํ™˜ํ•จ์ˆ˜(nvl nvl2) ์กฐ๊ฑดํ•จ์ˆ˜(decode case) ๋ณ€ํ™˜ํ•จ์ˆ˜(to_char to_date to_number) ์ง‘๊ณ„ํ•จ์ˆ˜(cont max min sum avg)

    -concat : ๋ฌธ์ž์—ด์„ ํ•ฉ์น  ๋•Œ ์‚ฌ์šฉ๋ฒ•) concat(๋ฌธ์ž์—ด, ํ•ฉ์น ๋ฌธ์ž์—ด) -trim : ๋ฌธ์ž์—ด์˜ ์•ž.๋’ค ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•  ๋•Œ ์‚ฌ์šฉ๋ฒ•) trim(๋ฌธ์ž์—ด) -ltrim : ๋ฌธ์ž์—ด์˜ ์•ž ๊ณต๋ฐฑ(์™ผ์ชฝ ๊ณต๋ฐฑ)๋งŒ ์ œ๊ฑฐ ์‚ฌ์šฉ๋ฒ•) ltrim(๋ฌธ์ž์—ด) -rtrim : ๋ฌธ์ž์—ด์˜ ๋’ท ๊ณต๋ฐฑ(์˜ค๋ฅธ์ชฝ ๊ณต๋ฐฑ)๋งŒ ์ œ๊ฑฐ ์‚ฌ์šฉ๋ฒ•) rtrim(๋ฌธ์ž์—ด) -replae : ์น˜ํ™˜ ์‚ฌ์šฉ๋ฒ• replace(๋ฌธ์ž์—ด, ์ฐพ์„ ๋ฌธ์ž์—ด, ์น˜ํ™˜ํ•œ ๋ฌธ์ž์—ด) -lpad: ๋ฌธ์ž์—ด ์•ž์— ๋ฌธ์ž์—ด ์ฑ„์šฐ๊ธฐ ์‚ฌ์šฉ๋ฒ•) lpad(๋ฌธ์ž์—ด, ๊ธธ์ด, ์ฑ„์šธ ๋ฌธ์ž์—ด) lpad('test',10,'$') > $$$$$$test ํ•œ๊ธ€์€ charset์— ์ƒ๊ด€์—†์ด ํ•œ ๊ธ€์ž์— 2byte๋กœ ์—ฐ์‚ฐํ•จ -rpad: ๋ฌธ์ž์—ด ๋’ค์— ๋ฌธ์ž์—ด ์ฑ„์šฐ๊ธฐ ์‚ฌ์šฉ๋ฒ•) rpad(๋ฌธ์ž์—ด, ๊ธธ์ด, ์ฑ„์šธ๋ฌธ์ž์—ด) rpad('a..

    0119 ๊ตญ๋น„์ˆ˜์—… ์˜ค๋ผํด group by distinct order by ๋‚ดdual ํ…Œ์ด๋ธ” ์ˆ˜์น˜ ํ•จ์ˆ˜(abs round ceil floor trunc) ๋ฌธ์ž์—ด ํ•จ์ˆ˜(length upper lower initcap instr)

    *group by์ ˆ > ์ค‘๋ณต๊ฐ’ ๋ฐฐ์ œ - ๊ฐ™์€ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ๊ฒ€์ƒ‰ํ•˜๋Š” ์ผ(์ค‘๋ณต๋œ ๊ฐ’์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š์Œ) - ์ง‘๊ณ„(๊ทธ๋ฃน)ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋ฃน๋ณ„ ์ง‘๊ณ„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ - having์ ˆ์„ ๋ถ™์—ฌ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ด๋Š” ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ - ์—ฌ๋Ÿฌ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กฐํšŒ๋˜๋Š” ์ปฌ๋Ÿผ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉด error ๋ฐœ์ƒ ๋ฌธ๋ฒ•) group by ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ผ ์ปฌ๋Ÿผ๋ช…,,, having ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ผ ์กฐ๊ฑด < ์ง‘๊ณ„ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ ์ค‘๋ณต๊ฐ’์ด ์žˆ๋Š” ์ปฌ๋Ÿผ์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์œผ๋ฉด ์ค‘๋ณต๊ฐ’์ด ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ ธ์„œ ๊ฒ€์ƒ‰๋จ - ๋‚ด๊ฐ€ ๊ฑธ๋Ÿฌ๋‚ผ ํ•„์š” ์—†์Œ ์—๋Ÿฌ ์ฃผ์˜) ์กฐํšŒ๋˜๋Š” ์ปฌ๋Ÿผ์˜ ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ฐ™์•„์•ผ ํ•จ (์ธ๋ผ์ธ๋ทฐ๋Š” ๋ชจ๋“  ์ปฌ๋Ÿผ์˜ ๋ ˆ์ฝ”๋“œ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์•„์•ผ ํ•จ) ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ธ ๋ฐ์ดํ„ฐ์™€ ์ผ๋ฐ˜ ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ด€๋ จ์ด ์—†์Œ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ธ ์ปฌ๋Ÿผ๊ณผ ์ผ๋ฐ˜ ์ปฌ..

    0118 ๊ตญ๋น„ ์ˆ˜์—… ์˜ค๋ผํด update delete truncate drop select alias where ์กฐ๊ฑด์ ˆ ๋ฒ”์œ„ ๋น„๊ต ์—ฐ์‚ฐ์ž between and or ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์ž

    *Update - ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” DML - transaction ๋Œ€์ƒ ์ฟผ๋ฆฌ๋ฌธ > commitํ•˜์ž ๋ฌธ๋ฒ•) update ํ…Œ์ด๋ธ”๋ช… set ์ปฌ๋Ÿผ๋ช… = ๋ณ€๊ฒฝํ•  ๊ฐ’,,,, (๋Œ€์ž…์˜ =) where ์ปฌ๋Ÿผ๋ช… = ๊ธฐ์ค€๊ฐ’ (๊ด€๊ณ„์˜ = / or like between ๋“ฑ๋“ฑ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ) - where์ ˆ์— ์ผ์น˜ํ•˜๋Š” (์กฐ๊ฑด์— ๋งž๋Š”) ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„์„œ ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•จ - 0~n๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋จ - ๋ฐ”๋€Œ์ง€ ๋ง์•„์•ผํ•  ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๋„๋ก ์กฐ๊ฑด ์„ค์ • * ํ•™์ƒ ํ…Œ์ด๋ธ”์—์„œ ๋ฒˆํ˜ธ๊ฐ€ 2๋ฒˆ์ธ ํ•™์ƒ์˜ ์ด๋ฆ„์„ ์œคoo์œผ๋กœ, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ 010-1234-567๋กœ ๋ณ€๊ฒฝ update student set name='์œคoo', phone = '010-3456-7891' -- 2. ์ด ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ ์ˆ˜ํ–‰ where ..

    0117 ๊ตญ๋น„์ˆ˜์—… ์˜ค๋ผํด insert null transaction commit rollback savepoint select ์—ฐ์‚ฐ์ž

    *insert - DML (์กฐ์ž‘์–ด) - ํ…Œ์ด๋ธ”์— Record๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” SQL๋ฌธ - ์ถ”๊ฐ€๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ - transaction ๋Œ€์ƒ ์ฟผ๋ฆฌ๋ฌธ ๋ฌธ๋ฒ•) -์ปฌ๋Ÿผ์„ ์ƒ๋žตํ•˜๊ณ  ์ถ”๊ฐ€(๊ถŒ์žฅx) (insertํ•  ๋•Œ ์ปฌ๋Ÿผ์˜ ์ˆœ์„œ๋ฅผ ์ง€์ผœ ์ปฌ๋Ÿผ์˜ ์ˆœ์„œ๋Œ€๋กœ๋งŒ ์ž…๋ ฅ ๊ฐ€๋Šฅ, ์ปฌ๋Ÿผ์˜ ๊ฐ’ ์ƒ๋žต ๋ถˆ๊ฐ€ / ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€ x) insert into ํ…Œ์ด๋ธ”๋ช… values(๊ฐ’,,,,,) ; -์ปฌ๋Ÿผ์„ ๋ช…์‹œํ•˜๊ณ  ์ถ”๊ฐ€(๊ถŒ์žฅ) (insertํ•  ๋•Œ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”์„œ ์ž…๋ ฅ ๊ฐ€๋Šฅ, ์ปฌ๋Ÿผ์˜ ๊ฐ’ ์ƒ๋žต ๊ฐ€๋Šฅ / ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ๋„ ์ถ”๊ฐ€ o) insert into ํ…Œ์ด๋ธ”๋ช…(์ปฌ๋Ÿผ๋ช…,,,) values(๊ฐ’,,,) ; // ๊ฐ’์ด ์–ด๋–ค ์ปฌ๋Ÿผ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š”์ง€ ๋ช…ํ™•ํžˆ ๋ช…์‹œ๋จ ํ…Œ์ด๋ธ” Test num n..

    0116 ๊ตญ๋น„ ์ˆ˜์—… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •์˜ 4๊ฐ€์ง€ ํŠน์ง• DB์˜ ํŠน์„ฑ DB ์žฅ๋‹จ์  ์ •์˜์–ด ์ œ์–ด์–ด ์กฐ์ž‘์–ด RDBMS ํ…Œ์ด๋ธ” ์ƒ์„ฑ Oracle ๋ฐ์ดํ„ฐํ˜• editor

    *DBMS ( DataBase Management System) - ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (RDBMS – Relationship DBMS) : ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๊ณ , ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” DBMS -1950๋…„์— ๋ฏธ๊ตญ ๊ตฐ๋Œ€์—์„œ ์ฒ˜์Œ ๋“ฑ์žฅํ•œ ์šฉ์–ด ๊ตฐ๋Œ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ตฐ๋น„๋ฅผ ์ง‘์ค‘์ , ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋„์„œ๊ด€ ๊ฐœ๋…์„ ๋„์ž…ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ์˜ ๊ธฐ์ง€๋ผ๋Š” ๋œป์œผ๋กœ “๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค”๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉ - 1965๋…„ ์‹œ์Šคํ…œ๋””๋ฒจ๋กœํ”„ ์‚ฌ ์‹ฌํฌ์ง€์›€์—์„œ ํ‘œ๋ฉด์ ์œผ๋กœ ์‚ฌ์šฉ *๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •์˜ data(์ž๋ฃŒ) : ์ˆซ์ž, ์˜์ƒ, ๋‹จ์–ด ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ๋œ ์˜๋ฏธ์žˆ๋Š” ๋‹จ์œ„ ์—ฐ๊ตฌ,์กฐ์‚ฌ์— ๋ฐ”ํƒ•์ด ๋˜๋Š” ์‚ฐ์žฌ๋˜์–ด ์žˆ๋Š” ์žฌ๋ฃŒ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธ์žˆ๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด ์ •๋ณด๊ฐ€ ๋จ database : ์ฒด๊ณ„ํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์ž„ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ†ตํ•ฉ๋œ..

    0113 ๊ตญ๋น„ ์ˆ˜์—… ์ž๋ฐ” Thread๊ฐ€ ๋„์ž…๋œ ์ฑ„ํŒ… ๋‹ค๋Œ€๋‹ค ์ฑ„ํŒ…

    ์„œ๋ฒ„ ํด๋ผ์ด์–ธํŠธ 1.ํฌํŠธ๋ฅผ ์—ด๊ณ , 2.์ ‘์†์ž ์†Œ์ผ“์„ ๋ฐ›๊ณ , 3. ์ŠคํŠธ๋ฆผ์„ ์—ฐ๊ฒฐ 4.์ ‘์†์ž ์†Œ์ผ“๋“ค์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด๋“ค์—ฌ 5. ๋ชจ๋“  ์ ‘์†์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฟŒ๋ ค์ค€๋‹ค. 1.์„œ๋ฒ„ip์™€ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์ ‘์†ํ•˜์—ฌ 2.๋ฉ”์‹œ์ง€๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๊ณ  3.์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด ๋“ค์ธ๋‹ค. Vector :Helper๊ด€๋ฆฌ Helper: ์ ‘์†์ž ์†Œ์ผ“์„ ๋ฐ›์•„, ์ŠคํŠธ๋ฆผ์„ ์—ฐ๊ฒฐํ•˜๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๋ฌดํ•œ ๋ฃจํ”„๋กœ ์ฝ๊ณ  ๋ชจ๋“  ์ ‘์†์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.