πŸ˜—
SQL Guide
  • πŸ˜€SQL μ „λ¬Έκ°€ κ°€μ΄λ“œμ˜ κ°€μ΄λ“œ
  • 😦과λͺ©1 데이터λͺ¨λΈμ˜ 이해
    • ⭐제1μž₯ 데이터 λͺ¨λΈλ§μ˜ 이해
      • 🌠1-1-1. 데이터 λͺ¨λΈμ˜ 이해
      • 🌠1-1-2. μ—”ν„°ν‹°(Entity)
      • 🌠1-1-3. 속성(Attribute)
      • 🌠1-1-4. 관계(Relationship)
      • 🌠1-1-5. μ‹λ³„μž
    • ⭐제2μž₯ 데이터 λͺ¨λΈκ³Ό SQL
      • 🌠1-2-1. μ •κ·œν™”
      • 🌠1-2-2. 관계와 쑰인의 이해
      • 🌠1-2-3. λͺ¨λΈμ΄ ν‘œν˜„ν•˜λŠ” νŠΈλžœμž­μ…˜μ˜ 이해
      • 🌠1-2-4. Null μ†μ„±μ˜ 이해
      • 🌠1-2-5. λ³Έμ§ˆμ‹λ³„μž vs. μΈμ‘°μ‹λ³„μž
  • 😧과λͺ©2. SQL κΈ°λ³Έκ³Ό ν™œμš©
    • ⭐제1μž₯ SQL κΈ°λ³Έ
      • 🌠2-1-1. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ κ°œμš”
      • 🌠2-1-2. SELECTλ¬Έ
      • 🌠2-1-3. ν•¨μˆ˜(FUNCTION)
      • 🌠2-1-4. WHERE 절
      • 🌠2-1-5. GROUP BY, HAVING 절
      • 🌠2-1-6. ORDER BY 절
      • 🌠2-1-7. 쑰인
      • 🌠2-1-8. ν‘œμ€€ 쑰인
    • ⭐제2μž₯ SQL ν™œμš©
      • 🌠2-2-1. μ„œλΈŒ 쿼리
      • 🌠2-2-2. μ§‘ν•© μ—°μ‚°μž
      • 🌠2-2-3. κ·Έλ£Ή ν•¨μˆ˜
      • 🌠2-2-4. μœˆλ„μš° ν•¨μˆ˜
      • 🌠2-2-5. Top N 쿼리
      • 🌠2-2-6. κ³„μΈ΅ν˜• μ§ˆμ˜μ™€ μ…€ν”„ 쑰인
      • 🌠2-2-7. PIVOT 절과 UNPIVOT 절
      • 🌠2-2-8. μ •κ·œ ν‘œν˜„μ‹
    • ⭐제3μž₯ 관리 ꡬ문
      • 🌠2-3-1. DML
      • 🌠2-3-2. TCL
      • 🌠2-3-3. DDL
      • 🌠2-3-4. DCL
  • 😨과λͺ©3. SQL κ³ κΈ‰ ν™œμš© 및 νŠœλ‹
    • ⭐제1μž₯ SQL μˆ˜ν–‰ ꡬ쑰
      • 🌠3-1-1. λ°μ΄ν„°λ² μ΄μŠ€ μ•„ν‚€ν…μ²˜
      • 🌠3-1-2. SQL 처리 κ³Όμ •
      • 🌠3-1-3. λ°μ΄ν„°λ² μ΄μŠ€ I/O λ©”μ»€λ‹ˆμ¦˜
    • ⭐제2μž₯ SQL 뢄석 도ꡬ
      • 🌠3-2-1. μ˜ˆμƒ μ‹€ν–‰κ³„νš
      • 🌠3-2-2. SQL 트레이슀
      • 🌠3-2-3. 응닡 μ‹œκ°„ 뢄석
    • ⭐제3μž₯ 인덱슀 νŠœλ‹
      • 🌠3-3-1. 인덱슀 κΈ°λ³Έ 원리
      • 🌠3-3-2. ν…Œμ΄λΈ” μ•‘μ„ΈμŠ€ μ΅œμ†Œν™”
      • 🌠3-3-3. 인덱슀 μŠ€μΊ” νš¨μœ¨ν™”
      • 🌠3-3-4. 인덱슀 섀계
    • ⭐제4μž₯ 쑰인 νŠœλ‹
      • 🌠3-4-1. NL 쑰인
      • 🌠3-4-2. μ†ŒνŠΈ λ¨Έμ§€ 쑰인
      • 🌠3-4-3. ν•΄μ‹œ 쑰인
      • 🌠3-4-4. 슀칼라 μ„œλΈŒμΏΌλ¦¬
      • 🌠3-4-5. κ³ κΈ‰ 쑰인 기법
    • ⭐제5μž₯ SQL μ˜΅ν‹°λ§ˆμ΄μ €
      • 🌠3-5-1. SQL μ˜΅ν‹°λ§ˆμ΄μ§• 원리
      • 🌠3-5-2. SQL 곡유 및 μž¬μ‚¬μš©
      • 🌠3-5-3. 쿼리 λ³€ν™˜
    • ⭐제6μž₯ κ³ κΈ‰ SQL νŠœλ‹
      • 🌠3-6-1. μ†ŒνŠΈ νŠœλ‹
      • 🌠3-6-2. DML νŠœλ‹
      • 🌠3-6-3. λ°μ΄ν„°λ² μ΄μŠ€ Call μ΅œμ†Œν™”
      • 🌠3-6-4. νŒŒν‹°μ…”λ‹
      • 🌠3-6-5. λŒ€μš©λŸ‰ 배치 ν”„λ‘œκ·Έλž¨ νŠœλ‹
      • 🌠3-6-6. κ³ κΈ‰ SQL ν™œμš©
    • ⭐제7μž₯ Lockκ³Ό νŠΈλžœμž­μ…˜ λ™μ‹œμ„± μ œμ–΄
      • 🌠3-7-1. Lock
      • 🌠3-7-2. νŠΈλžœμž­μ…˜
      • 🌠3-7-3. λ™μ‹œμ„± μ œμ–΄
Powered by GitBook
On this page
  • κ³Όλͺ©2. SQL κΈ°λ³Έκ³Ό ν™œμš©
  • 제3μž₯ 관리 ꡬ문
  • 제4절 DCL
  • 1. DCL κ°œμš”
  • 2. μœ μ €μ™€ κΆŒν•œ
  • 3. Role을 μ΄μš©ν•œ κΆŒν•œ λΆ€μ—¬

Was this helpful?

  1. κ³Όλͺ©2. SQL κΈ°λ³Έκ³Ό ν™œμš©
  2. 제3μž₯ 관리 ꡬ문

