일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 교차엔트로피오차
- 미니배치
- total
- 수치미분
- 합계
- 제약조건
- 학습 구현
- 오차제곱합
- 데이터베이스
- 신경망
- AVG
- COUNT
- MIN
- sigmoid
- 평균
- PYTHON
- Depthwise Convolution
- Depthwise Separagle Convolution
- 렐루함수
- 시험데이터
- 최댓값
- max
- sqlite3
- PyQt5
- 밑바닥부터 시작하는 딥러닝
- Next.js
- next.js 튜토리얼
- join
- Pointwise Convolution
- sum
- Today
- Total
우잉's Development
SQLite3_Table 2_제약 조건2 본문
1. NOT NULL 제약조건
NOT NULL : 해당 열에 NULL값을 저장할 수 없는 조건.
CREATE TABLE 테이블명 ( 컬럼명 데이터타입 NOT NULL, ...)
name 의 타입은 text이고 제약조건을 not null을 주어졌고 address의 타입도 text지만 not null의 제약조건은 설정하지 않았습니다.
그래서 insert into user values('han', null); 을 수행 할 때는 error가 없었지만, insert into user values(null, 'Busan');을 수행 할 때는 name이 not null조건으로 error가 발생합니다. 그 밑에 insert into user(address) values ('Daejun'); . 또한, name이란 컬럼에 지정을 하지 않아 null값으로 들어가기 때문에 error가 발생합니다.
따라서 데이터를 추가 할 때에 반드시 값이 설정될 필요가 있는 컬럼에는 NOT NULL 제약조건을 하도록하자.
2. UNIQUE 제약조건
UNIQUE : 대상의 컬럼에 중복된 값이 저장될 수 없게 하는 제약조건
CREATE TABLE 테이블명 ( 컬럼명 데이터타입 UNIQUE, ... )
id를 unique 제약조건을 걸면 중복이 될수 없으므로 insert into user values(2, 'cho');는 error가 발생한다.
id = 2인 'han'이 있긴 때문이다.
그러면 과연 null값은 어떨까?
id에 null값을 데입하여 insert해 본 결과 error도 발생하지 않고 user테이블을 조회 한 결과 아무값도 안들어간 것을 볼 수 있습니다.
3. DEFAULT 제약 조건
DEFAULT : 데이터를 추가 할 때 값을 생략할 시에 기본값을 설정
CREATE TABLE 테이블명 (컬럼명 데이터타입 DEFAULT 값, ... );
# 기본값은 NULL, 숫자, 문자열 지정 할 수있다.
product 테이블에 id, name, price컬럼이 있다. name컬럼에 default값을 no name으로 price컬럼에는 default값을 0으로 주었다. 따라서, 데이터를 추가할 때 name값이 생략될 시 no name으로 price값이 생략되어있을 시 0으로 설정한다는 의미이다.
위에서 네번째 줄에 있는 insert into product (id, price) values (6, 18000);에서 name값이 생략되어 있습니다. 조회해보면 그 값이 no name으로 출력된 것을 확인할 수 있습니다.
DEFAULT 제약조건에 지정된 기본 값으로 다음 값을 지정 하면 데이터를 추가 했을 때 그 당시의 날짜와 시간을 가져 디폴트 값으로 컬럼 가능 할 수 있다. 시간대는 UTC이다.
지정값 | 형식 |
CURRENT_TIME | HH:MM:SS |
CURRENT_DATE | YYYY-MM-DD |
CURRENT_TIMESTAMP | YYYY-MM-DD HH:MM:SS |
4. CHECK 제약 조건
CHECK : 데이터를 추가 할 때 값이 지정된 조건을 충족하는지 여부를 확인 할 수 있는 조건
CREATE TABLE 테이블명 ( 컬럼명 데이터타입 CHECK (조건식), ... )
#여러 컬럼 조합시
CREATE TABLE 테이블명 ( 컬럼명1, 컬럼명2, ..., CHECK(조건식));
old 컬럼을 check (old > 18)로 제약조건을 설정해 주었다. 그럼 kim 과 lee 데이터는 추가가 잘되지만 old가 18보다 적음 han은 추가하면 error가 발생한다.
( and 와 or 조건도 가능하다. )
여기까지 제약조건을 알아보았다. 다음시간에는 View 뷰에 대해 알아보도록 하겠습니다!
'개발 > SQLite3' 카테고리의 다른 글
SQLite3_Index 인덱스 (0) | 2021.12.31 |
---|---|
SQLite3_View 뷰 (0) | 2021.12.29 |
SQLite3_Table 2_제약 조건1 (0) | 2021.12.28 |
SQLite3 _ Table 1 (0) | 2021.12.28 |
SQLite 기본 명령어 사용하기 (0) | 2021.12.28 |