Skip to main content
Bring your team and maximize your impact at Dreamforce. Register three or more to unlock $999 passes.

SOQL ์ฟผ๋ฆฌ ์‹œ์ž‘ํ•˜๊ธฐ

ํ•™์Šต ๋ชฉํ‘œ

์ด ์œ ๋‹›์„ ์™„๋ฃŒํ•˜๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•„์ˆ˜ ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ ํšจํ•œ SOQL ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ์กฐ๊ฑด์œผ๋กœ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ชจ๋“ˆ์ด Apex ์ฝ”๋”ฉ ๊ธฐ์ˆ  ์Œ“๊ธฐ ํŠธ๋ ˆ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ๊ณผ์ •์ด๋ผ๋ฉด ๋„ˆ๋ฌด ๋ฉ€๋ฆฌ ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ชจ๋“ˆ์„ ๊ณ„์† ์ง„ํ–‰ํ•˜๊ธฐ์— ์•ž์„œ ์ „ ๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ€ ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•œ Apex ๊ธฐ์ดˆ ๋ฐ ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•œ ๊ฐœ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฑƒ์ง€๋ฅผ ํš๋“ํ•˜์„ธ์š”.

์ด๋ฏธ ํ•ด๋‹น ๋ฑƒ์ง€๋ฅผ ์–ป์œผ์…จ๋‚˜์š”? ์ž˜ ํ•˜์…จ์Šต๋‹ˆ๋‹ค! ์ง€๊ธˆ๊นŒ์ง€ ํด๋ž˜์Šค, ๋ณ€์ˆ˜, sObject๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธฐ์ดˆ๋ฅผ ํŒŒ์•…ํ–ˆ์œผ๋‹ˆ ์ด์ œ SOQL(sockle๋กœ ๋ฐœ์Œ)์ด๋ผ๊ณ ๋„ ํ•˜๋Š” Salesforce Object Query Language์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SOQL์ด๋ž€?

SOQL์ด๋ž€ Salesforce ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ ˆ์ฝ”๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•œ ๊ฐœ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ Data Manipulation Language(DML) ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? SOQL์ด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

SOQL ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ณด๊ณ ์„œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œ๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ‘œ์‹œํ•˜๊ณ ์ž ํ•˜๋Š” ํ•„๋“œ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€?
  2. ๊ทธ๋Ÿฌํ•œ ํ•„๋“œ๋Š” ์–ด๋””์— ์œ„์น˜ํ•ด ์žˆ๋Š”๊ฐ€?

SOQL ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๋•Œ๋„ ๋˜‘๊ฐ™์€ ์งˆ๋ฌธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์—์„œ ์ด๋Ÿฌํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์€ ํ•„๋“œ์™€ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค.

SELECT Name, Email FROM Contact. SELECT ๋ฐ FROM์€ SOQL ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. Name ๋ฐ Email์€ ํ•„๋“œ์ด๋ฉฐ Contact๋Š” ํ‘œ์ค€ Salesforce ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค.

์ด ์ฟผ๋ฆฌ์—๋Š” SOQL ํ‚ค์›Œ๋“œ(SELECT ๋ฐ FROM), ๋ ˆ์ฝ”๋“œ ํ•„๋“œ(Name ๋ฐ Email), ๊ฐœ์ฒด(ํ‘œ์ค€ Contact ๊ฐœ์ฒด)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์—ญํ• ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์—ฐ๋ฝ์ฒ˜ ๋ ˆ์ฝ”๋“œ์— ๊ด€ํ•œ ํŠน์ • ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ด๋Ÿฌํ•œ ์กฐ๊ฐ๋“ค์„ ์กฐํ•ฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ  ๋ช‡ ๊ฐ€์ง€ ์ฟผ๋ฆฌ ์ž‘์„ฑ ์—ฐ์Šต์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  SOQL ์ฟผ๋ฆฌ์—์„œ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•„์ˆ˜ SOQL ์ ˆ

SELECT

