SQL 구문

SQL syntax

SQL 프로그래밍 언어의 구문ISO/IEC 9075의 일부로 ISO/IEC SC 32에 의해 정의되고 유지된다.이 표준은 자유롭게 이용할 수 없다.표준이 존재함에도 불구하고, SQL 코드는 조정 없이 서로 다른 데이터베이스 시스템 사이에서 완전히 휴대할 수 있는 것은 아니다.null

언어 요소

단일 문을 구성하는 여러 SQL 언어 요소를 보여 주는 차트.이것은 나라별 표에 있는 미국 인구에 하나를 더한다.

SQL 언어는 다음과 같은 몇 가지 언어 요소로 세분된다.

  • 키워드는 SQL 언어로 정의된 단어다.그들은 둘 중 하나(예:SELECT,COUNT그리고YEAR() 또는 비응축(예:ASC,DOMAIN그리고KEY) SQL 예약 단어 목록.
  • 식별자는 테이블, 열 및 스키마와 같이 데이터베이스 개체의 이름이다.구분된 식별자가 아닌 한 식별자는 예약된 키워드와 같을 수 없다.구분된 식별자는 큰따옴표로 둘러싸인 식별자를 의미한다.일반적으로 SQL 식별자에서 지원되지 않는 문자를 포함할 수 있으며, 예약된 단어(예: 이름이 지정된 열)와 동일할 수 있음YEAR로 지정되다"YEAR".
  • 조항들, 진술과 질의의 구성 요소들이다.(일부 경우에는 선택사항이다.)[1]
  • 스칼라 값 또는 데이터 열과 으로 구성된 를 생성할 수 있는
  • 술어, SQL 3-값 논리(3VL)(참/거짓/알 수 없음) 또는 부울 진리 값으로 평가할 수 있는 조건을 지정하고 문과 쿼리의 효과를 제한하거나 프로그램 흐름을 변경하는 데 사용된다.
  • 특정 기준에 따라 데이터를 검색하는 쿼리.이것은 SQL의 중요한 요소다.
  • 스키마타 및 데이터에 지속적인 영향을 미치거나 트랜잭션, 프로그램 흐름, 연결, 세션 또는 진단을 제어할 수 있는 문장.null
    • SQL 문에는 세미콜론(";") 문 종료기도 포함된다.모든 플랫폼에서 필수는 아니지만 SQL 문법의 표준 부분으로 정의된다.
  • 대수롭지 않은 공백은 일반적으로 SQL 문과 쿼리에서 무시되므로 읽기 쉽도록 SQL 코드를 포맷할 수 있다.

연산자

연산자 설명
= 와 동일하다 Author = 'Alcott'
<> 같지 않음(많은 DBMS가 허용됨)!=에 더하여<>) Dept <> 'Sales'
> 보다 큼 Hire_Date > '2012-01-31'
< 보다 적은 Bonus < 50000.00
>= 보다 크거나 같음 Dependents >= 2
<= 보다 작거나 같음 Rate <= 0.05
[NOT] BETWEEN [SYMMETRIC] 포함 범위 사이.첫 번째 값이 두 번째 값보다 높을 경우 SYmmetric은 범위 경계를 반전시킨다.null Cost BETWEEN 100.00 AND 500.00
[NOT] LIKE [ESCAPE] 문자 패턴으로 시작 Full_Name LIKE 'Will%'
문자 패턴 포함 Full_Name LIKE '%Will%'
[NOT] IN 가능한 여러 값 중 하나와 동일함 DeptCode IN (101, 103, 209)
IS [NOT] NULL null과 비교(데이터 누락) Address IS NOT NULL
IS [NOT] TRUE 또는 IS [NOT] FALSE 부울 진리 값 테스트 PaidVacation IS TRUE
IS NOT DISTINCT FROM 값이 같거나 둘 다 null임(데이터 누락) Debt IS NOT DISTINCT FROM - Receivables
AS 결과를 볼 때 열 이름을 변경하는 데 사용 SELECT employee AS department1

