MariaDBμμ μ£Όλ‘ μ¬μ©λλ μ°μ°μμ λν΄ μμλ³΄κ² μ΅λλ€. μ°μ°μλ SQL 쿼리λ₯Ό μμ±νλ λ°μ νμμ μΈ μμλ‘, λ°μ΄ν°λ₯Ό μ‘°μνκ³ μνλ κ²°κ³Όλ₯Ό μ»λ λ°μ μ¬μ©λ©λλ€.
β£ λͺ©μ°¨
μ°μ μ°μ°μπ’
μ°μ μ°μ°μλ μ«μ λ°μ΄ν° νμ κ°μ μνμ μΈ κ³μ°μ μννλ λ° μ¬μ©λ©λλ€. MariaDBμμλ λ€μκ³Ό κ°μ μ°μ μ°μ°μλ₯Ό μ 곡ν©λλ€.
- λ§μ +
- λΊμ -
- κ³±μ *
- λλμ /
μλ₯Ό λ€μ΄, μ£Όλ¬Έ λ°μ΄ν°λ² μ΄μ€μμ μ ν κ°κ²©μ μ‘°μ νκ±°λ ν μΈμ¨μ μ μ©νλ λ±μ μμ μ μ°μ μ°μ°μλ₯Ό νμ©ν μ μμ΅λλ€.
SELECT price * 0.9 AS discounted_price
FROM products;
μμ 쿼리λ μ νμ κ°κ²©μ 10% ν μΈμ¨μ μ μ©ν κ°κ²©μ μ‘°νν©λλ€.
λΉκ΅ μ°μ°μβ³
λΉκ΅ μ°μ°μλ κ°μ λΉκ΅νκ³ λ Όλ¦¬μ μΈ μ‘°κ±΄μ νκ°νλ λ°μ μ¬μ©λ©λλ€. MariaDBμμλ λ€μκ³Ό κ°μ λΉκ΅ μ°μ°μλ₯Ό μ 곡ν©λλ€.
- λ±νΈ =: λ κ°μ΄ λμΌνμ§ νμΈν©λλ€.
- λΆλ±νΈ >, <: νλμ κ°μ΄ λ€λ₯Έ κ°λ³΄λ€ ν°μ§ λλ μμμ§ νμΈν©λλ€.
- ν¬κ±°λ κ°μ >=: νλμ κ°μ΄ λ€λ₯Έ κ°λ³΄λ€ ν¬κ±°λ κ°μμ§ νμΈν©λλ€.
- μκ±°λ κ°μ <=: νλμ κ°μ΄ λ€λ₯Έ κ°λ³΄λ€ μκ±°λ κ°μμ§ νμΈν©λλ€.
- κ°μ§ μμ != λλ <>: λ κ°μ΄ λ€λ₯Έμ§ νμΈν©λλ€.
κ°λ Ή, μ£Όλ¬Έ λ°μ΄ν°λ² μ΄μ€μμ νΉμ κ°κ²© λ²μμ μνλ μ νμ κ²μνκ³ μΆλ€κ³ κ°μ ν΄ λ΄ μλ€. μ΄λ₯Ό μν΄ λ±νΈ(=)μ λΆλ±νΈ(<, >)λ₯Ό μ΄μ©νμ¬ μ μ ν 쿼리λ₯Ό μμ±ν μ μμ΅λλ€.
-- νΉμ κ°κ²© λ²μμ μνλ μ ν κ²μ μμ
-- 100μμ 200 μ¬μ΄μ κ°κ²©μ κ°μ§ μ ν κ²μ
SELECT *
FROM products
WHERE price >= 100 AND price <= 200;
-- νΉμ κ°κ²© μ΄νμ μ ν κ²μ
SELECT *
FROM products
WHERE price <= 50;
-- νΉμ κ°κ²© μ΄μμ μ ν κ²μ
SELECT *
FROM products
WHERE price >= 500;
μμ μμ μμλ κ°κ° νΉμ κ°κ²© λ²μμ μνλ μ νμ κ²μνλ 쿼리λ₯Ό 보μ¬μ€λλ€. λ±νΈ(=)μ λΆλ±νΈ(<, >)λ₯Ό μ‘°ν©νμ¬ μνλ 쑰건μ μ€μ ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μμ νμν μ 보λ₯Ό μ½κ² μΆμΆν μ μμ΅λλ€.
λ Όλ¦¬ μ°μ°μπ‘
λ Όλ¦¬ μ°μ°μλ SQL 쿼리μμ μ¬λ¬ 쑰건μ κ²°ν©νμ¬ λ³΅μ‘ν λ Όλ¦¬μ 쑰건μ ꡬμ±ν λ μ¬μ©λ©λλ€. MariaDBμμ μ£Όλ‘ μ¬μ©λλ λ Όλ¦¬ μ°μ°μλ AND, OR, NOTμ λλ€. μ΄λ¬ν μ°μ°μλ₯Ό μ¬μ©νμ¬ μΏΌλ¦¬μ νν°λ§ 쑰건μ λ μΈλΆμ μΌλ‘ μ μν μ μμ΅λλ€.
- AND: λ μ‘°κ±΄μ΄ λͺ¨λ μ°ΈμΌ λ μ°Έμ λ°νν©λλ€.
- OR: λ 쑰건 μ€ νλλΌλ μ°ΈμΌ λ μ°Έμ λ°νν©λλ€.
- NOT: μ‘°κ±΄μ΄ κ±°μ§μΌ λ μ°Έμ λ°ννκ³ , μ°ΈμΌ λ κ±°μ§μ λ°νν©λλ€.
μλ₯Ό λ€μ΄, μ νμ κ°κ²©μ΄ νΉμ λ²μ λ΄μ μλ μ νμ κ²μνλλ° λ Όλ¦¬ μ°μ°μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
SELECT *
FROM products
WHERE price > 100 AND price < 200;
μμ 쿼리λ κ°κ²©μ΄ 100μμ 200 μ¬μ΄μΈ λͺ¨λ μ νμ κ²μν©λλ€.
λΉνΈ μ°μ°μπ©π»
λΉνΈ μ°μ°μλ λΉνΈ λ¨μλ‘ λ°μ΄ν°λ₯Ό μ‘°μν λ μ¬μ©λ©λλ€. MariaDBλ μ¬λ¬ λΉνΈ μ°μ°μλ₯Ό μ 곡νλ©°, μ΄λ μ£Όλ‘ μ μ κ°μ λΉνΈλ₯Ό μ§μ μ‘°μν νμκ° μμ λ μ μ©ν©λλ€. λΉνΈ μ°μ°μλ λ Όλ¦¬μ AND, OR, XOR, NOT λ° μννΈ μ°μ°μ ν¬ν¨ν©λλ€.
- λΉνΈ AND (&): λ λΉνΈκ° λͺ¨λ 1μΌ λ 1μ λ°νν©λλ€.
- λΉνΈ OR (|): λ λΉνΈ μ€ νλλΌλ 1μΌ λ 1μ λ°νν©λλ€.
- λΉνΈ XOR (^): λλΉνΈκ° λ€λ₯Ό λ 1μ λ°νν©λλ€.
- λΉνΈ NOT (~): λΉνΈλ₯Ό λ°μ μν΅λλ€. (1μ 0μΌλ‘, 0μ 1λ‘)
-- λΉνΈ AND (&): λ λΉνΈκ° λͺ¨λ 1μΌ λ 1μ λ°νν©λλ€.
SELECT 5 & 3 AS bit_and_result;
-- κ²°κ³Ό: 1 (5λ 101, 3μ 011, AND μ°μ° κ²°κ³Όλ 001)
-- λΉνΈ OR (|): λ λΉνΈ μ€ νλλΌλ 1μΌ λ 1μ λ°νν©λλ€.
SELECT 5 | 3 AS bit_or_result;
-- κ²°κ³Ό: 7 (5λ 101, 3μ 011, OR μ°μ° κ²°κ³Όλ 111)
-- λΉνΈ XOR (^): λ λΉνΈκ° λ€λ₯Ό λ 1μ λ°νν©λλ€.
SELECT 5 ^ 3 AS bit_xor_result;
-- κ²°κ³Ό: 6 (5λ 101, 3μ 011, XOR μ°μ° κ²°κ³Όλ 110)
-- λΉνΈ NOT (~): λΉνΈλ₯Ό λ°μ μν΅λλ€. (1μ 0μΌλ‘, 0μ 1λ‘)
SELECT ~5 AS bit_not_result;
-- κ²°κ³Ό: -6 (5λ 101, NOT μ°μ° κ²°κ³Όλ 010, 2μ 보μλ²μΌλ‘ μΈν΄ -6)
μλ₯Ό λ€μ΄, νΉμ λΉνΈλ₯Ό νμ©νμ¬ λ°μ΄ν°λ₯Ό μνΈννκ±°λ ν΄λ
νλ μμ
μ λΉνΈ μ°μ°μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
SELECT id, name
FROM users
WHERE role & 2 = 2;
μμ 쿼리λ μ¬μ©μμ μν (role)μ΄ 2λ² λΉνΈκ° μ€μ λ μ¬μ©μλ₯Ό κ²μν©λλ€.
ν¨ν΄λ§€μΉ μ°μ°μπ―
ν¨ν΄ λ§€μΉ μ°μ°μλ μ κ· ννμμ μ¬μ©νμ¬ νΉμ ν ν¨ν΄μ κ²μνκ±°λ μΆμΆνλ λ°μ μ¬μ©λ©λλ€. MariaDBμμλ LIKE μ°μ°μμ REGEXP μ°μ°μλ₯Ό ν΅ν΄ ν¨ν΄ 맀μΉμ μνν μ μμ΅λλ€.
LIKE μ°μ°μ
LIKE μ°μ°μλ λ¬Έμμ΄μ΄ νΉμ ν ν¨ν΄μ λ°λ₯΄λμ§λ₯Ό κ²μ¬ν©λλ€. μ΄ λ μ¬μ©λλ μμΌλμΉ΄λλ‘λ %κ° μμΌλ©°, μ΄λ μμμ λ¬Έμμ΄μ λνλ
λλ€.
μλ₯Ό λ€μ΄, λ€μμ 쿼리λ μ΄λ©μΌ μ£Όμκ° "@gmail.com"μΌλ‘ λλλ λͺ¨λ λ°μ΄ν°λ₯Ό λ°νν©λλ€.
SELECT *
FROM users
WHERE email LIKE '%@gmail.com';
μμ 쿼리μμ %λ "@gmail.com" μμ μλ μμμ λ¬Έμμ΄μ λνλ
λλ€.
REGEXP μ°μ°μ
REGEXP μ°μ°μλ MariaDBμμ μ κ· ννμμ μ¬μ©νμ¬ λ¬Έμμ΄ ν¨ν΄μ 맀μΉνλ λ° μ¬μ©λλ κ°λ ₯ν λꡬμ λλ€. μ κ· ννμμ λ¬Έμμ΄μμ νΉμ ν¨ν΄μ κ²μνκ³ μΆμΆν μ μκ² ν΄μ£Όλ ννμμ λλ€. REGEXPλ 볡μ‘ν λ¬Έμμ΄ κ²μμ΄ νμν λ λ§€μ° μ μ©ν©λλ€.
βΆ κΈ°λ³Έ λ¬Έλ²
SELECT *
FROM table_name
WHERE column_name REGEXP 'pattern';
βΆ μ κ· ννμ ν¨ν΄
- ^: λ¬Έμμ΄μ μμμ λνλ λλ€.
- $: λ¬Έμμ΄μ λμ λνλ λλ€.
- .: μμμ ν λ¬Έμλ₯Ό λνλ λλ€.
- [abc]: κ΄νΈ μμ λ¬Έμ μ€ νλμ μΌμΉν©λλ€.
- [^abc]: κ΄νΈ μμ λ¬Έμ μΈμ νλμ μΌμΉν©λλ€.
- [a-z]: νΉμ λ²μμ λ¬Έμμ μΌμΉν©λλ€.
- a|b: a λλ bμ μΌμΉν©λλ€.
- *: 0κ° μ΄μμ μμ ν¨ν΄κ³Ό μΌμΉν©λλ€.
- +: 1κ° μ΄μμ μμ ν¨ν΄κ³Ό μΌμΉν©λλ€.
- ?: 0κ° λλ 1κ°μ μμ ν¨ν΄κ³Ό μΌμΉν©λλ€.
- {m}: λ°λ‘ μμ μλ λ¬Έμκ° mν λ°λ³΅λ©λλ€.
- {m, n}: λ°λ‘ μμ μλ λ¬Έμκ° mνλΆν° nνκΉμ§ λ°λ³΅λ©λλ€.
βΆ μμ ) λ¬Έμμ΄μ΄ 'A'λ‘ μμνλ κ²½μ° κ²μ:
SELECT *
FROM users
WHERE name REGEXP '^A';
βΆμμ ) λ¬Έμμ΄μ΄ μ«μλ‘ λλλ κ²½μ° κ²μ:
SELECT *
FROM users
WHERE name REGEXP '[0-9]$';
βΆμμ ) λ¬Έμμ΄μ 'cat' λλ 'dog'μ΄ ν¬ν¨λ κ²½μ° κ²μ:
SELECT *
FROM articles
WHERE content REGEXP 'cat|dog';
βΆμμ ) μ΄λ©μΌ νμμ΄ μ¬λ°λ₯Έμ§ νμΈ (κ°λ¨ν μ):
SELECT *
FROM users
WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';
μ κ· ννμμ κ°λ ₯ν κ²μ λ° ν
μ€νΈ μ‘°μ κΈ°λ₯μ μ 곡νλ©°, λ€μν ν¨ν΄ λ§€μΉ μμ
μ μ μ©νκ² μ¬μ©ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ MariaDBμμ 볡μ‘ν λ¬Έμμ΄ κ²μμ ν¨μ¨μ μΌλ‘ μνν μ μμ΅λλ€.
NULL μ°μ°μπ¬
NULL μ°μ°μλ SQLμμ NULL κ°μ μ²λ¦¬νλ λ° μ¬μ©λ©λλ€. NULLμ "κ°μ΄ μμ"μ μλ―Ένλ©°, μ΄λ λ°μ΄ν°λ² μ΄μ€μμ νΉμ μ΄μ΄ λΉμ΄ μκ±°λ μ μλμ§ μμ μνλ₯Ό λνλ λλ€. MariaDBμμ NULL κ°μ λ€λ£¨κΈ° μν΄ μ¬λ¬ μ°μ°μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
- IS NULL: μ΄μ΄ NULL κ°μ κ°μ§λμ§ νμΈν©λλ€.
- IS NOT NULL: μ΄μ΄ NULL κ°μ κ°μ§μ§ μλμ§ νμΈν©λλ€.
μλ 쿼리λ κ³ κ° IDκ° NULLμΈ λͺ¨λ μ£Όλ¬Έμ κ²μν©λλ€.
SELECT *
FROM orders
WHERE customer_id IS NULL;
μλ 쿼리λ κ³ κ° IDκ° NULLμ΄ μλ λͺ¨λ μ£Όλ¬Έμ κ²μν©λλ€.
SELECT *
FROM orders
WHERE customer_id IS NOT NULL;
NULLκ³Όμ λΉκ΅
NULLκ³Όμ μ§μ μ μΈ λΉκ΅(=,!= λ±)λ μ¬λ°λ₯Έ κ²°κ³Όλ₯Ό λ°ννμ§ μμ΅λλ€. μ΄λ SQL νμ€μμ NULLμ μ΄λ€ κ°κ³Όλ κ°μ§ μλ€κ³ κ°μ£ΌλκΈ° λλ¬Έμ λλ€. NULL κ°κ³Ό λΉκ΅νλ €λ©΄ λ°λμ IS NULL λλ IS NOT NULLμ μ¬μ©ν΄μΌ ν©λλ€.
μλͺ»λ μμ
-- This will not work as expected
SELECT *
FROM orders
WHERE customer_id = NULL;
μ¬λ°λ₯Έ μμ
-- Correct way to check for NULL
SELECT *
FROM orders
WHERE customer_id IS NULL;
NULL κ°μ νΉμ±
- NULLμ λΉμ΄ μλ κ°μ΄λ 0κ³Ό λ€λ¦ λλ€: NULLμ λ°μ΄ν°κ° μ‘΄μ¬νμ§ μμμ μλ―Ένλ©°, μ΄λ λΉ λ¬Έμμ΄μ΄λ 0κ³Όλ λ€λ¦ λλ€.
- μ°μ°μμμ NULL: NULLκ³Όμ μ°μ μ°μ°, λ¬Έμμ΄ μ°μ° λ±μ νμ NULLμ λ°νν©λλ€.
SELECT price * discount AS discounted_price
FROM products
WHERE discount IS NULL;
μμ 쿼리λ ν μΈ κ°μ΄ NULLμΈ μ νμ λν΄ NULLμ λ°νν©λλ€.
ν΅μ¬ λ΄μ©π