40
05 학학 학학 : 학학 SQL 학 SELECT 학학 학학 학학학학학학 학학 학학학학 학학학학 . INSERT, UPDATE, DELETE 학학 학학 학학학학학학 학학 학학학학 학학학학 .

기초 SQL 문

  • Upload
    xenia

  • View
    72

  • Download
    6

Embed Size (px)

DESCRIPTION

기초 SQL 문. SELECT 문과 같은 데이터베이스 조회 명령문을 이해한다 . INSERT, UPDATE, DELETE 문과 같은 데이터베이스 수정 명령문을 이해한다. 1. 데이터베이스 조회 명령문 2. 데이터베이스 수정 명령문. 데이터베이스 조회 명령문 >> SELECT 문 개요 ■ 개념과 작동 원리. ■ 구문 ● BNF(Backus Normal Form) : 프로그래밍 언어의 구문을 정의하는데 많이 사용되는 표기법. 구성 요소. 설명. ::=. - PowerPoint PPT Presentation

Citation preview

Page 1: 기초  SQL  문

05학습 목표

: 기초 SQL 문

SELECT 문과 같은 데이터베이스 조회 명령문을 이해한다 .INSERT, UPDATE, DELETE 문과 같은 데이터베이스 수정 명령문을 이해한다 .

Page 2: 기초  SQL  문

Chapter05

기초 SQL 문

1. 데이터베이스 조회 명령문 2. 데이터베이스 수정 명령문

Page 3: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> SELECT 문 개요 ■ 개념과 작동 원리

■ 구문 ● BNF(Backus Normal Form) : 프로그래밍 언어의 구문을 정의하는데 많이 사용되는 표기법

Page 4: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> SELECT 문 개요 ● 중요한 BNF 구성 요소들

구성 요소 설명::= 왼쪽의 항목은 오른쪽과 같이 정의된다 .<element> 다른 곳에 정의되어 있는 항목 .[ ] 생략 가능하다 .{ ... | ... } 여러 항목 중에서 하나를 선택할 수 있다 ....n 여러 번 반복될 수 있다 .name, expression 이름 , 연산식 등으로 대치시킬 곳 .

● 오라클에서의 그래픽한 SQL 구문 표시

Page 5: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> SELECT 문 개요 ● SELECT 문의 구문 (BNF)

SELECT statement ::= < query_expression > [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }   [ ,...n ] ] [ COMPUTE   { { AVG | COUNT | MAX | MIN | SUM } ( expression ) } [ ,...n ]   [ BY expression [ ,...n ]] ] [ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }   [ , XMLDATA ]   [ , ELEMENTS ]   [ , BINARY BASE64 ] } ] 계속 ..

Page 6: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> SELECT 문 개요 계속 ..[ OPTION ( < query_hint > [ ,...n ]) ]  < query expression > ::= { < query specification > | ( < query expression > ) } [ UNION [ ALL ] < query specification | ( < query expression > ) [...n ] ]  < query specification > ::= SELECT [ ALL | DISTINCT ]    [ { TOP integer | TOP integer PERCENT } [ WITH TIES ] ]    < select_list > [ INTO new_table ] [ FROM { < table_source > } [ ,...n ] ] [ WHERE < search_condition > ] [ GROUP BY [ ALL ] group_by_expression [ ,...n ]    [ WITH { CUBE | ROLLUP } ] ] [ HAVING < search_condition > ]

Page 7: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 열 제약 조건 ■ SELECT 문을 사용할 때 열을 제약하는 각종 조건

■ 모든 열 (*) ● 가장 단순한 형태의 SELECT 문

USE pubs SELECT * FROM stores

● 행과 열 제약이 전혀 없는 가장 기초적인 조회문으로서 , 간단히 데이터를 테스트하거나 테이블 내의 데이터 전체를 결과 집합으로 필요로 할 때 많이 사용함

● 현재 데이터베이스와 USE 문

Page 8: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 열 제약 조건 ■ 열 목록

● 특정 열들의 목록을 지정

SELECT stor_id, stor_name, stor_address, city,state, zip FROM stores

● ( 정의한 ) 순서대로 , 또 모두 나열할 필요는 없음

SELECT stor_id, zip, state, city, stor_address FROM stores

Page 9: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 열 제약 조건 ■ 열 별칭 지정 ● column AS alias

SELECT stor_id AS ' 서점 ID', zip AS 우편번호 , state AS 주 , city AS 시 , stor_address AS ' 서점 주소 ' FROM stores

● column alias: 첫 번째 방법에서 AS 를 생략한 방법

SELECT stor_id ' 서점 ID', zip 우편번호 , state 주 , city 시 , stor_address ' 서점 주소 ' FROM stores

● alias = column : 열 이름과 별칭의 위치가 서로 바뀌고 , 가운데 ‘ =’ 연산자가 들어가는 방법

SELECT UnitPrice, Quantity, Discount, total_price = UnitPrice * Quantity * (1 - Discount) FROM [Order Details]

Page 10: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 열 제약 조건 ■ 상수 열

● 테이블 열 값 대신 모든 레코드에 동일한 상수 값을 출력하는 열

● 문자 상수 열

SELECT UnitPrice AS ' 단가 ', Quantity AS ' 수량 ', Discount AS ' 할인율 ', ' 합계 :', UnitPrice * Quantity * (1 - Discount) FROM [Order Details]

● 숫자 상수 열

SELECT 7 AS Lucky, firstname, lastname FROM employees

Page 11: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 열 제약 조건 ● FROM 절이 없는 SELECT 문

SELECT 'Lucky', 7, ' 참 좋다 '

● 변수 열을 사용하여 인위적으로 결과 집합을 만드는 경우

DECLARE @var1 int, @var2 int /* 아래 할당문과 비슷한 처리를 한다고 가정함 */ SET @var1 = 1 SET @var2 = 2 SELECT @var1 AS ' 인위적인 ', @var2 AS ' 결과 집합 '

Page 12: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 행 제약 조건 ■ WHERE 절에서 행을 제약하는 각종 조건들 ■ 비교 연산자

연산자 설명= 같다 .> 크다 .< 작다 .

>= 크거나 같다 .<= 작거나 같다 .<> 같지 않다 .

● [ 예 1] = 비교 연산자 USE Pubs SELECT * FROM stores WHERE stor_id = '7896'

● [ 예 2] <= 비교 연산자

SELECT * FROM titleauthor WHERE royaltyper <= 30

Page 13: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 행 제약 조건 ■ 논리 연산자 ● 연산식들을 논리적으로 결합하는 연산자

연산자 설명NOT ~ 연산식이 FALSE 이면 TRUE 를 돌려줌 ( 즉 , 부정 )

~ AND ~ 양쪽의 연산식을 둘 다 만족하면 TRUE 를 돌려줌~ OR ~ 양쪽의 연산식 중 하나만 만족하면 TRUE 를 돌려줌

● 우선순위 : NOT → AND → OR

● 결합 순서를 바꾸려면 “ ( )” 로 둘러싸 주어야 함

Page 14: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 행 제약 조건 ● [ 예 1] 논리 연산자들의 단순한 결합 ( 연산자 우선순위 적용 ) : 결합 순서는 NOT → AND → OR 순 SELECT * FROM titleauthor WHERE NOT au_id = '213-46-8915' AND title_id = 'BU1032' OR royaltyper = 40

● [ 예 2] “( )” 로 논리 연산자들의 결합 순서를 바꿈 : 결합 순서는 OR → AND → NOT 순 SELECT * FROM titleauthor WHERE NOT ( au_id = '213-46-8915' AND ( title_id = 'BU1032' OR royaltyper = 40 ) )

Page 15: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 행 제약 조건 ■ 문자열 패턴 매칭 (LIKE 연산자 )

● LIKE 연산자는 문자열 패턴 매칭 (pattern matching) 을 해 주는 연산자로서 , 소량의 문자열 검색에 많이 사용함

● 구문 : match_expression LIKE pattern match_expression 에는 주로 열 또는 변수 이름이 오고 , pattern 에는 와일드카드 문자가 포함된 문자열 상수가 옴

● 와일드카드 문자

와일드카드 문자 설명 % 문자가 0 개 이상인 문자열

_ ( 밑줄 ) 단일 문자[ ] 지정된 범위 ([a-f]) 또는 집합 ([abcdef]) 에 있는 단일 문자

[^] 지정된 범위 ([^a-f]) 또는 집합 ([^abcdef]) 에 없는 단일 문자

Page 16: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 행 제약 조건 ● [ 예 1] SELECT au_lname, au_fname, phone FROM authors WHERE au_lname LIKE '%[CKR]a%' ORDER BY au_lname ASC

● LIKE 연산자는 대량의 문자열 검색에는 부적합하며 ( 많은 시간이 소요되므로 ), 이 경우에는 전체 텍스트 검색이 권장됨 (“10 장 . 인덱스와 전체 텍스트 검색” 참고 ).

Page 17: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 행 제약 조건 ■ 범위 검색 (BETWEEN 연산자 )

● 최소 값과 최대 값 사이의 범위에 들어가는지 여부를 파악

● 최소 값과 최대 값도 범위에 포함됨

● 구문 : range_expression BETWEEN min_value AND max_value range_expression 에는 주로 열 또는 변수 이름이 옴

● BETWEEN 연산자를 사용하는 것이 더 효율적 range_expression >= min_value AND range_expression <= max_value

● range_expression 은 정수 데이터 형을 많이 사용하는데 , 문자 또는 날짜 ·시각 데이터 형도 간혹 사용한다 .

● 주의 : 날짜 ·시각 데이터 형에서는 자정을 기준으로 최소 값 또는 최대 값 날짜의 포함 여부를 결정하므로 해야 함

Page 18: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 행 제약 조건 ● [ 예 1] 정수 데이터 형에 적용 : SELECT * FROM titleauthor WHERE royaltyper BETWEEN 30 AND 40

● [ 예 2] 문자 데이터 형에 적용 : SELECT * FROM titleauthor WHERE title_id BETWEEN 'BU1032' AND 'BU2075'

● [ 예 3] 날짜 ·시각 데이터 형에 적용 : 만약 ord_date 가 ‘ 1994-09-13 12:34:00.000’ 라면 결과 집합에서 제외됨 (9월 13 일 0 시부터 0 시까지만 (24 시까지가 아님 !) 범위에 포함되기 때문이다 ). SELECT * FROM sales WHERE ord_date BETWEEN '9/13/1994' AND '9/13/1994'

Page 19: 기초  SQL  문

Chapter05

기초 SQL 문

데이터베이스 조회 명령문 >> 행 제약 조건 ■ 목록 검색 (IN 연산자 )

● 목록 안의 값 중 하나와 일치하는지 여부를 파악하는데 사용

● 구문 : list_expression IN ( value_list ) ▸ list_expression 에는 주로 열 또는 변수 이름이 온다 . ▸ value_list 에는 보통 , 쉼표로 구분된 상수 값들이 온다 . ( 예 ) col IN (1, 2, 4, 9) ▸ value_list 에 서브 쿼리가 올 수도 있고 , 실제로 많이 사용한다 (11 장 참고 ).

● [ 예 1] IN 연산자 사용SELECT * FROM stores WHERE state IN ('CA', 'OR', 'WA')

● [ 예 2] 비교 및 논리 연산자 사용 : 예 1보다 훨씬 더 비효율적 SELECT * FROM stores WHERE state = 'CA' OR state = 'OR' OR state = 'WA'

Page 20: 기초  SQL  문

Chapter05

기초 SQL 문

■ NULL 비교 (IS 연산자 )

● NULL: 값이 없는 상태 . 숫자 데이터 형의 0 도 아니고 , 문자 데이터 형의 공백 (‘ ’)이나 빈 문자 (‘’) 도 아님 .

● 주의 : NULL 을 일반적인 연산자와 같이 사용하면 , 결과는 항상 NULL 이 됨 NULL 에 대한 연산을 하기 위해서는 특수한 연산자 IS 또는 IS NOT 만 사용해야 함

● [ 예 1] NULL 을 포함한 데이터 확인 : Price 열 값이 NULL 인 행이 2개 있음 (NULL이 아닌 행은 16개 ) SELECT Title, Price FROM Titles

● [ 예 2] = NULL 로 비교 : 0개 행으로 결과가 나오는 것은 NULL 을 = 로 비교할 때 무조건 실패하기 때문 SELECT Title, Price FROM Titles WHERE Price = NULL

데이터베이스 조회 명령문 >> 행 제약 조건

Page 21: 기초  SQL  문

Chapter05

기초 SQL 문

■ NULL 비교 (IS 연산자 )

● [ 예 3] <> NULL 로 비교 : 0개 행으로 결과가 나오는 것은 NULL 을 <>로 비교할 때도 무조건 실패하기 때문 SELECT Title, Price FROM Titles WHERE Price <> NULL

● [ 예 4] IS NULL 로 비교 : 정확한 결과가 나옴 SELECT Title, Price FROM Titles WHERE Price IS NULL

● [ 예 5] IS NOT NULL 로 비교 : 정확한 결과가 나옴 SELECT Title, Price SELECT Title, Price FROM Titles WHERE Price IS NOT NULL

데이터베이스 조회 명령문 >> 행 제약 조건

Page 22: 기초  SQL  문

Chapter05

기초 SQL 문

■ 행 정렬 (ORDER BY 절 )

● 인덱스가 없다면 기본적으로 데이터는 행이 삽입된 순서대로 출력됨

● 행들을 특정 열 ( 들 ) 을 기준으로 정렬하고자 할 때 ORDER BY 절을 사용

● 구문 :

ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n] ] ▸ order_by_expression 은 정렬할 열을 지정한다 . 열의 형식은 열 이름 또는 그 별칭 , 연산식 또는 그 별칭 , 위치를 나타내는 정수 등으로 지정할 수 있다 . ▸ ASC 는 오름차순 정렬을 , DESC 는 내림차순 정렬을 지정하는 키워드다 . 기본적으로 오름차순이므로 ASC 는 생략해도 무관하다 . ASC 나 DESC 는 하나의 열에만 적용된다 .

▸ order_by_expression 이 여러 개 나올 때는 첫 번째 것이 1차 정렬 키 , 두 번째 것이 2차 정렬 키 등과 같이 적용된다 .

데이터베이스 조회 명령문 >> 결과 집합 명령

Page 23: 기초  SQL  문

Chapter05

기초 SQL 문

● [ 예 1] 열 이름으로 정렬

SELECT royaltyper, title_id, au_id FROM titleauthor WHERE au_id <= '472-27-2349' ORDER BY royaltyper DESC, title_id

● [ 예 2] 위치를 나타내는 정수로 정렬 : ORDER BY 절의 1 은 열 목록의 첫 번째 열인 royaltyper 를 가리키고 , 2 는 두 번째 열인 title_id 를 가리킴 (실행 결과는 같음 ) SELECT royaltyper, title_id, au_id FROM titleauthor WHERE au_id <= '472-27-2349' ORDER BY 1 DESC, 2

데이터베이스 조회 명령문 >> 결과 집합 명령

Page 24: 기초  SQL  문

Chapter05

기초 SQL 문

■ 중복 행 제거 (DISTINCT)

● 결과 집합에 중복된 레코드들을 하나씩만 나타나게 하려면 열 목록에 DISTINCT 를 사용하면 됨

● 구문 : DISTINCT column [ ,...n]

● column( 열 ) 이 여러 개 있을 때는 모든 열을 조합한 값이 중복되지 않도록 해 줌 DISTINCT 가 포함된 SELECT 문에 ORDER BY 절이 있을 경우에는 정렬하는 열들이 열 목록에 반드시 나타나야 함 ● [ 예 1] 열 하나에 적용 SELECT DISTINCT state FROM stores

데이터베이스 조회 명령문 >> 결과 집합 명령

Page 25: 기초  SQL  문

Chapter05

기초 SQL 문

■ 개념 ● INSERT 문은 테이블에 한 행을 삽입하는 명령문

● 구문 :

INSERT [INTO] table_name ( column_list ) VALUES ( value_list )

▸ INSERT 와 table_name 사이의 키워드 INTO 는 생략할 수 있다 . ▸ column_list 는 쉼표로 구분된 하나 이상의 열들의 목록을 가리킨다 . ( 예 ) col1, col2, ... ▸ value_list 는 쉼표로 구분된 하나 이상의 값들의 목록을 가리킨다 . ( 예 ) val1, val2, ... ▸ value_list 의 각각의 값은 같은 위치의 열에 할당된다 . ▸ 값은 숫자 상수 , 문자열 상수 , 연산식 , 키워드 (DEFAULT) 등이 될 수 있다 .

데이터베이스 수정 명령문 >> INSERT 문 기초

Page 26: 기초  SQL  문

Chapter05