SOQL ์ฟผ๋ฆฌ์˜ ํ† ๋Œ€๋Š” ๋‘ ๊ฐ€์ง€ ์ ˆ, ์ฆ‰ SELECT ์ ˆ๊ณผ FROM ์ ˆ์ž…๋‹ˆ๋‹ค. ์ ˆ์„ ํผ์ฆ ์กฐ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ ˆ์€ ์ „์ฒด ์ฟผ๋ฆฌ์—์„œ ์ผ๋ถ€๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ์š”์†Œ์ž…๋‹ˆ๋‹ค.

SELECT Name, Email FROM Contact. SELECT Name, Email์€ SELECT ์ ˆ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  SOQL ์ฟผ๋ฆฌ์—๋Š” SELECT ํ‚ค์›Œ๋“œ๋กœ ์‹œ์ž‘ํ•˜๋Š” SELECT ์ ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. SELECT ์ ˆ์€ Salesforce ๋ ˆ์ฝ”๋“œ์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•„๋“œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค(์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋จ). ์ด ์ฟผ๋ฆฌ ์˜ˆ์‹œ๋Š” Name๊ณผ Email์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ ์ด๋ฆ„์— ๊ด€ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ: ์—ฌ๋Ÿฌ๋ถ„์€ ๊ด€๋ฆฌ์ž๋กœ์„œ ๋‹ค๋ฅธ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋งํ•  ๋•Œ ํ•„๋“œ๋ฅผ ํ•„๋“œ ๋ ˆ์ด๋ธ”์ด๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”๋“œ์—์„œ ๊ฐœ๋ฐœ์ž๋“ค์€ API ์ด๋ฆ„์„ ๋Œ€์‹  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ SOQL ์ฟผ๋ฆฌ์—์„œ๋Š” ํ•ญ์ƒ ํ•„๋“œ ๋ ˆ์ด๋ธ”์ด ์•„๋‹Œ ํ•„๋“œ API ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•„๋“œ์˜ API ์ด๋ฆ„์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋‹ˆ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋ชจ๋“ˆ ๋’ท๋ถ€๋ถ„์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

FROM

SOQL ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‘ ๋ฒˆ์งธ ์ ˆ์€ FROM ์ ˆ์ž…๋‹ˆ๋‹ค.

SELECT Name, Email FROM Contact. FROM Contact๋Š” FROM ์ ˆ์ž…๋‹ˆ๋‹ค.

FROM ํ‚ค์›Œ๋“œ๋กœ ์‹œ์ž‘ํ•˜๋Š” FROM ์ ˆ์€ Salesforce ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ฐœ์ฒด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Contact ๊ฐœ์ฒด์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Trail Together๋กœ ํ•จ๊ป˜ ๋”ฐ๋ผํ•˜๊ธฐ

์ด ๋‹จ๊ณ„๋ฅผ ์ „๋ฌธ๊ฐ€์™€ ํ•จ๊ป˜ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? Trailhead Live์˜ Trail Together ์‹œ๋ฆฌ์ฆˆ์— ํฌํ•จ๋œ ์ด ๋น„๋””์˜ค๋ฅผ ์‹œ์ฒญํ•˜์„ธ์š”. ์ „์ฒด ์„ธ์…˜์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๋งํฌ๋Š” ๋ฆฌ์†Œ์Šค ์„น์…˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

SOQL์„ ์‹ค์Šตํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”?

์ด ๋ฐฐ์ง€์—์„œ๋Š” Developer Console์˜ ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ์—์„œ SOQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค. ์ด ๋ฐฐ์ง€์—๋Š” ์‹ค์Šต ๊ณผ์ œ๊ฐ€ ์—†์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ Trailhead Playground๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผํ•˜๊ณ  ์‹ค์Šตํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € Trailhead์— ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ํŽ˜์ด์ง€์˜ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ์— ์žˆ๋Š” ์‚ฌ์šฉ์ž ์•„๋ฐ”ํƒ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋“œ๋กญ๋‹ค์šด์—์„œ Hands-on Orgs(์‹ค์Šต ์กฐ์ง)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์—ด๊ณ  ์‹ถ์€ ์กฐ์ง ์˜†์˜ Launch(์‹œ์ž‘)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ์ƒˆ Playground๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด Create Playground(Playground ๋งŒ๋“ค๊ธฐ)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

