SQL, SELECT, WHERE

Lee Yong SeokΒ·2022λ…„ 5μ›” 30일
0
post-thumbnail

🌝 SQLμ΄λž€?

  • SQL은 Structured Query Language (ꡬ쑰적 질의 μ–Έμ–΄)의 μ€„μž„λ§λ‘œ, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(RDBMS)μ—μ„œ 자료λ₯Ό 관리 및 처리 등을 μœ„ν•΄ μ„€κ³„λœ 언어이닀.

πŸŒ‘ SQL λ¬Έλ²•μ˜ μ’…λ₯˜

SQL 문법은 크게 3κ°€μ§€μ˜ μ’…λ₯˜λ‘œ λ‚˜λˆ„μ–΄μ§€λ©°, μ’…λ₯˜λ§ˆλ‹€ μ •μ˜λŠ” μ•„λž˜μ™€ κ°™λ‹€.

  • DDL (Data Definition Language, 데이터 μ •μ˜ μ–Έμ–΄)
    λ¦΄λ ˆμ΄μ…˜(λ°μ΄ν„°λ² μ΄μŠ€)을 μ •μ˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 언어이닀.(CREATE, ALTER, DROP)
  • DML (Data Manipulation Language, 데이터 μ‘°μž‘ μ–Έμ–΄)
    데이터λ₯Ό 검색(SELECT), μΆ”κ°€(INSERT), μˆ˜μ •(Update), μ‚­μ œ(Delete) 등을 ν•˜κΈ° μœ„ν•œ, 즉 λ°μ΄ν„°μ˜ 관리λ₯Ό μœ„ν•œ 언어이닀.
  • DCL (Data Control Language, 데이터 μ œμ–΄ μ–Έμ–΄)
    μ‚¬μš©μž 관리 및 μ‚¬μš©μžλ³„λ‘œ λ¦΄λ ˆμ΄μ…˜ λ˜λŠ” 데이터λ₯Ό κ΄€λ¦¬ν•˜κ³  μ ‘κ·Όν•˜λŠ” κΆŒν•œμ„ 닀루기 μœ„ν•œ 언어이닀.(GRANT, REVOKE, COMMIT, ROLLBACK)

πŸŒ’ SQL의 언어적 νŠΉμ„±

  1. SQL은 λŒ€μ†Œλ¬Έμžλ₯Ό 가리지 μ•ŠλŠ”λ‹€. (단, μ„œλ²„μ˜ ν™˜κ²½μ΄λ‚˜ DBMS μ’…λ₯˜μ— 따라 λ°μ΄ν„°λ² μ΄μŠ€ λ˜λŠ” ν•„λ“œλͺ…에 λŒ€ν•΄ λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜κΈ°λ„ ν•œλ‹€.)

  2. SQL λͺ…령은 λ°˜λ“œμ‹œ μ„Έλ―Έμ½œλ‘ (;)으둜 λλ‚˜μ•Ό ν•œλ‹€.(μžλ°” 언어와 λ™μΌν•˜λ‹€.)

  3. 고유의 값은 ν™‘λ”°μ˜΄ν‘œ('')둜 감싸쀀닀.

  1. 주석은 μΌμ’…μ˜ λ„μ›€λ§λ‘œ, 주석 처리된 λ¬Έμž₯은 ν”„λ‘œκ·Έλž¨μ—μ„œ λ™μž‘ν•˜μ§€ μ•ŠλŠ”λ‹€. ν•œ 쀄 주석은 λ¬Έμž₯ μ•žμ— -- λ₯Ό λΆ™μ—¬μ„œ μ‚¬μš©ν•œλ‹€.

  1. μ—¬λŸ¬ 쀄 주석은 /* */ 둜 감싸쀀닀.

πŸŒ“ SELECT Syntax