스카이라인 연산자와 같은 다른 연산자(다른 연산자보다 '나쁘지 않은' 행만 찾기 위해)가 제안되거나 구현되기도 했다.null

SQL에는caseSQL-92에 도입된 표현식.가장 일반적인 형태로서, SQL 표준에서 "searched case"라고 불린다.

케이스 언제 n > 0           그럼 '긍정적'      언제 n < 0           그럼 '부정'      기타 '제로'  

SQL 테스트WHEN출처에 나타나는 순서대로의 상태소스가 a를 지정하지 않은 경우ELSE식, SQL 기본값:ELSE NULL. "단순 사례"라는 약칭 구문도 사용할 수 있다.

케이스 n 언제 1             그럼 '하나'        언제 2             그럼 '두'        기타 '그렇게 높은 것은 셀 수 없다.'  

이 구문은 NULL과 비교하기 위한 일반적인 주의사항과 함께 암묵적 평등 비교를 사용한다.

특별한 두 가지 짧은 형태가 있다.CASE표현식:COALESCE그리고NULLIF.

COALESCE표현식은 왼쪽에서 오른쪽으로 작업하여 발견된 첫 번째 NULL 피연산자의 값 또는 모든 피연산자가 NULL일 경우 NULL을 반환한다.

코네체(x1,x2) 

다음 항목과 동일하다:

케이스 언제 x1 IS NOT NULL 그럼 x1      기타 x2  

NULLIF식에 두 개의 피연산자가 있고 피연산자의 값이 같으면 NULL을 반환하고, 그렇지 않으면 첫 번째 피연산자의 값을 반환한다.null

널리프(x1, x2) 

와 같다

케이스 언제 x1 = x2 그럼 NULL 기타 x1  

평.

표준 SQL은 다음과 같은 두 가지 형식의 주석을 허용한다.-- comment첫 번째 뉴라인에 의해 종료되고/* comment */여러 개의 선에 걸쳐서 사용할 수 있는.null

쿼리

SQL에서 가장 일반적인 작업인 쿼리는 선언문을 사용한다.SELECT성명서nullSELECT하나 이상의 테이블 또는 식에서 데이터를 검색하십시오.표준SELECT문장은 데이터베이스에 지속적인 영향을 미치지 않는다.다음과 같은 일부 비표준 구현SELECT다음과 같은 지속적인 효과를 가질 수 있다.SELECT INTO일부 데이터베이스에 제공된 구문.[2]

쿼리를 통해 사용자는 원하는 데이터를 기술할 수 있으며, 데이터베이스 관리 시스템(DBMS)은 원하는 결과를 생성하는 데 필요한 물리적 작업을 계획, 최적화 및 수행할 수 있다.null

