일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- FSL
- error
- AWS
- EC2
- kernel
- object detection
- pm2
- Homogeneous Coordinates
- Dual energy X-ray
- x-ray
- procedure
- ml
- relaxation time
- https
- pytorch
- MySQL
- MRI
- Map-reduce
- coursera
- Cost Function
- nodejs
- git
- ssl
- 평가지표
- Emoji
- NRMSE
- Anaconda
- 동차좌표계
- CT
- ubuntu
- Today
- Total
목록DB/MYSQL (8)
Pay it Forward
MYSQL에서 Insert 를 통해 Data를 넣는 과정에서 이미 Table에 존재하는 Data의 경우는 중복되는 것을 방지하기 위하여 Insert 를 방지하고 싶은 경우가 있습니다. 이러한 경우에는 Insert 문의 Where 절에 NOT EXIST 를 사용하여 구현할 수 있습니다. INSERT INTO [Table 명] ('Col 1', 'Col 2') SELECT '값 1', '값 2' FROM DUAL WHERE NOT EXISTS (SELECT 'Col 1', 'Col 2' FROM [Table 명] WHERE 'Col 1' = '값 1' AND 'Col 2' = '값 2') 이 SQL문은 넣고자 하는 Data를 이미 포함하지 않는, 즉 중복되지 않도록 하는 DUAL 이라는 임의의 Table을 ..
MYSQL을 이용하여 DB를 관리하던 도중, 이모티콘(이모지-emoji)를 저장하면 error를 띄우거나 '?' 로 저장되는 현상이 발생합니다 이는 MYSQL의 character type이 이모지를 저장하지 못하는 utf8로 설정되어 있기 때문입니다 따라서 이를 해결하기 위해 MYSQL 5.5.3 버전 이후부터 제공하는 utf8mb4로 character set을 설정하여 해결할 수 있습니다. utf8과 utf8mb4의 차이점? 이모지와 같은 글자들은 글자당 최대 4bytes가 필요합니다 하지만 utf8은 글자당 최대 3bytes까지 지원하는 가변 자료형 입니다 따라서 가변 4bytes의 문자열을 저장할 수 있는 utf8mb4를 사용하면 이모지를 저장할 수 있습니다. 로컬에서 Mysql을 사용하는 경우 해..
프로시져의 조건문에서 프로시져를 미리 마치는 경우 (예외처리가 되는 경우)를 만나게 되면 뒤의 나머지 코드들을 실행하지 않고 곧바로 종료분기를 하고 싶은 경우가 있습니다 즉, C, C++ 등의 언어에서 return 0; 의 역할을 하는 코드를 사용하고 싶은 경우입니다 MYSQL에서는 이러한 역할을 블록(block)의 개념으로 구현할 수 있습니다 BEGIN 과 END 로 블록을 지정하고 이 블록 내에서 leave 과 같이 코드를 작성하면 종료분기와 같은 기능을 합니다. 다음은 예제 코드입니다 proc_body: BEGIN DECLARE result INT default 0; SET result = (SELECT userIdx From User WHERE userName = 'artiiicy'); IF re..
프로시져를 이용하면서 가장 빈번하게 사용될 코드가 바로 SELECT문의 결과를 이용하여 다른 SQL문을 실행하는 것입니다 이는 새로운 변수에 SELECT 결과를 저장하여 조건문 등으로 이용하여 구현할 수 있습니다. 아래는 예제 코드입니다 DECLARE result INT default 0; SET result = (SELECT count(*) From User WHERE userName = 'artiiicy'); IF result = 1 THEN SELECT 'yes'; ELSE SELECT 'no'; END IF; 위의 코드는 result 변수에 User Table에 artiiicy라는 유저가 있는지 검색하여 결과에 따라 'yes' 혹은 'no'를 반환하는 코드입니다
Mysql에서 update 문을 쓰다가 발견하는 흔한 에러 Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.000 sec 해결방법이 나오지만 이보다 더 쉽게 아래와 같은 명령어를 입력하면 바로 해결! set sql_safe_updates=0;
MYSQL에서 field(=column)안에 string이 들어가있는 경우 이 문자열을 내 마음대로 잘라서 필요한 부분만 추출해 내고 싶은 경우가 있습니다 저 같은 경우에는 문자열이 들어있는 field의 일부를 추출해내어 다른 filed의 값으로 입력하기 위해 사용하였습니다 MYSQL은 이러한 기능을 SUBSTRING_INDEX 을 통해 손쉽게 제공해 줍니다 SUBSTRING_INDEX(field 명, '[split 기준이 될 문자]', num) SUBSTRING_INDEX의 매개변수는 다음과 같습니다 첫 번째 인자 : 문자열이 value로 들어있는 field의 이름입니다 두 번째 인자 : split 기준이 되는 문자입니다. 해당 문자를 기준으로 문자열이 나누어집니다 세 번째 인자 : (+)의 값인 경우..
MYSQL을 통해 DB를 만지던 중 알게된 Transaction. 보통 mysql:workbench 등의 Tool을 이용하여 DB를 바꿀 때, UPDATE문을 곧바로 사용하곤 한다. 이 때, 실수로 바꾸고자 하는 레코드가 아닌 다른 레코드를 변경해버린다면? 백업해 둔 DB가 있다면 다행이지만 없다면 이는 매우 치명적이다. 따라서 UPDATE와 같이 DB의 내용을 수정, 삭제할 때에는 Transaction(트랜잭션)을 이용하는 것이 좋다! Transaction 이란? DB의 내용 및 상태를 변환시키는 기능을 수행하기 위해, 한 번에 모두 수행되어야 할 일련의 작업 단위이다. Transaction의 성질 Atomicity (원자성) : 트랜잭션의 작업은 시작되었다면 모두 실행되어 반영되거나 혹은 아예 반영되..
프로시져 연습을 위하여 간단한 프로시져를 만들어 보았다. 구현한 프로시져는 name을 파라미터로 받아 User라는 Table에서 해당 name값을 가진 레코드의 age를 25살로 바꾸는 프로시져이다. 해당 프로시져를 만들기 위해서는 input parameter 값에 따라 실행할 쿼리의 내용이 달라지기 때문에 동적쿼리에 대해서 알아야 했다. 동적쿼리 사용방법 SET @variable = "variable"; SET @sql = "SELECT * FROM table WHERE field = ?"; PREPARE dquery FROM @Sql; EXECUTE dquery USING @variable; - PREPARE a FROM @b : b문을 대신할 a라는 변수를 만드는 구문. - EXECUTE a USI..