기초 SQL 문

■ 작동 원리 데이터베이스 수정 명령문 >> INSERT 문 기초

● INSERT 문의 실행이 성공하면 , 위 그림처럼 기본적으로 테이블의 마지막 행 뒤에 새로운 행이 삽입됨

Page 27: 기초  SQL  문

Chapter05

기초 SQL 문

● INSERT 문이 실패하면 행 삽입은 취소됨

● 테이블에 클러스터 인덱스가 있을 경우에는 기존의 행들 사이에 삽입될 수도 있음

● 기본적인 INSERT 문은 반드시 한 행에 대해서 적용 ( 한꺼번에 여러 행을 삽입할 수 없다 ) ● 기본적인 INSERT 문은 행 전체에 대해 적용 ( 한 행의 일부분만 삽입할 수는 없다 ) ■ 기본 예

USE pubs INSERT stores ( stor_id, stor_name, stor_address, city, state, zip ) VALUES ( '9001', 'Book Baron', '1236 S. Magnolia Ave.', 'Anaheim', 'CA', '92804' )

데이터베이스 수정 명령문 >> INSERT 문 기초

Page 28: 기초  SQL  문

Chapter05

기초 SQL 문

■ 열 순서 변경

● 삽입할 때 열들의 순서를 바꿈 INSERT stores ( zip, state, city, stor_address, stor_name, stor_id ) VALUES ( '94705', 'CA', 'Berkeley', '2904 College Ave.', 'Avenue Books', '9002' )

● 삽입된 행을 조회 SELECT * FROM stores WHERE stor_id = '9002' ● 바뀐 열과 값의 순서는 반드시 서로 일치해야 함

데이터베이스 수정 명령문 >> INSERT 문 활용

Page 29: 기초  SQL  문

Chapter05

기초 SQL 문

■ 열 생략

● 예 : INSERT stores ( stor_id ) VALUES ( '9003' ) ● 방금 삽입된 행 조회 SELECT * FROM stores WHERE stor_id = '9003' ● 주의 : 아무 열이나 생략할 수는 없음 . NULL 이 허용되지 않고 (NOT NULL), 기본값 (DEFAULT) 도 정의되어 있지 않는 열을 생략하면 오류가 발생함

데이터베이스 수정 명령문 >> INSERT 문 활용

Page 30: 기초  SQL  문

Chapter05

기초 SQL 문

■ 값으로 DEFAULT 사용

● 값 목록에서 특정 값 대신에 키워드 “ DEFAULT” 를 지정 → 해당 열에는 기본값 또는 NULL 이 삽입됨 ● 예 : INSERT employee ( emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date ) VALUES ( 'ZZZ12345M', 'Irum', DEFAULT, 'Seong', DEFAULT, DEFAULT, DEFAULT, DEFAULT ) ● 방금 삽입된 행 조회 SELECT * FROM employee WHERE emp_id = 'ZZZ12345M'

데이터베이스 수정 명령문 >> INSERT 문 활용

Page 31: 기초  SQL  문

Chapter05

기초 SQL 문

■ 값으로 NULL 사용

● 값 목록에서 NULL 을 지정하면 기본값이 정의되어 있더라도 무조건 NULL 이 삽입됨 ● 예 : INSERT publishers ( pub_id, pub_name, city, state, country ) VALUES ( '9911', 'Bad Publisher', 'L.A.', 'CA', NULL ) SELECT * FROM publishers WHERE pub_id = '9911'

● NULL 대신에 DEFAULT 를 사용해서 삽입 SELECT * INSERT publishers ( pub_id, pub_name, city, state, country ) VALUES ( '9912', 'Good Publisher', 'L.A.', 'CA', DEFAULT ) SELECT * FROM publishers WHERE pub_id = '9912'

데이터베이스 수정 명령문 >> INSERT 문 활용

Page 32: 기초  SQL  문

Chapter05

기초 SQL 문

■ 값으로 NULL 사용

● 값 목록에서 NULL 을 지정하면 기본값이 정의되어 있더라도 NULL 이 삽입됨 ● 예 : INSERT publishers ( pub_id, pub_name, city, state, country ) VALUES ( '9911', 'Bad Publisher', 'L.A.', 'CA', NULL ) SELECT * FROM publishers WHERE pub_id = '9911'

● NULL 대신에 DEFAULT 를 사용해서 삽입 SELECT * INSERT publishers ( pub_id, pub_name, city, state, country ) VALUES ( '9912', 'Good Publisher', 'L.A.', 'CA', DEFAULT ) SELECT * FROM publishers WHERE pub_id = '9912'

데이터베이스 수정 명령문 >> INSERT 문 활용

Page 33: 기초  SQL  문

Chapter05

기초 SQL 문

■ DEFAULT VALUES 절

● 모든 열에 “ DEFAULT” 를 적용하고자 할 경우 ● 예 : USE Northwind INSERT Orders DEFAULT VALUES

● 방금 삽입된 행 조회 SELECT * FROM Orders WHERE OrderID = @@IDENTITY

데이터베이스 수정 명령문 >> INSERT 문 활용

Page 34: 기초  SQL  문

Chapter05

기초 SQL 문

■ 개념

● UPDATE 문은 테이블의 하나 이상의 열을 갱신하는 명령문

● 구문 : UPDATE table_name SET column1 = value1 [ , column2 = value2, ... ] [ WHERE search_condition ]

▸ columni = valuei 쌍은 필요한 만큼 반복될 수 있음 (쌍들 사이는 ‘ ,’ 로 구분 ). ▸ WHERE 절 (WHERE search_condition) 은 생략할 수도 있지만 , 이 경우 모든 행을 일괄적으로 갱신해 버리므로 주의해야 함 (따라서 대부분의 경우에 WHERE 절을 사용함 ).

데이터베이스 수정 명령문 >> UPDATE 문 기초

Page 35: 기초  SQL  문

Chapter05

기초 SQL 문

■ 작동 원리 데이터베이스 수정 명령문 >> UPDATE 문 기초

Page 36: 기초  SQL  문

Chapter05

기초 SQL 문

■ 기본 예

USE pubs SELECT * FROM roysched WHERE title_id = 'BU1032' UPDATE roysched SET royalty = 8 WHERE title_id = 'BU1032' SELECT * FROM roysched WHERE title_id = 'BU1032'

데이터베이스 수정 명령문 >> UPDATE 문 활용

Page 37: 기초  SQL  문

Chapter05

기초 SQL 문

■ 값으로 DEFAULT 사용 ● 해당되는 열의 값을 기본값 또는 NULL 로 갱신● 예SELECT country   FROM publishers   WHERE pub_id = '9911'  UPDATE publishers   SET country = DEFAULT   WHERE pub_id = '9911'  SELECT country   FROM publishers   WHERE pub_id = '9911'

데이터베이스 수정 명령문 >> UPDATE 문 활용

Page 38: 기초  SQL  문

Chapter05

기초 SQL 문

■ 개념

● 테이블의 하나 이상의 열을 삭제하는 명령문

● 구문 :

DELETE [FROM] table_name [ WHERE search_condition ]

▸ DELETE 와 table_name 사이의 키워드 INTO 는 생략할 수 있음 ▸ WHERE 절 (WHERE search_condition) 은 생략할 수도 있지만 , 이 경우 모든 행을

일괄적으로 삭제해 버리므로 주의해야 함 (따라서 대부분의 경우에 WHERE 절을 사용함 ).

데이터베이스 수정 명령문 >> DELETE 문

Page 39: 기초  SQL  문

Chapter05

기초 SQL 문

■ 작동 원리 데이터베이스 수정 명령문 >> DELETE 문

● DELETE 문이 실행되면 WHERE 절에서 지정한 해당 행 전체가 삭제됨 ● WHERE 절을 만족하지 않으면 삭제는 발생하지 않으며 , 만족할 경우에는 하나 또는 그 이상의 행이 삭제됨 ● DELETE 문은 행 단위로 적용되며 , 행의 일부만 삭제할 수는 없음

Page 40: 기초  SQL  문

Chapter05

기초 SQL 문

■ 기본 예

● 가장 기본적인 DELETE 문의 실행 예 : DELETE stores WHERE stor_id = '9001'

▸ stores 테이블에서 stor_id 가 '9001' 인 행을 모두 삭제함 ▸ stor_id 는 주 키이고 값이 '9001' 인 행이 있으므로 , 실제로 한 행만 삭제됨

데이터베이스 수정 명령문 >> DELETE 문