2-3-4. DCL

Previous2-3-3. DDLNextκ³Όλͺ©3. SQL κ³ κΈ‰ ν™œμš© 및 νŠœλ‹

Last updated 3 years ago

Was this helpful?

κ³Όλͺ©2. SQL κΈ°λ³Έκ³Ό ν™œμš©

제3μž₯ 관리 ꡬ문

제4절 DCL

1. DCL κ°œμš”

μ§€κΈˆκΉŒμ§€ μ‚΄νŽ΄λ³Έ SQL λ¬Έμž₯을 λΆ„λ₯˜ν•˜λ©΄ ν…Œμ΄λΈ” 생성과 μ‘°μž‘μ— κ΄€λ ¨λœ λͺ…λ Ήμ–΄(DDL)와, 데이터λ₯Ό μ‘°μž‘ν•˜κΈ° μœ„ν•œ λͺ…λ Ήμ–΄(DML), 그리고 TRANSACTION을 μ œμ–΄ν•˜κΈ° μœ„ν•œ λͺ…λ Ήμ–΄(TCL)이닀. μΆ”κ°€λ‘œ, 이런 λͺ…λ Ήμ–΄λ“€ 이외에도 μœ μ €λ₯Ό μƒμ„±ν•˜κ³  κΆŒν•œμ„ μ œμ–΄ν•  수 μžˆλŠ” DCL(DATA CONTROL LANGUAGE) λͺ…λ Ήμ–΄κ°€ μžˆλ‹€.

2. μœ μ €μ™€ κΆŒν•œ

λ‹€λ₯Έ λΆ€μ„œ 간에 λ˜λŠ” λ‹€λ₯Έ νšŒμ‚¬ 간에 데이터λ₯Ό κ³΅μœ ν•˜κΈ° μœ„ν•΄ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ˜€ν”ˆν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ 가끔 λ°œμƒν•œλ‹€. λ¬Όλ‘  λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ˜€ν”ˆν•˜λŠ” 것 μžμ²΄κ°€ λ¬Έμ œκ°€ 될 수 μžˆλ‹€. 즉 운영 μ‹œμŠ€ν…œμ—μ„œ μ‚¬μš©ν•˜λ˜ μœ μ €λ₯Ό μ˜€ν”ˆν•˜λ©΄ λ°μ΄ν„°μ˜ 손싀 μš°λ €κ°€ λ„ˆλ¬΄ μ»€μ§€κ²Œ λ˜λŠ” 것이닀. 이런 κ²½μš°μ— μƒˆλ‘œμš΄ μœ μ €λ₯Ό μƒμ„±ν•˜κ³ , μƒμ„±ν•œ μœ μ €μ—κ²Œ κ³΅μœ ν•  ν…Œμ΄λΈ”μ΄λ‚˜ 기타 μ˜€λΈŒμ νŠΈμ— λŒ€ν•œ μ ‘κ·Ό κΆŒν•œλ§Œμ„ λΆ€μ—¬ν•œλ‹€λ©΄ λ¬Έμ œλŠ” μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλ‹€. 일반적으둜 νšŒμ›μ œ μ›Ήμ‚¬μ΄νŠΈλ₯Ό λ°©λ¬Έν•˜μ—¬ μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜λ €λ©΄ λ¨Όμ € νšŒμ› κ°€μž…μ„ ν•΄μ•Ό ν•œλ‹€. μœ μ € 아이디, νŒ¨μŠ€μ›Œλ“œ, 기타 κ°œμΈμ •λ³΄λ₯Ό μž…λ ₯ν•˜κ³  약관에 λ™μ˜ν•˜λ©΄ νšŒμ› κ°€μž…μ΄ λœλ‹€. 그리고 μœ μ € 아이디와 νŒ¨μŠ€μ›Œλ“œλ‘œ λ‘œκ·ΈμΈν•˜λ©΄ μ›Ήμ‚¬μ΄νŠΈμ˜ μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  수 있게 λœλ‹€. κ·ΈλŸ¬λ‚˜ μ˜ν™”λ‚˜ 유료 κ²Œμž„κ³Ό 같은 νŠΉμ • 컨텐츠λ₯Ό μ΄μš©ν•˜λ €λ©΄ 'κΆŒν•œμ΄ μ—†λ‹€'λΌλŠ” λ©”μ‹œμ§€λ₯Ό λ³Ό 수 μžˆλ‹€. μ—¬κΈ°μ„œ μœ μ € 아이디와 νŒ¨μŠ€μ›Œλ“œλ₯Ό μœ μ €λΌ ν•  수 있고, 유료 μ„œλΉ„μŠ€μ— λŒ€ν•œ 결재 μ—¬λΆ€λ₯Ό κΆŒν•œμ΄λΌ ν•  수 μžˆλ‹€. λŒ€λΆ€λΆ„μ˜ λ°μ΄ν„°λ² μ΄μŠ€λŠ” 데이터 λ³΄ν˜Έμ™€ λ³΄μ•ˆμ„ μœ„ν•΄μ„œ μœ μ €μ™€ κΆŒν•œμ„ κ΄€λ¦¬ν•˜κ³  μžˆλŠ”λ°, 예λ₯Ό λ“€μ–΄ Oracle을 μ„€μΉ˜ν•˜λ©΄ 기본적으둜 μ œκ³΅λ˜λŠ” μœ μ €λ“€μΈ SYS, SYSTEM, SCOTT μœ μ €μ— λŒ€ν•΄μ„œ [ν‘œ β…‘-2-8]을 ν†΅ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œ μ•Œμ•„λ³Έλ‹€.