쿼리는 일반적으로 다음 항목 바로 뒤에 최종 결과에 포함할 열 목록을 포함한다.SELECT키워드별표(")*") 쿼리가 쿼리된 테이블의 모든 열을 반환해야 함을 지정하는 데 사용할 수 있다.nullSELECTSQL에서 가장 복잡한 문이며, 선택적 키워드와 절에는 다음이 포함된다.

  • FROM데이터를 검색할 테이블을 나타내는 조항.FROM조항은 선택사항을 포함할 수 있다.JOIN표 결합 규칙을 지정하는 하위 절.
  • WHERE절에는 조회가 반환하는 행을 제한하는 비교 술어가 포함되어 있다.WHERE절은 비교 술어가 True로 평가되지 않는 결과 집합에서 모든 행을 제거한다.
  • GROUP BY절에서는 공통 값을 갖는 행을 더 작은 행 집합으로 투영한다.[clarification needed] GROUP BY종종 SQL 집계 기능과 함께 사용하거나 결과 집합에서 중복 행을 제거하기 위해 사용된다.WHERE조항이 적용되다GROUP BY조항의
  • HAVING절에는 에서 생성된 행을 필터링하는 데 사용되는 술어가 포함되어 있다.GROUP BY조항의왜냐하면 그 결과물에 작용하기 때문이다.GROUP BY절, 집계 함수는 에서 사용될 수 있다.HAVING조항의 술어
  • ORDER BY절은 결과 데이터를 정렬하는 데 사용할 열[s]과 이를 정렬할 방향(하강 또는 하강)을 식별한다.an 없이ORDER BY절, SQL 쿼리에 의해 반환된 행의 순서가 정의되지 않음.
  • DISTINCT키워드[3] -[4] 중복 데이터 제거
  • OFFSET절은 데이터 반환을 시작하기 전에 건너뛸 행 수를 지정한다.
  • FETCH FIRST절은 반환할 행의 수를 지정한다.일부 SQL 데이터베이스는 대신 비표준 대체 데이터베이스(예:LIMIT,TOP또는ROWNUM.

질의의 조항은 특정한 실행 순서를 가지고 있는데,[5] 이것은 오른쪽에 있는 숫자로 표시된다.다음과 같다.

SELECT <columns> 5.
FROM <table> 1.
WHERE <predicate on rows> 2.
GROUP BY <columns> 3.
HAVING <predicate on groups> 4.
ORDER BY <columns> 6.
OFFSET 7.
FETCH FIRST 8.

의 다음 예SELECTquery는 값비싼 책들의 목록을 반환한다.쿼리는 가격 열이 100.00보다 큰 값을 포함하는 테이블에서 모든 행을 검색한다.결과는 제목별로 오름차순으로 정렬된다.선택 목록의 별표(*)는 테이블의 모든 열이 결과 집합에 포함되어야 함을 나타낸다.null

선택 *  From    어디에 값을 매기다 > 100.00  주문 BY 칭호를 붙이다; 

아래 예제는 책 목록과 각 책과 관련된 작가 수를 반환하여 여러 표, 그룹화 및 집계에 대한 질의를 보여준다.null

선택 .칭호를 붙이다 AS 제목,        수를 세다(*) AS 작가들  From    가입하다  book_author    켜기  .isbn = book_author.isbn  그룹 BY .칭호를 붙이다; 

예제 출력은 다음과 유사할 수 있다.

제목 작성자 -------------------------------------- SQL 예시와 가이드 4 SQL 1의 기쁨 SQL 2 Pitfalls 소개

isbn이 두 테이블의 유일한 공통 열 이름이고 제목이 책 테이블에만 있다는 전제조건 하에서, 위 쿼리를 다음과 같은 형태로 다시 쓸 수 있다.

선택 칭호를 붙이다,        수를 세다(*) AS 작가들  From    내추럴 가입하다 book_author  그룹 BY 칭호를 붙이다; 

그러나 많은[quantify] 공급업체는 이 접근법을 지원하지 않거나 자연 결합이 효과적으로 작동하기 위해 특정 칼럼 이름 지정 규칙을 요구한다.null

SQL은 연산자와 저장된 값의 값을 계산하는 함수를 포함한다.SQL은 다음의 예에서와 같이 선택 목록의 표현을 사용하여 데이터를 투영할 수 있도록 허용하는데, 100.00 이상에 해당하는 장부 목록을 가격의 6%로 계산된 판매세액이 포함된 부가적인 sales_tax 칼럼과 함께 반환한다.null

선택 isbn,        칭호를 붙이다,        값을 매기다,        값을 매기다 * 0.06 AS sales_tax  From    어디에 값을 매기다 > 100.00  주문 BY 칭호를 붙이다; 

서브쿼리

쿼리는 관계 연산자 또는 집계 함수를 통해 하나의 쿼리의 결과를 다른 쿼리에서 사용할 수 있도록 중첩될 수 있다.중첩된 쿼리는 하위 쿼리로도 알려져 있다.조인 및 기타 테이블 연산이 많은 경우 연산적으로 우수(즉, 더 빠른) 대안을 제공하는 반면, 하위 쿼리의 사용은 유용하거나 필요할 수 있는 실행 계층 구조를 도입한다.다음 예에서 집계 함수는AVG하위 질의 결과를 입력하여 수신:

선택 isbn,        칭호를 붙이다,        값을 매기다  From    어디에 값을 매기다 < (선택 AVG(값을 매기다) From )  주문 BY 칭호를 붙이다; 

하위 쿼리는 외부 쿼리의 값을 사용할 수 있으며, 이 경우 상관 관계 하위 쿼리로 알려져 있다.null

1999년부터 SQL 표준은WITH하위 쿼리에 대한 조항, 즉 일반적으로 일반 테이블 표현식(하위 쿼리인수라고도 함)으로 불리는 하위 쿼리에 대한 조항.CTE는 또한 자신을 언급함으로써 재귀적일 수 있다; 결과 메커니즘은 트리나 그래프 통과를 허용한다(관계로 표현될 때), 그리고 더 일반적으로 고정점 계산을 한다.null

파생표

파생 테이블은 FROM 절의 SQL 하위 쿼리를 참조하는 것이다.본질적으로 파생된 표는 에서 선택하거나 결합할 수 있는 하위 질의어다.파생 테이블 기능은 사용자가 하위 쿼리를 테이블로 참조할 수 있도록 한다.인라인 뷰를 인라인또는 하위 선택이라고도 한다.null

다음 예에서 SQL 문은 초기 "Book" 테이블에서 파생된 테이블 "sales"로 조인하는 것을 포함한다.이 파생된 표는 ISBN을 사용하여 "책" 표에 가입하는 관련 도서 판매 정보를 캡처한다.결과적으로, 파생된 표는 결과 집합에 추가 열(판매 품목 수 및 도서를 판매한 회사)을 제공한다.null

선택 b.isbn, b.칭호를 붙이다, b.값을 매기다, 판매의.항목_항목, 판매의.company_nm From  b   가입하다 (선택 SUM(항목_Sold) 항목_Sold, 회사_Nm, ISBN         From 북_세일즈         그룹 BY 회사_Nm, ISBN) 판매의   켜기 판매의.isbn = b.isbn 

Null 또는 3-값 논리(3VL)

Null의 개념은 SQL이 관계형 모델에서 누락된 정보를 처리할 수 있게 한다.그 단어NULLSQL의 예약된 키워드로서 Null 특수 마커를 식별하는 데 사용된다.예를 들어 WHERE 절의 동등성(=)과 같은 Null과의 비교는 알 수 없는 진실 값을 낳는다.SELECT 문에서 SQL은 WHERE 절이 True의 값을 반환하는 결과만 반환한다. 즉, False 값이 있는 결과는 제외하고 값이 Unknown인 결과도 제외한다.null

True 및 False와 함께 Null과의 직접 비교에서 비롯되는 Unknown은 따라서 SQL에 3가지 가치 로직의 파편을 가져온다.SQL이 AND, OR에 사용하는 진리표는 클렌과 루카시위츠 3값 논리의 일반적인 파편에 해당하지 않는다(그들의 함축적 정의는 다르지만 SQL은 그러한 연산을 정의하지 않는다).[6]null

p AND q p
진실의 거짓의 알 수 없는
q 진실의 진실의 거짓의 알 수 없음
거짓의 거짓의 거짓의 거짓의
알 수 없는 알 수 없음 거짓의 알 수 없음
p OR q p
진실의 거짓의 알 수 없는
q 진실의 진실의 진실의 진실의
거짓의 진실의 거짓의 알 수 없음
알 수 없는 진실의 알 수 없음 알 수 없음
p = q p
진실의 거짓의 알 수 없는
q 진실의 진실의 거짓의 알 수 없음
거짓의 거짓의 진실의 알 수 없음
알 수 없는 알 수 없음 알 수 없음 알 수 없음
q NOT q
진실의 거짓의
거짓의 진실의
알 수 없는 알 수 없음

그러나 SQL에서 Nulls의 의미 해석에 대해서는 직접적인 비교를 벗어난 치료법 때문에 논쟁이 있다.위의 표에서 볼 수 있듯이 SQL에서 두 NULL 사이의 직접 동등성 비교(예:{{{1}}})은 알 수 없음의 진실 값을 반환한다.이는 Null이 값을 가지지 않고(그리고 어떤 데이터 도메인의 멤버도 아니다) 오히려 누락된 정보에 대한 자리 표시자 또는 "표시자"라는 해석과 맥락을 같이한다.그러나, 두 Null이 서로 같지 않다는 원칙은 효과적으로 SQL 사양에서 위반된다.UNION그리고INTERSECT서로 null을 식별하는 연산자.[7]따라서 SQL의 이러한 세트 운영은 NULL과의 명시적 비교를 포함하는 운영과는 달리 확실한 정보를 나타내지 못할 수 있다(예:WHERE위에서 논의한 조항).1979년 Codd의 제안(기본적으로 SQL92에 의해 채택된)에서, 세트 운영에서 중복의 제거는 "검색 운영의 평가에서 평등 시험보다 더 낮은 수준의 세부사항"에서 발생한다고 주장함으로써 이러한 의미 비일관성을 합리화한다.[6]그러나 컴퓨터 과학 교수 론 반 데어 메이든은 "SQL 표준의 불일치는 어떠한 직관적인 논리 의미론도 SQL의 nulls 처리에 귀속시킬 수 없다는 것을 의미한다"[7]고 결론지었다.

또한 SQL 연산자는 Null과 직접 비교할 때 Unknown(알 수 없음)을 반환하므로 SQL은 다음 두 가지 Null별 비교 술어를 제공한다.IS NULL그리고IS NOT NULL데이터가 Null인지 여부를 검정하십시오.[8]SQL은 보편적 정량화를 명시적으로 지원하지 않으며, 부정된 실존적 정량화로서 이를 해결해야 한다.[9][10][11]또한 두 피연산자가 같거나 둘 다 NULL이 아닌 한 TRUE를 반환하는 "<행 값 표현식> IS DICTICT OF <행 값 표현식>"이 혼합되어 있다. 마찬가지로 IS NOT DIRECT OF는 "NOT(<행 값 표현식> IS DICTICT OFTED <행 값 표현식")"으로 정의된다.SQL:1999도 도입됨BOOLEAN변수를 입력하십시오. 이 변수는 null일 경우 표준에 따라 알 수 없는 값도 포함할 수 있다.실제로 여러 시스템(예: Postgre)SQL)은 BOOLN NULL로 BOOLN NULL을 구현하며, 표준에서는 NULL BOOLN과 NULLNULL을 "정확히 동일한 것을 의미하기 위해 서로 교환하여 사용할 수 있다"고 한다.C. Date (2011). SQL and Relational Theory: How to Write Accurate SQL Code. O'Reilly Media, Inc. p. 83. ISBN 978-1-4493-1640-2.</ref>[12]