SELECT [DISTINCT | ALL] {* | column1, column2 [AS [alias]] | expr}
FROM table_name
WHERE condition
ORDER BY column [ASC | DESC];

  1. SELECT절 λ‹€μŒμ— μ§ˆμ˜ν•˜κ³  싢은 μ»¬λŸΌμ„ μ°¨λ‘€λŒ€λ‘œ λ‚˜μ—΄ν•œλ‹€. 이 λ•Œ μ—¬λŸ¬ 개의 컬럼 ꡬ뢄은 μ‰Όν‘œ(,)둜 ν•œλ‹€.
  2. FROM 절 λ‹€μŒμ—λŠ” μ‘°νšŒν•  ν…Œμ΄λΈ” 이름을 μ λŠ”λ‹€.
  3. * : λͺ¨λ“  μ»¬λŸΌμ„ μ‘°νšŒν•œλ‹€.
  4. ALL : λͺ¨λ“  κ²°κ³Ό ROWλ₯Ό 보여쀀닀.(κΈ°λ³Έκ°’)
  5. DISTINCT : μ€‘λ³΅λœ ROW λ₯Ό μ œμ™Έν•œ ROWλ₯Ό 보여쀀닀.
  6. expr : SQL ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜, μˆ˜ν•™ 연산을 ν¬ν•¨ν•œ ν‘œν˜„μ‹
  7. alias : μ»¬λŸΌμ— λŒ€ν•œ 별칭 μ‚¬μš©.
  8. Default Column Heading : column λͺ…이 λŒ€λ¬Έμžλ‘œ Display λœλ‹€.
  9. Default Data Justification : Number 값은 였λ₯Έμͺ½ μ •λ ¬, Character 와 Date 값은 μ™Όμͺ½ μ •λ ¬λœλ‹€.

πŸŒ” NULL μ΄λž€?

  1. νŠΉμ • ν–‰, νŠΉμ • 열에 λŒ€ν•œ 아직 값을 μ•Œ 수 μ—†λŠ” μƒνƒœ, μ˜λ―Έκ°€ μ—†λŠ” μƒνƒœλ₯Ό ν‘œν˜„
  2. μ΄μš©ν•  수 μ—†κ±°λ‚˜, μ§€μ •λ˜μ§€ μ•Šκ±°λ‚˜, μ•Œ 수 μ—†κ±°λ‚˜, μ μš©ν•  수 μ—†λŠ” κ°’
  3. 아직 μ •μ˜λ˜μ§€ μ•Šμ€ λ―Έμ§€μ˜ κ°’
  4. ν˜„μž¬ 데이터λ₯Ό μž…λ ₯ν•˜μ§€ λͺ»ν•˜λŠ” 경우
  5. NULL은 μ—°μ‚°μ˜ λŒ€μƒμ— ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€.

  1. NULL 값을 ν¬ν•¨ν•œ μ‚°μˆ  μ—°μ‚° μ‹μ˜ κ²°κ³ΌλŠ” μ–Έμ œλ‚˜ NULL 이닀
  2. NOT NULL λ˜λŠ” Primary Key μ œμ•½μ‘°κ±΄μ΄ κ±Έλ¦° μΉΌλŸΌμ—μ„œλŠ” NULL VALUEκ°€ λ‚˜νƒ€λ‚  수 μ—†λ‹€.
  3. NULL 인 μΉΌλŸΌμ€ Length κ°€ 0 μ΄λ―€λ‘œ dataλ₯Ό μœ„ν•œ 물리적 곡간을 차지 ν•˜μ§€ μ•ŠλŠ”λ‹€.

πŸŒ• IFNULL function

  1. NULL 값을 μ–΄λ–€ νŠΉμ •ν•œ κ°’μœΌλ‘œ μΉ˜ν™˜ν•  λ•Œ μ‚¬μš©

  2. μΉ˜ν™˜ν•  수 μžˆλŠ” κ°’μ˜ ν˜•νƒœλŠ” μˆ«μžν˜•, λ¬Έμžν˜•, λ‚ μžν˜• λͺ¨λ‘ κ°€λŠ₯

  3. NULL 값은 μ—°μ‚°μ˜ λŒ€μƒμ΄ λ˜μ§€ μ•ŠλŠ”λ‹€β—β—(μ€‘μš”)

    [Syntax]

    IFNULL(expr1, expr2) -> expr은 '식'μ΄λž€ 의미인 expression의 μ•½μž

  • IFNULL(컬럼λͺ…, λ³€κ²½ν•  κ°’)으둜 comm(μ»€λ―Έμ…˜)이 NULL인 μ‚¬λžŒλ“€μ˜ NULL 값을 0으둜 λ³€κ²½ν–ˆλ‹€.
  • λŒ€λΆ€λΆ„ NULL 값을 연산을 ν•˜κΈ°μœ„ν•΄ 0μ΄λΌλŠ” 숫자둜 λ³€κ²½ν•œλ‹€.

