본문 바로가기
반응형

IT/Database112

[Mysql] Limit / Offset 쿼리 (페이징 처리) Limit 함수 -> 사용법 : SELECT * FROM TABLE LIMIT 10; -> 설명 : 10개만 가져오기 Offset 함수 -> 사용법 : SELECT * FROM TABLE LIMIT 10 OFFSET 5; -> 설명 : 5번째 행부터 가져오기 이 두개 함수를 결합하여 쓰면 SELECT * FROM TABLE LIMIT 10 OFFSET 5; 이와 같다. 5번째 행부터 10개를 가져오라는 뜻이다. order by 와 함께 index 가 걸려있는 컬럼에 사용을 한다면 성능을 극대화 시킬수 있다. 특정 컬럼을 정렬하여 페이징 처리 하듯이 순서대로 몇개씩 가져올수 있다. 아래 사진과 같은 페이징 처리를 할수 있다. 2023. 10. 4.
null관련 함수(NVL, ISNULL, NULLIF, COALESCE ) 데이터베이스에서 null 값에 대해 처리할수 있도록 사용되는 함수들을 살펴볼 것이다. Oracle에서 사용되는 nvl 에 대해서는 아래 참고 포스팅을 참고 바란다. 그리고 isnull 함수 역시 nvl 과 같은 기능이고 mssql 에서 사용이 된다. 사용법은 nvl과 동일하다. NVL(표현식1, 표현식2) / ISNULL(표현식1, 표현식2) -> 표현식 1의 결과가 null이면 표현식 2를 출력 NULLIF(표현식1,표현식2) -> 표현식1이 표현식2와 같으면 NULL을 같지 않으면 표현식 1 리턴 특정값을 null로 치환할때 주로 사용한다. COALESCE(표현식 ...여러개) -> 첫번쨰 인자값이 NULL이면 두번째 인자값 리턴, 두번째가 NULL이면 세번쨰 값 리턴.... 모든 인자가 NULL이면.. 2023. 9. 26.
[Mysql] foreign key 추가하는법 mysql 에서 foreign key를 추가하는법을 공유한다. 물론 create 시에 함께 추가를 해도 무방하나, 정규화 작업을 거치게 되면서 테이블을 나누고 foreign key 를 설정해줘야하는 경우이다. 아래 두개 테이블을 보면 Table Name= Grade 순번(pk) 학번 과목 성적 1 111111 수학 A 2 111112 수학 B Table Name= Student 학번 이름 ... 111111 홍길동 111112 이순신 111113 장영실 먼저 Grade 테이블에서 기존에는 학번과 학생 이름들이 같이 명시 되어있었으나 정규화로 인해 학생 테이블이 별도로 만들어지면서 학번 이라는 컬럼이 fk와 pk 로 지정을 해야했다. 그럼 student에는 학번이 pk가 되야하고 grade 에서는 학번이 .. 2023. 9. 17.
[Oracle] CHARTOROWID 이 함수의 개념을 알기 전에 먼저 Oracle에서 RowId에 대한 개념을 알아야한다. RowID 란 Oracle Database 힙 (heap) 테이블의 row에는 ROWID라 불리는 행 주소가 있다. 간단하게 행의 주소를 가르키는 pseudo column // 16진수 숫자로 된 문자열, 테이블의 레코드를 나타내는 유일한 주소 값 그러고 CHARTOROWID 함수는 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 데이터타입 값을 ROWID 데이터타입으로 변경한다. 즉, ROWID 데이터타입은 ROWID를 담기 위한 특수 데이터 타입이다. 사용법은 다른 함수들처럼 사용이 가능하다. SELECT last_name FROM employees WHERE ROWID = CHARTOROWID('A.. 2023. 9. 12.
[Mysql] ERROR 1217 - Cannot delete or update a parent row: a foreign key constraint fails mysql 에서 테이블을 삭제하려고 하는데 아래와 같은 에러가 발생했다. ERROR 1217 - Cannot delete or update a parent row: a foreign key constraint fails foreign 키 문제로 인해서 테이블이 안되는것이다. Mysql 에서 데이터 안전상 막아둔것이라 다음 설정을 하면 된다. mysql > SET foreign_key_checks = 0; mysql > drop table test; mysql > SET foreign_key_checks = 1; 이렇게 설정하면 테이블이 삭제가 된다. 2023. 8. 22.
[Mysql] 컬럼 내 특정 단어 갯수 구하기 컬럼 결과에서 특정 단어의 갯수가 몇개인지 알아보는 방법을 소개한다. 따로 함수가 있지는 않고, 글자 길이와 replace 함수로 구현해볼것이다. @이 골뱅이 관련해서는 아래 참고 포스팅에서 바인딩 변수 부분을 참고하면 된다. SELECT (char_length(value) - char_length(replace(value,@varchar,'')))/char_length(@varchar) FROM table; 특정 컬럼의 전체 길이를 구하고 해당하는 부분을 제거한 후 길이 구해서 갯수를 구하는 방식이다. 참고 포스팅 https://thenicesj.tistory.com/662 [Mysql] 사용자 정의 변수 선언 및 초기화 , 사용법 //(시스템변수) 쿼리를 사용할때 특정 값을 입력하여 사용할 경우 매번.. 2023. 8. 21.
[Mysql] 사용자 정의 변수 선언 및 초기화 , 사용법 //(시스템변수) 쿼리를 사용할때 특정 값을 입력하여 사용할 경우 매번 name = 'testtesttest' 이런식으로 사용을 해야한다. 한두번이면 괜찮으나, 여러번 반복해서 사용해야할 경우엔 매번 적어주기엔 불편하고 가독성으로도 좋지가 않다. 그럴 경우 바인딩변수를 사용할수 있다. 사용자 정의 변수는 아래처럼 사용이 가능하다. 선언 SET @binding := 'testtesttest'; 사용 SELECT * FROM TABLE WHERE NAME = @binding; 이렇게 사용이 가능하다. 만약 시스템변수를 사용하고자 한다면 선언 SHOW GLOBAL VARIABLE; --모든 시스템변수 확인 SHOW GLOBAL VARIABLE LIKE 'TEST%'; --이름이 TEST로 시작하는 시스템변수 확인 수정 SET .. 2023. 8. 20.
[Oracle] TNS에 대해서 TNS 에 대한 개념을 잡을때 같이 비교가 되는 리스너에 대해서 먼저 설명을 하면, 리스너(listener) listener.ora 식의 이름으로 존재 TNS와 같은 경로에 있음 오라클 서버에서 클라이언트와의 통신 환경을 설정하는 파일 -> 서버 설정 오라클 서버에 존재하며 오라클 클라이언트에서 서버로 접속할 때 필요한 프로토콜과 포트 정보등을 설정해줌 예제 Listener LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-N9T464A)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) TNS(Transparent Network.. 2023. 8. 9.
DB Link 에 대해서(23.07.24) 데이터베이스에서 다른 데이터베이스를 접근가능한 링크 "FROM 테이블명@DB링크" 형식으로 사용 다른 DB에 특정 유저에 대한 링크를 만들어 해당 스키마에 테이블들을 접근하는 기술 자바에서의 접근제어자와 비슷하게 public 과 private 으로 접근 권한을 부여 하고 - public > 모든 유저가 사용가능한 공용링크를 만들때 지정 - private > 특정 유저만 사용가능 한 DB링크를 만들때 지정 단순 개발을 할 경우에는 여러 데이터베이스에 접근을 하면 되지만, 특정 상황에 따라나 기업 권한 등 제한된 환경에서 확장이 필요할때, 다른 서버의 DB를 링크를 통해 접속하게 해주므로 확장성을 가진다. DB 링크 CRUD문 DB 링크 조회 SELECT * FROM DBA_DB_LINKS 생성 TNS에 해.. 2023. 7. 25.
반응형