Oracleκ³Ό SQL Server의 μ‚¬μš©μžμ— λŒ€ν•œ μ•„ν‚€ν…μ²˜λŠ” λ‹€λ₯Έ 면이 λ§Žλ‹€. Oracle은 μœ μ €λ₯Ό 톡해 λ°μ΄ν„°λ² μ΄μŠ€μ— 접속을 ν•˜λŠ” ν˜•νƒœμ΄λ‹€. 즉 아이디와 λΉ„λ°€λ²ˆν˜Έ λ°©μ‹μœΌλ‘œ μΈμŠ€ν„΄μŠ€μ— 접속을 ν•˜κ³  그에 ν•΄λ‹Ήν•˜λŠ” μŠ€ν‚€λ§ˆμ— 였브젝트 생성 λ“±μ˜ κΆŒν•œμ„ λΆ€μ—¬λ°›κ²Œ λœλ‹€. SQL ServerλŠ” μΈμŠ€ν„΄μŠ€μ— μ ‘μ†ν•˜κΈ° μœ„ν•΄ λ‘œκ·ΈμΈμ΄λΌλŠ” 것을 μƒμ„±ν•˜κ²Œ 되며, μΈμŠ€ν„΄μŠ€ 내에 μ‘΄μž¬ν•˜λŠ” λ‹€μˆ˜μ˜ λ°μ΄ν„°λ² μ΄μŠ€μ— μ—°κ²°ν•˜μ—¬ μž‘μ—…ν•˜κΈ° μœ„ν•΄ μœ μ €λ₯Ό μƒμ„±ν•œ ν›„ 둜그인과 μœ μ €λ₯Ό λ§€ν•‘ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€. 더 λ‚˜μ•„κ°€ νŠΉμ • μœ μ €λŠ” νŠΉμ • λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ˜ νŠΉμ • μŠ€ν‚€λ§ˆμ— λŒ€ν•΄ κΆŒν•œμ„ 뢀여받을 수 μžˆλ‹€. SQL Server λ‘œκ·ΈμΈμ€ 두 κ°€μ§€ λ°©μ‹μœΌλ‘œ κ°€λŠ₯ν•˜λ‹€. 첫 번째, Windows 인증 λ°©μ‹μœΌλ‘œ Windows에 λ‘œκ·ΈμΈν•œ 정보λ₯Ό κ°€μ§€κ³  SQL Server에 μ ‘μ†ν•˜λŠ” 방식이닀. Microsoft Windows μ‚¬μš©μž 계정을 톡해 μ—°κ²°λ˜λ©΄ SQL ServerλŠ” 운영 체제의 Windows λ³΄μ•ˆ 주체 토큰을 μ‚¬μš©ν•˜μ—¬ 계정 이름과 μ•”ν˜Έκ°€ μœ νš¨ν•œμ§€ ν™•μΈν•œλ‹€. 즉 Windowsμ—μ„œ μ‚¬μš©μž IDλ₯Ό ν™•μΈν•œλ‹€. SQL ServerλŠ” μ•”ν˜Έλ₯Ό μš”μ²­ν•˜μ§€ μ•ŠμœΌλ©° ID의 μœ νš¨μ„± 검사λ₯Ό μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€. Windows 인증은 κΈ°λ³Έ 인증 λͺ¨λ“œμ΄λ©° SQL Server 인증보닀 훨씬 더 μ•ˆμ „ν•˜λ‹€. Windows 인증은 Kerberos λ³΄μ•ˆ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜κ³ , μ•”ν˜Έ 정책을 μ μš©ν•˜μ—¬ κ°•λ ₯ν•œ μ•”ν˜Έμ— λŒ€ν•΄ μ ν•©ν•œ λ³΅μž‘μ„± μˆ˜μ€€μ„ μœ μ§€ν•˜λ„λ‘ ν•˜λ©°, 계정 잠금 및 μ•”ν˜Έ 만료λ₯Ό μ§€μ›ν•œλ‹€. SQL Serverκ°€ Windowsμ—μ„œ μ œκ³΅ν•˜λŠ” 자격 증λͺ…을 μ‹ λ’°ν•˜λ―€λ‘œ Windows 인증을 μ‚¬μš©ν•œ 연결을 트러슀트된 연결이라고도 ν•œλ‹€. 두 번째, ν˜Όν•© λͺ¨λ“œ(Windows 인증 λ˜λŠ” SQL 인증) λ°©μ‹μœΌλ‘œ 기본적으둜 Windows μΈμ¦μœΌλ‘œλ„ SQL Server에 접속 κ°€λŠ₯ν•˜λ©°, Oracle의 인증과 같은 λ°©μ‹μœΌλ‘œ μ‚¬μš©μž 아이디와 λΉ„λ°€λ²ˆν˜Έλ‘œ SQL Server에 μ ‘μ†ν•˜λŠ” 방식이닀. SQL 인증을 μ‚¬μš©ν•  λ•ŒλŠ” κ°•λ ₯ν•œ μ•”ν˜Έ(숫자+문자+특수문자 등을 ν˜Όν•©ν•˜μ—¬ μ‚¬μš©)λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. 예λ₯Ό λ“€μ–΄, μ•„λž˜ [κ·Έλ¦Ό β…‘-1-16]을 보면 SCOTTμ΄λΌλŠ” LOGIN μ΄λ¦„μœΌλ‘œ μΈμŠ€ν„΄μŠ€ INST1에 접속을 ν•˜μ—¬ 미리 λ§€ν•‘λ˜μ–΄ μžˆλŠ” SCOTTμ΄λΌλŠ” μœ μ €λ₯Ό 톡해 PRODUCTλΌλŠ” μŠ€ν‚€λ§ˆμ— 속해 μžˆλŠ” ITEMμ΄λΌλŠ” ν…Œμ΄λΈ”μ˜ 데이터λ₯Ό μ•‘μ„ΈμŠ€ν•˜κ³  μžˆλ‹€.

κ°€. μœ μ € 생성과 μ‹œμŠ€ν…œ κΆŒν•œ λΆ€μ—¬

μœ μ €λ₯Ό μƒμ„±ν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘μ†ν•œλ‹€. ν•˜μ§€λ§Œ λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘μ†ν–ˆλ‹€κ³  ν•΄μ„œ ν…Œμ΄λΈ”, λ·°, 인덱슀 λ“±κ³Ό 같은 였브젝트(OBJECT)λ₯Ό 생성할 μˆ˜λŠ” μ—†λ‹€. μ‚¬μš©μžκ°€ μ‹€ν–‰ν•˜λŠ” λͺ¨λ“  DDL λ¬Έμž₯(CREATE, ALTER, DROP, RENAME λ“±)은 그에 ν•΄λ‹Ήν•˜λŠ” μ μ ˆν•œ κΆŒν•œμ΄ μžˆμ–΄μ•Όλ§Œ λ¬Έμž₯을 μ‹€ν–‰ν•  수 μžˆλ‹€. μ΄λŸ¬ν•œ κΆŒν•œμ„ μ‹œμŠ€ν…œ κΆŒν•œμ΄λΌκ³  ν•˜λ©° μ•½ 100개 μ΄μƒμ˜ μ’…λ₯˜κ°€ μžˆλ‹€. 일반적으둜 μ‹œμŠ€ν…œ κΆŒν•œμ€ 일일이 μœ μ €μ—κ²Œ λΆ€μ—¬λ˜μ§€ μ•ŠλŠ”λ‹€. 100개 μ΄μƒμ˜ μ‹œμŠ€ν…œ κΆŒν•œμ„ 일일이 μ‚¬μš©μžμ—κ²Œ μ„€μ •ν•˜λŠ” 것은 λ„ˆλ¬΄ λ³΅μž‘ν•˜κ³ , 특히 μœ μ €λ‘œλΆ€ν„° κΆŒν•œμ„ κ΄€λ¦¬ν•˜κΈ°κ°€ μ–΄λ ΅κΈ° λ•Œλ¬Έμ΄λ‹€. κ·Έλž˜μ„œ λ‘€(ROLE)을 μ΄μš©ν•˜μ—¬ κ°„νŽΈν•˜κ³  μ‰½κ²Œ κΆŒν•œμ„ λΆ€μ—¬ν•˜κ²Œ λœλ‹€. 둀에 λŒ€ν•œ μžμ„Έν•œ μ„€λͺ…은 차후에 ν•˜λ„λ‘ ν•˜κ³  λ¨Όμ € μœ μ €λ₯Ό μƒμ„±ν•˜κ³  κΆŒν•œμ„ λΆ€μ—¬ν•œλ‹€. μƒˆλ‘œμš΄ μœ μ €λ₯Ό μƒμ„±ν•˜λ €λ©΄ 일단 μœ μ € 생성 κΆŒν•œ(CREATE USER)이 μžˆμ–΄μ•Ό ν•œλ‹€.