πŸŒ– Alias(AS, 별칭)

  1. column header 에 별칭을 λΆ€μ—¬ ν•  수 μžˆλ‹€.
  2. SELECT μ ˆμ— expression 을 μ‚¬μš©ν•  λ•Œ 도움이 λœλ‹€.
  3. μ—΄ 이름 λ°”λ‘œ 뒀에 κΈ°μˆ ν•œλ‹€. λ˜λŠ” 열이름과 별칭 사이에 ASλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
  4. 별칭에 κ³΅λ°±μ΄λ‚˜ νŠΉμˆ˜λ¬Έμžλ‚˜ ν•œκΈ€μ‚¬μš©ν•  λ•Œ, λŒ€μ†Œλ¬Έμžλ₯Ό κΈ°μˆ ν•  λ•Œ(기본값은 λͺ¨λ‘ λŒ€λ¬Έμž)μ—λŠ” μŒλ”°μ˜΄ν‘œ("") 둜 κΈ°μˆ ν•œλ‹€.

  • AS λ‹€μŒ λ¬Έμžμ— 쀑간에 곡백이 μžˆλ‹€λ©΄ μ•žμ— μžˆλŠ” 문자만 λ³„μΉ­μœΌλ‘œ μΈμ‹ν•˜κΈ°λ•Œλ¬Έμ— μŒλ”°μ˜΄ν‘œ("")둜 λ¬Άμ–΄μ•Όν•œλ‹€.

πŸŒ— CONCAT(Concatenation Operator, μ—°κ²° μ—°μ‚°μž)

  1. Oracle μ—μ„œλŠ” λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ„ 이을 λ•Œμ—λŠ” '||' λ₯Ό μ‚¬μš©ν•œλ‹€.
  2. ν•˜μ§€λ§Œ MySQL μ—μ„œλŠ” μ—°κ²°μ—°μ‚°μž(||)κ°€ μ—†κΈ°λ•Œλ¬Έμ— CONCAT()λ₯Ό μ‚¬μš©ν•œλ‹€.
  3. Oracle μ—μ„œλŠ” λ¬Έμžμ—΄μ„ 이을 λ•Œ, μ΅œλŒ€ 2개의 λ¬Έμžμ—΄κΉŒμ§€ κ°€λŠ₯ν•˜μ§€λ§Œ, MySQL은 2개 μ΄μƒμ˜ λ¬Έμžμ—΄μ„ μ—°κ²°ν•  수 μžˆλ‹€.

[예제 1]

[예제 2]

🌘 ALL(μ€‘λ³΅ν—ˆμš©)/DISTINCT(μ€‘λ³΅μ œκ±°)

Duplicate Values(쀑볡 ν–‰ μ œκ±°ν•˜κΈ°)
1. 일반 QueryλŠ” ALL 을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— μ€‘λ³΅λœ 행이 좜λ ₯λœλ‹€.(DEFAULT)
2. DISTINCT λ₯Ό μ‚¬μš©ν•˜λ©΄ μ€‘λ³΅λœ ν–‰μ˜ 값을 μ œκ±°ν•œλ‹€.
3. DISTINCT λŠ” SELECT λ°”λ‘œ 뒀에 κΈ°μˆ ν•œλ‹€.
(μ˜ˆμ™Έμ μœΌλ‘œ νŠΉμ •μ»¬λŸΌλ§Œ μ€‘λ³΅μ œκ±°λ₯Ό ν•˜λ €λ©΄ DISTINCT columnλͺ…을 μ‚¬μš©ν•˜λ©΄ λœλ‹€.)
4. DISTINCT λ‹€μŒμ— λ‚˜νƒ€λ‚˜λŠ” column은 λͺ¨λ‘ DISTINCT 에 영ν–₯을 λ°›λŠ”λ‹€.

[예제1] 우리 νšŒμ‚¬μ˜ μ‚¬μ›λ“€μ˜ 직무을 λͺ¨λ‘ 좜λ ₯ν•˜μ‹œμ˜€.

  • ALL 은 SELECTλ¬Έ λ°”λ‘œ 뒀에 κΈ°μˆ ν•˜λ©°, 쿼리문에 λŒ€ν•΄ DEFAULT κ°’μ΄κΈ°λ•Œλ¬Έμ— ꡳ이 μ μ–΄μ£Όμ§€μ•Šμ•„λ„ ALL 둜 μΈμ‹ν•œλ‹€.

