기초 SQL 문 SELECT 문과 같은 데이터베이스 조회 명령문을 이해한다.

Slides:



Advertisements
Similar presentations
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
관계 대수와 SQL.
Excel 일차 강사 : 박영민.
Chapter 7. 조건문.
연결리스트(linked list).
제 9 장 구조체와 공용체.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
8장 서브 쿼리.
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
기본적인 SELECT문 작성.
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
5장 Mysql 데이터베이스 한빛미디어(주).
6장 그룹 함수.
다중 테이블 조회 둘 이상의 테이블을 통합하여 조작하는 기법을 이해한다.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
5장. 참조 타입.
단일 테이블 조회를 위한 SELECT 문을 이해한다. 열 제약조건과 행 제약조건을 이해한다. 결과 집합 변경 방법을 이해한다.
Heesang kim PL/SQL 3 Heesang kim.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
6장. printf와 scanf 함수에 대한 고찰
5장 Mysql 데이터베이스 한빛미디어(주).
KIM HEESANG PL/SQL 2 KIM HEESANG
11장. 1차원 배열.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
데이터 수정 데이터 수정 명령문을 이해한다. 데이터 삽입, 갱신 및 삭제 명령문을 이해한다.
JA A V W. 03.
프로그래밍 개요
JDBC Lecture 004 By MINIO.
2015학년도 PHP 기말 레포트 로그인 홈페이지 제작.
Restricting and Sorting Data
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Regular Expression 1 Powerful pattern matching with regular expression to a string while () { if ( /ab*c/ ) { print $_; } } substitute operator s/abc*c/def/;
CHAP 21. 전화, SMS, 주소록.
2014년 가을학기 손시운 지도 교수: 문양세 교수님 데이터 프레임 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
문성우 SQL 실습 Part Ⅰ 문성우.
Database Relational DML SQL.
Regular Expression 1 Powerful pattern matching with regular expression to a string while () { if ( /ab*c/ ) { print $_; } } substitute operator s/abc*c/def/;
SQL Server 2000 세미나 View, SP &Trigger
Excel 일차 강사 : 박영민.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
14 뷰(View) 뷰의 개념 뷰 관리.
Chapter 10 데이터 검색1.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
요약과 집계 각종 요약과 집계 기법을 이해한다. 각종 집계 함수를 이해한다.
Summary of Pointers and Arrays
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

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

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

데이터베이스 조회 명령문>> SELECT 문 개요 ■ 개념과 작동 원리 ■ 구문 ● BNF(Backus Normal Form) : 프로그래밍 언어의 구문을 정의하는데 많이 사용되는 표기법

데이터베이스 조회 명령문>> SELECT 문 개요 ● 중요한 BNF 구성 요소들 구성 요소 설명 ::= 왼쪽의 항목은 오른쪽과 같이 정의된다. <element> 다른 곳에 정의되어 있는 항목. [ ] 생략 가능하다. { ... | ... } 여러 항목 중에서 하나를 선택할 수 있다. ...n 여러 번 반복될 수 있다. name, expression 이름, 연산식 등으로 대치시킬 곳. ● 오라클에서의 그래픽한 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 ] } 계속..

데이터베이스 조회 명령문>> 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 > ]

데이터베이스 조회 명령문>> 열 제약 조건 ■ SELECT 문을 사용할 때 열을 제약하는 각종 조건 ■ 모든 열(*) ● 가장 단순한 형태의 SELECT 문 USE pubs SELECT *   FROM stores ● 행과 열 제약이 전혀 없는 가장 기초적인 조회문으로서, 간단히 데이터를 테스트하거나 테이블 내의 데이터 전체를 결과 집합으로 필요로 할 때 많이 사용함 ● 현재 데이터베이스와 USE 문

데이터베이스 조회 명령문>> 열 제약 조건 ■ 열 목록 ● 특정 열들의 목록을 지정 SELECT stor_id, stor_name, stor_address, city,state, zip   FROM stores ● (정의한) 순서대로, 또 모두 나열할 필요는 없음 SELECT stor_id, zip, state, city, stor_address

데이터베이스 조회 명령문>> 열 제약 조건 ■ 열 별칭 지정 ● 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 '서점 주소' ● alias = column : 열 이름과 별칭의 위치가 서로 바뀌고, 가운데 ‘=’ 연산자가 들어가는 방법 SELECT UnitPrice, Quantity, Discount,     total_price = UnitPrice * Quantity * (1 - Discount)   FROM [Order Details]

데이터베이스 조회 명령문>> 열 제약 조건 ■ 상수 열 ● 테이블 열 값 대신 모든 레코드에 동일한 상수 값을 출력하는 열 ● 문자 상수 열 SELECT UnitPrice AS '단가', Quantity AS '수량', Discount AS '할인율',     '합계:', UnitPrice * Quantity * (1 - Discount)   FROM [Order Details] ● 숫자 상수 열 SELECT 7 AS Lucky, firstname, lastname   FROM employees