Note

์ƒˆ๋กœ์šด Trailhead Playground๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์กฐ์ง์ด๋‚˜ Playground๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณผ์ œ๋ฅผ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ์ž‘์„ฑํ•˜๊ธฐ

  1. Trailhead Playground์—์„œ ์„ค์ •์„ ํด๋ฆญํ•˜๊ณ  Developer Console์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. File(ํŒŒ์ผ) | Open(์—ด๊ธฐ) | Objects(๊ฐœ์ฒด) | Contact(์—ฐ๋ฝ์ฒ˜)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    Open(์—ด๊ธฐ) ์ฐฝ์— ์—”ํ‹ฐํ‹ฐ ์œ ํ˜•(Objects(๊ฐœ์ฒด) ํ•˜์ด๋ผ์ดํŠธ) ๋ฐ ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ(Contact(์—ฐ๋ฝ์ฒ˜) ํ•˜์ด๋ผ์ดํŠธ)๊ฐ€ ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  1. Open(์—ด๊ธฐ)์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    Contact(์—ฐ๋ฝ์ฒ˜) ๊ฐœ์ฒด๊ฐ€ ๊ด€๋ จ๋œ ๋ชจ๋“  ํ•„๋“œ์˜ ์ด๋ฆ„ ๋ฐ ์œ ํ˜• ๋ชฉ๋ก์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ํ•˜๋‹จ ํŒจ๋„์—์„œ Query Editor(์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ) ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. (ํƒญ์ด ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ฐฝ ํ•˜๋‹จ์— ์žˆ๋Š” ์œ„์ชฝ ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.)

    ์„ธ ๊ฐ€์ง€ ์ฐฝ์ด ์žˆ๋Š” Query Editor(์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ) ํƒญ.
    ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ๋Š” ์„ธ ๊ฐ€์ง€ ์„น์…˜์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์™ผ์ชฝ ์ƒ๋‹จ ์„น์…˜(1)์—๋Š” ์ฟผ๋ฆฌ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ผ์ชฝ ํ•˜๋‹จ ์„น์…˜(2)์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ ์„น์…˜(3)์—๋Š” ์‹คํ–‰๋œ SOQL ์ฟผ๋ฆฌ ๋‚ด์—ญ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  1. CTRL + ํด๋ฆญ(Windows) ๋˜๋Š” CMD + ํด๋ฆญ(Mac)์„ ์‚ฌ์šฉํ•˜์—ฌ Email(์ด๋ฉ”์ผ), Name(์ด๋ฆ„), Languages__c ํ•„๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. Query(์ฟผ๋ฆฌ)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    ์„ ํƒํ•œ ๊ฐœ์ฒด ๋ฐ ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ SOQL ์ฟผ๋ฆฌ๊ฐ€ ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์ž‘์„ฑ๊ธฐ์—์„œ ํ•„๋“œ๋ฅผ ์„ ํƒํ•˜๋ฉด ์ฟผ๋ฆฌ ์ž‘์„ฑ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ํ•„๋“œ API ์ด๋ฆ„์„ SOQL ์ฟผ๋ฆฌ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด API ์ด๋ฆ„์„ ์™ธ์šฐ๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  3. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ฟผ๋ฆฌ๊ฐ€ Id, Email(์ด๋ฉ”์ผ), Name(์ด๋ฆ„), Languages__c ํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๊ฒฐ๊ณผ์— ์š”์ฒญ๋œ ํ•ญ๋ชฉ์ด ์ •ํ™•ํžˆ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Id๊ฐ€ ๋ถ€๊ฐ€์ ์œผ๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์•„์ฃผ ์ข‹๋„ค์š”!

์„ ํƒ์  SOQL ์ ˆ