[예제2] 우리 νšŒμ‚¬λŠ” λͺ‡ 가지 μ’…λ₯˜μ˜ 일을 ν•©λ‹ˆκΉŒ?

  • μœ„μ˜ 화면과같이 총 5 가지 μ’…λ₯˜μ˜ 일을 ν•œλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.
  • μš°λ¦¬λŠ” νšŒμ‚¬μ—μ„œ ν‰μ†Œμ— μ˜ˆμ œμ™€κ°™μ€ μžμ—°μ–΄λ₯Ό λ“£κ³  쿼리문으둜 λ³€ν™˜ν•˜μ—¬ ν•„μš”ν•œ 값을 λ½‘μ•„μ˜¬ 수 μžˆμ–΄μ•Όν•œλ‹€.

🌚 WHERE Syntax

  1. μ‚¬μš©μžλ“€μ΄ μžμ‹ μ΄ μ›ν•˜λŠ” μžλ£Œλ§Œμ„ κ²€μƒ‰ν•˜κΈ° μœ„ν•΄μ„œ

  2. Syntax

    SELECT column...
    FROM table_name
    WHERE conditions;

  3. WHERE μ ˆμ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ FROM μ ˆμ— λͺ…μ‹œλœ table의 λͺ¨λ“  ROWλ₯Ό μ‘°νšŒν•˜κ²Œ λœλ‹€.

  4. tableλ‚΄μ˜ νŠΉμ • row만 μ„ νƒν•˜κ³  싢을 λ•Œ WHERE μ ˆμ— 쑰건식을 μ‚¬μš©ν•œλ‹€.

  5. MySQL Server λŠ” table의 rowλ₯Ό ν•˜λ‚˜μ”© 읽어 WHERE 절의 쑰건식을 ν‰κ°€ν•˜μ—¬ TRUE둜 λ§Œμ‘±ν•˜λŠ” κ²ƒλ§Œμ„ μ„ νƒν•œλ‹€.

  6. condition을 ν‰κ°€ν•œ κ²°κ³ΌλŠ” TRUE, FALSE, NULL μ€‘μ˜ ν•˜λ‚˜μ΄λ‹€.

  7. condition λ‚΄μ—μ„œ character 와 date κ°’μ˜ literal은 μž‘μ€ λ”°μ˜΄ν‘œ('') λ₯Ό μ‚¬μš©ν•˜κ³ , NUMBER 값은 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•œλ‹€.

  8. condition μ—μ„œ μ‚¬μš©ν•˜λŠ” character 값은 λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•˜μ§€ μ•ŠλŠ”λ‹€.
    1) WHERE ename = 'JAMES';
    2) WHERE ename = 'james';

  1. date νƒ€μž…μ˜ 변경은 DATE_FORMAT()λ₯Ό μ‚¬μš©ν•œλ‹€.
  2. WHERE λŠ” FROM λ‹€μŒμ— 와야 ν•œλ‹€.
  3. WHERE μ ˆμ— 쑰건이 μ—†λŠ” FTS(Full Table Scan) λ¬Έμž₯은 SQL Tunning의 1차적인 κ²€ν†  λŒ€μƒμ΄ λœλ‹€ .
  4. WHERE 쑰건절의 쑰건식은 μ•„λž˜ λ‚΄μš©μœΌλ‘œ κ΅¬μ„±λœλ‹€.
  • Column λͺ…(보톡 μ‘°κ±΄μ‹μ˜ 쒌 츑에 μœ„μΉ˜)
  • 비ꡐ μ—°μ‚°μž
  • 문자, 숫자, ν‘œν˜„μ‹(보톡 μ‘°κ±΄μ‹μ˜ 우 츑에 μœ„μΉ˜)
  • 비ꡐ Columnλͺ… (JOIN μ‚¬μš©μ‹œ)

πŸŒ™ λΉ„κ΅μ—°μ‚°μž, λ…Όλ¦¬μ—°μ‚°μž

λΉ„κ΅μ—°μ‚°μž: <, >, <=, >=, =, !=, <>(같지 μ•Šλ‹€.)
λ…Όλ¦¬μ—°μ‚°μž: AND(&&), OR(||), NOT(!)