[예제] SCOTT μœ μ €λ‘œ μ ‘μ†ν•œ λ‹€μŒ PJS μœ μ €(νŒ¨μŠ€μ›Œλ“œ: KOREA7)λ₯Ό 생성해 λ³Έλ‹€.

[예제] Oracle

CONN SCOTT/TIGER μ—°κ²°λ˜μ—ˆλ‹€.

CREATE USER PJS IDENTIFIED BY KOREA7; 
CREATE USER PJS IDENTIFIED BY KOREA7; 

* 1행에 였λ₯˜: ERROR: κΆŒν•œμ΄ λΆˆμΆ©λΆ„ν•˜λ‹€

ν˜„μž¬ SCOTT μœ μ €λŠ” μœ μ €λ₯Ό 생성할 κΆŒν•œμ„ λΆ€μ—¬λ°›μ§€ λͺ»ν–ˆκΈ° λ•Œλ¬Έμ— κΆŒν•œμ΄ λΆˆμΆ©λΆ„ν•˜λ‹€λŠ” 였λ₯˜κ°€ λ°œμƒν•œλ‹€. Oracle의 DBA κΆŒν•œμ„ κ°€μ§€κ³  μžˆλŠ” SYSTEM μœ μ €λ‘œ μ ‘μ†ν•˜λ©΄ μœ μ € 생성 κΆŒν•œ(CREATE USER)을 λ‹€λ₯Έ μœ μ €μ—κ²Œ λΆ€μ—¬ν•  수 μžˆλ‹€.

[예제] SCOTT μœ μ €μ—κ²Œ μœ μ €μƒμ„± κΆŒν•œ(CREATE USER)을 λΆ€μ—¬ν•œ ν›„ λ‹€μ‹œ PJS μœ μ €λ₯Ό μƒμ„±ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

GRANT CREATE USER TO SCOTT; 

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

CONN SCOTT/TIGER μ—°κ²°λ˜μ—ˆλ‹€.

CREATE USER PJS IDENTIFIED BY KOREA7; 

μ‚¬μš©μžκ°€ μƒμ„±λ˜μ—ˆλ‹€.

SQL ServerλŠ” μœ μ €λ₯Ό μƒμ„±ν•˜κΈ° μ „ λ¨Όμ € λ‘œκ·ΈμΈμ„ 생성해야 ν•œλ‹€. λ‘œκ·ΈμΈμ„ 생성할 수 μžˆλŠ” κΆŒν•œμ„ κ°€μ§„ λ‘œκ·ΈμΈμ€ 기본적으둜 sa이닀.

[예제] sa둜 λ‘œκ·ΈμΈμ„ ν•œ ν›„ SQL 인증을 μ‚¬μš©ν•˜λŠ” PJSλΌλŠ” 둜그인(νŒ¨μŠ€μ›Œλ“œ: KOREA7)을 생성해 λ³Έλ‹€. 둜그인 ν›„ 졜초둜 접속할 λ°μ΄ν„°λ² μ΄μŠ€λŠ” AdventureWorks λ°μ΄ν„°λ² μ΄μŠ€λ‘œ μ„€μ •ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό SQL Server]

CREATE LOGIN PJS WITH PASSWORD = 'KOREA7', DEFAULT_DATABASE = ADVENTUREWORKS 

SQL Serverμ—μ„œμ˜ μœ μ €λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ§ˆλ‹€ μ‘΄μž¬ν•œλ‹€. κ·ΈλŸ¬λ―€λ‘œ μœ μ €λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” μƒμ„±ν•˜κ³ μž ν•˜λŠ” μœ μ €κ°€ 속할 λ°μ΄ν„°λ² μ΄μŠ€λ‘œ 이동을 ν•œ ν›„ μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό SQL Server]

USE ADVENTUREWORKS;
GO 
CREATE USER PJS FOR LOGIN PJS WITH DEFAULT_SCHEMA = DBO; 

[예제] μƒμ„±λœ PJS μœ μ €λ‘œ λ‘œκ·ΈμΈν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

CONN PJS/KOREA7;

였λ₯˜: ERROR: μ‚¬μš©μž PJSλŠ” CREATE SESSION κΆŒν•œμ„ κ°€μ§€κ³ μžˆμ§€ μ•ŠμŒ;

둜그온이 κ±°μ ˆλ˜μ—ˆλ‹€.

PJS μœ μ €κ°€ μƒμ„±λμ§€λ§Œ μ•„λ¬΄λŸ° κΆŒν•œλ„ λΆ€μ—¬λ°›μ§€ λͺ»ν–ˆκΈ° λ•Œλ¬Έμ— λ‘œκ·ΈμΈμ„ ν•˜λ©΄ CREATE SESSION κΆŒν•œμ΄ μ—†λ‹€λŠ” 였λ₯˜κ°€ λ°œμƒν•œλ‹€. μœ μ €κ°€ λ‘œκ·ΈμΈμ„ ν•˜λ €λ©΄ CREATE SESSION κΆŒν•œμ„ λΆ€μ—¬λ°›μ•„μ•Ό ν•œλ‹€.

[예제] PJS μœ μ €κ°€ λ‘œκ·ΈμΈν•  수 μžˆλ„λ‘ CREATE SESSION κΆŒν•œμ„ λΆ€μ—¬ν•œλ‹€.

[예제] Oracle

CONN SYSTEM/MANAGER

μ—°κ²°λ˜μ—ˆλ‹€.

GRANT CREATE SESSION TO PJS; 

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

