예제 테이블
Customers
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglun | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
INSERT INTO
는 테이블에 새 레코드를 삽입할 때 사용한다.
데이터를 삽입할 필드 이름과 해당 필드에 들어갈 값을 아래와 같이 입력한다.
INSERT INTO 테이블이름 (필드이름1, 필드이름2, 필드이름3, ...)
VALUES (값1, 값2, 값3, ...);
모든 필드에 값을 삽입하는 경우 필드이름을 생략할 수 있다. 이 때, 값들의 입력 순서는 테이블의 필드 순서에 맞춰서 입력해주어야 한다.
INSERT INTO 테이블이름
VALUES (값1, 값2, 값3, ...);
아래의 명령은 새로운 레코드를 추가한다.
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
You have made changes to the database. Rows affected: 1
아래의 명령으로 전체 테이블을 확인해본다.
SELECT *
FROM Customers;
Result
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
6 | Cardinal | Tom B. Erichsen | Skagen 21 | Stavanger | 4006 | Norway |
6 번째 레코드가 추가되었다.
CustomerID
필드는 자동으로 추가되는 필드이므로 따로 추가해주지 않는다.
특정 필드에만 값을 지정해주는 경우, 값을 지정하지 않은 필드에는 null
값이 들어간다.
INSERT INTO Customers (CustomerName, PostalCode, Country)
VALUES ('Cardinal', '4006', 'Norway');
Result
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
6 | Cardinal | null | null | null | 4006 | Norway |
NULL 값
필드의 값이 NULL
인 경우 필드에 값이 없음을 의미한다.
필드에 값이 필수적이지 않은 경우 필드 값이 NULL
이 될 수 있다.
필드에 값이 없다는 것은 필드가 완전히 비어있다는 뜻이며 필드의 값이 0 이거나 “” 인 것과는 다르다.
NULL
값을 테스트 할 때는 일반적인 연산자를 사용하지 않고 IS NULL
또는 IS NOT NULL
을 사용한다.
아래 명령은 Customer
테이블에서 Address
필드가 비어있는 레코드의 CustomerName
, Country
, Address
필드 값을 가져온다.
IS NULL
SELECT CustomerName, Country, Address
FROM Customers
WHERE Address IS NULL;
Result
CustomerName | Country | Address |
---|---|---|
Cardinal | Norway | null |
IS NOT NULL
아래 명령은 Customers
테이블에서 Address
필드 값이 비어있지 않은 레코드들의 CustomerName
, Country
, Address
필드 값을 가져온다.
SELECT CustomerName, Country, Address
FROM Customers
WHERE Address IS NOT NULL;
Result
CustomerName | Country | Address |
---|---|---|
Alfreds Futterkiste | Germany | Obere Str. 57 |
Ana Trujillo Emparedados y helados | Mexico | Avda. de la Constitución 2222 |
Antonio Moreno Taquería | Mexico | Mataderos 2312 |
Around the Horn | UK | 120 Hanover Sq. |
Berglunds snabbköp | Sweden | Berguvsvägen 8 |
Reference
W3School: https://www.w3schools.com/sql/