반응형

과거의 유산들/데이터베이스 8

데이터베이스(JSON,내부조인)

JSON 데이터 JSON에 대하여 착각을 하고 있었다. JavaScript Object Notation이라는 이름 때문에 자바스크립트로만 이용하는 데이터 형식인줄 알았다. 그러나 JSON은 js에서 파생된건 맞지만 언어에 종속된 개념이 아닌 그냥 데이터 포맷을 나타내는것이다. key, value로 이루어진 {}로 묶인 것을 의미한다. { "쉬는시간" : "오후 4시", "취침시간" : "우후 11시", "기상시간" : "오전 7시" } mysql json데이터로 활용할 수 있는 함수들이다. use cookDB; SELECT * FROM userTBL; SET @json='{"userTBL": [ {"name":"강호동","height":182}, {"name":"이휘재","height":180}, {"n..

데이터베이스(데이터 형식과 종류,변수와 형변환,내장함수)

숫자 데이터 형식 데이터 형식 바이트 수 숫자범위 설명 BIT(N) N/8 1~64BIT 표현 b'0000'형식으로 저장 TINYINT 1 -128~127 정수 저장 BOOL BOOLEAN 1 -128~127 정수 저장 TINYINT(1)과 동일 0은 FALSE로, 그 외는 TRUE로 취급 SMALLINT 2 -32768~32767 정수 저장 mediumint 3 -8388608~8388607 정수 저장 INT INTEGER 4 21억~21억 정수 저장 BIGINT 8 -900경~900경 정수 저장 FLOAT 4 -3.40E+38~-1.17E-38 소수점 이하 7자리까지 저장 DOUBLE REAL 8 -1.22E-308~1.79E+308 소수점 이하 15자리까지 저장 DECIMAL(m,[d]) DEC(m..

데이터베이스(윈도우 함수, 피벗,with,cte)

윈도우 함수: 행과행 사이 관계 정의, OVER절이 들어간 함수 집계함수 : avg,count,max,min,stddev,sum,variance 비집계함수:cume_dist,dense_rank,first_value,lag,last_value,lead,nth_value,ntile,percent_rank,rank,row_number 순위함수 : rank,ntile,dense_rank,row_number등과 같이 순위를 매기거나 그룹을 지을 수 있다. () OVER( [PARTIOTION BY] ORDER BY ) row number 시 순위를 매김 ex)키 큰 순으로 순위 매긴 코드 USE cookDB; SELECT ROW_NUMBER() OVER(ORDER BY height DESC) AS "키큰순위", ..

데이터베이스(데이터 삽입,수정,삭제)

INSERT INTO 테이블 이름 (열1,열2,,,) VALUES (값1,값2,,,); #테이블에 데이터 추가 그러나 기본키가 중복되면 새로 삽입한 내용으로 수정해서 삽입하는 방법,중복 없으면 그냥 삽입, 중복시 해당 값을 새로운 값으로 덮어쓰기 INSERT INTO 테이블 이름 VALUES (값) ON DUPLICATE KEY UPDATE 열=값,,,,,; AUTO_INCREMENT : 자동으로 1씩 증가하는 열로 따로 지정할 필요 없다(NULL로 지정). 단 해당 열은 PRIMARY KEY, UNIQUE KEY로 지정을 해줘야한다. CREATE TABLE testtbl2 ( id int AUTO_INCREMENT PRIMARY KEY, userName char(3), age int ); INSERT ..

데이터베이스 (group by, having, between and, in, like, any=some,all, distinct, limit, 집계 함수,with rollup,%,_)

1.BETWEEN AND, IN 숫자와 같이 연속적인 값에 조건문을 걸 때 SELECT userName, height FROM userTBL WHERE height>=180 AND height (SELECT height FROM userTBL where addr = '경기'); 경기 지역에 있는 사람들의 키를 기준으로 더 큰 데이터를 출력하는 문장이다. 그러나 만약 경기 지역에 키가 다양하다면 기준을 잡을 수 없기에 에러가 뜬다. SELECT userName, height FROM userTBL WHERE height> any (SELECT height FROM userTBL where addr = '경기'); 따라서 any(some),all연산자가 등장한다. any(some)과 같은 경우에는 경기 지역..

데이터베이스 (외래키 , 백업)

처음에 외래키를 자동 업데이트 하는 기능으로 이해했다. 따라서 외래키로 맺어진 열은 부모 테이블에서 데이터를 추가하거나 삭제하자마자 자식테이블에서도 업데이트가 될줄 알았다. 그러나 그런 기능이 아닌, 참조 무결성을 위해 설정해 놓은 제약 사항과 같은 것으로 이해가 되었다. 부모테이블에 없는 데이터를 자식테이블에 추가(insert)하면은 추가가 되지 않는다. 그러기 위해서는 먼저 부모테이블에 연관 데이터를 추가한 후에 자식 테이블에 추가시킬 수 있다. 마찬가지로 삭제 또한 자식테이블에 연관 데이터 있는 부모테이블의 데이터는 삭제가 불가능하다. 왜냐하면 부모테이블의 데이터가 삭제되면 그 데이터를 참조하고있는 자식테이블 데이터가 꼬여버리기 때문이다.(반대로 자식테이블의 데이터 삭제는 자유롭다) 데이터 꼬임을 ..

데이터베이스(인덱스,뷰,스토어드 프리시저,트리거 훑어보기)

CREATE INDEX 인덱스 이름 ON 인덱스테이블(열이름) 인덱스 만드는 코드, 열이름에 색인 만들어 열이름 탐색시 더 빨라진다. CREATE VIEW 뷰이름 AS SELECT 필요한 열데이터 FROM 데이터테이블 원본 데이터테이블과 다르게 테이블에서 추출한 열데이터만 보여주기 가능, 원본 데이터와는 분리되어 있어 데이터 중복문제 회피가능 DELIMITER // CREATE PROCEDURE 함수이름() BEGIN 기능 적기 END // DELIMITER ; 함수의 기능을 하는 스토어드 프로시저는 여러 기능을 하나로 묶어서 편리하게 호출하면 여러 동작들이 수행된다. DELIMITER // CREATE TRIGGER 트리거 이름 AFTER 작업 종류 ON 트리거를 부착할 테이블 BEGIN 기능들 END..

데이터베이스 (기초용어,query)

기본 용어 데이터 : 정보 테이블 : 데이터를 담는 표 데이터베이스 : 테이블 담는 저장소 DBMS : 데이터베이스 관리 소프트웨어 like mysql, sqlite 열(필드) : 데이터 이름 표시, 이름은 중복되면 안되고 고유해야함 데이터형식 : 열의 데이터 형식, INT,CHAR등과 같은 행(레코드) : 실질적인 데이터를 입력하는 곳 기본키(주키,Primary Key) : 각 행을 구분하는 유일한 열, 중복되면 안되고 비어도 안된다. 외래키 : 두 테이블의 관계를 맺어주는 키 sql : DBMS 다루는 언어 SELECT 문 : 데이터 조회 SELECT 열이름 FROM 테이블 WHERE 조건; SELECT * FROM memberTBL WHERE memberName ='Peter'; # 멤버이름이 pe..