본문 바로가기
이것저것

SQL 데이타 조작어(검색, 갱신, 삽입, 삭제)

by 문자메일 2016. 11. 3.

SQL 데이타 조작문


SQL 검색문의 기본적인 구조는

SELECT 열_리스트

FROM    테이블_리스트

WHERE  조건;


예) '컴퓨터'과 학생의 이름과 학번을 검색하라.

SELECT 이름, 학번

FROM     학생

WHERE   학과 = '컴퓨터';


명확성을 위해 그 소속 테이블 이름과 열 이름이 구두점(.)으로 연결된 형태를 사용하는 것이 원칙이다.

SELECT 학생.이름, 학생.학번

FROM     학생

WHERE   학생.학과 = '컴퓨터';





데이타 검색(1)


이론상 SQL테이블은 투플의 집합이 아니다. 왜냐하면 투플의 유일성에 위배되기 때문이다.

따라서 집합과 같은 결과를 만들기 위해서는 SELECT문에 DISTINCT를 명세해야 한다.


데이타 검색의 일반적인 형식은


SELECT [ALL/DISTINCT] 열_리스트

FROM    테이블_리스트

[WHERE 조건]

[GROUP BY 열_리스트 [HAVING 조건]]

[ORDER BY 열_리스트 [ASC|DESC]];


데이타 검색(2)


​검색 결과에 레코드의 중복 제거

질의 : 학생 테이블에 어떤 학과들이 있는지 검색하라

SELECT DISTINCT 학과

FROM 학생

테이블의 열 전부를 검색하는 경우

질의 : 학생 테이블 전부를 검색하라

SELECT *

FROM   학생


전체를 검색할 때는 열 이름을 일일이 나열할 필요없이 *로 표현하면 된다.


데이타 검색(3)

조건 검색

질의 : ​학생 테이블에서 학과가 '컴퓨터'이고 학년이 4인 학생의 학번과 이름을 검색하라.


SELECT 학생.학번, 학번.이름

FROM   학생

WHERE  학생.학과 = '컴퓨터' AND 학생.학년 = 4;​ 

-WHERE 절에 나오는 조건식에는 비교연산자 =,>=,<= 등과 AND,OR,NOT을 사용할 수 있다.


순서를 명세하는 검색

질의 : 등록 테이블에서 중간성적이 90점 이상인 학생의 학번과 과목번호를 검색하되, 학번은 내림차순으로, 또 같은 학번에 대해서는 과목번호 오름차순으로 검색하라.


SELECT 등록.학번, 등록.과목번호

FROM    등록

WHERE   등록.중간성적>=90

ORDER BY 등록.학번 DESC, 등록.과목번호 ASC;


데이타 검색(4)

산술식과 문자 스트링이 명세된 검색(이름변경)

SELECT  학번 AS 학생학번, '중간시험 =' AS 시험, 중간성적+3 AS 점수

FROM  등록

WHERE  과목번호 = 'C312';


복수 테이블로부터의 검색 (조인)

질의 : 과목번호 C413에 등록한 학생의 이름, 학과, 성적을 검색하라.

SELECT  학생.이름, 학생.학과, 등록.성적

FROM  학생, 등록

WHERE  학생.학번 = 등록.학번 AND 등록.과목번호 = 'C413';



데이타 검색(5)

자기 자신을 테이블에 조인하는 검색

질의 : 같은 학과 학생들의 학번을 쌍으로 검색하라. 단 첫번째 학번은 두 번째 학번 보다 작게하라.

SELECT S1.학번, S2.학번

FROM 학생 S1,  학생 S2       (S1, S2는 별명)

WHERE S1.학과 = S2.학과 AND S1.학번<S2.학번;


집계 함수를 이용한 검색



-------------------------



나머지 부분은 후에 수정해서 올리겠습니다.

댓글