예제λ₯Ό 톡해 λΉ„κ΅μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄λ³΄μž.

[예제1] μ§μœ„κ°€ CLERK 인 μ‚¬μ›μ˜ 이름과 직무 및 λΆ€μ„œλ²ˆν˜Έλ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

[예제2] μ‚¬λ²ˆμ΄ 7934인 μ‚¬μ›μ˜ 이름, 직무, λΆ€μ„œλ²ˆν˜Έλ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

[예제3] μž…μ‚¬μΌμ΄ 1981λ…„ 12μ›” 3일인 μ‚¬μ›μ˜ μ‚¬λ²ˆ, 이름, 직무, μž…μ‚¬μΌμžλ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

[예제4] 이름이 JAMES인 μ‚¬μ›μ˜ μ‚¬λ²ˆ 및 이름을 좜λ ₯ν•˜μ‹œμ˜€.

  • 기본적으둜 MySQL은 λŒ€μ†Œλ¬Έμž ꡬ뢄이 μ—†λ‹€.(단, λ¦¬λˆ…μŠ€ ν™˜κ²½μ—μ„œλŠ” 컬럼λͺ…이 λŒ€λ¬Έμžμ΄λ©΄, λŒ€λ¬Έμžλ‘œ μž…λ ₯ν•΄μ•Όν•œλ‹€.)

[예제5] λΆ€μ„œλ²ˆν˜Έκ°€ 30번인 λΆ€μ„œμ˜ 이름을 좜λ ₯ν•˜μ‹œμ˜€.

[예제6] κΈ‰μ—¬κ°€ $1500 이상인 μ‚¬μ›μ˜ 이름과 κΈ‰μ—¬λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

[예제7] 1983λ…„ 이후에 μž…μ‚¬ν•œ μ‚¬μ›μ˜ μ‚¬λ²ˆ, 이름, μž…μ‚¬μΌμ„ 좜λ ₯ν•˜μ‹œμ˜€.

[예제8] κΈ‰μ—¬κ°€ λ³΄λ„ˆμŠ€ μ΄ν•˜μΈ μ‚¬μ›μ˜ 이름 κΈ‰μ—¬ 및 λ³΄λ„ˆμŠ€λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

[예제9] 10번 λΆ€μ„œμ˜ λͺ¨λ“  μ‚¬λžŒλ“€μ—κ²Œ κΈ‰μ—¬μ˜ 13%λ₯Ό λ³΄λ„ˆμŠ€λ‘œ μ§€κΈ‰ν•˜κΈ°λ‘œ ν–ˆλ‹€. 이름, κΈ‰μ—¬, λ³΄λ„ˆμŠ€ κΈˆμ•‘, λΆ€μ„œλ²ˆν˜Έλ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

[예제10] 30번 λΆ€μ„œμ˜ 연봉을 κ³„μ‚°ν•˜μ—¬ 이름, λΆ€μ„œλ²ˆν˜Έ, κΈ‰μ—¬, 연봉을 좜λ ₯ν•˜μ‹œμ˜€. 단 연말에 κΈ‰μ—¬μ˜ 150%λ₯Ό λ³΄λ„ˆμŠ€λ‘œ μ§€κΈ‰ν•œλ‹€.

[예제11] λΆ€μ„œλ²ˆν˜Έκ°€ 20번인 λΆ€μ„œμ˜ μ‹œκ°„λ‹Ή μž„κΈˆμ„ κ³„μ‚°ν•˜μ‹œμ˜€. 단, 1λ‹¬μ˜ κ·Όλ¬΄μΌμˆ˜λŠ” 12일이고 1일 κ·Όλ¬΄μ‹œκ°„μ€ 5μ‹œκ°„μ΄λ‹€. 좜λ ₯양식은 이름, κΈ‰μ—¬, μ‹œκ°„λ‹Ή μž„κΈˆμ„ 좜λ ₯ν•˜μ‹œμ˜€.

  • ROUND(column, n번째 μžλ¦¬κΉŒμ§€) ν•¨μˆ˜λŠ” n번째 자리 + 1μ—μ„œ λ°˜μ˜¬λ¦Όμ„ ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.

