데이터삽입, 수정, 삭제
데이터조작언어의개념
- DML: Data Manipulation Language
- 정의된 테이블에 레코드를 삽입·수정·삭제 및 검색하는데 사용되는 명령어의 집합
- 명령어의 종류
INSERT – 테이블 스키마에 적합한 레코드를 삽입
UPDATE – 테이블에서 조건을 만족하는 특정 레코드의 컬럼값을 수정
DELETE – 테이블에 조건을 만족하는 특정 레코드를 삭제
SELECT – 조건을 만족하는 레코드를 테이블에서 검색
INSERT 문
테이블에 새로운 레코드를 삽입하는 명령문
- 테이블에 새로운 레코드를 삽입
- 모든 속성 또는 부분 속성에 대한 속성값을 삽입
INSERT INTO 테이블이름
VALUES(값1, 값2, … 값n)
INSERT INTO 테이블이름(컬럼1, 컬럼2, … 컬럼m)
VALUES(값1, 값2, … 값m)
예시
INSERT INTO학과
VALUES('영어영문학과', '인문과학대학', 'http://eng.knou.ac.kr','02-3668-4510’, 135)
INSERT INTO학과(단과대학, 학과이름, 졸업학점, 전화번호)
VALUES('자연과학대학', '농학과', 140, '02-3668-4600')
UPDATE 문
조건을 만족하는 레코드의 특정 컬럼값을 수정
UPDATE 테이블이름
SET 컬럼1=값1 [, 컬럼2=값2, … , 컬럼n=값n]
[WHERE 조건]
UPDATE 테이블_이름
SET컬럼1=수식1[, 컬럼2=수식2, …, 컬럼n=수식n]
[WHERE 조건]
예시
UPDATE학과
SET주소= 'http:// agri.knou.ac.kr'
WHERE 학과이름= '농학과'
UPDATE학과
SET잔액= 잔액* 1.02 WHERE 잔액>= 500000
DELETE 문
조건에 일치하는 레코드 집합을 테이블에서 삭제할 때 사용하는 명령어
DELETE FROM 테이블이름
[WHERE 조건]
예시
DELETE FROM 교수
WHERE 소속학과 = '행정학과'
DELETE FROM 강의
// 모든 레코드 삭제
참조 무결성 제약조건에 의해 삭제가 안 되는 경우가 있음
이런 경우엔 참조한 테이블의 레코드를 먼저 삭제한 뒤 실행
ex) 교수, 강의 테이블에서 교수 레코드를 먼저 지우는 경우 강의 테이블에 해당 교수의 강의 레코드가 남아있으면 삭제가 안 됨
강의 테이블에서 참조하는 레코드를 먼저 삭제해야 한다.
SAFE UPDATES 모드
- WHERE절이 없는 UPDATE/DELETE 문은 테이블의 전체 레코드를 변경/삭제
- 의도하지 않은 데이터 변경/삭제 방지를 위해 MySQL은 SAFE UPDATES 모드를 지원
- 기본키가 아니 컬럼을 대상으로 수정/삭제 조건을 명시할 경우 실행 여부를 결정
SET SQL_SAFT_UPDATES = 0 또는1
데이터검색(1)
SELECT문 구문 형식
- 한 개 이상의 테이블에서 주어진 조건에 만족하는 레코드를 출력하는 명령문
- 관계 대수의 셀렉션, 프로젝션, 조인, 카티션 프로덕트 연산자의 기능을 모두 포함있는 명령문
- 필수적 절인 SELECT 절과 부가적인 목적으로 사용할 수 있는 여러 절을 혼합하여 검색 기능을 구체화
SELECT 문의 각 절의 기능
- SELECT절 – 결과에 포함되는 컬럼을 지정
- FROM절 – 질의를 적용할 테이블을 지정
- ON/WHERE절 – 조인 조건/검색할 레코드 조건을 지정
- GROUP BY절 – 레코드를 그룹화하기 위한 그룹 조건을 지정
- HAVING절 – GROUP BY 절이 적용된 결과에 대한 조건을 지정
- ORDER BY절 – 검색 결과의 정렬 기준을 지정
단순질의문
레코드를 제한하지 않고 전체 테이블을 검색하는 SELECT 문으로 WHERE 절이 없는 질의문
SELECT 컬럼1, 컬럼2 …, 컬럼n
FROM 테이블
SELECT *
FROM 테이블
예시
SELECT DISTINCT 소속학과
FROM 교수
DISCTINCT: 중복된 값 빼고 하나만 출력
조건질의문
- 산술연산식, 함수 등을 사용하여 표현한 조건을 WHERE절에 기술하여 조건을 만족하는 레코드만 검색하는 SELECT 문
산술연산자
비교연산자
논리연산자 - WHERE 절은 UPDATE, DELETE 문에서도 동일하게 적용
산술연산자
SELECT절 또는 WHERE절에 사용되어 컬럼값 또는 상수와의 산술 계산을 위한 연산자
비교연산자
컬럼값과 상수 또는 컬럼값과 다른 컬럼값과의 크기를 비교하는 연산자
논리연산자
두 개 이상의 조건이 기술되는 질의문에서 조건식 간의 관계를 정의하는 연산자
예시
SELECT 과목명, 학점, 선수과목
FROM 과목
WHERE 이수구분= '전공필수'
SELECT 학생번호, 학생이름, 전화번호, 나이
FROM 학생
WHERE 성별= '남' AND생년월일 < '2000-1-1'
데이터 정렬
- ORDER BY 절을 사용
- 검색 결과를 특정 컬럼에 대해 오름차순(ASC) 또는 내림차순(DESC)으로 정렬
SELECT *
FROM 계좌
ORDER BY 잔액 ASC
특수연산자
범위 포함 여부, 부분 일치 여부, 포함 여부 등 관계형 데이터베이스에서만 사용되도록 고안된 연산자
예시
SELECT 계좌번호, 잔액, 학생번호
FROM 계좌
WHERE 잔액 BETWEEN 200000 AND 400000
SELECT 교수이름, 직위, 소속학과
FROM 교수
WHERE 소속학과 IN ('컴퓨터과학과', '행정학과' , '법학과' )
SELECT 과목코드, 과목명, 이수구분
FROM 과목
WHERE 과목코드 LIKE 'COM%'
함수
- 특정 목적을 수행하도록 사전에 정의된 연산 및 기능을 수행한 후 결과값을 반환하는 명령어 집합
- 상용 DBMS는 검색결과가 사용자에게 여러 형태로 사용되도록 여러 데이터 타입에 대한 다양한 함수를 제공(MySQL 기준)
문자함수
숫자함수
날짜 및 시간함수
숫자함수
삼각함수, 상수, 올림과 버림, 난수 등의 숫자 데이터 타입에 적용할 수 있는 계산을 위한 함수
문자함수
문자열 조작 및 문자 형식 변환 등의 문자와 관련된 다양한 연산을 지원하는 함수
날짜함수
날짜 및 시간 데이터 타입에 적용되어 산술 연산 및 시간 형 변환 등의 조작을 위한 함수
예시
SELECT SUBSTRING(학생번호, 1, 6), 학생이름, CONCAT(성별, '성')
FROM 학생
자료출처: 방통대 데이터베이스시스템 강의 자료
'공부 > 데이터 베이스 시스템' 카테고리의 다른 글
4. SQL (1) (0) | 2024.02.27 |
---|---|
3. 관계형 모델 (1) | 2024.02.21 |
2. 데이터베이스 모델링 (0) | 2024.02.21 |
1. 데이터 베이스의 이해 (0) | 2024.02.21 |