SELECT ์ ˆ๊ณผ FROM ์ ˆ์€ ํ•„์ˆ˜์ ์ด์ง€๋งŒ SOQL์—๋Š” ์ฟผ๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์„ ํƒ์  ์ ˆ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Trailhead Playground์—์„œ ์—ฌ๋Ÿฌ๋ถ„์ด ๋งŒ๋“  ์ฟผ๋ฆฌ ์˜ˆ์‹œ๋Š” ์ƒ๋‹นํžˆ ์ ์€ ์ˆ˜์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์ฟผ๋ฆฌ๋Š” 20๊ฐœ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ˆ˜ ์ฒœ๊ฐœ์— ์ด๋ฅธ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๊ทธ๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์ƒ๋‹นํžˆ ๋›ฐ์–ด๋‚œ ์ปดํ“จํŒ… ์„ฑ๋Šฅ์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. SOQL์ด ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์˜ ์ผ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ์š”? ์‹ค์ œ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

WHERE

WHERE ์ ˆ์€ ๋ ˆ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์น˜ํ•ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ WHERE ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ๋ก ๋ณด๊ธฐ ๋˜๋Š” ๋ณด๊ณ ์„œ์— ํ‘œ์‹œ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œํ•œํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ฆ„์ด Stella์ธ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ฐพ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฟผ๋ฆฌ ๋์— WHERE FirstName = 'Stella'๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

SELECT Name, Email FROM Contact WHERE FirstName = 'Stella'

๋‘ ๊ฐœ ์ด์ƒ์˜ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  WHERE ์ ˆ์„ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. AND, OR, IN์˜ ์„ธ ๊ฐ€์ง€ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋ช‡ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

AND

AND๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฟผ๋ฆฌ๋Š” ์ด๋ฆ„์ด Stella์ด๊ณ  ์„ฑ์ด Pavlova์ธ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SELECT Name, Email
FROM Contact
WHERE FirstName = 'Stella' AND LastName = 'Pavlova'

OR

OR์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด ์ค‘ ํ•œ ๊ฐ€์ง€๋ฅผ ์ถฉ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฟผ๋ฆฌ๋Š” ์ด๋ฆ„์ด James์ด๊ฑฐ๋‚˜ ์„ฑ์ด Barr์ธ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SELECT Name, Email
FROM Contact
WHERE LastName = 'James' OR LastName = 'Barr'

IN

IN์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ ๊ฐ€์ง€ ์ด์ƒ์˜ ์กฐ๊ฑด ์ค‘ ์ตœ์†Œ ํ•œ ๊ฐ€์ง€๋ฅผ ์ถฉ์กฑํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. IN ์ ˆ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์„ ํƒ ๋ชฉ๋ก์˜ ๊ฐ’์ด๋‚˜ LIST ๋˜๋Š” SET์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. IN์€ OR ์กฐ๊ฑด์ด ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฟผ๋ฆฌ๋Š” ์„ฑ์ด James, Barr, Nedaerk ๋˜๋Š” Forbes์ธ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SELECT Name, Email FROM Contact
WHERE LastName IN ('James', 'Barr', 'Nedaerk', 'Forbes')

LIMIT

LIMIT ํ‚ค์›Œ๋“œ๋Š” ๋ฐ˜ํ™˜ํ•  ๋ ˆ์ฝ”๋“œ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. LIMIT๋Š” ํ…Œ์ŠคํŠธ ์ค‘์ธ ์ƒํ™ฉ์—์„œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. SOQL์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๊ฒŒ ๋ ์ˆ˜๋ก ๋„ˆ๋ฌด ๋งŽ์€ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š” ๋ณด๋‹ค ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋•Œ๊นŒ์ง€๋Š” LIMIT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์— ์ œํ•œ์„ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. Developer Console์˜ ์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.
  2. ์ฟผ๋ฆฌ ๋์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด LIMIT 5๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    SELECT Email, Name FROM Contact LIMIT 5
  3. Execute(์‹คํ–‰)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

Query Results(์ฟผ๋ฆฌ ๊ฒฐ๊ณผ) ์ฐฝ์— 5๊ฐœ ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ORDER BY