CONN PJS/KOREA7

μ—°κ²°λ˜μ—ˆλ‹€.

[예제] PJS μœ μ €λ‘œ ν…Œμ΄λΈ”μ„ μƒμ„±ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

SELECT * FROM TAB; 

μ„ νƒλœ λ ˆμ½”λ“œκ°€ μ—†λ‹€.

CREATE TABLE MENU (
       MENU_SEQ NUMBER NOT NULL
    ,  TITLE VARCHAR2(10)
 ); 
CREATE TABLE MENU ( 

* 1 ν–‰μ—μ˜€λ₯˜: ERROR: κΆŒν•œμ΄λΆˆμΆ©λΆ„ν•˜λ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό SQL Server]

CREATE TABLE MENU
 (
    MENU_SEQ INT NOT NULL
    ,  TITLE VARCHAR(10)
 ); 

λ°μ΄ν„°λ² μ΄μŠ€ 'AdventureWorks'μ—μ„œ CREATE TABLE μ‚¬μš©κΆŒν•œμ΄κ±°λΆ€λ˜μ—ˆλ‹€.

PJS μœ μ €λŠ” 둜그인 κΆŒν•œλ§Œ λΆ€μ—¬λ˜μ—ˆκΈ° λ•Œλ¬Έμ— ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜λ €λ©΄ ν…Œμ΄λΈ” 생성 κΆŒν•œ(CREATE TABLE)이 λΆˆμΆ©λΆ„ν•˜λ‹€λŠ” 였λ₯˜κ°€ λ°œμƒν•œλ‹€.(Oracle, SQL Server)

[예제] SYSTEM μœ μ €λ₯Ό ν†΅ν•˜μ—¬ PJS μœ μ €μ—κ²Œ CREATE TABLE κΆŒν•œμ„ λΆ€μ—¬ν•œ ν›„ λ‹€μ‹œ ν…Œμ΄λΈ”μ„ μƒμ„±ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

CONN SYSTEM/MANAGER 

μ—°κ²°λ˜μ—ˆλ‹€.

GRANT CREATE TABLE TO PJS; 

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

CONN PJS/KOREA7 μ—°κ²°λ˜μ—ˆλ‹€.

CREATE TABLE MENU
 (
    MENU_SEQ NUMBER NOT NULL
    ,  TITLE VARCHAR2(10)
 ); 

ν…Œμ΄λΈ”μ΄ μƒμ„±λ˜μ—ˆλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό SQL Server]

GRANT CREATE TABLE TO PJS; 

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

μŠ€ν‚€λ§ˆμ— κΆŒν•œμ„ λΆ€μ—¬ν•œλ‹€.

[예제] SQL Server

GRANT Control ON SCHEMA::dbo TO PJS

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

PJS둜 λ‘œκ·ΈμΈν•œλ‹€.

CREATE TABLE MENU
 (
    MENU_SEQ INT NOT NULL
    ,  TITLE VARCHAR(10)
 ); 

ν…Œμ΄λΈ”μ΄ μƒμ„±λ˜μ—ˆλ‹€.

λ‚˜. OBJECT에 λŒ€ν•œ κΆŒν•œ λΆ€μ—¬

μ•žμ—μ„œ PJS μœ μ €λ₯Ό μƒμ„±ν•˜μ—¬ λ‘œκ·ΈμΈν•˜κ³  ν…Œμ΄λΈ”μ„ λ§Œλ“œλŠ” κ³Όμ •μ—μ„œ λͺ‡ κ°€μ§€μ˜ κΆŒν•œμ— λŒ€ν•΄μ„œ μ‚΄νŽ΄λ³΄μ•˜λ‹€. μ΄μ œλŠ” νŠΉμ • μœ μ €κ°€ μ†Œμœ ν•œ 객체(OBJECT) κΆŒν•œμ— λŒ€ν•΄ μ•Œμ•„λ³Έλ‹€. 였브젝트 κΆŒν•œμ€ νŠΉμ • 였브젝트인 ν…Œμ΄λΈ”, λ·° 등에 λŒ€ν•œ SELECT, INSERT, DELETE, UPDATE μž‘μ—… λͺ…λ Ήμ–΄λ₯Ό μ˜λ―Έν•œλ‹€. [ν‘œ β…‘-2-9]λŠ” 였브젝트 κΆŒν•œκ³Ό μ˜€λΈŒμ νŠΈμ™€μ˜ 관계λ₯Ό 보여 μ£Όκ³  μžˆλ‹€.

μ•žμ—μ„œ PJS μœ μ €κ°€ μƒμ„±ν•œ MENU ν…Œμ΄λΈ”μ„ SCOTT μœ μ €λ₯Ό ν†΅ν•΄μ„œ μ‘°νšŒν•˜λ©΄ μ–΄λ–»κ²Œ 될까? SCOTT, PJS 뿐만 μ•„λ‹ˆλΌ λͺ¨λ“  μœ μ €λŠ” 각각 μžμ‹ μ΄ μƒμ„±ν•œ ν…Œμ΄λΈ” 외에 λ‹€λ₯Έ μœ μ €μ˜ ν…Œμ΄λΈ”μ— μ ‘κ·Όν•˜λ €λ©΄ ν•΄λ‹Ή ν…Œμ΄λΈ”μ— λŒ€ν•œ 였브젝트 κΆŒν•œμ„ μ†Œμœ μžλ‘œλΆ€ν„° λΆ€μ—¬λ°›μ•„μ•Ό ν•œλ‹€. μš°λ¦¬κ°€ λ‚¨μ˜ 집에 λ°©λ¬Έν–ˆμ„ λ•Œ μ§‘μ£ΌμΈμ˜ ν—ˆλ½ μ—†μ΄λŠ” 집에 λ“€μ–΄κ°ˆ 수 μ—†λŠ” 것과 같은 μ΄μΉ˜μ΄λ‹€. SQL Server도 같은 λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€. ν•œ κ°€μ§€ λ‹€λ₯Έ 점은 μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ μœ μ €λŠ” 단지 μŠ€ν‚€λ§ˆμ— λŒ€ν•œ κΆŒν•œλ§Œμ„ κ°€μ§„λ‹€. λ‹€μ‹œ λ§ν•˜λ©΄ ν…Œμ΄λΈ”κ³Ό 같은 μ˜€λΈŒμ νŠΈλŠ” μœ μ €κ°€ μ†Œμœ ν•˜λŠ” 것이 μ•„λ‹ˆκ³  μŠ€ν‚€λ§ˆκ°€ μ†Œμœ λ₯Ό ν•˜κ²Œ 되며 μœ μ €λŠ” μŠ€ν‚€λ§ˆμ— λŒ€ν•΄ νŠΉμ •ν•œ κΆŒν•œμ„ κ°€μ§€λŠ” 것이닀. λ¨Όμ € SCOTT μœ μ €λ‘œ μ ‘μ†ν•˜μ—¬ PJS.MENU ν…Œμ΄λΈ”μ„ μ‘°νšŒν•œλ‹€. λ‹€λ₯Έ μœ μ €κ°€ μ†Œμœ ν•œ 객체에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄μ„œλŠ” 객체 μ•žμ— 객체λ₯Ό μ†Œμœ ν•œ μœ μ €μ˜ 이름을 λΆ™μ—¬μ„œ μ ‘κ·Όν•΄μ•Ό ν•œλ‹€. SQL ServerλŠ” 객체 μ•žμ— μ†Œμœ ν•œ μœ μ €μ˜ 이름을 λΆ™μ΄λŠ” 것이 μ•„λ‹ˆκ³  객체가 μ†ν•œ μŠ€ν‚€λ§ˆ 이름을 λΆ™μ—¬μ•Ό ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