데이터 조작

DML(Data Manufaction Language)은 데이터를 추가, 업데이트 및 삭제하는 데 사용되는 SQL의 하위 집합이다.

  • INSERT기존 테이블에 행( 튜플) 추가(예:
삽입 INO 예시  (컬럼1, 2열, 컬럼3)  가치  ('시험', 'N', NULL); 
  • UPDATE기존 테이블 행 집합을 수정(예:
갱신하다 예시  세트 컬럼1 = '가치 측정'  어디에 2열 = 'N'; 
  • DELETE테이블에서 기존 행 제거(예::
삭제 From 예시  어디에 2열 = 'N'; 
  • MERGE여러 테이블의 데이터를 결합하는 데 사용된다.그것과 는 결합되어 있다.INSERT그리고UPDATE요소들그것은 SQL:2003 표준에서 정의된다. 그 이전에, 일부 데이터베이스는 다른 구문을 통해 유사한 기능을 제공했으며, 때로는 "업서트"라고 불린다.
 병합 INO table_name 사용. table_참조 켜기 (조건)  언제 일치됨 그럼  갱신하다 세트 컬럼1 = 값1 [, 2열 = 값2 ...]  언제 NOT 일치됨 그럼  삽입 (컬럼1 [, 2열 ...]) 가치 (값1 [, 값2 ...]) 

트랜잭션 제어

가능한 경우 트랜잭션에 DML 작업 포함:

  • START TRANSACTION(또는)BEGIN WORK또는BEGIN TRANSACTION, SQL 방언에 따라)는 완전히 완료되거나 전혀 완료되지 않는 데이터베이스 트랜잭션의 시작을 표시한다.
  • SAVE TRANSACTION(또는)SAVEPOINT) 트랜잭션의 현재 지점에 있는 데이터베이스 상태 저장
만들다 테이블 tbl_1(id 인트로);  삽입 INO tbl_1(id) 가치(1);  삽입 INO tbl_1(id) 가치(2); 커밋;  갱신하다 tbl_1 세트 id=200 어디에 id=1; 세이브포인트 id_1upd;  갱신하다 tbl_1 세트 id=1000 어디에 id=2; 롤백  id_1upd;  선택 id 로부터 tbl_1; 
  • COMMIT트랜잭션의 모든 데이터 변경을 영구화한다.
  • ROLLBACK마지막 이후의 모든 데이터 변경 사항 무시COMMIT또는ROLLBACK데이터를 변경하기 전에 그대로 두십시오.원스 더COMMIT문 완료, 트랜잭션 변경사항은 롤백할 수 없음.

COMMIT그리고ROLLBACK현재 트랜잭션을 종료하고 데이터 잠금을 해제하십시오.a가 없는 경우START TRANSACTIONSQL의 의미론은 구현에 의존한다.다음 예시는 한 계좌에서 돈이 없어지고 다른 계좌에 돈이 추가되는 전형적인 자금거래의 전형을 보여준다.제거 또는 추가에 실패하면 전체 트랜잭션이 롤백된다.null

시작 거래;  갱신하다 계정 세트 분량=분량-200 어디에 account_number=1234;  갱신하다 계정 세트 분량=분량+200 어디에 account_number=2345;  IF 오류=0 커밋; IF 오류<>0 롤백; 

데이터 정의

데이터 정의 언어(DDL)는 테이블과 인덱스 구조를 관리한다.DDL의 가장 기본적인 아이템은CREATE,ALTER,RENAME,DROP그리고TRUNCATE문장:

  • CREATE데이터베이스에 객체(예: 테이블)를 작성한다. 예:
만들다 테이블 예시(  컬럼1 정수,  2열 바카르(50),  컬럼3 날짜 NOT NULL,  1차  (컬럼1, 2열) ); 
  • ALTER예를 들어, 기존 테이블에 열을 추가하거나 제약 조건(예::
ALTER 테이블 예시 추가 4열 정수 체납 25 NOT NULL; 
  • TRUNCATE테이블 자체가 아니라 테이블 내부의 데이터를 삭제하는 매우 빠른 방법으로 테이블에서 모든 데이터를 삭제한다.이는 일반적으로 후속 COMPT 작업을 의미하며, 즉, 롤백할 수 없다(DELETE와 달리 데이터는 롤백을 위해 나중에 로그에 기록되지 않음).
잘라내기 테이블 예시; 
  • DROP데이터베이스에서 개체를 삭제(일반적으로 되돌릴 수 없음), 즉, 롤백할 수 없음(예::
드롭 테이블 예시; 

데이터 유형

SQL 테이블의 각 열은 열이 포함할 수 있는 유형을 선언한다.ANSI SQL은 다음과 같은 데이터 유형을 포함한다.[13]null

문자열 및 국민 문자열
  • CHARACTER(n)(또는)CHAR(n)): 고정 폭n-문자 문자열, 필요에 따라 공백으로 패딩
  • CHARACTER VARYING(n)(또는)VARCHAR(n)): 최대 크기의 변수 너비 문자열n성격.
  • CHARACTER LARGE OBJECT(n [ K M G T ])(또는)CLOB(n [ K M G T ])): 최대 크기의 대형 객체n [ K M G T ]성격.
  • NATIONAL CHARACTER(n)(또는)NCHAR(n)): 국제 문자 집합을 지원하는 고정 너비 문자열
  • NATIONAL CHARACTER VARYING(n)(또는)NVARCHAR(n)): 가변 폭NCHAR끈을 매다
  • NATIONAL CHARACTER LARGE OBJECT(n [ K M G T ])(또는)NCLOB(n [ K M G T ])): 최대 크기의 국민 문자 대형 객체n [ K M G T ]성격.

