일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- 색상코드
- 선형회귀
- Data Analysis
- SSO인증
- AWS
- 맵차트
- SAML
- dns
- map차트
- Network
- SSL
- 클라우드
- batch
- HTTP
- SQL
- SQL 테이블 삭제
- 방화벽
- SSO
- 파이썬
- >>
- 하드웨어
- 태블로
- https
- 배치파일
- tableau
- MySQL
- 테이블만들기
- Linear models
- 날짜 함수
- Today
- Total
목록SQL (9)
SeaForest
업무를 하면서 쿼리를 작성해야 하는 일이 많은데, 쿼리 길이가 점점 길어지고 복잡해지는 경우가 많아지고 있다. 심지어 내가 작성한 쿼리도 알아보기 힘들어 쿼리를 다시 이해하는데 시간을 쓰게 되어 비효율적으로 업무를 했던 경험도 있다. 그러다 보니 이전에는 가독성을 고려하지 않은 쿼리를 작성했다면 최근에는 누가 봐도 알아보기 쉬운, 유지보수에 어려움이 없는 쿼리를 작성하기 위해 고민하는 시간이 많아진 것 같다. 이미 쿼리 가독성을 높이는 방법에 대해 정리한 글은 꽤 있지만, 업무를 하면서 느낀 점들도 함께 정리해보았다. 1. 행갈이를 자주 하기 간단한 쿼리를 작성할 경우에는 행갈이를 많이 하지 않았고, 행갈이의 필요성을 알지 못했다. /* 행갈이를 많이 하지 않은 경우 */ SELECT col1, col2..
1. 정규화란 정규화 데이터베이스는 중복을 최소화하도록 설계된 데이터베이스 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해하는 과정 데이터를 분해하는 과정 중복 데이터를 저장하면서 일으키는 문제점을 없애기 위해 정보를 주제별로 분할하는 프로그램 중복으로 데이터를 저장하면 일관되지 않은 데이터, 비정상적인 삽입 갱신 삭제 처리, 디스크 공간 낭비 등 많은 문제를 일으킴 정규화를 하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거됨 이상현상(Anomaly)를 해결하기 위해서는 데이터를 분해해야함 이상현상(Anomaly)란? 직원정보 ..
테이블 삭제하는 명령어인 DELETE / TRUNCATE / DROP 차이점 DELETE TRUNCATE DROP Rollback 가능 Rollback 불가능 Rollback 불가능 데이터만 삭제 테이블이 최초 생성된 초기 상태로 만듬 테이블 정의 자체를 완전히 삭제 데이터는 지워지지만, 테이블 용량은 그대로 유지 용량이 줄어들고, 인덱스 등도 모두 삭제 (테이블은 삭제 안하고 데이터만 삭제) 테이블 전체, 공간, 객체를 삭제 사용자 commit 자동 commit 자동 commit 로그 남음 로그 안남음 로그 안남음 DELETE FROM 테이블명 WHERE 조건; (조건을 입력하지 않으면 테이블의 모든 데이터가 삭제됨) TRUNCATE TABLE 테이블명; DROP TABLE 테이블명;
1. Database 사용 명령어 명령어로 여러 DB 중에서 사용할 DB를 정해야함. USE [DB이름] ; 왼쪽에 있는 여러 DB 중에서 world DB를 사용하는 경우 USE world; 2. 테이블 구조 확인 명령어 생성된 테이블의 컬럼과 제약조건, 자료형을 출력함. (ex. 칼럼 이름, 데이터 유형, 길이, NULL 허용 유무 등) describe [테이블명]; desc [테이블명]; explain [테이블명];
NULL값 처리 - NULL을 처리하는 함수가 Oracle, MSSQL, MYSQL 모두 다름 - Oracle은 NVL (value1,value2) , MSSQL은 ISNULL(value1, value2), MYSQL은 IFNULL(value1, value2) Oracle / name이 없는 경우는 'No name' 으로 출력 - NVL2(value1,value2,value3) : value1이 null이 아니면 value2를 반환하고, null이면 value3를 반환
※ Oracle 1. 고유 개수 name의 고유값을 count 하는 경우 - count(distinct name) 2. 행 개수 제한 Datetime 기준으로 오름차순 정렬 후, 가장 먼저 들어온 Name을 확인하는 경우 - select 절로 한번 더 감싸준 다음에 rownum 조건을 사용해야함 (참고, mysql에서는 select 절로 한번 더 감싸줄 필요 없이 limit으로 가능) ※ORACLE에서 ROWNUM을 사용해야 하는 이유 : - 오라클에서는 테이블을 생성하면 ROWNUM이라는 임시 칼럼이 제공됨 - ROWNUM은 각 행에 대한 일련 번호를 의미하고, 레코드에 1부터 순차적으로 번호가 부여됨 - ROWNUM의 한계는 ORDER BY 절을 이용하여 레코드를 정렬하고자 할 때 원하는 순서애로 번..
MySQL에서 주석 작성 방법 1. '#' 으로 작성 2. '--' : 마이너스 기호 2번 작성 3. 여러개의 줄을 한번에 주석 처리 하는 경우 : '/*' ~ '*/'
1. 데이터베이스 만들기 CREATE DATABASE ; 데이터베이스란 여러 테이블을 저장해두는 저장소를 의미함 MySQL에서는 데이터베이스를 스키마라고 생각해도 상관 없음 (DBMS에따라 데이터베이스와 스키마를 동일한 개념이라고 보지 않는 경우도 있음) 컴퓨터에서 여러개의 파일을 묶고 있는 '폴더'와 비슷한 개념, 컴퓨터에서도 폴더를 먼저 만들고 파일을 생성하는 것처럼 보통 데이터베이스를 먼저 만들고 테이블을 생성함 예시 '성적'이라는 데이터베이스 생성 CREATE DATABASE 성적 ; 2. 테이블 만들기 CREATE TABLE ( , , , ...) ; CREATE TABLE문을 사용하여 테이블 생성 CREATE TABLE문으로 테이블을 만든 후 칼럼을 추가하고 싶은 경우에는, alter tabl..