DB 101

NULL관련 함수

NVL(col,exp2)col이 null이면 exp2를 반환한다.ex)select nvl(col,"없음")from table NVL2(col, exp1, exp2)col이 값이 있으면 exp1을 반환, 값이 없으면(null이면) exp2를 반환ex)select nvl(job, "직업있음","직업없음")from table nullif(col1,exp)col1이 exp와 같으면 null반환, 다르면 col1을 반환* 특정값을 제외하고싶을 떄 사용ex)--nation컬럼에서 한국만 null로 나온다.select nullif(nation, "한국")from table coalesce(col1,col2,col3...)첫번째로 null이 아닌값을 반환한다.ex)select coalesce(col1, col2, co..

DB/SQL 2024.06.27

[SQL] 날짜 함수

MONTHS_BETWEEN(d1,d2)d1, d2두 날짜의 개월수 차이 반환months_between('22/09/01','22/01/11') => 7.677 ADD_MONTHS(d1,N)d1에 N개월 더함ADD_MONTHS('22/01/31',3) => 22/04/30 NEXT_DAY(d1, 'n요일')d1이후 날짜중 처음으로  n요일이 되는 날짜.next_day('24/06/27','금요일') => 24/06/28' LAST_DAY(d1)D1날짜 월의 마지막 일을 리턴last_day('24/06/27') => 24/06/30 TO_CHAR(date_col, 'format')날짜를 문자로 바꿔주는 함수. 포멧에 따라 다양한 형태로 표현이 가능함.format내용YYYY년도MM월MONTH전체 월 이름MON..

DB/SQL 2024.06.27

[SQL] 문자열 조건 escape

escape?문자열을 검색할때 '%' 혹은 '_'를 이용하여 검색할 떄가 있다.이떄 '%'나 '_'를 특정 기능이 아닌 문자 그 자체로 취급하고 싶을 때 escape를 쓴다. 방법조건절에서 escape의 기준이될 문자열(\)을 정하고,  뒤에  명시해준다.where col_name like '100\%' escape '\' 예시예시1.select *from employeeswhere job_id like 'abc\_def' escape '\';=> '_'가 아무 1글자를 의미하는것이 아니라, 언더바('_')라는 문자 자체로 인식된다. 예시2.select *from employeeswhere percentage like '98\%' escape '8';=>'%'가 아무글자를 의미하는 것이 아니라, 퍼센트..

DB/SQL 2024.06.27

스칼라 서브쿼리

스칼라 서브쿼리- 오직 한행만 반환하는 select문에 쓰는 서브쿼리- 마치 join의 효과를 볼 수 있다.- ex)table: scoreidnamekormatheng학생 id이름국어점수수학점수영어점수 위와같은 테이블에서 학생별 국어, 수학, 영어점수의 평균을 구하고자 한다면, 다음과 같은 스칼라 서브쿼리를 이용할 수 있다.select id, name (select (kor+math+eng)/3 from score A where A.id=B.id) from score B;=> 서브쿼리에서 (kor+math+eng)/3이 하나의 행씩 반환하여 id가 같은 것에 매핑된다.

DB/SQL 2024.05.02

[SQL] DML (update,select,insert,delete)

INSERT* insert는 into를 써준다!(1) insert into (테이블) (컬럼1,컬럼2...) values (데이터1, 데이터2...);insert into emp(empno,ename) values(1000,'임베스트');/* 아래처럼 컬럼을 생략해도 된다. 하지만 이때는 1000이 들어갈 숫자형 컬럼과 '임베스트'가 들어갈문자형 컬럼이 각각 하나씩만 있어야 한다 */insert into emp values(1000, '임베스트'); (2) select 이용하여 insert--dept에서 모든 데이터를 dpet_test에 입력한다insert into dept_test select * from dept;   SELECT(1) select 기본select * --컬럼from emp --테..

DB/SQL 2024.04.30

[SQL] 연속된 년도 구하기

연속된 년도 구하기 DB에 다음과 같은 데이터가 있다고 가정했을 때, 연속된 년도(혹은 어떤 숫자든)가 얼마나 있는지 확인하는 쿼리 ex ) [인원별 수상내역]테이블이 아래와 같을때 2년이상 연속으로 수상한 사람을 구하시오 수상년도 성명 2014 A 2013 A 2016 B 2020 B 2020 C 2021 C 2019 C => A(2013, 2014 2년연속 수상), B(2019, 2020, 2021 3년 연속 수상)를 출력해야 한다. 방법 핵심 아이디어는 "년도를 오름차순으로 정리하고 순서대로 인덱스를 매기는것" 그 후 현재년도(혹은 수상년도 컬럼에서 가장 max값)에서 수상년도값을 뺀값과 index를 더하는것 1. 수상년도와 이름을 오름차순으로 정렬 수상년도 성명 2013 A 2014 A 2016 ..

DB/SQL 2024.02.26

트랜잭션 격리수준(isolation level)

트랜잭션 격리수준 발생에러 \ 트렌잭션 격리수준 Dirty Read Non-Repeatable read Pantom Read 격리수준 낮음 . . . . . 격리수준 높음 READ UNCOMMITED 발생 가능 발생 가능 발생 가능 READ COMMITED 없음 발생 가능 발생 가능 REPEATABLE READ 없음 없음 발생 가능 SERIALIZABLE 없음 없음 없음 READ UNCOMMITED 가장 낮은 격리수준으로서 커밋되지 않은 데이터를 볼 수 있음. 따라서 dirty read오류 발생 READ COMMITED 커밋된 데이터만 읽는것. 다른 A 트랜잭션에서 변경한 데이터를 읽을 때 B 트랜잭션에서 일관되게 읽지 않을 수 있음. 즉 unrepeatable read가 발생할 수 있음. 오라클의 ..

