쿼리를 만들다 보면 데이터가 들어 올 때 유니크 값이 중복이면 나머지 컬럼을 업데이트하고 싶은 경우가 있다 물론 일일이 업데이트해도 되지만 데이터 여러 개를 하고 싶을 때 유용한 옵션이 있다 그건 바로 아래 insert의 옵션이다 ON DUPLICATE KEY UPDATE 간단하게 예시를 들자면 다음과 같은 DDL이 있다고 치자 CREATE TABLE books ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) UNIQUE, description TEXT, author VARCHAR(255) ); 그리고 여기에 데이터를 넣자 여기도 해당 옵션을 넣었지만 바뀐 건 없고 5개의 칼럼이 추가된다 INSERT INTO books (name, description,..
MySQL
최근에 본 면접에서 질문으로 MySQL 실행계획을 물어보는 분이 계셨는데감기 이슈로 멍해진 머리로는 제대로 된 답을 하지 못했었다. 이 참에 제대로 정리해 보자. 정의DB + Query Plan을 들을 경우 딱 느낌이 오는 건"아 DB에서 쿼리를 분석해서 사용하는 과정에 대한 계획인가"로 추론해 볼 순 있는 데 대충 그게 맞습니다. 이게 왜 필요하나면우리가 TABLE에 쿼리를 아래처럼 날렸을 때SELECT LoanedBook.*FROM LoanedBookJOIN Person ON LoanedBook.person_id = Person.person_idWHERE Person.person_id = 1;주어진 쿼리가 같더라도 LoanedBook에 어디에 Index가 있는지 또는 Person에 Unique 값이 ..
프로젝트 개발 중에 테스팅을 운영 디비와 같은 걸로 할 경우 더미 데이터가 추가되는 데 이를 방지하기 위해 스프링에서는 메모리 디비를 사용할 수 있게 해 줍니다. ※ 메모리 DB(In-Memory Database, Main Memory DBMS) : 비휘발성이 아닌 휘발성인 주 메모리에 데이터를 기록하는 방법으로 데이터 조회가 빠르다는 장점을 지니지만 휘발성이므로 전원이 꺼질 시 데이터가 삭제됨, 주로 임시 데이터나 로그인 세션에 이용 DBMS 제품군에서 옵션으로 제공하기도 함 MySQL/MariaDB에서는 MEMORY 엔진이 예시 스프링은 테스트 폴더 위치에 resources 폴더가 있으면 그 파일을 우선적으로 사용하게 되는 데(없으면 main 폴더) 이때 src/test/resources/applic..
아래와 같이 디비 생성시 에러가 나올 경우 1. 해당 경로에 디비명.mv.db를 생성한다. (ex : jpabookshop.mv.db) 2. h2를 재실행한다 3. 잘 되는 걸 확인한다.
도커에서 아래와 같이 apm을 전부 정상적으로 설치했음에도 데이터베이스가 연결 안될 경우 아래 방법을 적용하면 됩니다., define( 'DB_NAME', 'myapp' ); /** MySQL database username */ define( 'DB_USER', 'root' ); /** MySQL database password */ define( 'DB_PASSWORD', 'secret' ); /** MySQL hostname */ define( 'DB_HOST', 'localhost' ); /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8' ); /** The Database Collate t..
MySQL Installer 다운로드 https://dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Community Server Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Select OS Version: All Windows (x86 dev.mysql.com 위 링크를 들어가서 아래 방식처럼 다운로드하시면 됩..
Larvel에서 Migration을 작성할 때 단일 칼럼에 대한 Unique 속성이 아닌 여러 개의 컬럼을 대상인 복합키로 Unique 속성을 줘야 할 경우 아래처럼 사용이 가능합니다. 기존처럼 단일 컬럼에 Uniuqe를 부여하는 것이 아닌 public function up() { Schema::create('테이블 명', function (Blueprint $table) { $table->id(); $table->foreignId('participant_id')->comment('참여자 아아디')->unique(); $table->foreignId('product_id')->comment('상품 아아디'); $table->timestamp('created_at')->index()->comment('참여..
phpstorm에 우측 상단을 보시면 Database 버튼이 보이실 겁니다. 클릭하시면 왼쪽과 같이 탭 하나가 펼쳐집니다. 왼쪽 상단에 + 버튼을 누르시면 창이 하나가 생기고 거기서 Data Source를 클릭하시고 원하시는 데이터베이스를 선택하시면 됩니다 저는 mysql을 기준으로 삼겠습니다. 그러면 다음과 같이 DB의 정보를 기입하는 창이 나옵니다. General 탭에서 Homestead의 ip인 192.168.10.10을 입력한 후 포트는 3306으로 나두신 다음에 사용자 정보를 바꾸지 않았다는 가정하에 기본인 Homestead/secret 을 입력하시면 됩니다. 이제 Database의 명칭만 기입하시고 Test Connection을 하셔서 확인한 후 적용하시면 됩니다.
1. 뷰란 MySQL 버전 5 이상부터 가능한 특정 명령문에 매칭된 가상 테이블입니다. SELECT, WEHRE, Sub Query, UNION, JOIN 등 다양한 결합과 조건으로 만들어진 데이터를 뷰를 통해 가상 테이블을 만들어 편리하고 빠르게 데이터를 액세스 할 수 있습니다. 특징 - 실제로 데이터를 저장하지 않고 오직 보여주는데 중점을 둔 기능입니다. - 뷰의 기반 테이블의 데이터를 수정할 경우 뷰에도 반영됩니다. - 뷰의 데이터를 수정할 경우 실제 데이터도 같이 바뀝니다. - 뷰로 생성된 가상 테이블에도 데이터를 삽입할 수 있습니다, 하지만 JOIN, UNION, Sub Query 등으로 만들어진 뷰에서는 데이터를 삽입할 수 없습니다, 하지만 그 외 뷰에서는 UPDATE 및 INSERT가 가능합..
1. 함수란 함수의 기본적인 개념은 사람이 숨 쉬는 것에 대해 갈비뼈와 횡격막의 상하 운동에 의해 흉강의 부피가 증가하면서 폐의 부피가 증가함으로 인해 폐 속의 공기압이 대기압보다 낮아지게 되어 공기가 들어오게 된다는 것을 생각하고 숨 쉬지 않는 것처럼 나는 숨을 쉰다고 생각하면 몸이 알아서 움직여주는 것과 같이 함수도 함수를 사용하는 것으로 그 속의 수많은 문장들을 불러오는 것입니다. 부르면 특정 동작을 해주거나 결과값을 주는 것입니다. 보편적인 프로그래밍 언어면은 대부분 존재하는데 MySQL도 함수를 선언할 수 있습니다. 2. 사용법 기본적인 형태는 아래와 같습니다. CREATE FUNCTION 함수명(매개변수 자료형) RETURNS 반환_자료형 BEGIN SQL 쿼리문 1; SQL 쿼리문 2; RE..