[SQL] SQL의 목적이 "있는 그대로"를 키워드 무엇입니까?
SQLSQL의 목적이 "있는 그대로"를 키워드 무엇입니까?
당신이 바로 테이블 이름 다음에 식별자를 입력 SQL 테이블 별칭을 설정할 수 있습니다.
SELECT * FROM table t1;
별칭을 표시하기 위해 AS 당신은 키워드를 사용할 수 있습니다.
SELECT * FROM table AS t1;
그들 사이의 차이가있는 경우는 무엇입니까?
나는 오래된 DBA 사람들이 AS없이 쓰기 제표에 대한 경향을 볼 수 있지만, 새로운 튜토리얼의 대부분은 그것을 사용할 수 있습니다.
업데이트 : 테이블 및 열 별칭을 목적으로 무엇을 알고있다. 나는 그것이 아니라 그것없이 작동하는 동안 별칭을 설정하기위한 별도의 키워드를 가지고있는 이유는 무엇인지, 궁금합니다.
해결법
-
==============================
1.위의 두 문 사이에 차이가 없습니다. AS는 별명을 언급 단지 더 명시 적 방법입니다
위의 두 문 사이에 차이가 없습니다. AS는 별명을 언급 단지 더 명시 적 방법입니다
-
==============================
2.내 앞에 대답 모두가 올바른 것입니다. 당신이 조인이 긴 쿼리 또는 쿼리를 할 때 테이블에 대한 별칭 바로 가기 이름으로 가지를 사용합니다. 다음은 몇 가지 예입니다.
내 앞에 대답 모두가 올바른 것입니다. 당신이 조인이 긴 쿼리 또는 쿼리를 할 때 테이블에 대한 별칭 바로 가기 이름으로 가지를 사용합니다. 다음은 몇 가지 예입니다.
예 1
SELECT P.ProductName, P.ProductGroup, P.ProductRetailPrice FROM Products AS P
예 2
SELECT P.ProductName, P.ProductRetailPrice, O.Quantity FROM Products AS P LEFT OUTER JOIN Orders AS O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456
예 3 그것은 AS 키워드를 사용하는 것이 관행, 그리고 아주 좋습니다,하지만 하나없이 동일한 쿼리를 수행 할 수있다 (그리고 나는 종종 할).
SELECT P.ProductName, P.ProductRetailPrice, O.Quantity FROM Products P LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456
당신이 말할 수, 나는 마지막 예에서 AS 키워드를 떠났다. 그리고 그것은 별칭으로 사용할 수 있습니다.
예 4
SELECT P.ProductName AS "Product", P.ProductRetailPrice AS "Retail Price", O.Quantity AS "Quantity Ordered" FROM Products P LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456
실시 예 4 출력
Product Retail Price Quantity Ordered Blue Raspberry Gum $10 pk/$50 Case 2 Cases Twizzler $5 pk/$25 Case 10 Cases
-
==============================
3.당신이 확실 선택할 수있는 구문하지 않을 때, 특히, 선택을 분리 휴리스틱에 책을 상담을 많이있을 것 같지 않습니다. 지금까지 내가 아는 한, 유일한 추론은 '조 셀코의 SQL은 스타일 프로그래밍'SQL을위한 예약 :
당신이 확실 선택할 수있는 구문하지 않을 때, 특히, 선택을 분리 휴리스틱에 책을 상담을 많이있을 것 같지 않습니다. 지금까지 내가 아는 한, 유일한 추론은 '조 셀코의 SQL은 스타일 프로그래밍'SQL을위한 예약 :
당신의 팀이 대회처럼하지 않는 경우이 방법, 당신은 Celko를 비난 할 수 - 나는 내가 알고;)
UPDATE 1 : 오래된 타이머가 습관적으로 사용하지 않는 이유를 설명 할 수 IIRC는 오랜 시간 동안, 오라클은 AS를 지원하지 않았다 (앞의 상관 관계 이름) 키워드.
업데이트 2 : 용어 '상관 관계 이름'는 SQL 표준에서 사용하지만은 부적절하다. 기본 개념있는 '범위 변수'이다.
업데이트 3 : 난 그냥 다시 읽어 Celko 쓴 그는 무엇이 잘못되었는지 : 테이블 이름이 변경되지 않는! 지금 생각 :
-
==============================
4.있는 그대로 키워드는 데이터베이스 테이블 또는 테이블 컬럼에 별명을 제공하는 것입니다. 당신의 예에서, 두 문장은 정확하지만 AS 절이 필요한 상황합니다 (AS 연산자 자체는 선택 사항입니다하지만), 예를 들어이있다
있는 그대로 키워드는 데이터베이스 테이블 또는 테이블 컬럼에 별명을 제공하는 것입니다. 당신의 예에서, 두 문장은 정확하지만 AS 절이 필요한 상황합니다 (AS 연산자 자체는 선택 사항입니다하지만), 예를 들어이있다
SELECT salary * 2 AS "Double salary" FROM employee;
이 경우, Employee 테이블은 급여 열을 가지고 있으며, 우리는 단지 새 이름을 두 번 급여와 급여의 두 배를 원한다.
미안 내 설명이 유효하지 않은 경우.
귀하의 의견에 따라 업데이트, 당신은 바로 내 앞의 문이 유효입니다. 내가 생각할 수있는 유일한 이유는 AS 절은이 요즘에 통합 이전 버전과의 호환성을 위해 RDMS 됐어요하는 SQL 세계에서 오랫동안 존재하고있다한다는 것입니다 ..
-
==============================
5.사용하지 않는 경우 사용은 더 분명하다 'SELECT *'(당신이 나가야 나쁜 습관이다) :
사용하지 않는 경우 사용은 더 분명하다 'SELECT *'(당신이 나가야 나쁜 습관이다) :
SELECT t1.colA, t2.colB, t3.colC FROM alongtablename AS t1, anotherlongtablename AS t2, yetanotherlongtablename AS t3 WHERE t1.colD = t2.colE...
-
==============================
6.그것은 당신이 쿼리의 다른 부분에서 쉽게 해결할 수 있도록 기업에 대한 상관 관계 이름을 지정하는 공식적인 방법입니다.
그것은 당신이 쿼리의 다른 부분에서 쉽게 해결할 수 있도록 기업에 대한 상관 관계 이름을 지정하는 공식적인 방법입니다.
-
==============================
7.이 경우의 AS는 << 상관 이름> 일반적 테이블이라고도 별칭을 정의하는 ANSI SQL 92 항에 선택적 키워드이다.
이 경우의 AS는 << 상관 이름> 일반적 테이블이라고도 별칭을 정의하는 ANSI SQL 92 항에 선택적 키워드이다.
이 일반적으로 사용되는 데이터베이스의 숫자에 의해 지원되지 않는 가장 좋은 방법은 테이블 별명에 대한 AS 키워드를 사용하지 않는 것 같다.
-
==============================
8.SQL의 초기에, 그것은 중복 된 열 이름을 처리하는 방법의 문제에 대한 해결책으로 선택되었다 (참고 아래 참조).
SQL의 초기에, 그것은 중복 된 열 이름을 처리하는 방법의 문제에 대한 해결책으로 선택되었다 (참고 아래 참조).
다른 답변에서 쿼리를 빌려 :
SELECT P.ProductName, P.ProductRetailPrice, O.Quantity FROM Products AS P INNER JOIN Orders AS O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456
열 제품 ID (및 다른) 두 테이블에 공통이며 조인 조건 때문에 구문은 모두 기준을 요구는이 도트 자격 '모호성을 제공한다.
물론, 더 나은 솔루션은 처음부터 중복 된 열 이름을 허용하지 않았을 것이 었습니다! 당신이 새로운 자연을 사용하는 경우 행복하게, 범위 변수 P와 O의 필요성이 사라집니다 JOIN 구문을 :
SELECT ProductName, ProductRetailPrice, Quantity FROM Products NATURAL JOIN Orders WHERE OrderID = 123456
그러나 왜 AS는 옵션 키워드입니다? 는 SQL 표준위원회의 회원과 개인적인 토론에서 내 기억은 (하나 조 셀코 또는 휴 다웬)는 자신의 기억이 (마이크로 소프트의는?)의 포함을 요구 한 업체의 제품 표준을 정의하는 시간과 다른 벤더의에서, 그이었다이었다 선택한 타협이 선택하는 것이었다 있도록 제품 (오라클은?)의 누락이 필요합니다. 나는이에 대한 인용이없는, 당신도 나를 믿거 나 말거나!
관계형 모델, 십자가 제품의 초기에 그 제목 같은 이름의 두 가지 속성을 가진 관계를 생산하기 위해 등장 해체되지 않은 관계로 (또는 세타 조인 또는 동등은 조인); 그의 관계 미적분학에서이 문제에 커드의 솔루션 나중에 SQL에서 에뮬레이트 된 도트 자격의 사용했다 (나중에 자연이 손실없이 원시적이었다 가입 소위 것을 깨달았다 천연 교체 할 수 조인입니다 세타 조인 모든 및 심지어 십자가 제품입니다.)
출처 : 비즈니스 시스템 (12), TTM 구현 자 '워크샵, 노섬 브리아 대학에서 주어진 프리젠 테이션의 슬라이드에 키가 주 2 ~ 3 2011년 6월 휴 다웬에 의해
-
==============================
9.당신은 예를 들어 SQL 서버 2012의 쿼리 편집기를 사용하여 쿼리를 디자인 할 경우 당신이 얻을 것이다 :
당신은 예를 들어 SQL 서버 2012의 쿼리 편집기를 사용하여 쿼리를 디자인 할 경우 당신이 얻을 것이다 :
SELECT e.EmployeeID, s.CompanyName, o.ShipName FROM Employees AS e INNER JOIN Orders AS o ON e.EmployeeID = o.EmployeeID INNER JOIN Shippers AS s ON o.ShipVia = s.ShipperID WHERE (s.CompanyName = 'Federal Shipping')
그러나 AS는 다음과 같이 차이가되지 않습니다 제거 :
SELECT e.EmployeeID, s.CompanyName, o.ShipName FROM Employees e INNER JOIN Orders o ON e.EmployeeID = o.EmployeeID INNER JOIN Shippers s ON o.ShipVia = s.ShipperID WHERE (s.CompanyName = 'Federal Shipping')
AS의 경우 사용에 불필요하지만, 많은 다른 장소에서이 필요하다.
from https://stackoverflow.com/questions/4164653/whats-the-purpose-of-sql-keyword-as by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 내 테이블을 잠금되고 있는지 확인하려면? (0) | 2020.05.19 |
---|---|
[SQL] 나는 H2는 메모리 데이터베이스의 스키마를 자동 작성 할 수 있습니까? (0) | 2020.05.19 |
[SQL] IN 대 큰 행 집합에 가입하세요 (0) | 2020.05.19 |
[SQL] 와 'ROW_NUMBER'키워드 오라클에 의해 분할 ' (0) | 2020.05.19 |
[SQL] "최선을 다하고 읽기"및 "반복 읽기"의 차이 (0) | 2020.05.19 |