익명 사용자
로그인하지 않음
계정 만들기
로그인
youngwiki
검색
Additional Operation 문서 원본 보기
youngwiki
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
원본 보기
역사
←
Additional Operation
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
상위 문서: [[SQL]] ==개요== [[SQL]]은 그 [[Structure of SQL Queries|기본적인 문법]]을 바탕으로 다양한 여러 연산들을 지원한다. ==Rename 연산== SQL 내에서 사용되는 relation의 이름들과 속성(attribute)의 이름들은 from 절에 있는 relation으로부터 유도된다. 하지만 이러한 방식으로 relation과 속성의 이름들을 사용할 때에는 예기치 못한 문제나 불편함이 발생할 수 있다. 따라서 SQL은 relation과 속성(attribute)의 이름을 "'''as'''" 구문을 사용하여 이름을 바꾸는 것을 하용한다. <syntaxhighlight lang="sql"> old_name as new_name </syntaxhighlight> 이때 as는 select 절과 from 절 양쪽에서 사용될 수 있다. as 절은 relation의 이름을 바꾸는 데 특히 유용하다. relation의 이름을 바꾸는 한 가지 이유는 긴 릴레이션 이름을 더 짧고 질의의 다른 부분에서 사용하기 더 편한 이름으로 바꾸기 위함이다. 예를 들어, “대학에서 어떤 과목이든 가르친 적이 있는 모든 교수들의 이름과 그들이 가르친 과목의 ID를 구하라.”와 같은 질의는 아래와 같이 간단하게 나타낼 수 있다. <syntaxhighlight lang="sql"> select T.name, S.course_id from instructor as T, teaches as S where T.ID = S.ID; </syntaxhighlight> relation 이름을 바꾸는 또 다른 이유는 같은 relation 내의 튜플들을 서로 비교하고자 할 때이다. 이 경우, 하나의 relation과 자기 자신과의 데카르트 곱(Cartesian product) 을 수행해야 하므로, 두 튜플을 구분하기 위해 다른 이름을 사용해야 한다. 예를 들어, “급여가 생물학(Biology) 학과에 속한 어떤 교수보다 높은 교수들의 이름을 구하라.”와 같은 질의는 아래와 같이 나타낼 수 있다. <syntaxhighlight lang="sql"> select distinct T.name from instructor as T, instructor as S where T.salary > S.salary and S.dept_name = 'Biology'; </syntaxhighlight> 이때 키워드 as는 사용하는 것이 선택적이며, 누락될 수도 있다. 이는 아래 예시가 잘 보여준다. <syntaxhighlight lang="sql"> instructor T --instructor as T와 같은 뜻 </syntaxhighlight> ==String Operation== SQL에서는 '''문자열을 작은따옴표로 감싸서 지정'''한다. 예를 들어 'Computer'는 문자열을 의미한다. 문자열 내에 작은따옴표 문자가 포함되어야 하는 경우, 작은따옴표를 두 번 연속으로 써서 지정할 수 있다. 예를 들어 문자열 'It''s right'는 다음과 같이 표현한다: <syntaxhighlight lang="sql"> 'It''s right' </syntaxhighlight> <br>또한 SQL은 SQL은 문자열에 대해 다양한 함수를 허용한다. 예를 들어 다음과 같은 작업들이 가능하다: * 문자열 연결(concatenation): ∥ 연산자를 사용 * 부분 문자열 추출(substring) * 문자열 길이 측정 * 문자열을 대문자로 변환: upper(string) * 소문자로 변환: lower(string) * 문자열 끝의 공백 제거: trim(string) ===Pattern matching=== SQL에서는 '''like 연산자를 사용하여 문자열에서 패턴 매칭'''(pattern matching) 을 수행할 수 있다. 이때 패턴매칭은 대소문자를 구분한다. 패턴은 두 가지 특수 문자를 이용해 정의된다: * '''퍼센트 기호(%)''': 어떤 길이의 문자열이든 부분 문자열로 일치함. * '''언더스코어(_)''': 아무 문자 하나와 일치함. 패턴 매칭의 예시는 다음과 같다: * 'Intro%': “Intro”로 시작하는 문자열과 일치 * '%Comp%': “Comp”라는 부분 문자열이 포함된 문자열과 일치 * '_ _ _': 정확히 세 글자인 문자열과 일치 (_가 3개) * '_ _ _%': 최소 세 글자 이상인 문자열과 일치 SQL에서는 '''like''' 비교 연산자를 사용하여 패턴 매칭을 사용한다. 예를 들어, “건물 이름에 ‘Watson’이 포함된 모든 학과의 이름을 찾아라.”와 같은 query(질의)는 아래와 같이 작성된다. <syntaxhighlight lang="sql"> select dept_name from department where building like '%Watson%'; </syntaxhighlight> 패턴에 %나 _과 같은 특수 문자 자체를 포함하고자 할 경우, SQL은 '''이스케이프 문자(escape character)''' 를 지정할 수 있도록 허용한다. 이스케이프 문자는 특수 문자 앞에 붙여, 해당 문자를 일반 문자로 취급하도록 한다. like 비교에서 이스케이프 문자를 지정하려면 escape 키워드를 사용한다. 예를 들어, 백슬래시(\)를 이스케이프 문자로 사용할 경우 다음과 같다: <syntaxhighlight lang="sql"> like 'ab\%cd%' escape '\' --"ab%cd"로 시작하는 모든 문자열과 일치 like 'ab\\cd%' escape '\' --"ab\cd"로 시작하는 모든 문자열과 일치 </syntaxhighlight> 또한 SQL에서는 like 대신 not like 연산자를 사용하여 일치하지 않는 문자열을 찾을 수도 있다. ==Attribute Specification in the Select Clause== select 절에서는 '''별표 기호(*)''' 를 사용하여 "모든 속성" 을 의미할 수 있다. <syntaxhighlight lang="sql"> select instructor.* from instructor, teaches where instructor.ID = teaches.ID; </syntaxhighlight> 위 질의는 instructor.*는 instructor 릴레이션의 모든 속성을 선택한다는 의미이다. 또한 select *과 같은 표현은, from 절에서 추출한 모든 테이블에서 모든 속성을 선택한다는 의미이다. ==Ordering the Display of Tuples== SQL은 사용자가 릴레이션에서 튜플이 출력되는 순서를 어느 정도 제어할 수 있도록 한다. '''order by''' 절은 질의 결과에 포함된 튜플들이 정렬된 순서로 나타나게 만든다. 예를 들어, 물리학(Physics) 학과의 모든 교수를 알파벳 순으로 나열하려면 다음과 같이 작성한다: <syntaxhighlight lang="sql"> select name from instructor where dept_name = 'Physics' order by name; </syntaxhighlight> 기본적으로 order by 절은 항목들을 오름차순(ascending order) 으로 나열한다. 이때 '''desc 키워드로 내림차순''', '''asc 키워드로 오름차순'''으로 정렬 순서를 명시적으로 지정할 수 있다. ==각주== [[분류:데이터베이스 시스템]]
Additional Operation
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록