[예제12] λͺ¨λ“  μ‚¬μ›μ˜ μ‹€μˆ˜λ Ήμ•‘μ„ κ³„μ‚°ν•˜μ—¬ 좜λ ₯ν•˜μ‹œμ˜€. (μ‹€μˆ˜λ Ήμ•‘μ€ 급여에 λŒ€ν•΄ 10%의 μ„ΈκΈˆμ„ λΊ€ κΈˆμ•‘)

예제λ₯Ό 톡해 λ…Όλ¦¬μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄λ³΄μž.

[예제1] μ‚¬μ›ν…Œμ΄λΈ”μ—μ„œ κΈ‰μ—¬κ°€ 1000λΆˆμ΄μƒμ΄κ³ , λΆ€μ„œλ²ˆν˜Έκ°€ 30번인 μ‚¬μ›μ˜ μ‚¬μ›λ²ˆν˜Έ, 이름, 직무, κΈ‰μ—¬, λΆ€μ„œλ²ˆν˜Έλ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

[예제2] μ‚¬μ›ν…Œμ΄λΈ”μ—μ„œ κΈ‰μ—¬κ°€ λΆˆμ΄μƒμ΄κ±°λ‚˜ 담당업무가 λ§€λ‹ˆμ €μΈ μ‚¬μ›μ˜ 정보쀑 μ‚¬μ›λ²ˆν˜Έ 이름 κΈ‰μ—¬ 업무λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

🌜 SQL μ—°μ‚°μž (BETWEEN A AND B, IN, LIKE, IS NULL, IS NOT NULL)

BETWEEN A AND B

  • BETWEEN A AND B : A보닀 κ°™κ±°λ‚˜ 크고 , B보닀 μž‘κ±°λ‚˜ 같은
  • μ£Όμ˜ν• μ μ€ ~보닀 크고, ~보닀 μž‘μ€κ³Ό 같은 μ§ˆμ˜μ™€ ν˜Όλ™λ˜μ„œλŠ” μ•ˆλœλ‹€.
    (κ°™λ‹€λΌλŠ” μ˜λ―Έκ°€ λ“€μ–΄κ°€μ•Ό BETWEEN A AND B λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.)

λ§ˆμ°¬κ°€μ§€λ‘œ 예제λ₯Ό 톡해 λ°°μ›Œλ³΄μž.

[예제1] μ‚¬μ›ν…Œμ΄λΈ”μ—μ„œ 월급이 1300λΆˆμ—μ„œ 1500λΆˆκΉŒμ§€μΈ μ‚¬μ›λ“€μ˜ 이름, 직무, 월급을 좜λ ₯ν•˜μ‹œμ˜€.

  • 또 ν•œ 가지 BETWEEN A AND B μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄μ„œ μ£Όμ˜ν•  점은 λ°˜λ“œμ‹œ Aκ°€ B보닀 μž‘μ•„μ•Όν•œλ‹€λŠ” 것이닀.
  • μ•„λž˜ ν™”λ©΄κ³Ό 같이 1500λΆˆμ—μ„œ 1300λΆˆκΉŒμ§€λΌλŠ” 말은 λ§λ„μ•ˆλ˜κΈ°λ•Œλ¬Έμ΄λ‹€.

[예제2] μž…μ‚¬μΌμžκ°€ 1982년도에 μž…μ‚¬ν•œ μ‚¬μ›μ˜ 이름, μž…μ‚¬μΌμžλ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

IN

  • IN(list) : LIST μ•ˆμ— μžˆλŠ” 멀버듀과 같은
  • OR μ—°μ‚°μžμ™€ 같은 μ˜λ―Έμ΄λ‹€.(OR μ—°μ‚°μžλŠ” ν•˜λ‚˜ν•˜λ‚˜ 쑰건을 μ μ–΄μ£Όμ§€λ§Œ, IN μ—°μ‚°μžλŠ” μ€‘κ΄„ν˜Έ() μ•ˆμ— 쑰건을 λ‚˜μ—΄ν•  수 μžˆλ‹€.)

λ§ˆμ°¬κ°€μ§€λ‘œ 예제λ₯Ό 톡해 λ°°μ›Œλ³΄μž.

