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.학번;
집계 함수를 이용한 검색
-------------------------
나머지 부분은 후에 수정해서 올리겠습니다.
'이것저것' 카테고리의 다른 글
개인심리학, 사회인지적 성격이론 (0) | 2017.01.15 |
---|---|
심리학의 이해 (정신분석이론) (0) | 2017.01.15 |
스테이트 차트(머신) 다이어그램 (0) | 2016.11.03 |
chapter 4 : 관계 데이타베이스 (0) | 2016.10.26 |
컴퓨터구조 1장 (0) | 2016.10.26 |
댓글