| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Spring
- 챗지피티
- 정렬알고리즘
- API
- jsp
- 탐욕알고리즘
- SQLD
- HTTP
- 개발자
- 파이썬
- 프로그래머스
- Python
- 코딩테스트
- 서버
- SQL
- 네트워크
- ChatGPT
- javascript
- 자바
- 하루코딩
- 그리디알고리즘
- 알고리즘코딩테스트
- 개발
- JQuery
- SQLP
- HTTP상태
- 백준
- java
- 알고리즘
- codingtest
- Today
- Total
목록Back-end/SQL (5)
개발자's Life
선택도는 전체 레코드 중 조건절에 의해 선택되는 레코드 비율을 말한다. 레코드 (Record) : 레코드란 여러 가지 데이터 타입을 가질 수 있는 복합형 구조의 데이터 타입이며, 하나의 행(Row)에 대응한다. (레코드 참고 : https://gdtbgl93.tistory.com/153)
친절한 SQL 튜닝 책을 공부하면서 I/O 가 나왔는데 무슨 의미인지 몰라서 검색을 했다. 우선 이 말이 나온 구절은 아래와 같다 " 비용은 쿼리를 수행하는 동안 발생할 것으로 예상하는 I/O 횟수 또는 예상 소요시간을 표현한 값이다." Input/Ouput 을 의미하고 데이터를 입력하고 출력하는 횟수를 말한다고 판단이 된다. 즉, 입/출력 의 횟수를 의미하는것이며 이 말은 SQL 분야가 아니더라도 IT 분야에서 두루두루 쓰이고 있는 말인거 같다.
SQL 옵티마이저는 실행계획의 예산비용을 산정하여 최저 비용을 선택한다. 즉, 내가 쿼리문을 보내게 되면 해당 쿼리문에 대하여 파싱을 하고 그 후 실행계획들을 세워 최적의 실행계획으로 선택을 하게 된다! 이 실행계획을 미리볼 수 있는 기능이 있다. 나의 SQL 이 테이블을 스캔하는지, 인덱스를 스캔하는지 확인을 할 수 있고 실행계획이 내가 생각했던것과 다르면 미리보기 이후 수정을 할수도 있다. 이론으로는 이해가 가는 부분이지만 실제로 깊게 공부를 하게 되면 아직은 많이 미흡함을 많이 느낀다.
SQL 은 Strutured Query Language 의 의미로 구조적 질의 언어이다. SQL 은 구조적, 집합적, 선언적 질의 언어라고 하는데... 정말 이런 단어들만으로는 이해하기가 너무 어려운 부분이다. 우선은 ' 아 ~ 이런 언어라는거구나~' 하고 넘어간다.. 그리고 옵티마이저라고 많이 들어본 단어가 나왔고 찾아보니 옵티마이저는 DBMS 내부 핵심 엔진이다. 옵티마이저는 SQL 을 프로시저 작성하고 컴파일 하여 실행가능 상태로 만든다, 이를 SQL 최적화라고 한다. SQL 최적화 하기 전 사용자가 작성한 SQL 을 파싱을 우선적으로 진행하여 문법이 틀린경우(Syntax Check), 존재하지 않는 테이블이나 컬름을 사용했는지 권한이 있는지 확인(Semantic Check)을 한다. 그 후 위에서..
DML 이란 DATA MANIPULATION LANGUAGE 의 약자입니다. Insert : DB 테이블에 데이터를 입력할 수 있습니다. 문자열을 넣을 경우에는 ' ' 로 감싸서 데이터를 넣어줍니다. INSERT INTO 테이블명(컬럼1, 컬럼2, ...) VALUES (컬럼1에 넣을 데이터, 컬럼2에 넣을 데이터...) ※ 꼭 테이블에 있는 컬럼을 다 적을 필요는 없습니다. 하지만 NOT NULL 인 경우에는 DB Table 자체적으로 Default 값을 지정해주든, 값을 넣어주든 해야겠죠? 만약, 전체 컬럼에 넣을 경우에는 (컬럼1, 컬럼2, ...) 생략하고 VALUES 다음에 전체 컬럼에 넣을 값을 넣어주면 됩니다. ※ Update : DB 테이블에 있는 데이터를 수정할 수 있습니다. 예를 들어 ..