๊ฒฐ๊ณผ์˜ ์–‘์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ฆฌํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ORDER BY ์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํ•„๋“œ์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•˜์„ธ์š”. ์„ ํƒ์ ์œผ๋กœ ORDER BY ์ ˆ์˜ ํ•œ์ •์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์—์„œ์™€ ๊ฐ™์ด ์˜ค๋ฆ„์ฐจ์ˆœ(๊ธฐ๋ณธ๊ฐ’) ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋น„์–ด ์žˆ๋Š” ํ•„๋“œ ๊ฐ’์ด ๋งŽ์€ ๊ฒฝ์šฐ NULLS ํ•œ์ •์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  NULL ๊ฐ’์„ ์ฒ˜์Œ์œผ๋กœ(๊ธฐ๋ณธ๊ฐ’) ๋˜๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ

์„ค๋ช…

์˜ˆ

ASC

๊ฒฐ๊ณผ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SELECT Name, Email FROM Contact
ORDER BY Name ASC
LIMIT 5

DESC

๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

SELECT Name, Email FROM Contact
ORDER BY Email DESC
LIMIT 5

NULLS

FIRST | LAST

null ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ(NULLS FIRST) ๋˜๋Š” ๋(NULLS LAST)์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค

SELECT Name, Email FROM Contact
ORDER BY Email
NULLS LAST

ASC ์˜ˆ์‹œ์—์„œ SELECT Name, Email FROM Contact ORDER BY Name ASC LIMIT 5๋Š” 5๊ฐœ ์—ฐ๋ฝ์ฒ˜์—์„œ Name ๋ฐ Email ํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ด๋ฆ„์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

Contact(์—ฐ๋ฝ์ฒ˜) ๊ฐœ์ฒด์˜ ์ด๋ฆ„(์˜ค๋ฆ„์ฐจ์ˆœ) ๋ฐ ์ด๋ฉ”์ผ ํ•„๋“œ๊ฐ€ ๋‚˜์—ด๋œ Query Results(์ฟผ๋ฆฌ ๊ฒฐ๊ณผ).

NULLS ์˜ˆ์‹œ์—์„œ๋Š” SELECT Name, Email FROM Contact ORDER BY Email NULLS LAST๊ฐ€ (์˜ค๋ฆ„์ฐจ์ˆœ์ด ์ •๋ ฌ ์ˆœ์„œ์˜ ๊ธฐ๋ณธ๊ฐ’์ด๋ฏ€๋กœ) ์ด๋ฆ„ ๋ฐ ์ด๋ฉ”์ผ์„ ์ด๋ฉ”์ผ์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ์—†๋Š” ๋ ˆ์ฝ”๋“œ๋Š” ๋์— ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„ ๋ฐ ์ด๋ฉ”์ผ ํ•„๋“œ๊ฐ€ ๋‚˜์—ด๋œ Query Results(์ฟผ๋ฆฌ ๊ฒฐ๊ณผ).

SOQL์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜๋ฉด ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ , ์ œํ•œ์„ ์„ค์ •ํ•˜์—ฌ ๋งค์šฐ ๊ตฌ์ฒด์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ณ , ๋ฐ˜ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์‹ ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฝค ์œ ์šฉํ•˜์ฃ .

๋ฆฌ์†Œ์Šค

Salesforce ๋„์›€๋ง์—์„œ Trailhead ํ”ผ๋“œ๋ฐฑ์„ ๊ณต์œ ํ•˜์„ธ์š”.

Trailhead์— ๊ด€ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์˜๊ฒฌ์— ๊ท€ ๊ธฐ์šธ์ด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ œ Salesforce ๋„์›€๋ง ์‚ฌ์ดํŠธ์—์„œ ์–ธ์ œ๋“ ์ง€ ์ƒˆ๋กœ์šด ํ”ผ๋“œ๋ฐฑ ์–‘์‹์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์˜๊ฒฌ ๊ณต์œ ํ•˜๊ธฐ