520 likes | 753 Views
기초 SQL 문. SELECT 문과 같은 데이터베이스 조회 명령문을 이해한다 . INSERT, UPDATE, DELETE 문과 같은 데이터베이스 수정 명령문을 이해한다. 1. 데이터베이스 조회 명령문 2. 데이터베이스 수정 명령문. 데이터베이스 조회 명령문 >> SELECT 문 개요 ■ 개념과 작동 원리. 데이터베이스 조회 명령문 >> SELECT 문 개요. ■ SELECT 문의 기본구성 SELECT 검색할 컬럼들을 지정 FROM 검색할 테이블을 지정 [WHERE 검색 조건 ]
E N D
기초 SQL 문 SELECT 문과 같은 데이터베이스 조회 명령문을 이해한다. INSERT, UPDATE, DELETE 문과 같은 데이터베이스 수정 명령문을 이해한다.
1. 데이터베이스 조회 명령문 • 2. 데이터베이스 수정 명령문
데이터베이스 조회 명령문>>SELECT 문 개요 • ■ 개념과 작동 원리
데이터베이스 조회 명령문>> SELECT문 개요 • ■ SELECT문의 기본구성 • SELECT • 검색할 컬럼들을 지정 • FROM • 검색할 테이블을 지정 • [WHERE • 검색 조건] • (WHERE절이 없는 경우에는 모든 행을 출력) • *[]-생략가능
데이터베이스 조회 명령문>>열 제약 조건 ■ 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 FROM stores
데이터베이스 조회 명령문>>열 제약 조건 ■ 열 별칭 지정 ●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]
데이터베이스 조회 명령문>>열 제약 조건 ■ 상수 열 ● 테이블 열 값 대신 모든 레코드에 동일한 상수 값을 출력하는 열 ● 문자 상수 열 SELECT UnitPrice AS '단가', Quantity AS '수량', Discount AS '할인율', '합계:', UnitPrice * Quantity * (1 - Discount) FROM [Order Details] ●숫자 상수 열 SELECT 7 AS Lucky, firstname, lastname FROM employees ■ 예제(p73)
데이터베이스 조회 명령문>>열 제약 조건 ● FROM 절이 없는 SELECT 문 SELECT 'Lucky', 7, '참 좋다' → 단순히 문자열을 출력 ● 변수 열을 사용하여 인위적으로 결과 집합을 만드는 경우 DECLARE @var1 int, @var2 int → 변수 선언부문 SET @var1 = 1 → 변수에 값을 할당 SET @var2 = 2 SELECT @var1 AS '인위적인', @var2 AS '결과 집합'
데이터베이스 조회 명령문>>열 제약 조건 ●CONVERT() - 자료형을 바꾸는 함수 - 형식: CONVERT( 변경할 데이터타입, 변경 데이터) SELECT CONVERT(char(30),title) AS ‘줄인 제목’ FROM titles SELECT CONVERT(int, ’32.2’) SELECT CONVERT(int, ’32’) SELECT CONVERT(varchar(5),32.2) SELECT CONVERT(float, 32)
데이터베이스 조회 명령문>>열 제약 조건 ■ 숫자 관련 함수 - CEILING() : 주어진 값보다 크거나 같은, 가장 작은 정수(절상) ex) SELECT CEILING(29.9), CEILING(29.1) - FLOOR() : 주어진 값보다 작거나 같은, 가장 큰 정수(절삭) ex) SELECT FLOOR(29.9), FLOOR(29.1) - ROUND() : 반올림 ex) SELECT ROUND(29.1, 0), ROUND(29.9,0), ROUND(29.853,1) - ABS() : 절대값 - SQUARE(): 제곱값 - POWER(숫자, y): y승의 값
데이터베이스 조회 명령문>>열 제약 조건 ■ 문자 관련 함수 - + : 둘 이상의 문자를 연결 ex) SELECT ‘first’ + ‘name’ - LEFT() : 왼쪽에서 주어진 숫자만큼의 자리를 돌려줌 ex) SELECT left(‘student’,3) - RIGHT() : 오른쪽에서 주어진 숫자 만큼으로부터 시작되는 문자열 - LEN() : 주어진 문자의 길이를 돌려줌 ex) SELECT LEN(‘student’) - LOWER() : 소문자로 변환 - UPPER() : 대문자로 변환 - LTRIM/RTRIM(): 공백 제거 - REPLACE() : 주어진 문자열에서 문자를 검색하여 변경 ex) SELECT REPLACE(‘student’, ‘t’,’s’) - SUBSTRING(): 문자의 일부분을 돌려줌 ex) SELECT SUBSTRING(‘student’,2,2) ** 영문과 한글의 검색 기준을 유의함(한글은 2byte지만 한 자리수로 계산)
데이터베이스 조회 명령문>>열 제약 조건 ■ 날짜 관련 함수 - GETDATE() : 현재 날짜와 시간을 알려줌 - DATEADD() : DATEPART에 지정된 값을 더함 ex) SELECT DATEADD(DD,100,GETDATE()) - DATEDIFF(): 두 날짜 사이의 DATEPART 차이 값 반환 ex) SELECT DATEDIFF(MM,‘2004-01-01’,’2004-12-31’) - DAY(): 날짜 값에서 DAY 값만 반환 - MONTH(): 날짜 값에서 MONTH 값만 반환 - YEAR(): 날짜 값에서 YEAR 값만 반환 - 날짜함수의 DATEPART 값
연산자 설명 = 같다. > 크다. < 작다. >= 크거나 같다. <= 작거나 같다. <> 같지 않다. 데이터베이스 조회 명령문>>행 제약 조건 ■ 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 순 SELECT * FROM titleauthor WHERE NOT ( au_id = '213-46-8915' AND ( title_id = 'BU1032' OR royaltyper = 40 ) )
와일드카드 문자 설명 % 문자가 0개 이상인 문자열 _ (밑줄) 단일 문자 [ ] 지정된 범위([a-f]) 또는 집합([abcdef])에 있는 단일 문자 [^] 지정된 범위([^a-f]) 또는 집합([^abcdef])에 없는 단일 문자 데이터베이스 조회 명령문>>행 제약 조건 ■ 문자열 패턴 매칭(LIKE 연산자) ● LIKE 연산자는 문자열 패턴 매칭(pattern matching)을 해 주는 연산자로서, 소량의 문자열 검색에 많이 사용함 ● 구문: match_expression LIKE pattern match_expression에는 주로 열 또는 변수 이름이 오고, pattern에는 와일드카드 문자가 포함된 문자열 상수가 옴 ● 와일드카드 문자
데이터베이스 조회 명령문>>행 제약 조건 ● [예1] SELECT au_lname, au_fname, phone FROM authors WHERE au_lname LIKE '%[CKR]a%' ORDER BY au_lname ASC ● LIKE 연산자는 대량의 문자열 검색에는 부적합하며(많은 시간이 소요되므로), 이 경우에는 전체 텍스트 검색이 권장됨 ABC, ACB, BA, ABCD, CDA, DAB, BDA, DCBA ● 다음의 조건에 맞는 단어? 1) ‘A_’ 2)’A%’ 3)’%DA’ 4)’A[^B]’ 5)’%AB%’ 6)’[A-C]%’ 7)’_ _B’ 8)’A_C%’
데이터베이스 조회 명령문>>행 제약 조건 ■ 범위 검색(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] 문자 데이터 형에 적용: 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'
데이터베이스 조회 명령문>>행 제약 조건 ■ 목록 검색(IN 연산자) ● 목록 안의 값 중 하나와 일치하는지 여부를 파악하는데 사용 ● 구문: list_expression IN ( value_list ) ▸ list_expression에는 주로 열 또는 변수 이름이 온다. ▸ value_list에는 보통, 쉼표로 구분된 상수 값들이 온다. (예) col IN (1, 2, 4, 9) ▸ value_list에 서브 쿼리가 올 수도 있고, 실제로 많이 사용한다 ● [예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을 =로 비교할 때 무조건 실패하기 때문 SELECT Title, Price FROM Titles WHERE Price = NULL
데이터베이스 조회 명령문>>행 제약 조건 ■ 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
데이터베이스 조회 명령문>> 결과 집합 명령 ■ 행 정렬(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를 가리킴(실행 결과는 같음) SELECT royaltyper, title_id, au_id FROM titleauthor WHERE au_id <= '472-27-2349' ORDER BY 1 DESC, 2
데이터베이스 조회 명령문>> 결과 집합 명령 ■ 몇 개의 행만 가져오기(TOP n) ● 전체의 행 중에 일부분만 가져오고 싶은 경우에 사용 ● n: 가져올 행의 수 ● [예]상위 6개의 행만 가져오기 SELECT TOP 6 title_id, qty FROM sales ● WITH TIES 옵션: 같은 순위의 행을 모두 가져옴(ORDER BY 절이 있어야함) SELECT TOP WITH TIES 6 title_id, qty FROM sales ORDER BY qty DESC ● PERCENT: 지정된 퍼센트 만큼 가져옴 SELECT TOP 25 PERCENT title_id, qty FROM sales ORDER BY qty DESC
데이터베이스 조회 명령문>> 결과 집합 명령 ■ 중복 행 제거(DISTINCT) ● 결과 집합에 중복된 레코드들을 하나씩만 나타나게 하려면 열 목록에 DISTINCT를 사용하면 됨 ● 구문: DISTINCT column [ ,...n] ● column(열)이 여러 개 있을 때는 모든 열을 조합한 값이 중복되지 않도록 해 줌 DISTINCT가 포함된 SELECT 문에 ORDER BY 절이 있을 경우에는 정렬하는 열들이 열 목록에 반드시 나타나야 함 ● [예1] 열 하나에 적용 SELECT DISTINCT state FROM stores ■ 예제(p105)
종합 예제 ■ ‘제품’ 테이블을 생성하시오
종합 예제 ■ 다음의 질의를 수행하시오 - 모든 필드를 출력하시오 - 제품번호, 품명, 단가 필드의 내용을 출력하시오 - ‘품명’을 기준으로 오름차순으로 정렬하여 품명, 단가를 출력하시오. - ‘단가’를 기준으로 내림차순으로 정렬하여 품명, 단가를 출력하시오. - ‘종류’를 기준으로 정렬한 뒤 다시 ‘품명’을 기준으로 정렬하여 종류, 제품번호, 품명, 단가를 출력하시오 - 제품의 ‘종류’를 검색할 때 동일한 값은 하나만 출력하시오 - 가장 최근에 입고된 신상품 5개의 품명, 단가, 입고일자를 출력하시오
종합 예제 ■ 다음의 질의를 수행하시오 - ‘단가’가 200,000 보다 큰 제품의 품명, 단가, 계절을 검색하시오 - ‘입고일자’가 ‘2006-08-20’이전인 제품의 제품번호, 품명, 단가, 입고일자를 검색하시오 - 종류가 ‘정장’인 제품의 제품번호, 종류, 품명을 검색하시오 - 계절이 ‘동’ 이 아닌 제품의 제품번호, 품명, 단가, 계절을 검색하시오 - 입고일자가 ‘2006-07-20’에서 ‘2006-08-20’사이에 해당하는 제품의 모든 정보를 검색하시오 - 품명이 ‘점퍼’로 끝나는 제품의 품명, 단가를 검색하시오
종합 예제 ■ 다음의 질의를 수행하시오 - 제품의 종류가 ‘정장’이나 ‘코트’ 인 제품의 종류, 품명, 단가를 검색하시오 - ‘품명’, ‘단가’와 단가를 10% 인상한 값을 ‘단가인상’이란 이름으로 검색하 시오 - ‘품명’과 ‘색상’을 하나의 값으로 하여 종류가 ‘바지’ 인 제품의 품명+색상,단가를 검색하시오 - ‘품명’과 ‘단가’를 검색하되 ‘단가’뒤에 모두 ‘원’이 붙은 형태로 출력하시 오 - 입고일자에서 날짜만 나오도록 하여 품명,단가,입고일자를 출력하시오 - 모든 제품의 단가를 2.5%로 인상하되 100단위까지 반올림하여 품명,종류,단가를 출력하시오(이상된 단가의 별칭은 ‘인상단가’로 함)
데이터베이스 수정 명령문>> 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 문은 반드시 한 행에 대해서 적용(한꺼번에 여러 행을 삽입할 수 없다) ●기본적인 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 ) SELECT * FROM publishers 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를 사용해서 삽입 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 문 활용 ■ DEFAULT VALUES 절 ● 모든 열에 “DEFAULT”를 적용하고자 할 경우 ● 예: USE Northwind INSERT Orders DEFAULT VALUES ●방금 삽입된 행 조회 SELECT * FROM Orders WHERE OrderID = @@IDENTITY
데이터베이스 수정 명령문>> INSERT 문 활용 ■ INSERT … SELECT / SELECT … INTO 절 ● SELECT … INTO 절: 테이블의 데이터를 가져와서 새로운 테이블에 입력 SELECT 컬럼명, … INTO 새로 만들 테이블명 FROM 복사할 테이블명 ● INSERT .. SELECT 절: 테이블의 데이터를 가져와서 기존의 테이블에 입력 INSERT 데이터를 삽입할 테이블명 SELECT 삽입할 컬럼명, … FROM 데이터를 가져올 테이블명
데이터베이스 수정 명령문>> INSERT 문 활용 ■ 연습문제 ● 기존에 생성했던 ‘제품’ 테이블에 다음의 데이터를 삽입하시오 1. 제품번호: 21, 품명: 카고바지, 종류:바지, 계절:춘, 색상: 카키,단가:75000, 입고일자: 현재 일자 2. 제품번호: 22, 품명: 브이넥셔츠, 종류:셔츠, 단가:35000, 입고일자: 현재 일자
데이터베이스 수정 명령문>> 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' SELECT * FROM roysched WHERE title_id = 'BU1032'
데이터베이스 수정 명령문>> UPDATE 문 활용 ■ 값으로 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 문 활용 ■ 연습문제 ● 기존에 생성했던 ‘제품’ 테이블에 다음의 데이터를 수정하시오 1. 품명이 ‘면바지’인 제품의 색상을 ‘화이트’로 수정하시오 2. 품명에 ‘면’이 포함되는 제품의 계절을 모두 ‘하’로 수정하시오 3. 종류가 ‘코트’인 모든 제품의 가격을 10% 인상한 가격으로 수정하시오.
데이터베이스 수정 명령문>>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'인 행이 있으므로, 실제로 한 행만 삭제됨