목록DB (33)
썩구노트
to_char(Recv.REG_DATE,'YYYY-MM-DD') case 21/07/2006 00.00.00
* Mysql에 3306 포트로 연결후 사용하다보면 트래픽이 적은경우(서비스 상용화전 테스트 중등.. )에 연결이 끊기는경우가 있다.(CR_SERVER_GONE_ERROR 등등)이는 Mysql이 연결된상태에서 일정시간 트래픽이 없으면 연결을 닫아버리기 때문이다(default 8시간)MysqlPing 같은 함수로 주기적으로 연결상태를 확인하고 재연결시켜주는 함수가 지원되지만믿을게 못된다. 다음과 같이 wait_timeout를 설정해보자1. vi /etc/my.cnf 에서 [mysqld] 항목에 wait_timeout = 20000(원하는 시간(초)) 설정후 재실행2. 제대로 적용됬는지 확인은 mysql로 들어가서 show GLOBAL variable; 에서 wait_timeout 추가>vi /etc/my...
A B 두 테이블이 있다고 가정하자A와 B는 id라는 컬럼을 공유하며 가지고 있다. A는 B를 포함하고 있다. 여기서 A 테이블의 id 에서 B테이블의 id를 제외한 결과를 가져오고 싶다면 select A테이블의 컬럼명 from A테이블 where id not in (select B테이블의 컬럼명 from B테이블); select id from A where id not in (select id from B); 를 하면 된다. 쉽게? 설명하자면 빨간색 공과 파란색 공이 섞여있는 상자에서 파란색 공을 빼고 싶으면 select 공 from 빨강 where 공 not in (select 공 from 파랑);
MySQL Workbench에서 덤프하는 방법이다.[그림 1] [그림 1] 과 같이 좌측 Navigator 메뉴에서 Data Export 를 클릭한다. [그림 2] [그림 2] 와 같이 덤프를 뜰 DB를 선택한 후 Export to Self=Contained FIle 로 선택해 준 이후 Dump Stored Routines 를 선택 해 준다. 이후 Start Export 를 눌러 진행하면 된다.(그림 클릭시 크게 볼 수 있다)
CONCAT CONCAT은 정해준 구분자를 기준으로 필드를 묶어주는 함수이다. 사용 방법은 다음과 같다. SELECT CONCAT(`필드1`,'구분자',`필드2`,'구분자',`필드3`) FROM 테이블명; CONCAT에 대해서 알아본 이유는 바로 이것때문이었다. 데이터 베이스에 다음과 같은 사전이 저장되어 있다. keyword syn 1인용 전기매트 1인용 전기요 1인용 전기매트 1인용 전열장판 1인용 전기매트 1인용 전기패트 .... .... keyword는 하나의 제품을 의미하고 syn은 그 제품명에 대한 동의어들이다. 따라서 내가 원한것은 하나의 키워드 들과 그 동의어들을 나열해서 출력하는 것이었는데 문제는 각 keyword 들에 대한 동의어의 수가 다르다는 것이었다. 그러다 발견한 것이 GROUP..
문제의 시작 Tree 형식으로 된 카테고리 정보를 데이터베이스화 하기 위한 작업을 하고 있었다. 기본적으로 카테고리 정보는 카테고리 이름과 고유 코드 번호 그리고 자식 노드들로 이루어 져 있었는데 그것을 이런식으로 데이터베이스에 집어 넣었다 고유 코드카테고리 명 부모 코드 1 삼성 0 2 노트북 1 3 핸드폰 1 ... ... ... 이제 하나의 카테고리 명에 대한 상위 카테고리의 정보를 얻으려고 다음과 같은 쿼리를 날렸다. mysql> SELECT * FROM CAT_TREE WHERE unique_code = (SELECT par_code FROM CAT_TREE WHERE cate_name = "애플" ) ; ERROR 1242 (21000): Subquery returns more than 1 r..
대소문자 구분하여 입력 및 출력 하기 varchar () = 대소문자 구분 안함 varbinary () = 대소문자 구분 함 따라서 테이블 생성시, 대소문자를 구분하고 싶을 경우, mysql> create table 테이블명 ( t1 varbinary(255) ); 를 하면 대소문자를 구분하는 필드가 생성 된다. 만약 기존의 char 나 varchar의 경우, 대소문자를 구별하여 출력하고 싶을때에는 binary(필드명) mysql> select word from word where word = binary('id');하면 된다. 사용예mysql> SELECT * FROM TOKEN_DIC WHERE token_name = 'icon';+------------+| token_name |+----------..
중복된 것 모두 찾기 SELECT 필드명, count(*) FROM 테이블명 GROUP BY 필드명 mysql> SELECT t1, count(*) FROM test GROUP BY t1 중복된 갯수가 n개 이상인 것 찾기 SELECT 필드명, count(*) as 변수명 FROM 테이블명 GROUP BY 필드명 HAVING 변수명>n mysql> SELECT t1, count(*) as num FROM test GROUP BY t1 HAVING num>1;+------------+-----+| t1 | num |+------------+-----+| tulip pink | 2 || 라일라 | 2 |+------------+-----+
ALTER 문에 대해서 좀 끄적여 놓으려 한다. 우선 ALTER문은 이미 존재하는 테이블의 구조나 형식등을 바꾸기 위해 사용한다. 따라서, 칼럼의 구조나 형식을 변경하기 위해 ALTER명령을 사용하게 된다. ALTER 명령어는 다음과 같다. 1. 테이블 형식 변경 - Engine 사용 : ALTER TABLE 테이블명 ENGINE=형식; - type 사용 : ALTER TABLE 테이블명 TYPE=형식; 2. 테이블 이름 변경 - ALTER TABLE 테이블명 RENAME 바꿀이름- RENAME TABLE 테이블명 TO 바꿀이름 3. 칼럼 추가 - 마지막에 추가 : ALTER TABLE 테이블명 ADD COLUMN 칼럼이름 칼럼타입 - 지정 칼럼 뒤에 : ALTER TABLE 테이블명 ADD COLUMN..
DB에는 코드값(예 : 1,2,3,4 ..)으로 저장되어 있는데 저장되어있는 코드에 해당하는 값을 지정해서 select 해올때오라클에서는 DECODE를 사용했었는데 MySQL의 DECODE는 오라클의 DECODE와는 용도가 달라 CASE 문을 이용해야 합니다. SELECT id, ( CASE collegian_state WHEN 0 THEN '마감' WHEN 1 THEN '접수중' WHEN 2 THEN '예정' END )AS stateFROM tablename 위 쿼리 처럼 CASE 필드이름 WHEN 원본값 THEN 받을값 END 형식으로 사용하면 됩니다.