CONN SCOTT/TIGER

μ—°κ²°λ˜μ—ˆλ‹€.

SELECT * FROM PJS.MENU; 

SELECT * FROM PJS.MENU

* 1 ν–‰μ—μ˜€λ₯˜: ERROR: ν…Œμ΄λΈ”λ˜λŠ”λ·°κ°€μ‘΄μž¬ν•˜μ§€μ•ŠλŠ”λ‹€.

SCOTT둜 λ‘œκ·ΈμΈν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό SQL Server]

SELECT * FROM DBO.MENU; 

κ°œμ²΄μ΄λ¦„ 'dbo.MENU'이(κ°€) 잘λͺ»λ˜μ—ˆλ‹€.

SCOTT μœ μ €λŠ” PJS μœ μ €λ‘œλΆ€ν„° MENU ν…Œμ΄λΈ”μ„ SELECTν•  수 μžˆλŠ” κΆŒν•œμ„ λΆ€μ—¬λ°›μ§€ λͺ»ν–ˆκΈ° λ•Œλ¬Έμ— MENU ν…Œμ΄λΈ”μ„ μ‘°νšŒν•  수 μ—†λ‹€.

[예제] PJS μœ μ €λ‘œ μ ‘μ†ν•˜μ—¬ SCOTT μœ μ €μ—κ²Œ MENU ν…Œμ΄λΈ”μ„ SELECT ν•  수 μžˆλŠ” κΆŒν•œμ„ λΆ€μ—¬ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

CONN PJS/KOREA7

μ—°κ²°λ˜μ—ˆλ‹€.

INSERT INTO MENU VALUES (1, 'ν™”μ΄νŒ…'); 

1개의 행이 λ§Œλ“€μ–΄μ‘Œλ‹€.

COMMIT;

컀밋이 μ™„λ£Œλ˜μ—ˆλ‹€.

GRANT SELECT ON MENU TO SCOTT; 

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό SQL Server]

PJS둜 λ‘œκ·ΈμΈν•œλ‹€.

INSERT INTO MENU
    VALUES (1
            , 'ν™”μ΄νŒ…'); 

1개의 행이 λ§Œλ“€μ–΄μ‘Œλ‹€.

GRANT SELECT ON MENU TO SCOTT; 

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

λ‹€μ‹œ ν•œ 번 SCOTT μœ μ €λ‘œ μ ‘μ†ν•˜μ—¬ PJS.MENU ν…Œμ΄λΈ”μ„ μ‘°νšŒν•œλ‹€. 이제 PJS.MENU ν…Œμ΄λΈ”μ„ SELECTν•˜λ©΄ ν…Œμ΄λΈ” 자료λ₯Ό λ³Ό 수 μžˆλ‹€. SCOTT μœ μ €λŠ” PJS.MENU ν…Œμ΄λΈ”μ„ SELECTν•˜λŠ” κΆŒν•œλ§Œ λΆ€μ—¬ λ°›μ•˜κΈ° λ•Œλ¬Έμ— UPDATE, INSERT, DELETE와 같은 λ‹€λ₯Έ μž‘μ—…μ„ ν•  수 μ—†λ‹€. 였브젝트 κΆŒν•œμ€ SELECT, INSERT, DELETE, UPDATE λ“±μ˜ κΆŒν•œμ„ λ”°λ‘œλ”°λ‘œ κ΄€λ¦¬ν•œλ‹€.

[예제] PJS.MENU ν…Œμ΄λΈ”μ— UPDATEλ₯Ό μ‹œλ„ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

CONN SCOTT/TIGER 

μ—°κ²°λ˜μ—ˆλ‹€.

SELECT *
 FROM PJS.MENU; 
MENU_SEQ
TITLE

1

ν™”μ΄νŒ…

1 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

UPDATE PJS.MENU
  SET TITLE = '코리아'
WHERE MENU_SEQ = 1; 

UPDATE PJS.MENU * 1 ν–‰μ—μ˜€λ₯˜

SCOTT으둜 λ‘œκ·ΈμΈν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό SQL Server]

SELECT *
 FROM PJS.MENU; 
MENU_SEQ
TITLE

1

ν™”μ΄νŒ…

1 개의 행이 μ„ νƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

UPDATE PJS.MENU
  SET TITLE = '코리아'
WHERE MENU_SEQ = 1;

개체'MENU', λ°μ΄ν„°λ² μ΄μŠ€ 'AdventureWorks', μŠ€ν‚€λ§ˆ 'dbo'에 λŒ€ν•œ UPDATE κΆŒν•œμ΄κ±°λΆ€λ˜μ—ˆλ‹€.

κΆŒν•œμ΄ λΆ€μ‘±ν•˜μ—¬ UPDATEλ₯Ό ν•  수 μ—†λ‹€λŠ” 였λ₯˜κ°€ λ‚˜νƒ€λ‚œλ‹€. PJS μœ μ €μ—κ²Œ UPDATE κΆŒν•œμ„ λΆ€μ—¬ν•œ ν›„ λ‹€μ‹œ μ‹œλ„ν•˜λ©΄ μ—…λ°μ΄νŠΈκ°€ κ°€λŠ₯ν•˜λ‹€.

3. Role을 μ΄μš©ν•œ κΆŒν•œ λΆ€μ—¬

