Null
- 사전적으로 null은 '가치가 없다'는 뜻을 지님
- 일반적으로 컴퓨터상에서 null은 값이 없을 때 흔히 사용함
- sql에서는 null 값도 값(null이라는 값이 입력된 것으로 인식함)
- 아직 어떤 값이 들어올지 모르는 상태를 뜻함
- 아직 데이터가 정학히 입력된 상황이 아니므로 그 크기를 알 수가 없음
- 따라서 그 어떤 연산도 불가능함
- Null은 확정되지 않은값이다.
Null값을 한번 봐볼려고 한다.
SELECT*FROM [Purchasing].[ProductVendor] WHERE OnOrderQty = NULL
명령어로 [Production].[Product] 테이블중 OnOrderQty에 값이 널로 되어있는것을 출력할려한다.
결과값으로 아무것도 안나온다. 왜지?
널값은 값이 확정되지 않았기 때문에 어떠한 연산도 처리가 안된것이다.
따라서,
널값을 비교할때는 IS라는 연산자를 사용
그럼 IS라는 연산자를 사용해서 출력해보자.
SELECT*FROM [Purchasing].[ProductVendor] WHERE OnOrderQty IS NULL
결과를 보면 OnOrderQty 에 출력되는값이 전부 Null인것을 확인할수있다.
반대로 Null값이 아닌것을 확인하고자 한다면 IS NOT연산자를 사용하면된다.
SELECT*FROM [Purchasing].[ProductVendor] WHERE OnOrderQty IS NOT NULL
그러면 OnOrderQty 에 Null값이 아닌 다른값만 출력되는것을 확인할수 있다.
보통의 연산자에는 >,< , = 이 있으며 예시로 들었을때
N > 30 은 N이 30보다 커야한다.
N < 30 은 N이 30보다 작아야한다.
N = 30 은 N이 30이여야 한다라는뜻이다.
N >= 은 N이 30보다 크거나 같아야한다.
N <= 은 N이 30보다 작거나 같아야한다.
로 있다.
연산자 같은경우는 조건문에 붙혀서 사용하기 편리하고
사용 예시를 보면
SELECT*FROM [Purchasing].[ProductVendor] WHERE StandardPrice > 30
StandardPrice가 30보다 큰 결과값만 출력해달라는 뜻이며, 출력하게되면
로 30보다 큰 결과만 출력하게된다.
첫번째 결과값이 47.87인것으로 보아 보기 편하게 결과값이 47.87보다 크거나 같아야한다는것을 볼려면
SELECT*FROM [Purchasing].[ProductVendor] WHERE StandardPrice >= 47.87
로 나온다는것을 확인할수 있다.
논리연산자
x | y | AND | OR |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
0 | 1 | 0 | 1 |
0 | 0 | 0 | 0 |
표를 봤을때
x와 y는 컴퓨터에 입력받는 값이다.
둘다 1을 받을 경우 and와 or을 만나도 1이 출력된다.
x값이 1이고 y값이 0 일경우 and는 0 or은 1이 출력된다.
반대로 y값이 1이고 x값이 0일경우 and는 0 or은 1이 출력된다.
두개값 전부 0 일경우 and와 or모두 0이다
and는 두개값이 전부 같은값이여야 그 값이 출력되지만 or은 둘중하나만 값이 있어도 출력이된다.
따라서 한쪽만 1일경우 신경을 써서 사용해야된다.
1은 True 참
0은 거짓 False로 부른다.
SELECT*FROM [Production].[Product]
테이블을 확인해보면
꽤많은 양의 데이터들이 나오는데
이중 SafetyStockLevel을 예시로 확인해보겠다.
SELECT*FROM [Production].[Product] WHERE SafetyStockLevel > 300 AND SafetyStockLevel < 200
를 하게되면 결과값이 안나오는것을 볼수있다.
이는, 300보다 큰값과 같이 200보다 작은값일경우만 보여달라고 명령어를 사용했기 때문이다. 300보다 큰데 200보다 작을수는 없기 때문이다. 하지만 OR연산자를 사용하게되면
SELECT*FROM [Production].[Product] WHERE SafetyStockLevel > 300 OR SafetyStockLevel < 200
로 결과값이 나오는것을 볼수가 있다. OR은 300보다 크거나 200보다 작은값을 보여달라는 뜻이다. 따라서 300보다 큰숫자들과 200보다 작은 숫자들을 볼수있으며 300보다 작거나 200보다 큰숫자는 안나오는것을 볼수있다.
'Sql' 카테고리의 다른 글
Sql - 5 함수-1 (0) | 2023.08.22 |
---|---|
Sql - 4 특수연산자 (0) | 2023.08.22 |
Sql - 2 (0) | 2023.08.18 |
Sql - 1.5 (0) | 2023.08.18 |
SQL -1 (0) | 2023.08.18 |