DATABASE

    SQLD 자격증 요점 정리

    SQLD 자격증 요점 정리

    📘 SQLD 📢 노션 링크를 공유합니다. 📢 PDF 다운를 공유합니다. 👀 PREVIEW 🤍 SQL 연산 순서 FROM WHERE GROUP BY HAVING SELECT ORDER BY 💙 SQL 문 DML (데이터 조작 언어) SELECT, INSERT, UPDATE, DELETE DDL (데이터 정의 언어) ALTER, CREATE, MODIFY, DROP TCL (트랜잭션 제어 언어) ROLLBACK, COMMIT DCL (데이터 제어 언어) GRANT, REVOKE 💙 ALIAS SELECT 절에서 사용가능하고 WHERE 절에서는 사용 불가 as 예약어로 사용하며, 생략 가능 SELECT col [as] name FROM table; 🤍 CONCAT Select col1 + col2 + col3..

    [MySQL] 데이터베이스 제약 조건 확인 하는 방법

    [MySQL] 데이터베이스 제약 조건 확인 하는 방법

    회사 업무에서 데이터 원복을 위해 삭제해야하는 일이 생겼다. 그래서 별 생각없이 늘 하던대로 정산 데이터를 삭제하려고 했는데 생각보다 복잡했다. 시스템 버전이 있는데 현재는 거의 폐기 수준의 로우 버전이라 참조하고 있는 테이블도 달랐고 제약조건에 따라 순서대로 지워야 하였지만 테이블 제약 조건을 확인하고 지우는 방법을 터득하기 위해 여러번 뒹글고 나서 정리한다. 🤔 제약 조건 확인 방법 SELECT * FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '스키마' AND REFFERENCED_TABLE_NAME = '테이블명'; 우선, 제약 조건을 확인하기 위해서는 삭제 하려는 데이터의 테이블이 어디에서 참조 하고 있는지를 알아야한다. 상단 쿼리..

    [MySQL] Lost Connection to MySQL server during query

    [MySQL] Lost Connection to MySQL server during query

    🤔 문제 발견 Mysql workbench 프로그램에는 쿼리 수행 시간(30초)이 기본값으로 설정되어 있다. 30초가 넘어가는 경우 프로그램에서는 Error Code : 2013. 메시지를 출력하며 종료된 것 처럼 보이지만, SHOW PROCESSLIST; 상기 명령어를 통해서 확인을 해보면, 아직 수행 중인 쿼리를 확인 할 수 있다. 이미 30초가 넘도록 수행되었지만 결과를 얻지 못한 쿼리는 슬로우 쿼리라고 보는 것이 옳다. 🔥 조치 쿼리 튜닝이 반드시 필요하며, 일단 다른 시스템에서 접근 했을 때 자원을 점유하고 있게되면 사용자가 결과값을 늦게 받거나 못받을 경우가 생길 수 있다. 급한 불을 끄기 위해 쿼리를 죽일 수 있도록 했다. KILL QUERY [ID]; [ID] 부분은 수행 중인 쿼리를 확인..

    [H2] 버전 확인 명령어

    [H2] 버전 확인 명령어

    😎 문제 발생 H2 버전 포맷 에러가 발생해서 버전 확인을 해보려고 구글링을 통해 SQL문을 찾았다. SELECT H2VERSION() FROM DUAL; 😃 확인 방법 H2를 실행시키고, Console 창에 입력 한 후 결과값에서 확인할 수 있었다. 😍 확인 후 조치 Spring Boot 버전과 맞는 H2 버전은 1.4.200 이였고, 설치한 H2의 버전은 2.1.210 버전으로 인한 문제가 발생되었던 것이다. 아래 링크에서 이전 버전을 다운로드 받을 수 있고 버전 문제를 해결 할 수 있다. H2 지난 버전 다운로드 받는 곳

    [MySQL] 내가 본 최악의 데이터 생성 쿼리문

    [MySQL] 내가 본 최악의 데이터 생성 쿼리문

    세상에 ... 이런 쿼리문이 현업에서 사용되고 있다니.. INSERT INTO table_A SELECT *, 'ID' as ID, now() as MOD_DT FROM table_B WHERE ID = 'ID' 테이블 컬럼이 많고 처리하기 귀찮으니 이렇게 처리한 것 같다.. 할많하안

    [MYSQL] Index 확인, 추가, 삭제 명령어

    [MYSQL] Index 확인, 추가, 삭제 명령어

    💡 MySQL 인덱스 관련된 SQL문! 인덱스 확인 SHOW INDEX FROM [테이블명] 인덱스 추가 ALTER TABLE [테이블명] DROP INDEX [인덱스명]; 유니크 인덱스 추가 ALTER TABLE [테이블명] ADD UNIQUE INDEX [인덱스명] ([컬럼1], [컬럼2]); 인덱스 삭제 ALTER TABLE [테이블명] ADD INDEX [인덱스명] ([컬럼1], [컬럼2]) COMMENT '주석';

    [MySQL] 테이블 생성, 컬럼 추가, 삭제, 수정

    [MySQL] 테이블 생성, 컬럼 추가, 삭제, 수정

    ◆ 테이블 생성 create table [테이블명] ( seq int(11) auto increament, name varchar(20) not null default '' ); ◆ 컬럼 추가 alter table [테이블명] add [컬럼명] [타입] [옵션]; ex) alter table [테이블명] add [컬럼명] varchar(100) not null default '0'; ◆ 컬럼 삭제 alter table [테이블명] drop [컬럼명]; ◆ 컬럼명 변경 및 타입 변경 alter table [테이블명] change [컬럼명] [변경할컬럼명] varchar(12); ◆ 컬럼 타입 수정 alter table [테이블명] modify [컬럼명] varchar(14); ◆ 테이블명 수정 alter ..

    테이블 설계서 작성방법

    테이블 설계서 작성방법

    시스템 개발에 필요한 분석을 마친 후에 설계 단계시 작성하는 테이블 설계서 작성 방법입니다. 컬럼명 컬럼이름 자료형 길이 기본키 외래키 인덱스 널값 허용 디폴트값 컬럼 설명 SEQ 일련번호 INT 11 PK NOTNULL 자동증가 일련번호 STUDENT_NO 학생번호 INT 6 FK IDX_STUDENT_NO 0 학생번호 : 상기에 표 처럼 일반적으로 사용이 많이 되는 것 같다.

    인덱스 중복 관련 확인

    인덱스 중복 관련 확인

    평소 인덱스 생성시 1. ALTER TABLE 테이블명 ADD INDEX 인덱스키네이밍 ( 네이밍1,) 2. ALTER TABLE 테이블명 ADD INDEX 인덱스키네이밍2 ( 네이밍1,네이밍2 ) 이러한 구조로 생성하였다. 그러나 이번에 확인을 해보니 인덱스키네이밍 네이밍1 인덱스키네이밍2 네이밍1 인덱스키네이밍2 네이밍2 이러한 구조로 인덱스가 생성되어있음을 확인하였다. 원인을 파악해보니 2번의 인덱스 생성할때 이미 네이밍1에 대한 인덱스를 생성하고 네이밍2에 대한 인덱스를 생성하는 구조였다. 인덱스 중복 관련하여 알게되었다.

    SQL Practice

    SQL 평균연봉보다 많은 연봉을 받는 사원의 아이디, 부서 아이디, 얀벙, 부서의 평균연봉을 조회 ◆ 컬럼 ALIAS를 지정하여 출력◆ 부서평균연봉은 반올림하여 정수로 출력◆ 부서평균연봉이 많은 사람부터 먼저 출력 1234567SELECT c.employee_id 사번 , c.department_id 부서번호 , c.salary 연봉 ,vt.평균 부서평균연봉FROM employees c, (select department_id, ROUND(AVG(salary),0) 평균 from employees group by department_id) vtWHERE c.department_id = vt.department_idAND salary > vt.평균ORDER BY 부서평균연봉 DESC;Colored by C..

    20190319

    //=======================================// 1.DDL :: CREATE : TABLE 생성 //==> TABLE 생성 //==> SQL은 대소문자로 구별 X // ==> 권장사항 : 예약어(keyword) : 대문자 : 식별자(identifier) : 소문자 create table emp_test( id NUMBER(3), name VARCHAR2(15), salary NUMBER(7,2), title VARCHAR2(15) DEFAULT '사원', in_date DATE DEFAULT SYSDATE, dept_ name VARCHAR2(15) ); //=======================================// 2. TABLE 생성 확인 / TABLE ..