티스토리 스토리 서비스 목록 프로그래머가 되고픈 구구콘검색하기 DB/MySQL [MySQL] Delimiter 사용법 프로호구래머 2020. 9. 16. 21:56 우선, 영어로 delimiter는 구분자를 의미한다. 그러므로 MySQL에서는 구분자를 변경하기 위해 delimiter 명령어를 사용한다. mysql에서 구분자를 디폴트로 세미콜론(;)을 문장 구분자로 이용한다. select * from hogu; Each stored program(Trigger나 Procedure을 의미하는 듯 하다.)은 body에 SQL문을 포함할 수 있다. 포함된 SQL문은 세미콜론(;)으로 나뉘어진 여러 문장들로 구성된 복합문 일수도 있다. 만약 delimiter를 재정의하지 않은 예시이다. CREATE PROCEDU..
콘솔로 마리아 db 접속해서 프로시저를 실행하려고 했다. mysql -uzzz -p 이런식으로 마리아 db 로그인 해서 MariaDB [zzz]> 이런상태에서 프로시저를 실행하려고 했는데 에러가 났다. CREATE OR REPLACE PROCEDURE `aa`( OUT `RESULT` ) COMMENT 'aa' BEGIN DECLARE _row_count INT DEFAULT 0; ... END 이런식의 프로시져.. 하지만 실행했더니 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use ne..
SQL 오류 (1630): Function SUBSTRING does not exist. Check the 'Function Name Parsing and Resolution section in the Reference Manual 마리아 db , 하이디 SQL에서 SUBSTRING 함수를 사용할 일이 있어서 했는데 위와 같은 오류가 발생하였다. 이상하다.. SELECT SUBSTRING ( user_nm, 1,1) 하이디에서는 소문자로 치면 자동으로 대문자로 바꿔줘서 substring 이라고 쳤는데 저렇게 대문자로 바꼈다. 한칸씩 스페이스 눌러서 띄는 사람들이 있다. 그렇게 했는데.. 알고 보니 띄어쓰기가 문제였다. select SUBSTRING(user_nm,1,1) 이렇게 하면 에러가 발생하지 않았다.
개발을 하다보면 db sql import 할 일이 생긴다. 그냥 쿼리문을 하이디 sql 등에서도 할 수 있지만 빠르게 여러건 한다거나 콘솔에서만 작업해야 할 때 사용하면 좋다. 일단 sql 파일이 있어야 하니 sql 파일을 올린다. putty 등에 접속할때 디폴트로 나오는 곳에 올리면 좋다. 따로 경로 입력안해도 되니.. 그런 다음 mysql -u아이디 -p패스워드 디비명 < a.sql 하면 바로 임포트가 된다. 패스워드를 입력안하고 -p 만 써도 된다. 그럼 Enter password: 가 나오고 패스워드를 매번 입력해줘야 하니 그냥 본인이 작업할거면 패스워드 입력해서 해도 별 무리 없을 듯.. 만약 패스워드를 본인외에 아무도 몰라야 하는 상황 이라면 할 수 없고.. 암튼 위와 같이 하면 바로 impo..
특정 화면이 30초 이상 느리게 나왔다. 왜 그러지.. 삽질 시작! 일단 가장 의심이 되는게 쿼리다. 머 대부분 그런듯.. 느릴때 당황하지말고.. 당황하면 궤변만 늘어놓기 때문에.. 서로 시간 낭비다. 당황스럽겠지만 당황하지말고 원인을 찾고 해결하면 된다. 사실 원인만 찾으면 해결은 쉽게 되는 편이다. 무슨일이든 그렇듯.. 특정 화면만 들어가면 CPU도 100% 가까이 친다. 쿼리만 뽑아서 실행해봤더니.. 역시나 느리다. 증상이 재현되니 그나마 다행. 로컬에서 재현되는게 가장 좋다. 그럴려면 구성을 잘해야 하고 동기화도 항상 해놔야 된다. 자 그럼 실행계획으로 원인을 잡아본다. 실행계획이 어려운지 알았는데 그냥 explain 만 쿼리 상단에 붙여주면 된다. analyze 를 붙여주는 방법도 있다. exp..
SET @rownum:=0; SELECT @rownum:=@rownum + 1 as rNum, t1.* FROM TABLE_NAME t1 ; 하이디 sql 등 db 툴에서 쿼리만 실행할때 rNum이 잘 안나올 수 있다. NULL이나 1번부터 시작이 아닌.. 왜그런가 봤더니 세미콜론으로 2개의 쿼리가 있어서 그랬다. 프로그램에서 mybatis 안에 쿼리가 있을때는 한번에 실행이 되겠지만 하이디sql 등에서 세미콜론에 있는 쿼리만 실행하는 (현재 쿼리 실행) ctrl + shift + F9 를 누르면 잘 안될 수 있다. SET 부분이 실행이 안되고 SELECT에 커서를 두고 실행한 경우.. 그래서 SET 부분도 같이 실행이 되야 하니 그냥 실행 F9를 눌러서 하면 잘 된다. 그리고 join 및 정렬 ORDE..
마리아 db를 사용하다 보면 사용자를 새로 만들어야 할 일이 생긴다. 일단 마리아 db에 접속을 한다. 관리자 계정 id는 ss, 패스워드는 ss 추가할 사용자 id는 suser, 패스워드 suser 라고 해보자. mysql -uss -p 하면 Enter password: 라고 나오고 패스워드를 입력한다. 그러면 마리아 db에 접속이되고 Welcome to the MaridDB monitor. ... MariaDB [(none)]> 계정이 옯바르다면 이렇게 마리아 DB 프롬프트로 바뀔 것이다. 어떤 데이터 베이스가 있는지 보자 show databases; 어떤 사용자가 있는지 보자 select host, user from mysql.user; 사용자를 생성해 보자 create user 'suser'@'%..
마리아 db 쿼리를 짜다가 이상한 현상을 발견했다. 특정 컬럼(check_mm)에 NULL하고 'N' 등이 섞여 있었다. where 절에 check_mm='N' 하니 N 값인것만 잘 나왔다. 하지만.. N이 아닌것을 뽑아내려고 check_mm!='N' 했더니 NULL로 들어가 있는 데이터들이 안나오는 것이였다.. 이런.. 할 수 없이 ifnull을 사용해서 null 처리를 한번 한 후 바깥쪽에 select를 한번 더 사용해서 N이 아닌 row들을 추출할 수 있었다.
마리아 db insert 쿼리를 실행하려고 했는데 SQL 오류 (1136): Column count doesn't match value count at row 1 이런 에러가 발생했다. 흠.. 뭐지.. 알고보니.. 머 답이 다 나와 있지만 해석해보면 컬럼 갯수가 value 구문의 갯수와 맞지 않다. 그래서 갯수를 세어보니 insert into AA () values (); 앞의 컬럼 갯수가 values 갯수보다 1개가 많았다..
- Total
- Today
- Yesterday
- 파싱
- 포인터
- JDBC
- 플러터
- proc
- webix
- EC
- 프로씨
- php
- 파이썬
- 자바
- KG
- 자바 smtp
- 이클립스
- 문자열
- 라이믹스 모듈
- xe애드온
- ocajp
- Python
- xe addon
- 인포믹스
- 오라클
- C
- ocjap
- C언어
- XE
- XE3
- esql
- MySQL
- 스크래핑
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |