Blog blog = new Korea()

정보처리기사

[도전! 정보처리기사!] SQL 공부

newkr 2022. 3. 23. 00:55
728x90

SQL로고

📢 SQL이 뭐야?

 SQL은 국제 표준 데이터베이스 언어인 만큼 대부분의 RDBMS에서 주로 사용되는 언어다. (줄임말은 구글링 😋)
흔히 질의어라고 해석되는데, 사용자들이 DB를 대화식으로 쉽게 이용할 수 있도록 지원하는 비절차식 언어를 의미한다.

 SQL의 특성은 크게 3가지로 DDL, DML, DCL의 특징을 가지고 있고, 이는 각각 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)이라 부른다. 

🙄 DDL? DML? DCL? 그게 뭔데 10덕아!

 각 특성을 사전적 의미로 설명하면 스키마나 테이블을 정의하고 어쩌고 저쩌고.. 매우 복잡해지기 때문에 여러분이 한 번에 이해하기 쉽도록 설명하겠다.

 SELECT * FROM 학생 WHERE 학과 = '컴퓨터 공학'

 어디서 많이 본 구문이다. 개발을 조금 접해본 사람뿐만 아니라, 컴퓨터 활용능력 1급을 공부했던 사람들도 한 번은 봤을 그 마법의 문장. 이게 바로 데이터 조작어(DML)의 유형 중 하나다.

 SQL의 3가지 특징은 우리가 DB를 이용하며 사용하는 구문들을 의미한다. (CREATE, DELETE, UPDATE, GRANT...)
뭐... 일부는 생소한 구문도 분명히 있을 거다. 예를 들면 COMMIT 같은 것..?

 여담인데, 왜 GIT에서나 사용했던 거 같은 COMMIT이 DB에도 나오느냐! 이건 데이터베이스 특징 중 하나인 트랜잭션 때문인데, 오늘은 이것까지 설명하면 너무 길어지니 다음에 하겠다. COMMIT은 UPDATE 되거나 DELETE 되는 것과 같이 DB에 변화가 생기면 그 변화를 실제 물지 디스크에 저장하고 완료됨을 관리자에게 알리는 역할을 한다.
 대부분의 DBMS는 AUTO COMMIT을 지원하고 있기 때문에 아마 모르는 사람도 많을 것 같다. (오늘날의 개발자가 편하게 작업하는 것은 이런 부분을 개선한 선배 개발자분들 덕분 아닐까..) 여하튼, SQL은 요런 특징들을 가지고 있다~~~!

🤬 이렇게 간단해 보이는 SQL은 어렵다?

 어렵다. 쉬워 보이고 실제로 문법도 크게 어렵지 않다. 문제는 SQL 자체 언어의 자유도다. 1가지 결과에 3~4가지 이상의 방법이 있다고 하면 통일되지 않은 구문들이 넘쳐나고, 약속되지 않은 구문들은 개발하는 데에 있어서 큰 혼동을 줄 것이다. 요런 문제들도 해결하여 지원하는 프로그램들이 있는데, 자바 개발자들은 주로 JPA 덕분에 SQL을 많이 보지 않고도 개발할 수 있을 거다.
 또한, 각 특성의 요소들의 특징 때문에 헷갈리는 부분들도 생기고, 복잡하게 쓰려면 한 없이 복잡하게 쓸 수도 있어서 많은 공부가 필요하다. 구문을 조금만 효율적으로 바꿔도 데이터베이스 내에 성능이 상승할 수 있기 때문에 더욱이 요즘 같은 세상엔 공부가 필요하다.

✅ 내가 배운 것

 SQL에 대해서 공부하면서 배운 개념들은 LAZY와 EAGER의 차이, CASCADE, CLUSTERING 등 여러 가지가 있고, 공부할수록 데이터베이스의 성능을 이끌어내는 데에 큰 도움이 될 것 같다는 생각이 들었다. (그래서 데이터 사이언스가 있나 봐..) 결론은 SQL 공부를 열심히 하자! 이다.

728x90