μœ μ €λ₯Ό μƒμ„±ν•˜λ©΄ 기본적으둜 CREATE SESSION, CREATE TABLE, CREATE PROCEDURE λ“± λ§Žμ€ κΆŒν•œμ„ λΆ€μ—¬ν•΄μ•Ό ν•œλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ κ΄€λ¦¬μžλŠ” μœ μ €κ°€ 생성될 λ•Œλ§ˆλ‹€ 각각의 κΆŒν•œλ“€μ„ μœ μ €μ—κ²Œ λΆ€μ—¬ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜λ©° κ°„ν˜Ή κΆŒν•œμ„ 빠뜨릴 μˆ˜λ„ μžˆμœΌλ―€λ‘œ 각 μœ μ €λ³„λ‘œ μ–΄λ–€ κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλŠ”μ§€λ₯Ό 관리해야 ν•œλ‹€. ν•˜μ§€λ§Œ 관리해야 ν•  μœ μ €κ°€ 점점 λŠ˜μ–΄λ‚˜κ³  자주 λ³€κ²½λ˜λŠ” μƒν™©μ—μ„œλŠ” 맀우 번거둜운 μž‘μ—…μ΄ 될 것이닀. 이와 같은 문제λ₯Ό 쀄이기 μœ„ν•˜μ—¬ λ§Žμ€ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μœ μ €λ“€κ³Ό κΆŒν•œλ“€ μ‚¬μ΄μ—μ„œ μ€‘κ°œ 역할을 ν•˜λŠ” ROLE을 μ œκ³΅ν•œλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ κ΄€λ¦¬μžλŠ” ROLE을 μƒμ„±ν•˜κ³ , ROLE에 각쒅 κΆŒν•œλ“€μ„ λΆ€μ—¬ν•œ ν›„ ROLE을 λ‹€λ₯Έ ROLEμ΄λ‚˜ μœ μ €μ—κ²Œ λΆ€μ—¬ν•  수 μžˆλ‹€. λ˜ν•œ ROLE에 ν¬ν•¨λ˜μ–΄ μžˆλŠ” κΆŒν•œλ“€μ΄ ν•„μš”ν•œ μœ μ €μ—κ²ŒλŠ” ν•΄λ‹Ή ROLEλ§Œμ„ λΆ€μ—¬ν•¨μœΌλ‘œμ¨ λΉ λ₯΄κ³  μ •ν™•ν•˜κ²Œ ν•„μš”ν•œ κΆŒν•œμ„ λΆ€μ—¬ν•  수 있게 λœλ‹€. [κ·Έλ¦Ό β…‘-2-17]μ—μ„œλŠ” μœ μ €λ“€κ³Ό κΆŒν•œλ“€ 사이 κ°„ ROLE의 역할을 보여 μ£Όκ³  μžˆλ‹€. μ™Όμͺ½ 그림은 κΆŒν•œμ„ 직접 μœ μ €μ—κ²Œ ν• λ‹Ήν•  λ•Œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 것이며, 였λ₯Έμͺ½ 그림은 ROLE에 κΆŒν•œμ„ λΆ€μ—¬ν•œ ν›„ ROLE을 μœ μ €λ“€μ—κ²Œ λΆ€μ—¬ν•˜λŠ” 것을 λ‚˜νƒ€λ‚΄κ³  μžˆλ‹€.

ROLEμ—λŠ” μ‹œμŠ€ν…œ κΆŒν•œκ³Ό 였브젝트 κΆŒν•œμ„ λͺ¨λ‘ λΆ€μ—¬ν•  수 있으며, ROLE은 μœ μ €μ—κ²Œ 직접 뢀여될 μˆ˜λ„ 있고, λ‹€λ₯Έ ROLE에 ν¬ν•¨ν•˜μ—¬ μœ μ €μ—κ²Œ 뢀여될 μˆ˜λ„ μžˆλ‹€.

[예제] JISUNG μœ μ €μ—κ²Œ CREATE SESSIONκ³Ό CREATE TABLE κΆŒν•œμ„ κ°€μ§„ ROLE을 μƒμ„±ν•œ ν›„ ROLE을 μ΄μš©ν•˜μ—¬ λ‹€μ‹œ κΆŒν•œμ„ ν• λ‹Ήν•œλ‹€. κΆŒν•œμ„ μ·¨μ†Œν•  λ•ŒλŠ” REVOKEλ₯Ό μ‚¬μš©ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

CONN SYSTEM/MANAGER

μ—°κ²°λ˜μ—ˆλ‹€.

REVOKE CREATE SESSION, CREATE TABLE FROM JISUNG; 

κΆŒν•œμ΄ μ·¨μ†Œλ˜μ—ˆλ‹€.

CONN JISUNG/KOREA7 ERROR: μ‚¬μš©μž JISUNG은 CREATE SESSION κΆŒν•œμ„κ°€μ§€κ³ μžˆμ§€μ•ŠμŒ.λ‘œκ·Έμ˜¨μ΄κ±°μ ˆλ˜μ—ˆλ‹€.

sa둜 λ‘œκ·ΈμΈν•œλ‹€.

[예제] SQL Server

REVOKE CREATE TABLE FROM PJS; 

κΆŒν•œμ΄ μ·¨μ†Œλ˜μ—ˆλ‹€.

PJS둜 λ‘œκ·ΈμΈν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό SQL Server]

CREATE TABLE MENU
 (
    MENU_SEQ INT NOT NULL
    ,  TITLE VARCHAR(10)
 ); 

λ°μ΄ν„°λ² μ΄μŠ€ 'AdventureWorks'μ—μ„œ CREATE TABLE μ‚¬μš©κΆŒν•œμ΄κ±°λΆ€λ˜μ—ˆλ‹€.

[예제] 이제 LOGIN_TABLEμ΄λΌλŠ” ROLE을 λ§Œλ“€κ³ , 이 ROLE을 μ΄μš©ν•˜μ—¬ JISUNG μœ μ €μ—κ²Œ κΆŒν•œμ„ λΆ€μ—¬ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

CONN SYSTEM/MANAGER

μ—°κ²°λ˜μ—ˆλ‹€.

CREATE ROLE LOGIN_TABLE; 

둀이 μƒμ„±λ˜μ—ˆλ‹€.

GRANT CREATE SESSION, CREATE TABLE TO LOGIN_TABLE; 

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

GRANT LOGIN_TABLE TO JISUNG;

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

CONN JISUNG/KOREA7

μ—°κ²°λ˜μ—ˆλ‹€.

CREATE TABLE MENU2
 (
    MENU_SEQ NUMBER NOT NULL
    ,  TITLE VARCHAR2(10)
 ); 

ν…Œμ΄λΈ”μ΄ μƒμ„±λ˜μ—ˆλ‹€.

