1. 제약 조건 종류:
- NOT NULL: NULL값 입력 금지
- UNIQUE: 중복된 값 입력 금지
- PRIMARY KEY: NOT NULL + UNIQUE
- FOREIGN KEY: 다른 테이블의 컬럼을 조회해서 무결성 검사
- CHECK: 조건으로 설정된 값만 입력 허용
* PRIMARY KEY와 FOREIGN KEY로 지정한 컬럼을 삭제할 수 없음, 자식 테이블 값 입력 불가 / CASCADE 옵션: 삭제O
2. 검색한 결과를 다른 테이블에 입력:
- INSERT [저장 테이블] SELECT 열 FROM [조회 테이블] #이미 생성되어 잇는 테이블에 입력
- SELECT * INTO [저장 테이블] FROM [조회 테이블] # 테이블이 없는 상태에서 테이블 생성 및 결과입력
- LOCAL TEMPORARY TABLES, GLOBAL TEMPORARY TABLES(지역, 전역 임시 테이블)은 별도의 공간에 저장
3. 임시 테이블:
- LOCAL TEMPORARY TABLES, GLOBAL TEMPORARY TABLES(지역, 전역 임시 테이블)은 별도의 공간에 저장
- 지역 임시 테이블은 생성 시 이름 앞에 #을 붙임 / 세션 종료 시 자동으로 삭제 /
- DROP문으로 삭제 가능, 동일 세션 공유 가능
- 전역 임시 테이블은 전체 데이터베이스에서 공유 가능, 생성 시 테이블 이름 앞에 ##을 붙인다.
--데이터베이스 생성
CREATE DATABASE TestDB
--테이블 생성 및 삭제
CREATE TABLE doit_create_table (
col_1 INT,
col_2 NVARCHAR(50),
col_3 DATETIME
)
ALTER TABLE doit_create_table
ADD col_4 INT
ALTER TABLE doit_create_table
ADD col_0 INT
ALTER TABLE doit_create_table
DROP COLUMN col_0
SELECT* FROM doit_create_table
CREATE TABLE doit_create_table_kor(
[이름] NVARCHAR(50),
[성별] NVARCHAR(50)
)
SELECT * FROM doit_create_table_kor
ALTER TABLE doit_create_table_kor
ADD [추가컬럼] NVARCHAR(50)
SELECT * FROM doit_create_table_kor WHERE 추가컬럼 = '네임'
CREATE TABLE doit_dml (
col_1 INT,
col_2 NVARCHAR(50),
col_3 DATETIME
)
--컬럼명 매칭, 데이터 입력
INSERT INTO doit_dml(col_1, col_2, col_3)
VALUES (1, 'DOITSQL', '2022-01-01')
SELECT * FROM doit_dml
--컬럼명 생략해서 데이터 입력
INSERT INTO doit_dml
VALUES (2, N'열이름 생략', '2022-01-02')
--특정 열에만 입력
INSERT INTO doit_dml (col_1, col_2)
VALUES (1, N'col_3 값 생략')
--열 순서 변경해서 입력
INSERT INTO doit_dml(col_2, col_1, col_3)
VALUES (N'컬럼 순서 변경', 3, '2022-01-02')
--여러 값 한 번에 입력
INSERT INTO doit_dml(col_1, col_2, col_3) VALUES (5, 'DOITSQL5', '2022-01-05')
INSERT INTO doit_dml(col_1, col_2, col_3) VALUES (6, 'DOITSQL6', '2022-01-06')
INSERT INTO doit_dml(col_1, col_2, col_3) VALUES
(7, 'DOITSQL7', '2022-01-07'), (8, 'DOITSQL8', '2022-01-08')
SELECT * FROM doit_dml
UPDATE doit_dml SET col_2 = N'값 수정'
--WHERE col_1 = 1
DELETE doit_dml
WHERE COL_1 = 1
--NULL 삽입하기: 오류 발생
CREATE TABLE doit_notnull(
col1_ INT,
col2_ NVARCHAR(50) NOT NULL)
GO
SELECT * FROM doit_notnull
INSERT INTO doit_notnull (col1_1, col2_) VALUE ('1')
DELETE DOIT
--임의의 아이덴티티 입력 가능 설정, 취소
SET IDENTITY_INSERT TABLE_NAME ON
SET IDENTITY_INSERT TABLE_NAME OFF
DROP TABLE doit_dml, doit_notnull
CREATE TABLE doit_primary(
col1 INT PRIMARY KEY,
col2 NVARCHAR(50)
)
INSERT INTO doit_primary VALUES (1, '1')
INSERT INTO doit_primary VALUES (1, '2')
DELETE doit_primary
CREATE TABLE doit_unique(
col1 INT PRIMARY KEY,
col2 NVARCHAR(50) UNIQUE,
col3 NVARCHAR(50))
INSERT INTO doit_unique VALUES (1, '1', '1')
INSERT INTO doit_unique VALUES (2, '1', '2') --UNIQUE 조건 위반
INSERT INTO doit_unique VALUES (2, '2', '2')
INSERT INTO doit_unique VALUES (3, '3', '2')
SELECT * FROM doit_unique
DROP TABLE doit_unique
CREATE TABLE doit_parent (col_1 INT PRIMARY KEY);
CREATE TABLE doit_child (col_1 INT);
ALTER TABLE doit_child
ADD FOREIGN KEY (col_1) REFERENCES doit_parent(col_1);
INSERT INTO doit_child VALUES (1)
INSERT INTO doit_parent VALUES (1)
SELECT * FROM doit_parent
CREATE TABLE doit_stock(
date datetime,
[open] FLOAT,
[high] FLOAT,
[low] FLOAT,
[close] FLOAT,
[adj_close] FLOAT,
volume bigint,)
INSERT doit_stock ( [open], [high], [low], [close], [adj_close], volume)
SELECT [open], [high], [low], [close], [adj_close], volume FROM DoItSQL.dbo.stock
WHERE symbol = 'MSFT'
and date >= '2021-01-01' and date < '2021-02-01';
--데이터 확인
SELECT * FROM doit_stock;
DROP TABLE doit_stock
SELECT * INTO doit_stock2 FROM DoItSQL.dbo.stock
WHERE symbol = 'MSFT'
and date >= '2021-01-01' and date < '2021-02-01';
--데이터 확인
SELECT * FROM doit_stock2;
DROP TABLE doit_stock2
SELECT
IDENTITY(INT, 1, 1) AS NUM,
symbol
INTO doit_nasdaq_company
FROM DoItSQL.DBO.nasdaq_company
SELECT * FROM doit_nasdaq_company
DROP TABLE doit_nasdaq_company
--지역 임시 테이블은 본인만 사용 가능
CREATE TABLE #local_temp(
num INT)
GO
INSERT INTO #local_temp VALUES (1)
SELECT * FROM #local_temp
DROP TABLE #local_temp
--전역 임시 테이블
CREATE TABLE ##global_temp(
num INT)
GO
INSERT INTO ##global_temp VALUES (1)
SELECT * FROM ##global_temp
DROP TABLE ##global_temp
'SQL > SQL 기본' 카테고리의 다른 글
SQL기본(6): JOIN(INNER, OUTER, CROSS) (0) | 2023.08.22 |
---|---|
SQL 기본(5): MSSQL 자료형 형변환과 유니코드 필요성 (0) | 2023.08.21 |
SQL 기본(3): ORDER BY, GROUP BY (0) | 2023.08.17 |
SQL 기본(2): 와일드 카드(문법 간 조합 가능) (0) | 2023.08.17 |
SQL 기본(1): SELECT, WHERE, 기타 연산자 (0) | 2023.08.16 |