데이터베이스 조회 명령문>> 열 제약 조건 ● FROM 절이 없는 SELECT 문 SELECT 'Lucky', 7, '참 좋다' ● 변수 열을 사용하여 인위적으로 결과 집합을 만드는 경우 DECLARE @var1 int, @var2 int /* 아래 할당문과 비슷한 처리를 한다고 가정함 */ SET @var1 = 1 SET @var2 = 2 SELECT @var1 AS '인위적인', @var2 AS '결과 집합'

데이터베이스 조회 명령문>> 행 제약 조건 ■ WHERE 절에서 행을 제약하는 각종 조건들 ■ 비교 연산자 연산자 설명 = 같다. > 크다. < 작다. >= 크거나 같다. <= 작거나 같다. <> 같지 않다. ● [예 1] = 비교 연산자 USE Pubs   SELECT *   FROM stores   WHERE stor_id = '7896' ● [예 2] <= 비교 연산자 SELECT *   FROM titleauthor   WHERE royaltyper <= 30

데이터베이스 조회 명령문>> 행 제약 조건 ■ 논리 연산자 ● 연산식들을 논리적으로 결합하는 연산자 연산자 설명 NOT ~ 연산식이 FALSE이면 TRUE를 돌려줌(즉, 부정) ~ AND ~ 양쪽의 연산식을 둘 다 만족하면 TRUE를 돌려줌 ~ OR ~ 양쪽의 연산식 중 하나만 만족하면 TRUE를 돌려줌 ● 우선순위: NOT → AND → OR ● 결합 순서를 바꾸려면 “( )”로 둘러싸 주어야 함