[예제1] μ‚¬μ›ν…Œμ΄λΈ”μ—μ„œ 업무가 νšŒμ‚¬μ›, λ§€λ‹ˆμ €, 뢄석가인 μ‚¬μ›μ˜ 이름, 업무λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

  • WHERE μ ˆμ—μ„œ 쑰건을 ν•˜λ‚˜ν•˜λ‚˜ 적어쀄 μˆ˜λ„ μžˆμ§€λ§Œ, 이처럼 쑰건을 λ‚˜μ—΄ν•  μˆ˜λ„ μžˆλ‹€.
  • WHERE job = 'CLERK' OR job = 'MANAGER' OR job = 'ANALYST' 와 κ°™λ‹€.

[예제2] BOSTON μ΄κ±°λ‚˜ DALLAS 에 μœ„μΉ˜ν•œ λΆ€μ„œλ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

[예제3] DALLAS 의 20번 λΆ€μ„œ λ˜λŠ” CHICAGO의 30번 λΆ€μ„œμ˜ λͺ¨λ“  정보λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

  • IN μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬ 쑰건을 λ¬Άμ–΄μ„œλ„ ν‘œν˜„ν•  수 μžˆλ‹€.

LIKE

  • A LIKE B: Aκ°€ B의 νŒ¨ν„΄κ³Ό μΌμΉ˜ν•˜λ©΄ TRUE, 보톡 %,_ μ—°μ‚°μžμ™€ 같이 μ‚¬μš©ν•œλ‹€.
  • Wildcard 문자: %(0개 μ΄μƒμ˜ 문자 λŒ€ν‘œ), _(1개의 문자 λŒ€ν‘œ)

예제λ₯Ό 톡해 λ°°μ›Œλ³΄μž.

[예제1] A둜 μ‹œμž‘ν•˜λŠ” λΆ€μ„œλͺ…을 좜λ ₯ν•˜μ‹œμ˜€.

[예제2] A둜 μ‹œμž‘ν•˜λŠ” μ‚¬μ›μ˜ 이름을 좜λ ₯ν•˜μ‹œμ˜€.

[예제3] μ‚¬λ²ˆμ΄ 8번으둜 λλ‚˜λŠ” μ‚¬μ›μ˜ λ²ˆν˜Έμ™€ 이름을 좜λ ₯ν•˜μ‹œμ˜€.

[예제3] μ‚¬μ›ν…Œμ΄λΈ”μ—μ„œ μ‚¬μ›μ˜ 이름 쀑 MILLER λΌλŠ” μ‚¬μ›μ˜ 이름 λ§ˆμ§€λ§‰ 문자λ₯Ό (_)μ™€μΌλ“œμΉ΄λ“œλ¬Έμžλ₯Ό μ‚¬μš©ν•˜μ—¬ 좜λ ₯ν•˜μ‹œμ˜€.

IS NULL/ IS NOT NULL

  • NULL μ—¬λΆ€λ₯Ό ν…ŒμŠ€νŠΈν•  λ•Œ μ‚¬μš©ν•œλ‹€.

예제λ₯Ό 톡해 λ°°μ›Œλ³΄μž.

[예제1] μ‚¬μ›ν…Œμ΄λΈ”μ—μ„œ comm(λ³΄λ„ˆμŠ€)이 NULL인 μ‚¬μ›μ˜ 이름 및 comm을 좜λ ₯ν•˜μ‹œμ˜€. (단, IS NULL μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ‹œμ˜€.)

[예제2] μ‚¬μ›ν…Œμ΄λΈ”μ—μ„œ comm(λ³΄λ„ˆμŠ€) 지급 λŒ€μƒμΈ μ‚¬μ›μ˜ 이름과 λ³΄λ„ˆμŠ€λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

[예제3] μ‚¬μ›ν…Œμ΄λΈ”μ—μ„œ mgr 이 NULL 인 사원을 좜λ ₯ν•˜μ‹œμ˜€.

  • KING 은 사μž₯μ΄κΈ°λ•Œλ¬Έμ— 상사가 μ—†λ‹€λŠ” κ²°κ³Όλ₯Ό μ•Œ 수 μžˆλ‹€.

