데이터베이스 Key의 개념과 종류
·
CS 스터디/CS - DB
데이터베이스에서 Key의 개념Key(키)는 데이터베이스에서 각 행(row)을 고유하게 식별하거나, 테이블 간의 관계를 정의하기 위해 사용하는 컬럼(속성)입니다.간단히 말해, 데이터를 구분하고, 조회하며, 서로 연결하는 기준이 되는 요소입니다. Key의 역할데이터베이스의 키는 테이블에서 각 데이터를 고유하게 식별하고, 다른 테이블과의 관계를 연결하며, 데이터의 무결성을 보장하는 역할을 합니다. Key의 종류💡 이 글에서는 SQL 쿼리 예제와 함께 Key의 개념을 설명드리며, 예제는 MySQL 문법을 기준으로 작성되었습니다.1. 기본키 (Primary Key)테이블에서 각 행을 유일하게 식별하는 키기본키 특징NULL 값을 가질 수 없다.중복된 값을 가질 수 없다.하나의 테이블의 기본 키는 반드시 하나만 존..
SQL의 실행과정
·
CS 스터디/CS - DB
SQL이란먼저 SQL이란, Structured Query Language의 줄임말로 관계형 데이터베이스(RDBMS)에서 데이터를 CRUD할 수 있게 해주는 표준 프로그래밍 언어입니다. 쉽게 말해, 데이터베이스에서 데이터를 다루기 위한 언어라고 할 수 있습니다. SQL의 실행과정은 크게 파싱 → 최적화 → 로우소스 생성 → 실행 순입니다. 순서대로 살펴보겠습니다. 1. 파싱 (Parsing)파싱은 SQL의 가장 첫 번째 실행단계로, 사용자가 입력한 SQL문을 분석하여 구문 및 의미를 확인하는 단계입니다.파싱의 단계1. 문법 체크 (Syntax Check)쿼리문 즉, 실행한 SQL 명령에 대해 문법의 오류나 오타가 있는지 확인하는 단계문법적으로 올바르지 않은 경우 오류를 반환합니다.2. 의미 & 권한 체크 ..
데이터베이스
·
CS 스터디/CS - DB
데이터베이스란데이터베이스는 컴퓨터에 저장되어 실시간으로 접근할 수 있는 데이터의 모임으로, 중복을 최소화하여 통합 관리되는 정보 저장소입니다. 또한, 데이터베이스는 조직의 업무 수행에 필수적인 데이터를 저장하고, 여러 사용자가 공동으로 접근하고 활용할 수 있도록 관리됩니다.특히, 웹 어플리케이션이 동적인 데이터를 관리하려면 데이터를 저장하고 가져오는 기능이 필요합니다. 이때, 사용되는 것이 데이터베이스이고, 웹 개발에 있어 필수적인 요소라고 볼 수 있습니다. 먼저, 앞선 설명을 보면 스프레드시트(엑셀)와 데이터베이스의 차이점이 궁금해 질 수도 있을것 같습니다. 해당 궁금증을 오라클 홈페이지에서도, 설명해주는데 해당 링크와 함께 간단한 차이점을 요약해보겠습니다. 데이터베이스와 스프레드시트(엑셀)의 차이점1..
Java의 원시 타입과 참조 타입
·
CS 스터디/CS - JAVA
자바에서는 기본적으로 원시 타입(Primitive Type)과 참조 타입(Reference Type) 두 가지 형태의 타입을 사용합니다. 두 타입의 어떤 차이점이 존재하는지 살펴보겠습니다. 이번 글에서는 본격적인 비교에 앞서, 먼저 원시 타입과 참조 타입이 무엇인지 간단히 알아보고,이후에 4가지(성능, 메모리, null 처리, 제네릭 사용)관점에서 그 차이를 살펴보겠습니다. 원시 타입(Primitive Type) 이란?원시 타입은 정수, 실수, 문자, 논리 리터럴 등 실제 데이터 값을 저장하는 타입원시 타입 특징변수에 값 자체가 저장됨스택 메모리에 저장됨크기가 고정되어 있어 메모리 사용이 효율적값만 저장하므로 속도가 빠름null값을 가질 수 없음객체가 아니므로 메서드 정의가 불가능원시 타입의 대표적인 종..
객체 지향 설계 5대 원칙 (SOLID)
·
CS 스터디/CS - JAVA
객체지향 프로그래밍을 배울 땐 상속이나 캡슐화, 다형성 같은 개념만으로도 충분해 보입니다. 하지만 기능이 늘어나고 유지보수의 영역이 넓어지면 점점 코드가 복잡해지고 유지보수가 어려워질 수 밖에 없습니다. 이러한 문제들을 줄이고, 설계의 중요한 기준점이 되는 것이 바로 SOLID원칙입니다.이 원칙은 로버트 C. 마틴(Robert C. Martin)이 제안한 것으로, 객체지향 설계의 핵심 철학이라 할 수 있습니다. SOLID를 잘 지키면 코드가 유연해지고 변경에도 강해져서, 유지보수가 쉬운 구조를 만들 수 있습니다. 규모가 커질수록 이런 설계 원칙의 중요성은 더 커질 수 밖에 없습니다. SOLID란?SOLID는 다섯 가지 설계 원칙의 앞글자를 따서 만든 약어입니다. S: SRP - 단일 책임 원칙 (Sing..
equals()와 hashcode()
·
CS 스터디/CS - JAVA
equals()메서드와 hashcode()메서드는  Java의 모든 객체가 기본적으로 상속받는 Object 클래스에 정의된 메서드로, 해시 기반 컬렉션에서 객체의 동등성 판단과 해시 값 계산을 통해 정확한 저장 및 검색을 수행하는 데 필요한 필수 메커니즘입니다. equals()와 hashcode()의 기본구현을 알아보고, 해시 기반 컬렉션에서 두 메서드를 사용하기 위한 규약에 대해 알아보겠습니다. equals()메서드의 기본 구현equals()는 객체의 동등성을 비교하는 메서드로 두 객체의 참조가 같은지 아닌지를 판단합니다.// equals()의 기본구현은 객체의 주소값이 동일한지를 비교public boolean equals(Object obj) { return (this == obj);} hash..
Java의 예외처리
·
CS 스터디/CS - JAVA
예외 처리란?예외(Exception)는 프로그램 실행 중 발생하는 예상하지 못한 오류를 의미합니다. 프로그램 실행 중, 예외가 발생하면 그 즉시, 프로그램이 종료하게 되는데, 이를 방지하기 위해 필요한 것이 바로 예외 처리(Exception Handling)입니다. Java에서는 예외를 두 가지 유형으로 관리합니다. 먼저, Java의 예외 클래스의 계층 구조도와 함께 Java의 예외 처리 종류에 대해 자세히 살펴보겠습니다. Java의 예외 클래스 계층 구조 Java의 예외 처리 종류1. 체크드 예외 ( Checked Exception )컴파일 타임에 반드시 처리해야 하는 예외예외 처리를 하지 않는다면, 컴파일 오류가 발생체크드 예외를 처리하는 방법체크 예외는 반드시 try-catch구문 을 사용하거나 메..
final, finalize, finally의 차이와 활용
·
CS 스터디/CS - JAVA
final, finalize, finally는 자바를 처음 접할 때, 충분히 헷갈릴 수 있는 키워드 입니다. 각각의 특징을 코드와 함께 간단하게 살펴보겠습니다.1. finalfinal 키워드는 값 변경, 상속, 오버라이딩을 제한하는 키워드입니다. 코드의 불변성을 보장하는데 사용되며, 코드의 의도를 명확히하고 안정성을 높이는데 유용합니다. final 키워드는 기본적으로 변수, 메서드, 클래스에 사용할 수 있습니다. 각각의 사용법에 대해 알아보겠습니다. 1.1 final 변수 (변수 앞에 final이 붙은 경우)final키워드가 붙은 변수는 값을 한 번만 할당할 수 없으며, 초기화 이후 값을 변경할 수 없습니다.특정 값을 고정적으로 사용하는 상수를 정의할 때 자주 사용됩니다. 일반적으로 네이밍 컨벤션을 대문..
String, StringBuilder, StringBuffer 특징 및 성능비교
·
CS 스터디/CS - JAVA
String, StringBuilder, StringBuffer는 자바에서 문자열을 다루는 대표적인 자료형 클래스입니다. 각각의 특징과 성능을 설명에 도움이 되는 코드와 함께 알아보고, 표로 정리해보겠습니다. 1. StringString은 문자열이 변경될 때마다, 새로운 객체를 생성하는 불변( Immutable ) 클래스입니다.  String의 특징문자열이 변경될 때마다 새로운 객체를 생성합니다.문자열이 자주 변경되면 더이상 사용되지 않는 객체에 대한 불필요한 GC가 발생 ( 성능저하 발생 )불변 객체로 동기화와 관련된 문제 발생하지 않습니다.Java의 문자열 중 가장 느린 성능을 제공합니다.더보기👉GC에 대하여... 🌾Garbage Collection 참고 포스팅 String 문자열 수정과 GC 발..
객체 지향 프로그래밍(OOP)의 특징 4가지
·
CS 스터디/CS - JAVA
객체 지향 프로그래밍이란?객체 지향 프로그래밍(Object-Oriented-Programming)은 프로그램을 '객체'라는 독립적인 단위로 나누어 프로그래밍하는 방식입니다. 각 객체는 데이터와 동작을 하나로 묶어, 서로 간의 상호작용을 통해 프로그램을 구성합니다. 이러한 특성 덕분에 객체 지향 프로그래밍은 코드의 재사용성, 유지보수 용이성, 확장성 등을 높이는 데 유리합니다. 그럼 객체 지향 프로그래밍의 핵심적인 4가지 특징에 대해 적용된 코드와 그렇지 않은 코드를 비교해가며 살펴보겠습니다. 1. 캡슐화 ( Encapsulation )캡슐화란 속성과 메서드를 하나의 단위로 묶고, 해당 데이터에 대한 외부의 직접적인 접근을 차단하며 정보 은닉을 통해 시스템의 안정성과 유지보수를 높이는 개념입니다. 쉽게 말..