DB/[이론] 2023.11.19

데이터 무결성

데이터 무결성이란 - 데이터 무효갱신으로 부터 데이터를 보호하여 정확성, 유효성, 일관성, 안정성 등을 유지하는것 무결성의 종류 * 개체무결성 : 기본키로 선택된 필드는 빈 값을 허용하지 않음 * 참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관되어야 함 - 외래키는 Null이거나 참조하는 테이블의 기본키에 존재하는 값이여야 함 - 기본키 중 자신을 참조하는 외래키가 존재하면 기본키를 삭제할 수 없다. * NULL 무결성 : not null인 컬럼의 경우 not null이 지켜져야 함 * 영역 무결성(Domain Integrity) : 테이블에 존재하는 필드의 무결성을 보장하는것. 데이터타입, NULL 허용 등의 여부 정의. 속성값은 원자성을 가지며, 해당 도메인에서 정의된 값이여야..

DB/[이론] 2023.11.13

데이터베이스의 구성요소

데이터베이스의 구성요소 1. 데이터베이스 관리시스템 : 데이터베이스를 구축하고 이용하는 기능을 제공하는 시스템 소프트웨어 2. 데이터베이스(DB) : 한 조직의 여러 응용프로그램이 공용하기 위해 최소의 중복으로 저장한 데이터의 집합 3. 데이터베이스 언어 : 사람과 시스템의 인터페이스를 제공하는 도구 4. 사용자 : 데이터베이스 관리자(DBA), 데이터베이스 응용 프로그래머, 데이터 베이스 사용자 등

DB/[이론] 2023.10.15

redis 명령어

MAP - GET SET 함수 명령 설명 SET mykey "myvalue" key: mykey, value:myvalue 값을 가지는 객체 SET mykey "myvalue" EX 10 10s뒤에 삭제 SET mykey "myvalue" PX 10 10ms뒤에 삭제 SET mykey "myvalue" XX 키가 존재하면 SET을 실행 SET mykey "myvalue" GET 이전에 있던 value값을 return한후 SET을 실행 SET mykey "myvalue" NX SETNX mykey "myvalue" 키가 존재하지 않으면 SET을 실행 MSET key1 val1 key2 val2 ... 여러값을 SET MGET key1 key2 여러값을 GET - counter command 명령 설명 I..

DB/[이론] 2023.07.12

mac redis 설치 및 실행

redis란 cacheDB의 한 종류로서 다양한 자료구조를 제공하는 in memory database이다. 싱글스레드라는 특징이 있고 하나의 한 클라이언트만 자료를 저장/조회하기 때문에 데이터 lock없이 빠르게 데이터를 조회가능하다. cacheDB로 redis를 많이 사용하는 이유는 자료구조의 설계와 사례가 용도에 따라 명확하기 때문이다. 또한 분산 클러스터 모드를 지원하므로 확장성도 제공할 수 있고 레퍼런스가 충분히 많다. redis설치 및 실행 1. brew를 이용한 redis설치 brew install redis 2. redis 실행 redis-server //일반실행 brew services start redis //백그라운드실행 3. 실행됐는지 확인 brew services info re..

DB/[이론] 2023.07.02

foreign key의 설정에 따른 update, delete 영향

foreign 설정 종류 1. ON DELETE/UPDATE CASCADE : 부모 테이블의 값이 지워지면(업데이트되면) 자식 테이블의 해당 row도 지워(업데이트)진다 CREATE TABLE foreign_key_test ( id int NOT NULL, content varchar(2048) DEFAULT NULL, user_id int DEFAULT NULL, product_id int unsigned NOT NULL, PRIMARY KEY (id), FOREIGN KEY (product_id) REFERENCES product (id) on delete cascade ); 2. ON DELETE/UPDATE SET NULL : 부모 테이블의 값이 지워지면(업데이트되면) 자식 테이블의 해당 row의..

DB/SQL 2023.06.21

SQL update에러(Error Code: 1175. You are using safe update mode)

SQL update 에러 SQL에서 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. 이는 update를 할 때 where 절에 key 컬럼을 사용하지 않았을 때 발생하는 경고 에러이다. 예시) update product set price = price-1000 where name like 'shoes%'; 해결책 key 칼럼을 사용하..

DB/SQL 2023.06.20

studio 3T Visual Query Builder를 이용한 쿼리 역추출

Studio 3T의 Visual Query Builder기능 studio 3t에서 Visual Query builder를 이용하면, GUI로 원하는 검색을 하고, 그에 맞는 쿼리를 역으로 추출받을 수 있다. Visual Query Builder 사용법 1. GUI쿼리설정 1. Drag and drop field here or double-click를 더블클릭한다 2. 원하는 필드를 설정하고 해당 필드의 특정값과 같은, 혹은 포함하는(혹은 포함하지 않는..등등)의 조건을 설정한다. 2. 쿼리확인 query code를 눌러서 쿼리확인

DB/MONGODB 2023.06.19