🌞 ORDER BY

  1. 기본적으둜 λ°μ΄ν„°λŠ” μ •λ ¬λ˜μ§€ μ•ŠλŠ”λ‹€.

  2. 같은 쿼리λ₯Ό μˆ˜ν–‰ν•  λ•Œλ§ˆλ‹€ κ²°κ³Όκ°€ λ‹€λ₯΄κ²Œ λ‚˜μ˜¬ 수 μžˆλ‹€.

  3. 별칭은 정렬에 영ν–₯을 주지 μ•ŠλŠ”λ‹€.

  4. Syntax

    SELECT column_list

    FROM table_name

    [WHERE conditions]

    [ORDER BY column[, column] {ASC | DESC};

  5. νŠΉμ§•
    1) 기본적으둜 μ˜€λ¦„μ°¨μˆœμ •λ ¬(ASC)ν•œλ‹€.
    - ( 1 --> 999) 숫자인경우
    - ( --> ) λ‚ μ§œμΈκ²½μš° μ˜›λ‚  졜근
    - ( , ) 문자인겨우 μ•ŒνŒŒλ²³μˆœμ„œ μœ λ‹ˆμ½”λ“œμˆœ

    2) NULL 은 μ˜€λ¦„μ°¨μˆœμΌ κ²½μš°λŠ” 제일 μ²˜μŒμ—, λ‚΄λ¦Όμ°¨μˆœμΈ κ²½μš°μ—λŠ” 제일 λ§ˆμ§€λ§‰μ— 좜λ ₯

  6. ORDER BY μ ˆμ— μ •λ ¬μ˜ 기쀀이 λ˜λŠ” column 을 μ—¬λŸ¬ 개 지정할 수 μžˆλ‹€. 첫번째 column 으둜 μ •λ ¬ν•œ λ‹€μŒ, κ·Έ column 값이 같은 row 듀에 λŒ€ν•΄μ„œλŠ” 두 번째 column κ°’μœΌλ‘œ μ •λ ¬ν•œλ‹€.

  7. μ˜€λ¦„μ°¨μˆœ(ASC) 정렬이 기본이며, λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜κ³ μž ν•  λ•Œμ—λŠ” DESCλ₯Ό μ‚¬μš©ν•œλ‹€.

  8. ORDER BY μ ˆμ— column 이름 λŒ€μ‹  positional notation 을 μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€. Position number λŠ” SELECT μ ˆμ—μ„œμ˜ column
    μˆœμ„œλ₯Ό μ˜λ―Έν•œλ‹€.

예제λ₯Ό 톡해 λ°°μ›Œλ³΄μž.

[예제1] μž…μ‚¬μΌμž 순으둜 μ •λ ¬ν•˜μ—¬ μ‚¬μ›λ²ˆν˜Έ, 이름, μž…μ‚¬μΌμžλ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

  • μ •λ ¬μ˜ 경우 μ˜€λ¦„μ°¨μˆœ(ASC)이 Default μ΄κΈ°λ•Œλ¬Έμ— ꡳ이 μ μ–΄μ£Όμ§€μ•Šμ•„λ„ 기본적으둜 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 정렬을 ν•œλ‹€.

[예제2] λΆ€μ„œλ²ˆν˜Έκ°€ 20번인 μ‚¬μ›μ˜ μ‚¬λ²ˆ, 이름, κΈ‰μ—¬, 연봉을 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 좜λ ₯ν•˜μ‹œμ˜€.

  • μœ„ ν™”λ©΄μœΌλ‘œ λ³„μΉ­μœΌλ‘œλ„ μ •λ ¬μ˜ 기쀀이 될 수 μžˆλŠ” 것을 μ•Œ 수 μžˆλ‹€.

[예제3] λΆ€μ„œλ²ˆν˜Έλ‘œ μ •λ ¬ν•œ ν›„, λΆ€μ„œλ²ˆν˜Έκ°€ 같을 경우 κΈ‰μ—¬κ°€ λ§Žμ€ 순으둜 μ‚¬μ›λ²ˆν˜Έ, 이름, 직무, λΆ€μ„œλ²ˆν˜Έ, κΈ‰μ—¬λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

  • μœ„ ν™”λ©΄μœΌλ‘œ 정렬은 쑰건에 따라 μ—¬λŸ¬λ²ˆ ν•  수 μžˆλ‹€λŠ” 것을 확인할 수 μžˆλ‹€.

πŸ” Reference

SELECT

https://github.com/swacademy/MySQL/blob/main/2.%20Basic%20SELECT.pdf

SQL μ΄λž€?

https://edu.goorm.io/learn/lecture/15413/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-sql/lesson/767683/sql%EC%9D%B4%EB%9E%80

profile
Today I Learned πŸŒ™

0개의 λŒ“κΈ€