SQL 구문
SQL syntaxSQL 프로그래밍 언어의 구문은 ISO/IEC 9075의 일부로 ISO/IEC SC 32에 의해 정의되고 유지된다.이 표준은 자유롭게 이용할 수 없다.표준이 존재함에도 불구하고, SQL 코드는 조정 없이 서로 다른 데이터베이스 시스템 사이에서 완전히 휴대할 수 있는 것은 아니다.null
언어 요소
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에는case
SQL-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
키워드별표(")*
") 쿼리가 쿼리된 테이블의 모든 열을 반환해야 함을 지정하는 데 사용할 수 있다.nullSELECT
SQL에서 가장 복잡한 문이며, 선택적 키워드와 절에는 다음이 포함된다.
- 그
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. |
의 다음 예SELECT
query는 값비싼 책들의 목록을 반환한다.쿼리는 가격 열이 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이 관계형 모델에서 누락된 정보를 처리할 수 있게 한다.그 단어NULL
SQL의 예약된 키워드로서 Null 특수 마커를 식별하는 데 사용된다.예를 들어 WHERE 절의 동등성(=)과 같은 Null과의 비교는 알 수 없는 진실 값을 낳는다.SELECT 문에서 SQL은 WHERE 절이 True의 값을 반환하는 결과만 반환한다. 즉, False 값이 있는 결과는 제외하고 값이 Unknown인 결과도 제외한다.null
True 및 False와 함께 Null과의 직접 비교에서 비롯되는 Unknown은 따라서 SQL에 3가지 가치 로직의 파편을 가져온다.SQL이 AND, OR에 사용하는 진리표는 클렌과 루카시위츠 3값 논리의 일반적인 파편에 해당하지 않는다(그들의 함축적 정의는 다르지만 SQL은 그러한 연산을 정의하지 않는다).[6]null
|
|
|
|
그러나 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의 하위 집합이다.
삽입 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 TRANSACTION
SQL의 의미론은 구현에 의존한다.다음 예시는 한 계좌에서 돈이 없어지고 다른 계좌에 돈이 추가되는 전형적인 자금거래의 전형을 보여준다.제거 또는 추가에 실패하면 전체 트랜잭션이 롤백된다.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 함수EXTRACT
datetime 또는 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;
메모들
- ^ ANSI/ISO/IEC 국제표준(IS). 데이터베이스 언어 SQL—제2부: 기초(SQL/Foundation)1999.
- ^ "Transact-SQL Reference". SQL Server Language Reference. SQL Server 2005 Books Online. Microsoft. 2007-09-15. Retrieved 2007-06-17.
- ^ 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.
- ^ 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.
- ^ "What Is The Order Of Execution Of An SQL Query? - Designcise.com". www.designcise.com. 29 June 2015. Retrieved 2018-02-04.
- ^ 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.
- ^ a b 론 반 데어 메이든, 1월 초미키, 사케, 건터(Eds)의 "불완전한 정보에 대한 논리적 접근: 조사" 데이터베이스 및 정보 시스템용 로직, Kluwer Academic Publisher ISBN 978-0-7923-8129-7, 페이지 344
- ^ ISO/IEC. ISO/IEC 9075-2:2003, "SQL/Foundation". ISO/IEC.
- ^ 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.
- ^ 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.
- ^ 카와시, 잘랄 (2004) 구조화된 질의 언어에서의 복잡한 수량화 (SQL): 관계적 미적분학을 이용한 자습서; 수학 및 과학 강의 ISSN 0731-9258 제23권, 2004년 이슈 2, 버지니아 주, AACE Norfolk.Thefreelibrary.com
- ^ ISO/IEC 9075-2:2011 제4.5조
- ^ "ISO/IEC 9075-1:2016: Information technology – Database languages – SQL – Part 1: Framework (SQL/Framework)".