를 위해CHARACTER LARGE OBJECT그리고NATIONAL CHARACTER LARGE OBJECT데이터 유형, 승수K(1 024),M(1 048 576),G(1 073 741 824) 및T(1 099 511 627 776)은 길이를 지정할 때 선택적으로 사용할 수 있다.null

이진수
  • BINARY(n): 고정 길이 이진 문자열, 최대 길이n.
  • BINARY VARYING(n)(또는)VARBINARY(n)): 가변 길이 이진 문자열, 최대 길이n.
  • BINARY LARGE OBJECT(n [ K M G T ])(또는)BLOB(n [ K M G T ])): 최대 길이의 2진수 큰 객체n [ K M G T ].

를 위해BINARY LARGE OBJECT데이터 유형, 승수K(1 024),M(1 048 576),G(1 073 741 824) 및T(1 099 511 627 776)은 길이를 지정할 때 선택적으로 사용할 수 있다.null

부울
  • BOOLEAN

BOOLEAN데이터 유형으로 값을 저장할 수 있음TRUE그리고FALSE.

숫자
  • INTEGER(또는)INT),SMALLINT그리고BIGINT
  • FLOAT,REAL그리고DOUBLE PRECISION
  • NUMERIC(precision, scale)또는DECIMAL(precision, scale)
  • DECFLOAT(precision)