이와 같이 ROLE을 λ§Œλ“€μ–΄ μ‚¬μš©ν•˜λŠ” 것이 κΆŒν•œμ„ 직접 λΆ€μ—¬ν•˜λŠ” 것보닀 λΉ λ₯΄κ³  μ•ˆμ „ν•˜κ²Œ μœ μ €λ₯Ό 관리할 수 μžˆλŠ” 방법이닀. Oracleμ—μ„œλŠ” 기본적으둜 λͺ‡ κ°€μ§€ ROLE을 μ œκ³΅ν•˜κ³  μžˆλ‹€. κ·Έ 쀑 κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” ROLE은 CONNECT와 RESOURCE이닀. μ°Έμ‘°λ₯Ό μœ„ν•΄ [ν‘œ β…‘-2-11]은 CONNECT와 RESOURCE ROLE에 λΆ€μ—¬λœ κΆŒν•œ λͺ©λ‘μ„ μ •λ¦¬ν•œ 것이닀. CONNECTλŠ” CREATE SESSIONκ³Ό 같은 둜그인 κΆŒν•œμ΄ ν¬ν•¨λ˜μ–΄ 있고, RESOURCEλŠ” CREATE TABLEκ³Ό 같은 였브젝트의 생성 κΆŒν•œμ΄ ν¬ν•¨λ˜μ–΄ μžˆλ‹€. 일반적으둜 μœ μ €λ₯Ό 생성할 λ•Œ CONNECT와 RESOURCE ROLE을 μ‚¬μš©ν•˜μ—¬ κΈ°λ³Έ κΆŒν•œμ„ λΆ€μ—¬ν•œλ‹€.

μœ μ €λ₯Ό μ‚­μ œν•˜λŠ” λͺ…λ Ήμ–΄λŠ” DROP USER이고, CASCADE μ˜΅μ…˜μ„ μ£Όλ©΄ ν•΄λ‹Ή μœ μ €κ°€ μƒμ„±ν•œ 였브젝트λ₯Ό λ¨Όμ € μ‚­μ œν•œ ν›„ μœ μ €λ₯Ό μ‚­μ œν•œλ‹€.

[예제] μ•žμ—μ„œ MENUλΌλŠ” ν…Œμ΄λΈ”μ„ μƒμ„±ν–ˆκΈ° λ•Œλ¬Έμ— CASCADE μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ JISUNG μœ μ €λ₯Ό μ‚­μ œν•œ ν›„, μœ μ € μž¬μƒμ„± 및 기본적인 ROLE을 λΆ€μ—¬ν•œλ‹€.

[예제 및 μ‹€ν–‰ κ²°κ³Ό Oracle]

CONN SYSTEM/MANAGER 

μ—°κ²°λ˜μ—ˆλ‹€.

DROP USER JISUNG CASCADE; 

μ‚¬μš©μžκ°€ μ‚­μ œλ˜μ—ˆλ‹€.

* JISUNG μœ μ €κ°€ λ§Œλ“  MENU ν…Œμ΄λΈ”λ„ 같이 μ‚­μ œλ˜μ—ˆλ‹€.

CREATE USER JISUNG IDENTIFIED BY KOREA7; 

μ‚¬μš©μžκ°€ μƒμ„±λ˜μ—ˆλ‹€.

GRANT CONNECT, RESOURCE TO JISUNG; 

κΆŒν•œμ΄ λΆ€μ—¬λ˜μ—ˆλ‹€.

CONN JISUNG/KOREA7

μ—°κ²°λ˜μ—ˆλ‹€.

CREATE TABLE MENU (
      MENU_SEQ NUMBER NOT NULL
    , TITLE VARCHAR2(10)
 ); 

ν…Œμ΄λΈ”μ΄ μƒμ„±λ˜μ—ˆλ‹€.

SQL Serverμ—μ„œλŠ” μœ„μ™€ 같이 ROLE을 μƒμ„±ν•˜μ—¬ μ‚¬μš©ν•˜κΈ°λ³΄λ‹€λŠ” 기본적으둜 μ œκ³΅λ˜λŠ” ROLE에 λ©€λ²„λ‘œ μ°Έμ—¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ‚¬μš©ν•œλ‹€. νŠΉμ • 둜그인이 λ©€λ²„λ‘œ μ°Έμ—¬ν•  수 μžˆλŠ” μ„œλ²„ μˆ˜μ€€ μ—­ν• (ROLE)은 [ν‘œ β…‘-2-12]와 κ°™λ‹€.

λ°μ΄ν„°λ² μ΄μŠ€μ— μ‘΄μž¬ν•˜λŠ” μœ μ €μ— λŒ€ν•΄μ„œλŠ” μ•„λž˜μ™€ 같은 λ°μ΄ν„°λ² μ΄μŠ€ μ—­ν• μ˜ λ©€λ²„λ‘œ μ°Έμ—¬ν•  수 μžˆλ‹€.

SQL Serverμ—μ„œλŠ” Oracleκ³Ό 같이 Role을 자주 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€. λŒ€μ‹  μœ„μ—μ„œ μ–ΈκΈ‰ν•œ μ„œλ²„ μˆ˜μ€€ μ—­ν•  및 λ°μ΄ν„°λ² μ΄μŠ€ μˆ˜μ€€ 역할을 μ΄μš©ν•˜μ—¬ 둜그인 및 μ‚¬μš©μž κΆŒν•œμ„ μ œμ–΄ν•œλ‹€. μΈμŠ€ν„΄μŠ€ μˆ˜μ€€μ˜ μž‘μ—…μ΄ ν•„μš”ν•œ 경우 μ„œλ²„ μˆ˜μ€€ 역할을 λΆ€μ—¬ν•˜κ³  그보닀 μž‘μ€ κ°œλ…μΈ λ°μ΄ν„°λ² μ΄μŠ€ μˆ˜μ€€μ˜ κΆŒν•œμ΄ ν•„μš”ν•œ 경우 λ°μ΄ν„°λ² μ΄μŠ€ μˆ˜μ€€μ˜ 역할을 λΆ€μ—¬ν•˜λ©΄ λœλ‹€. 즉 μΈμŠ€ν„΄μŠ€ μˆ˜μ€€μ„ μš”κ΅¬ν•˜λŠ” λ‘œκ·ΈμΈμ—λŠ” μ„œλ²„ μˆ˜μ€€ 역할을, λ°μ΄ν„°λ² μ΄μŠ€ μˆ˜μ€€μ„ μš”κ΅¬ν•˜λŠ” μ‚¬μš©μžμ—κ²ŒλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μˆ˜μ€€ 역할을 λΆ€μ—¬ν•œλ‹€.

좜처 : λ°μ΄ν„°μ˜¨μ—μ–΄ – ν•œκ΅­λ°μ΄ν„°μ‚°μ—…μ§„ν₯원()

😧
⭐
🌠
https://dataonair.or.kr