개발바닥곰발바닥
반응형
article thumbnail
[MySQL] 프로시저 WHILE 사용해서 UPDATE 쿼리 날리기
데이터베이스 2022. 11. 13. 02:37

학교 팀 프로젝트 진행 중 project 테이블에 mockaroo를 이용해서 더미 데이터를 넣는 작업을 진행했는데, project 생성 시 project_team 테이블에 해당 project의 리더 id가 insert 되어야 했다. 1000개의 row에 수작업으로 일일이 넣어주는 건 엄두가 안 나서 MySQL의 저장 프로시저(Stored Procedure)를 사용하기로 했다. 우선 저장 프로시저가 무엇인지 정의부터 알아보고 사용한 프로시저의 내용을 설명하겠다. 저장 프로시저(Stored Procedure)란? 저장 프로시저는 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. DB에 대한 일련의 작업을 정리한 절차를 RDBMS에 저장한 것으로 영구 저장 모듈이라고도 불린다. 저장 프로시저..

[MySQL] DATE, DATETIME, TIMESTAMP의 차이
데이터베이스 2022. 6. 23. 02:57

MySQL DATE, DATETIME, TIMESTAMP 차이점 Mysql에서 데이터 타입을 선택할 때, DATE와 DATETIME 간의 차이는 다들 알고 있지만 DATETIME과 TIMESTAMP 간의 차이점은 헷갈리는 경우가 많다. 그래서 오늘은 이 세 가지 타입에 대해 정리해보려고 한다. DATE DATE는 시간을 제외한 날짜를 저장하는 타입으로 기본 포맷은 ‘YYYY-MM-DD’이며, ‘1000-01-01’부터 ‘9999-12-31’까지 저장할 수 있다. DATETIME DATETIME은 날짜와 시간을 함께 저장할 수 있는 타입으로, 기본 포맷은 ‘YYYY-MM-DD HH:mm:ss’이며, ‘1000-01-01 00:00:00’ 부터 ‘9999-12-31 23:59:59’까지 저장할 수 있다. T..

[MySQL] Database 이름 변경하기
데이터베이스 2022. 1. 25. 20:39

MySQL 5.1.23 버전 이후로 RENAME DATABASE 구문이 제거되었기 때문에 이미 생성한 데이터베이스의 이름을 변경하고 싶은 경우, 새로운 데이터베이스를 만들어서 그 데이터베이스에 기존 데이터베이스를 옮겨주는 방식으로 가능하다. 1. RENAME TABLE 사용 CREATE DATABASE '새로운 DB명'; RENAME TABLE '기존DB.테이블명' TO '새DB.테이블명'; DROP DATABASE '기존DB명'; 방법은 매우 간단하지만 테이블이 많을 경우 작업을 여러번 해야 한다는 번거로움이 있다. concat을 사용하여 반복 작업을 자동화 하는 방법이 있지만 이 게시글에선 따로 설명하지 않고 MySQL 공식 문서에 있는 방법을 소개한다. 2. mysqldump 사용 $> mysqld..

Mysql 예약어를 필드명, 컬럼명으로 사용시 해결방법
데이터베이스 2021. 11. 23. 11:12

insert문을 작성하는데 분명 맞게 쓴 것 같았는데 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key' 라는 오류가 떠서 확인해보니 컬럼명이 key라는 예약어와 동일한 이름으로 되어 있어서 예약어로 인식해서 오류가 난 상황이었다. 이런 경우 아주 간단하게 해결할 수 있는데, 쿼리문의 컬럼명 앞 뒤에 `key`처럼 TAB 키 위에 있는 ` 키 ( Single quotation )로 감싸주면 된다. string insertQuery = "insert into table(a,b,`key`) values('1',..

MySQL 외부/원격 접속 안될 때(공유기 사용자)
데이터베이스 2021. 5. 17. 04:58

프로젝트 중에 데이터베이스로 MySQL을 사용하게 되었는데 계정을 만들어서 호스트를 %로 주고, 권한을 줬는데도 외부에서 접속이 안되는 상황이 발생해서 하루 내내 구글링을 하면서 고생하고 있었는데, 공유기 사용중인 경우에는 따로 포트포워딩을 해줘야 외부에서 접속이 된다는걸 알았다. 방화벽 인바운드 정책에서만 포트를 열어주면 된다고 생각하고 있었는데 미처 공유기 포트포워딩은 생각 못했었고 검색했을 때도 몇페이지를 뒤지는 동안 그런말은 안나왔으니 혹시 나같은 사람이 있다면 도움되길 바라며.. 공유기를 사용하는 경우에는 공유기 설정 페이지에 가서 3306(MySQL 기본 포트 / 다른 포트 사용시 사용하는 포트)를 열어줘야 한다. 그리고 나같은 경우에는 DDNS를 이용해 도메인도 만들어서 그 주소로 외부에서 ..

반응형