예를 들어, 숫자 123.45는 정밀도가 5이고 척도가 2이다.precision특정 라디스의 유의한 자릿수(십진수 또는 십진수)를 결정하는 양의 정수다.scale음수가 아닌 정수.척도가 0이면 숫자가 정수임을 나타낸다.척도 S의 소수 자릿수에 대해 정확한 숫자 값은 10으로S 나눈 유의한 숫자의 정수 값이다.null

SQL이 기능을 제공함수CEILING그리고FLOOR숫자 값을 반올림한다. (대중 공급업체별 기능은TRUNC(Informix, DB2, Postgre)SQL, Oracle 및 MySQL) 및ROUND(Informix, SQLite, Sybase, Oracle, Postgre)SQL, Microsoft SQL Server 및 Mimer SQL.))

시간(datetime)
  • DATE: 날짜 값(예:2011-05-03).
  • TIME: 시간 값(예:15:51:36).
  • TIME WITH TIME ZONE: 와 동일TIME, 그러나 해당 시간대에 대한 세부사항 포함.
  • TIMESTAMP: 이것은 a이다.DATE그리고 aTIME하나의 변수에 합치다(예:2011-05-03 15:51:36.123456).
  • TIMESTAMP WITH TIME ZONE: 와 동일TIMESTAMP, 그러나 해당 시간대에 대한 세부사항 포함.

SQL 함수EXTRACTdatetime 또는 interval 값의 단일 필드(예: screte)를 추출하는 데 사용할 수 있다.데이터베이스 서버의 현재 시스템 날짜/시간은 다음과 같은 기능을 사용하여 호출할 수 있다.CURRENT_DATE,CURRENT_TIMESTAMP,LOCALTIME또는LOCALTIMESTAMP. (대중 공급업체별 기능은)TO_DATE,TO_TIME,TO_TIMESTAMP,YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,DAYOFYEAR,DAYOFMONTH그리고DAYOFWEEK.)

간격(datetime)
  • YEAR(precision): 수 년
  • YEAR(precision) TO MONTH: 년수 및 월수
  • MONTH(precision): 수개월
  • DAY(precision): 일수
  • DAY(precision) TO HOUR: 일수 및 시간
  • DAY(precision) TO MINUTE: 일, 시간, 분 수
  • DAY(precision) TO SECOND(scale): 일, 시간, 분, 초의 수
  • HOUR(precision): 여러 시간
  • HOUR(precision) TO MINUTE: 시간 및 분 수
  • HOUR(precision) TO SECOND(scale): 시간, 분, 초의 수
  • MINUTE(precision): 분수
  • MINUTE(precision) TO SECOND(scale): 분, 초의 수

