목록분류 전체보기 (97)
썩구노트
중복된 것 모두 찾기 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 |+------------+-----+
MySQL 데이터베이스 용어 정리 (관계데이터베이스) 그래. 나는 초보다! 궁서체다. 진지하다 Attribute Tuple 릴레이션 (relation) 같은 성격의 데이터들의 집합을 의미. 흔히 테이블이라고 말하는 용어와 같은 의미로 이론적인 용어. 릴레이션은 튜플과 에트리뷰트로 데이터를 정렬하여 관리한다. 튜플 (tuple)릴레이션의 각 행을 의미. 흔히 일반적인 용어로 레코드(record)와 로우(row)와 같은 의미로 사용된다. 에트리뷰트(attribute)릴레이션에서 이름을 가진 하나의 열을 말한다. 흔히 일반적인 용어로 칼럼(column)과 같은 의미로 사용된다. 디그리(degree)에트리뷰트의 수를 말한다. 카디널러티(cardinality)튜플들의 수를 말한다. 릴레이션의 특징 - 한 릴레이션..
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 형식으로 사용하면 됩니다.
DISTINCT는 주로 UNIQUE한 컬럼이나 튜플(레코드)을 조회하는 경우 사용되며, GROUP BY는 데이터를 그룹핑해서 그 결과를 가져오는 경우 사용되는 쿼리 형태이다. 하지만 두 작업은 조금만 생각해보면 동일한 형태의 작업이라는 것을 쉽게 알 수 있으며, 일부 작업의 경우 DISTINCT로 동시에 GROUP BY로도 처리될 수 있는 쿼리들이 있다. 그래서 DISTINCT를 사용해야 할지, GROUP BY를 사용해서 데이터를 조회하는 것이 좋을지 고민되는 경우들이 가끔 있다. 간단하게 아래 예를 살펴 보자 1. SELECT DISTINCT fd1 FROM tab; 2. SELECT DISTINCT fd1, fd2 FROM tab; 위의 두개 쿼리는 간단히 GROUP BY로 바꿔서 실행할 수 있다. ..
보통 로그인을 할 때 보면 아이디를 입력하는 칸 오른쪽에 id저장하기 체크박스가 있는 것을 볼 수 있다. 체크를 하면 다음에 그 페이지를 열었을 때, 다시 입력하지 않아도 저장된 아이디가 입력되어있다. 아래 소스는 그것을 구현한 것인데.. 세션이 아닌 쿠키를 사용한 이유는 브라우저를 닫고 다시 열었을 때에도 ID가 남아있게 하기 위해서였다. 자바단에서 처리해야 할지 화면단에서 처리해야 할지 고민이 조금 있었지만, 가벼운 소스를 굳이 자바단에 태울 필요가 있을까 싶기도 하고, 어떤 것은 자바단에 어떤 것은 화면단에 넣는 것도 유지보수할 때 번거로울 것 같아서.. 그냥 자바스크립트로 다 화면단에서 해주기로 했다. id를 입력받는 input text 태그와 그 옆에 id 저장하기 input checkbox를 ..
Overview안정적인 서비스 유지를 위해서는 쿼리 작성이 상당히 중요합니다. 잘못된 쿼리 하나가 전체적인 퍼포먼스를 크게 저해하기도 하고 최악의 경우 장애 상황까지 치닫기 때문이죠단일 코어에서 Nested Loop Join으로 데이터를 처리하는 MySQL 특성 상 쿼리 구문에 큰 영향을 받습니다. (반드시 알아야할 MySQL 특징 세 가지 참고)그래서 오늘은 쿼리 작성 시 기피해야 하는 사항 세 가지정도 골라봅니다.Case 1SELECT @RNUM:=@RNUM+1 AS RNUM, ROW.* FROM (SELECT @RNUM:=0) R, ( SELECT M.MASTER_NO, M.TITLE, MI.PATH, M.REGDATE, CM.TYPE FROM MAIN AS M LEFT OUTER JOIN TAB0..
MySql에서 Oracle에서 처럼 ROWNUM을 구하기 위한 방법을 찾다가 세션변수를 이용한 방법을 찾게 되었습니다. @rownum 을 사용하는 방법인데, 어떻게 활용하는지 알아보겠습니다. ▶ 사용법 1 SET 구문을 사용하여 초기화 ▶ 사용법 2 FROM절에서 초기화 ▶ 사용법 3 WHERE절에서 초기화 ▶ 사용예제 ▶ 초기화 구문이 없을 경우 ▶ JOIN문이 포함된 경우 SELECT 구문에 ROW번호를 구하기 위한 수식을 추가합니다. @rownum:=@rownum+1 ▶ 사용법 1 SET 구문을 사용하여 초기화 SET 구문을 사용하여 조회하기 전에 rownum을 초기화 하고, 데이터를 조회합니다. SET @rownum:=0; SELECT @rownum:=@rownum+1 FROM 테이블명; ▶ 사용..
출처 - http://cjbox.tistory.com/39where절에 if문처럼 and조건 사용하기where절 AND (((30 = A.QRY_RNG ) AND (A.REQ_DEPT LIKE '%'||''||'%')) OR ((10 = A.QRY_RNG ) and (A.RE...cjbox.tistory.com where절AND (((30 = A.QRY_RNG ) AND (A.REQ_DEPT LIKE '%'||''||'%')) OR ((10 = A.QRY_RNG ) and (A.REQ_DEPT LIKE '%'||?||'%'))) 위 구문을 풀이해보면 if (30 == A.QRY_RNG) { A.REQ_DEPT_LIKE '%'||''||'%'}else if ( 10 == A.QRY_RNG) { A.REQ_..
다음은 테이블(purchaseT) 정보이다. 이 테이블은 날짜와시간대 별로 각 회원의 구매물품을 저장한다. 다음은 테이블을 생성하기 위한 DDL문이다. 주석은 '--' 다음에 반드시 한칸(' ')을 띄어쓰기하고 기술해주어야 한다.create table purchaseT ( idx int not null primary key auto_increment, -- 구매정보idx member_id int not null, -- 회원id product_id int not null, -- 상품id buydate datetime not null -- 거래일자 ); idxmember_id product_id buydate 1gildong orange 2011-01-30 01:34:37 2mildongapple 2011-..