개발 21

[MySQL] AUTO_INCREMENT 사용하기

MySQL에서는 AUTO_INCREMENT를 사용하여 테이블의 기본 키로 활용할 수 있다. 키에 의미 있는 값이 필요하지 않으면서 키 관리가 필요할 경우에 유용하게 사용할 수 있다. 기본키에 AUTO_INCREMENT 옵션을 주면 INSERT 시 1부터 시작하여 자동으로 값이 증가된다. INSERT문을 실행할 때에는 해당 컬럼에 별도로 값을 지정하지 않아도 된다. use market_db; CREATE TABLE tbl_autoincrement_test ( test_id INT AUTO_INCREMENT PRIMARY KEY, test_name CHAR(4), test_etc CHAR(20) ); INSERT INTO tbl_autoincrement_test VALUES (NULL, '홍길동', '기본 ..

개발/SQL 2022.09.19

[MySQL] 데이터 조회 (ORDER BY, DISTINCT, GROUP BY, LIMIT)

데이터 조회 시 결과를 정렬할 때에는 ORDER BY, 중복을 제거할 경우 DISTINCT, 묶어서 보여줘야 하는 경우에는 GROUP BY, 일부만 보여줘야 할 때에는 LIMIT을 사용할 수 있다. 기본적으로 사용 순서는 아래와 같다. SELECT 컬럼명 FROM 테이블병 WHERE 조건식 GROUP BY 컬럼명 HAVING 그룹의 조건 ORDER BY 컬럼명 LIMIT 결과 개수 1. ORDER BY ORDER BY 뒤에는 정렬 기준이 되는 컬럼명을 써주면 된다. 기본적으로 정렬은 오름차순(ASC)으로 정렬이 되며, 내림차순은 DESC라고 명시해주면 된다. 예시 use market_db; -- mem_name 컬럼 기준으로 오름차순 정렬 SELECT * FROM member ORDER BY mem_na..

개발/SQL 2022.09.19

[MySQL] 데이터 조회 (LIKE)

데이터 조회 시 부분적으로 일치하는 값을 찾을때 LIKE를 사용한다. 예시 use market_db; -- '핑크'로 끝나는 멤버 찾기 select * from member where mem_name like '%핑크'; -- '블랙'으로 시작하는 멤버 찾기 select * from member where mem_name like '블랙%'; -- '랙핑크'로 끝나며 앞에 한 글자만 더 있는 멤버 찾기 select * from member where mem_name like '_랙핑크'; -- '블랙핑'으로 시작하며 뒤에 한 글자만 더 있는 멤버 찾기 select * from member where mem_name like '블랙핑_';

개발/SQL 2022.09.19

[MySQL] MySQL Workbench로 인덱스, 뷰, 스토어드 프로시저 만들기

1. 인덱스 테이블에 데이터가 많아질수록 조회할 때 시간이 많이 소요되는데, 인덱스를 설정할 경우 빠르게 조회할 수 있다. 인덱스를 설정하지 않을 경우 아래와 같이 Full Table Scan을 하게 된다. 인덱스는 CREATE INDEX 인덱스명 ON 테이블명(컬럼명) 으로 생성한다. CREATE INDEX idx_member_name ON member(member_name); idx_member_name이라는 인덱스가 잘 생성된 것을 확인할 수 있다. 생성 후에 인덱스 생성 전에 실행했던 조회 쿼리를 다시 실행해보면 Plan이 변경된 것을 확인할 수 있다. 2. 뷰 뷰는 실제로 있는 테이블이 아닌 하나 이상의 테이블의 데이터를 선택하여 가상으로 정의한 것이다. 뷰는 CREATE VIEW 뷰명 AS S..

개발/SQL 2022.09.19

[MySQL] MySQL Workbench로 데이터베이스 만들기

MySQL Workbench를 실행하고 좌측 Navigator 우클릭 후 Create Schema(혹은 상단 바의 아이콘)을 클릭한다. 1. 데이터베이스(스키마) 만들기 이름을 입력하고 Apply를 누른다. 스키마명은 영어 대소문자 모두 사용 가능하나, 대문자로 입력해도 시스템 내부에 소문자로 변환되어 저장되므로 소문자로 입력하면 된다. Apply를 누르면 위와 같은 창이 뜨는데, CREATE SCHEMA ~~ 라고 써있는 DDL을 직접 실행시켜서 만들어도 동일하게 스키마를 만들 수 있다. CREATE SCHEMA `shop_db`; 생성 완료 후 Navigator에서 새로 생성한 스키마를 확인할 수 있다. 2. 테이블 만들기 테이블을 만들 데이터베이스 > Tables를 우클릭 하고 Create Tabl..

개발/SQL 2022.09.19

DBMS란

DBMS(Database Management System)란? 데이터베이스(데이터의 집합)를 관리하고 운영하는 소프트웨어. Excel에도 많은 데이터를 저장하고 관리할 수 있지만, DBMS는 대용량의 데이터를 관리하거나 여러 사용자와 공유(동시에 접근 가능)한다는 점에서 차이가 있다. 소프트웨어 종류로는 MySQL, 오라클, SQL 서버, MariaDB 등이 있다. DBMS의 분류 DBMS의 유형은 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 나눌 수 있다. 관계형 DBMS가 많은 부분을 차지하며, MySQL도 관계형 DBMS이다. RDBMS의 데이터베이스는 테이블이라..

개발/SQL 2022.09.05

[Java] 람다식

람다식(Lambda Expression)이란? 함수를 하나의 식으로 표현한 것으로, 이름이 없는 익명함수(Anonymous Function)의 한 종류이다. 불필요한 코드를 줄이고 가독성을 높이기 위해 사용한다고 한다. 기존 구현 방식 매개변수 메소드명(파라미터, ...) { 실행문 } 람다 방식 중괄호({}) 안에 함수의 코드를 작성하며, 한 문장인 경우 괄호 생략이 가능하다. 다만, 한 문장이어도 return문이 있으면 반드시 중괄호 안에 작성해야 한다. (매개변수, ...) -> { 실행문 } 람다식의 특징 람다식 내의 지역변수는 final로 선언하지 않아도 상수로 간주된다. 람다식으로 선언된 변수명은 다른 변수명과 중복될 수 없다. 멀티쓰레드를 활용하여 병렬 프로그래밍이 가능하다. 장점 코드가 간..

개발/Java 2022.09.05

[Java] 추상 클래스와 추상 메서드

추상 클래스(abstract class)란? 클래스의 공통된 부분을 별도의 클래스로 만들고 상속해서 사용하는 것. 클래스가 가지는 모든 속성과 기능을 가지고 있다. 추상 메서드(선언만 되어있고 정의되지 않은 메서드)를 가지며, 자식 클래스에서 반드시 구현해야 한다. 추상 메서드(abstract method)란? 자식 클래스에서 반드시 오버라이딩 해야만 사용할 수 있는 메서드. 추상 메소드가 포함된 클래스를 상속 받는 자식 클래스가 반드시 메소드를 구현하도록 하기 위해 사용한다고 한다. 예를 들면, 생산성 향상을 위해 공통적인 부분은 미리 구현해 놓고 필요한 부분만 자식 클래스에서 구현하여 사용하는 것이다. 예제 Animal 클래스에서 공통 메소드인 eat()를 구현 후 자식 클래스인 Cat 클래스와 Do..

개발/Java 2022.09.01

[Java] 배열과 메모리

배열 변수는 배열 데이터의 주소를 담고 있다. 배열 요소 출력은 Arrays.toString()으로, 배열 주소 출력은 변수명으로 작성하면 된다. int[] arr1 = {1, 2, 3}; int[] arr2 = null; int[] arr3 = {4, 5, 6}; int[] arr4 = null; System.out.println("arr1 : " + Arrays.toString(arr1)); System.out.println("arr2 : " + Arrays.toString(arr2)); System.out.println("arr3 주소 : " + arr3); System.out.println("arr4 주소 : " + arr4); 실행 결과는 아래와 같다. arr1 : [1, 2, 3] arr2 :..

개발/Java 2022.08.22