데이터 제어

DCL(Data Control Language)은 사용자가 데이터에 접근하고 조작할 수 있는 권한을 부여한다.그것의 두 가지 주요 성명은 다음과 같다.

  • GRANT하나 이상의 사용자에게 개체에 대해 작업 또는 작업 집합을 수행할 수 있는 권한을 부여한다.
  • REVOKE기본 보조금일 수도 있는 보조금을 폐지한다.

예:

그랜트 선택, 갱신하다  켜기 예시   some_user, other_user;  취소됨 선택, 갱신하다  켜기 예시  From some_user, other_user; 

메모들

  1. ^ ANSI/ISO/IEC 국제표준(IS). 데이터베이스 언어 SQL—제2부: 기초(SQL/Foundation)1999.
  2. ^ "Transact-SQL Reference". SQL Server Language Reference. SQL Server 2005 Books Online. Microsoft. 2007-09-15. Retrieved 2007-06-17.
  3. ^ SAS 9.4 SQL Procedure User's Guide. SAS Institute. 2013. p. 248. ISBN 9781612905686. Retrieved 2015-10-21. Although the UNIQUE argument is identical to DISTINCT, it is not an ANSI standard.
  4. ^ Leon, Alexis; Leon, Mathews (1999). "Eliminating duplicates - SELECT using DISTINCT". SQL: A Complete Reference. New Delhi: Tata McGraw-Hill Education (published 2008). p. 143. ISBN 9780074637081. Retrieved 2015-10-21. [...] the keyword DISTINCT [...] eliminates the duplicates from the result set.
  5. ^ "What Is The Order Of Execution Of An SQL Query? - Designcise.com". www.designcise.com. 29 June 2015. Retrieved 2018-02-04.
  6. ^ a b Hans-Joachim, K. (2003). "Null Values in Relational Databases and Sure Information Answers". Semantics in Databases. Second International Workshop Dagstuhl Castle, Germany, January 7–12, 2001. Revised Papers. Lecture Notes in Computer Science. Vol. 2582. pp. 119–138. doi:10.1007/3-540-36596-6_7. ISBN 978-3-540-00957-3.
  7. ^ a b 론 반 데어 메이든, 1월 초미키, 사케, 건터(Eds)의 "불완전한 정보에 대한 논리적 접근: 조사" 데이터베이스정보 시스템용 로직, Kluwer Academic Publisher ISBN 978-0-7923-8129-7, 페이지 344
  8. ^ ISO/IEC. ISO/IEC 9075-2:2003, "SQL/Foundation". ISO/IEC.
  9. ^ Negri, M.; Pelagatti, G.; Sbattella, L. (February 1989). "Semantics and problems of universal quantification in SQL". The Computer Journal. 32 (1): 90–91. doi:10.1093/comjnl/32.1.90. Retrieved 2017-01-16.
  10. ^ Fratarcangeli, Claudio (1991). "Technique for universal quantification in SQL". ACM SIGMOD Record. 20 (3): 16–24. doi:10.1145/126482.126484. S2CID 18326990. Retrieved 2017-01-16.
  11. ^ 카와시, 잘랄 (2004) 구조화된 질의 언어에서의 복잡한 수량화 (SQL): 관계적 미적분학을 이용한 자습서; 수학과학 강의 ISSN 0731-9258 제23권, 2004년 이슈 2, 버지니아 주, AACE Norfolk.Thefreelibrary.com
  12. ^ ISO/IEC 9075-2:2011 제4.5조
  13. ^ "ISO/IEC 9075-1:2016: Information technology – Database languages – SQL – Part 1: Framework (SQL/Framework)".