안녕하세요, 끙정입니다. 오늘은 서브 쿼리 탐구 2편, 서브쿼리 연산자에 대해서 알아보겠습니다. 전에 살펴본 IN 연산자와 비슷하게 ANY, ALL, EXISTS 가 있습니다. 천천히 살펴보겠습니다. 1. ANY, ALL IN 연산자는 괄호 안의 결과 셋과 순차적으로 상등 비교하는데 비해, ANY, ALL 연산자는 결과셋 전체와 비교합니다. ANY는 그중 하나라도 만족하는 값이 있으면 참이고, ALL은 모두 만족해야 참입니다. ANY는 조건을 OR로 연결하는 것이고, ALL은 조건을 AND로 연결합니다. 다음 두 쿼리를 통해 ANY와 ALL을 비교해보겠습니다. /* 영업부서의 직원들의 어떤 salary 보다 큰 직원 */ SELECT name FROM tStaff WHERE salary > ANY (SE..
안녕하세요, 끙정입니다. 오늘부터는 서브쿼리에 대해서 알아보겠습니다. 서브쿼리부터는 이제 쿼리가 다소 길어지고 복잡해질 수 있습니다. 그러나 조금씩 이해를 하고 쿼리를 바라본다면, 서브쿼리도 금방 익숙해질 수 있습니다. 서브쿼리는 쿼리문 안에 또 다른 쿼리문이 포함된 구문입니다. 단발적인 질문이 아닌 복합적이고 단계적인 질문을 할 때는 여러 개의 쿼리를 중첩해서 사용합니다. 리턴하는 행과 열의 개수에 따라 다음과 같이 분류합니다. 1) 단일행 서브쿼리: 하나의 값만 리턴. 스칼라값 하나를 리턴. 2) 다중행 서브쿼리: 여러 개의 행을 리턴. 3) 다중행 열 서브쿼리: 여러개의 열로 구성된 여러 개의 행인 테이블을 리턴. 또한 외부쿼리와의 관계에 따라 독립 서브쿼리와 연관 서브쿼리로도 구분합니다. 1. 단..
안녕하세요, 끙정입니다. 오늘은 시퀀스에 대해서 알아보고자 합니다. 시퀀스는 DBMS마다 문법이 전부 다르기 때문에 다소 헷갈리고 귀찮을 수 있습니다. 역시나 대표 3인방인 Oracle, SQL Server, MariaDB의 문법을 비교해가면서 살펴보겠습니다. 1. 들어가기 전에 기본키는 레코드의 유일성을 보장할 뿐만 아니라 관계를 형성하는 중요한 역할을 합니다. 그러나 기본키가 강제 규정은 아니기도 하고, 마땅한 필드가 없는 경우도 있습니다. 이럴때 사용하는 것이 일련번호입니다. 계속 증가하는 일련번호를 붙이면 NULL도 아니고 고유성도 부여할 수 있습니다. 또한 정수형이기 때문에 테이블 용량이 늘어나더라도 크게 부담되지는 않습니다. 2. 시퀀스 SEQUENCE (오라클, SQL Server Only)..
안녕하세요, 끙정입니다. 오늘은 기본키, PRIMARY KEY에 대해 알아보겠습니다. 무결성을 지키기 위해서는 레코드가 중복되면 안됩니다. 그러기 위해서는 레코드 고유의 값이 필요합니다. 바로 기본키입니다. 1. 식별자 테이블의 특정 레코드를 읽거나 변경하려면 레코드끼리 구분할 수 있는 고유의 키가 필요합니다. 이러한 고유의 키가 될 수 있는 조건은 1) 값이 꼭 존재해야 하며 2) 구분을 위한 고유값을 가져야 합니다. 예를 들어 어떤 테이블에 아래와 같은 필드 목록이 있다고 가정합니다. 주민등록번호, 사번, 몸무게, 키, 직급, 이름, 핸드폰, 이메일. 이러한 필드 목록 중에서 어떤 필드를 기본키로 결정할지는 사용자의 선택이지만, 그 중에서 가장 적합한 것을 골라야 합니다. 적합한 키 주민등록번호, 사..
안녕하세요, 끙정입니다. 오늘은 DB에서 아주 중요한 개념인 무결성에 대해서 알아보도록 하겠습니다. 또한 무결성을 위해서 제약이라는 방식이 따라붙습니다. 처음 들으면 이게 뭔 소린가 하시겠지만, 천천히 이해하면 크게 어렵지 않습니다. 자, 따라오시죠. 1. 무결성 관리 DB에서는 모든 데이터가 결함 없이 완벽한 상태를 무결성(Integrity)이라고 합니다. DB가 이전의 단순한 정보 저장 방식과 다른 것은 바로 이런 무결성 덕분이라고도 할 수 있습니다. 예를 들면 아래와 같은 컴퓨터 부품을 파는 쇼핑몰의 주문 테이블이 있다고 가정해봅시다. 날짜 회원 제품 개수 2020-3-4 김유신 NVIDIA GEFORCE 3070 2 2020-3-10 최영 SAMSUNG DDR RAM 16G 32352 2045-3..
안녕하세요, 끙정입니다. 오늘은 레코드를 삭제하거나 갱신하는 문법에 대해서 알아보도록 하겠습니다. 레코드를 삭제하는 DELETE, 테이블을 비워버리는 TRUNCATE, 레코드를 수정하는 UPDATE가 있습니다. 하나씩 살펴보겠습니다. 1. DELETE 레코드를 삭제할 때는 DELETE를 사용합니다. 삭제는 항상 레코드 단위로 수행하므로 필드(열)에 대한 지정은 없습니다. /* 필드 지정 없이 레코드 정보가 삭제 된다. */ DELETE FROM 테이블 WHERE 조건 INSERT는 전치사 INTO를 쓰는 반면에, DELETE는 전치사 FROM을 씁니다. 오라클과 SQL Server는 FROM의 생략을 허용하지만, Maria DB는 생략을 허용하지 않습니다. 결국 항상 FROM을 써주는 것이 좋습니다. M..
안녕하세요, 끙정입니다. 오늘은 테이블에 레코드를 입력할 수 있는 삽입문에 대해서 알아보고자 합니다. 기본적으로는 INSERT를 생각하실 겁니다. 그 외에도 목적에 따라 INSERT SELECT라든지 CREATE SELECT 도 있습니다. 하나씩 찬찬히 뜯어보겠습니다. 1. INSERT INSERT INTO 테이블 (필드목록) VALUES (값목록) 기본적인 INSERT 구문의 형식은 위와 같습니다. 구문 해석상 전치사 INTO가 꼭 필요한 것은 아니지만 SQL 표준에서는 INTO를 붙여야 합니다. 예외로 SQL Server나 Maria DB는 INTO를 생략하는 것을 허용하지만, 습관적으로 붙이는 것이 여러모로 좋습니다. Oracle은 INTO를 넣어야 한다. SQL Server와 Maria DB는 I..
안녕하세요, 끙정입니다. 오늘은 다른 형식의 집계 함수인 GROUP BY에 대해 알아보겠습니다. 1.GROUP BY 우리가 만일 각 부서별 평균 월급을 알고 싶다면, 부서마다 AVG 함수를 호출하면 됩니다. 다음과 같이 말이죠. 그러나 굉장히 비효율적이라는 것을 아실겁니다. 부서가 수십개라면, 수십개의 쿼리를 따로 날려줘야하고, 한 눈에 보기도 힘듭니다. 이럴때 사용하는 것이 바로 GROUP BY입니다. GROUP BY는 기준 필드가 같은 레코드를 모아 통계값을 구합니다. 또한 기준 필드는 집계 함수와 함께 쓸 수 있어 목록도 보기 좋게 출력할 수 있습니다. /* GROUP BY 와 필드를 넣어준다. */ SELECT depart, AVG(salary) FROM tStaff GROUP BY depart;..
안녕하세요, 끙정입니다. 오늘은 집계함수를 알아보도록 하겠습니다. 함수는 입력값으로부터 모종의 계산을 하여 출력값을 리턴하는 장치입니다. 입력은 함수명 다음의 괄호 안에 인수로 전달하여 함수 호출문은 실행 결과를 리턴합니다. SQL 함수의 입력값은 대부분 필드이며 계산식이나 * 같은 기호도 전달할 수 있습니다. FUNCTION (필드) 1. COUNT 가장 대표적인 집계함수는 COUNT가 있습니다. 조건에 맞는 레코드 개수를 반환합니다. SELECT COUNT(*) FROM tStaff; /* 필드명을 지정해주면 보기 편하다. */ SELECT COUNT(*) AS "총 직원수" FROM tStaff; WHERE 절을 포함해서 조건에 맞는 레코드 개수를 출력할 수도 있습니다. /* salary 가 400..
안녕하세요, 끙정입니다. 지난 시간에 배웠던 ORDER BY의 연장선으로, 효율적인 출력 방법 몇 가지를 알아보겠습니다. SELECT문은 매우 빠르지만, 출력해야 하는 행의 개수가 수만개가 넘어가면 어마어마한 시간이 걸립니다. 따라서 불필요한 정보를 굳이 출력해야 할 필요가 없다면, 효율적으로 출력하는 것이 좋습니다. 1. DISTINCT 가장 먼저 살펴볼 것은 DISTINCT입니다. 간단히 말해서 중복을 제거하고 하나의 값으로만 출력을 해주는 것입니다. /* 그냥 출력 */ SELECT region FROM tCity; /* SELECT 다음에 DISTINCT를 넣어줍니다. */ SELECT DISTINCT region FROM tCity; 두 쿼리의 출력 결과는 아래와 같습니다. DISTINCT 키워..
안녕하세요, 끙정입니다. 오늘은 정렬의 기본인 ORDER BY 절에 대해 알아보겠습니다. 1. DBMS별 정렬 차이 오라클과 SQL Server, Maria DB를 비교하면서 SQL문을 리뷰하고 있습니다. 정렬 차이에 있어서도 세 DBMS가 다소 차이가 있는데요. 1) 오라클은 입력 순서대로 저장하고 출력한다. 2) SQL Server와 Maria DB는 Primary Key를 기준으로 오름차순 정렬한다. 즉, 똑같은 쿼리를 통해 데이터를 적재하더라도 저장 순서와 출력 순서는 다릅니다. 왼쪽이 Oracle, 가운데가 SQL Server, 오른쪽이 Maria DB SQL Server와 Maria DB는 Primary Key인 name의 문자열 순서대로 정렬이 되어 부산이 맨 위에 있습니다. 그러나 Orac..
안녕하세요, 끙정입니다. 오늘은 지난 포스팅에 이어 WHERE절 두 번째 시간입니다. WHERE절과 함께 쓰이는 LIKE, BETWEEN, IN 문법을 알아보겠습니다. 1. LIKE 비교 연산자는 완전히 일치하는 조건식을 표현합니다. 반면에 LIKE 연산자는 패턴으로 부분 문자열을 검색합니다. 예를 들면 성이 김 씨인 사람만 출력하고 싶다, 주소가 마포구인 사람만 출력하고 싶다, 이럴 때 쓰면 편합니다. LIKE문 뒤에는 다음과 같은 와일드카드를 씁니다. 문자 설명 % 복수개의 문자와 대응. %자리에는 임의 개수의 임의 문자가 올 수 있다. _ 하나의 문자와 대응. _자리에 하나의 임의 문자가 올 수 있다. [ ] [ ] 안에 포함된 문자 리스트 중 하나의 문자와 대응한다. [^ ] [^ ] 안에 포함된..
- Total
- Today
- Yesterday
- Apple
- searchgpt
- datacenter
- sql
- galaxyai
- OpenAI
- Nvidia
- condenast
- ai pc
- SSI
- 액침냉각
- sb1047
- perplexity
- alexa
- IDC
- ChatGPT
- aichip
- genai
- apple intelligence
- Intel
- aitv
- Amazon
- Meta
- Samsung
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |