SQL

안녕하세요. CareerBee 서비스에서 백엔드 개발을 맡고있는 mumu입니다. 해당 글은 기업 검색시 발생한 문제에 대해서 설명하고 어떻게 해결했는지를 서술하고 있습니다.🔍 문제점CareerBee에는 사용자가 입력한 키워드로 기업을 검색하는 기능이 있습니다. 문득, 이름에 _(언더바) 를 포함한 기업이 있는지 궁금해 "_"를 검색해봤습니다. 하지만 결과는 엉뚱했습니다. 언더바가 들어가지 않은 기업들이 검색되는 것이었습니다.❓ 왜 이런 현상이 발생했을까?결론부터 말하자면 LIKE 쿼리에서 특수문자 _를 escape 처리하지 않았기 때문입니다. 검색 결과를 가져오는 Repository 의 코드를 보면 다음과 같이 LIKE 구문이 사용됨을 볼 수 있습니다.@Overridepublic CompanySear..
이번 글에서는 SQL Injection 공격과 SQL 안티패턴에 대해서 알아보겠습니다.SQL InjectionSQL Injection은 공격자가 SQL 쿼리에 악의적인 데이터를 삽입하여 데이터베이스를 조작하거나 정보를 탈취하는 공격기법입니다.  다음과 같은 쿼리를 볼 수 있습니다.-- 입력값으로 "1 OR 1=1"를 전달SELECT * FROM users WHERE id = '1 OR 1=1';해당 쿼리는 항상 참으로 연산되기 때문에 users 테이블의 모든 데이터가 공격자에게 보여지게 됩니다. 이러한 공격을 예방할 수 있는 예방방법이 존재하는데요. 알아보겠습니다.SQL 안티패턴1. SELECT *해당 패턴의 문제점은 다음과 같습니다.불필요한 데이터를 모두 가져오기 때문에 네트워크와 메모리의 낭비로 이어..
이번 글에서는 DDL, DCL, DML에 대해서 알아보도록 하겠습니다.DDLDDL은 데이터베이스의 구조를 정의하는 데 사용되는 SQL의 명령어 집합입니다.테이블, 인덱스, 스키마 등 데이터베이스 객체를 생성, 변경, 삭제하는 작업을 수행합니다. DDL 에는 다음과 같은 구문이 있습니다.CREATE테이블, 데이터베이스, 인덱스 등을 생성CREATE TABLE 학생 ( 학번 INT PRIMARY KEY, 이름 VARCHAR(50), 나이 INT);ALTER기존 테이블 또는 객체를 수정ALTER TABLE 학생 ADD 학과 VARCHAR(50);DROP테이블, 데이터베이스 등을 삭제DROP TABLE 학생;TRUNCATE테이블의 데이터를 모두 삭제(구조는 유지)TRUNCATE TABLE 학생;..
이번 글은 SQL에 대해서 간략하게 알아보려고 합니다.SQLSQL이란 Structured Query Language로 RDBMS에서 데이터를 저장, 검색, 수정, 삭제하기 위해 사용되는 표준 언어입니다. SQL에는 다음과 같은 특징이 있습니다.표준화국제 표준 (ISO, ANSI)으로 정의되어 대부분의 관계형 데이터베이스에서 사용가능 (MySQL, PostgreSQL..)관계형 데이터 모델 지원테이블 형식으로 데이터를 관리하며, 테이블 간 관계를 쉽게 처리간결하고 직관적데이터 조작이 간단한 명령어로 이루어져 있어 사용이 쉽고 읽기 편함다양한 기능DDL, DML, DCL 명령어로 구분됨 SQL의 특징에 대해서 알아보았습니다. 근데 C언어와 같은 프로그래밍 언어와 어떤 차이가 있을까요? C언어는 주로 데이터를..
Choony
'SQL' 태그의 글 목록