데이터베이스 조회 명령문>> 행 제약 조건 ● [예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 순   WHERE NOT (     au_id = '213-46-8915'     AND (       title_id = 'BU1032'       OR royaltyper = 40     )   )

데이터베이스 조회 명령문>> 행 제약 조건 ■ 문자열 패턴 매칭(LIKE 연산자) ● LIKE 연산자는 문자열 패턴 매칭(pattern matching)을 해 주는 연산자로서, 소량의 문자열 검색에 많이 사용함 ● 구문: match_expression  LIKE  pattern match_expression에는 주로 열 또는 변수 이름이 오고, pattern에는 와일드카드 문자가 포함된 문자열 상수가 옴 ● 와일드카드 문자 와일드카드 문자 설명 % 문자가 0개 이상인 문자열 _ (밑줄) 단일 문자 [ ] 지정된 범위([a-f]) 또는 집합([abcdef])에 있는 단일 문자 [^] 지정된 범위([^a-f]) 또는 집합([^abcdef])에 없는 단일 문자

데이터베이스 조회 명령문>> 행 제약 조건 ● [예1] SELECT au_lname, au_fname, phone   FROM authors   WHERE au_lname LIKE '%[CKR]a%'   ORDER BY au_lname ASC ● LIKE 연산자는 대량의 문자열 검색에는 부적합하며(많은 시간이 소요되므로), 이 경우에는 전체 텍스트 검색이 권장됨(“10장. 인덱스와 전체 텍스트 검색” 참고).

데이터베이스 조회 명령문>> 행 제약 조건 ■ 범위 검색(BETWEEN 연산자) ● 최소 값과 최대 값 사이의 범위에 들어가는지 여부를 파악 ● 최소 값과 최대 값도 범위에 포함됨 ● 구문: range_expression  BETWEEN  min_value  AND  max_value range_expression에는 주로 열 또는 변수 이름이 옴 ● BETWEEN 연산자를 사용하는 것이 더 효율적 range_expression  >=  min_value  AND  range_expression  <= max_value ● range_expression은 정수 데이터 형을 많이 사용하는데, 문자 또는 날짜·시각 데이터 형도 간혹 사용한다. ● 주의: 날짜·시각 데이터 형에서는 자정을 기준으로 최소 값 또는 최대 값 날짜의 포함 여부를 결정하므로 해야 함

데이터베이스 조회 명령문>> 행 제약 조건 ● [예1] 정수 데이터 형에 적용: SELECT *   FROM titleauthor   WHERE royaltyper BETWEEN 30 AND 40 ● [예2] 문자 데이터 형에 적용:   WHERE title_id BETWEEN 'BU1032' AND 'BU2075' ● [예3] 날짜·시각 데이터 형에 적용: 만약 ord_date가 ‘1994-09-13 12:34:00.000’라면 결과 집합에서 제외됨(9월 13일 0시부터 0시까지만(24시까지가 아님!) 범위에 포함되기 때문이다).   FROM sales   WHERE ord_date BETWEEN '9/13/1994' AND '9/13/1994'

데이터베이스 조회 명령문>> 행 제약 조건 ■ 목록 검색(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'

데이터베이스 조회 명령문>> 행 제약 조건 ■ 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을 =로 비교할 때 무조건 실패하기 때문   FROM Titles   WHERE Price = NULL

데이터베이스 조회 명령문>> 행 제약 조건 ■ NULL 비교(IS 연산자) ● [예3] <> NULL로 비교: 0개 행으로 결과가 나오는 것은 NULL을 <>로 비교할 때도 무조건 실패하기 때문 SELECT Title, Price   FROM Titles WHERE Price <> NULL ● [예4] IS NULL로 비교: 정확한 결과가 나옴   WHERE Price IS NULL ● [예5] IS NOT NULL로 비교 : 정확한 결과가 나옴 SELECT Title, Price   WHERE Price IS NOT NULL

데이터베이스 조회 명령문>> 결과 집합 명령 ■ 행 정렬(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차 정렬 키 등과 같이 적용된다.

데이터베이스 조회 명령문>> 결과 집합 명령 ● [예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를 가리킴(실행 결과는 같음)   ORDER BY 1 DESC, 2

데이터베이스 조회 명령문>> 결과 집합 명령 ■ 중복 행 제거(DISTINCT) ● 결과 집합에  중복된 레코드들을 하나씩만 나타나게 하려면 열 목록에 DISTINCT를 사용하면 됨 ● 구문: DISTINCT column [ ,...n] ● column(열)이 여러 개 있을 때는 모든 열을 조합한 값이 중복되지 않도록 해 줌 DISTINCT가 포함된 SELECT 문에 ORDER BY 절이 있을 경우에는 정렬하는 열들이 열 목록에 반드시 나타나야 함 ● [예1] 열 하나에 적용 SELECT DISTINCT state   FROM stores

데이터베이스 수정 명령문>> INSERT 문 기초 ■ 개념 ● 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 문 기초 ■ 작동 원리 ● INSERT 문의 실행이 성공하면, 위 그림처럼 기본적으로 테이블의 마지막 행 뒤에 새로운 행이 삽입됨

데이터베이스 수정 명령문>> 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 문 활용 ■ 열 순서 변경 ● 삽입할 때 열들의 순서를 바꿈   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 문 활용 ■ 열 생략 ● 예:   INSERT stores ( stor_id )   VALUES ( '9003' ) ● 방금 삽입된 행 조회 SELECT *   FROM stores   WHERE stor_id = '9003' ● 주의: 아무 열이나 생략할 수는 없음. NULL이 허용되지 않고(NOT NULL), 기본값(DEFAULT)도 정의되어 있지 않는 열을 생략하면 오류가 발생함

데이터베이스 수정 명령문>> INSERT 문 활용 ■ 값으로 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 문 활용 ■ 값으로 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 )   WHERE pub_id = '9912'

데이터베이스 수정 명령문>> INSERT 문 활용 ■ 값으로 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를 사용해서 삽입   INSERT publishers ( pub_id, pub_name, city, state, country )   VALUES ( '9912', 'Good Publisher', 'L.A.', 'CA', DEFAULT )   WHERE pub_id = '9912'

데이터베이스 수정 명령문>> INSERT 문 활용 ■ DEFAULT VALUES 절 ● 모든 열에 “DEFAULT”를 적용하고자 할 경우 ● 예: USE Northwind   INSERT Orders   DEFAULT VALUES ● 방금 삽입된 행 조회   SELECT *   FROM Orders   WHERE OrderID = @@IDENTITY

데이터베이스 수정 명령문>> UPDATE 문 기초 ■ 개념 ● UPDATE 문은 테이블의 하나 이상의 열을 갱신하는 명령문 ● 구문: UPDATE table_name   SET column1 = value1     [ , column2 = value2, ... ]   [ WHERE search_condition ] ▸ columni = valuei 쌍은 필요한 만큼 반복될 수 있음(쌍들 사이는 ‘,’로 구분). ▸ WHERE 절(WHERE search_condition)은 생략할 수도 있지만, 이 경우 모든 행을 일괄적으로 갱신해 버리므로 주의해야 함(따라서 대부분의 경우에 WHERE 절을 사용함).

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

데이터베이스 수정 명령문>> UPDATE 문 활용 ■ 기본 예 USE pubs   SELECT *   FROM roysched WHERE title_id = 'BU1032' UPDATE roysched   SET royalty = 8   WHERE title_id = 'BU1032'

데이터베이스 수정 명령문>> UPDATE 문 활용 ■ 값으로 DEFAULT 사용 ● 해당되는 열의 값을 기본값 또는 NULL로 갱신 ● 예 SELECT country   FROM publishers   WHERE pub_id = '9911'   UPDATE publishers   SET country = DEFAULT

데이터베이스 수정 명령문>> DELETE 문 ■ 개념 ● 테이블의 하나 이상의 열을 삭제하는 명령문 ● 구문: DELETE [FROM] table_name   [ WHERE search_condition ] ▸ DELETE와 table_name 사이의 키워드 INTO는 생략할 수 있음 ▸ WHERE 절(WHERE search_condition)은 생략할 수도 있지만, 이 경우 모든 행을 일괄적으로 삭제해 버리므로 주의해야 함(따라서 대부분의 경우에 WHERE 절을 사용함).

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

데이터베이스 수정 명령문>> DELETE 문 ■ 기본 예 ● 가장 기본적인 DELETE 문의 실행 예: DELETE stores   WHERE stor_id = '9001' ▸ stores 테이블에서 stor_id가 '9001'인 행을 모두 삭제함 ▸ stor_id는 주 키이고 값이 '9001'인 행이 있으므로, 실제로 한 행만 삭제됨