-
SQL의 기원과 역사 미래프로그래밍 JAVA 2020. 7. 14. 22:05
SQL 역사
SQL은 처음에 IBM에서 Donald D에 의해 개발되었다. 체임벌린과 레이먼드 F. Edgar F로부터 관계 모델을 배운 후 Boyce.
1970년대 초의 Codd[14].[15] 최초에 SEFITE(구조화된 영어 질의 언어)라고 불리는 이 버전은 IBM의 최초 준관계형 데이터베이스 관리 시스템인 System R에 저장된 데이터를 조작하고 검색하기 위해 설계되었으며, 1970년대에 IBM 산호세 연구소의 그룹이 개발하였다.[15]
체임벌린과 보이스가 처음으로 시도한 관계형 데이터베이스 언어는 스퀘어였지만 첨자 표기법 때문에 사용이 어려웠다.1973년 산호세 연구소(San Jose Research Laboratory Laboratory)로 옮긴 후, SEXENT[14] "SEXEL"은 영국에 본사를 둔 호커 시들리 다이내믹스 엔지니어링 유한회사의 상표였기 때문에 나중에 SEXEN이라는 약자가 SQL로 변경되었다.[16]
시스템의 유용성과 실용성을 판단하기 위해 고객 테스트 사이트에서 SQL을 테스트한 후, IBM은 각각 1979년, 1981년, 1983년에 상용화된 System/38, SQL/DS, DB2 등 System R 프로토타입을 기반으로 상용 제품 개발에 착수했다.[17]
1970년대 후반, Relational Software, Inc.(현 Oracle Corporation)는 Codd, 챔버린, 보이스가 기술한 개념의 가능성을 보고, 이를 미 해군, 중앙정보국(Central Intelligence Agency) 및 기타 미국 정부 기관에 판매하고자 하는 포부로 SQL 기반의 RDMS를 자체 개발했다.1979년 6월, Relational Software, Inc.는 VAX 컴퓨터용 SQL, Oracle V2(Version2)의 상용화를 최초로 도입했다.
1986년까지 ANSI와 ISO 표준 그룹은 표준 "데이터베이스 언어 SQL" 언어 정의를 공식적으로 채택했다. 이 표준의 새로운 버전은 1989, 1992, 1996, 1999, 2003, 2006, 2008, 2011[14] 및 2016년에 발표되었다.SQL의 디자인
SQL은 이론적 기반인 관계 모델과 튜플 미적분학에서 몇 가지 면에서 벗어나 있다.
이 모델에서 테이블은 튜플 집합인 반면 SQL에서 테이블과 쿼리 결과는 행의 목록이다. 동일한 행이 여러 번 발생할 수 있으며 행의 순서는 쿼리에 사용될 수 있다(예: LIMIT 절에서).
비평가들은 SQL을 원래의 기초에 엄격하게 복귀하는 언어로 대체해야 한다고 주장한다.예를 들어, "제3의 매니페스토"를 참조하십시오.
그러나 그러한 고유성을 SQL 자체,[18] 또는 적어도 SQL의 변형에 추가할 수 없다는 알려진 증거는 존재하지 않는다.
다시 말해, 이 점에서 SQL이 "고정"되거나 적어도 개선될 수 있기 때문에 업계가 고유성을 얻기 위해 전혀 다른 질의 언어로 전환하지 않아도 될 가능성이 꽤 있다. 이것에 대한 논쟁은 아직 열려 있다.
SQL 문법
SQL 언어는 다음과 같은 몇 가지 언어 요소로 세분된다.
조항들, 진술과 질의의 구성 요소들이다. (일부 경우에는 선택사항이다.)[19]스칼라 값 또는 데이터 열과 행으로 구성된 표를 생성할 수 있는 식
술어, SQL 3-값 논리(3VL)(참/거짓/알 수 없음) 또는 부울 진리 값으로 평가할 수 있는 조건을 지정하고 문과 쿼리의 효과를 제한하거나 프로그램 흐름을 변경하는 데 사용된다.
특정 기준에 따라 데이터를 검색하는 쿼리. 이것은 SQL의 중요한 요소다.
스키마타 및 데이터에 지속적인 영향을 미치거나 트랜잭션, 프로그램 흐름, 연결, 세션 또는 진단을 제어할 수 있는 문장.
SQL 문에는 세미콜론(";") 문 종료기도 포함된다. 모든 플랫폼에서 필수는 아니지만 SQL 문법의 표준 부분으로 정의된다.
대수롭지 않은 공백은 일반적으로 SQL 문과 쿼리에서 무시되므로 읽기 쉽도록 SQL 코드를 포맷할 수 있다.SQL 복합성 및 표준
SQL 구현은 벤더 간에 양립할 수 없으며 반드시 표준을 완전히 따르는 것은 아니다. 특히 날짜 및 시간 구문, 문자열 연결, NULL, 비교 사례 민감도는 벤더마다 다르다.
특별한 예외는 Postgre이다.Postgre이지만 표준 준수를 위해 노력하는 SQL[24] 및 Mimer SQL[25]SQL은 인용되지 않은 이름을 접는 방법에서 표준을 준수하지 않는다.
인용되지 않은 이름을 Postgre에서 소문자로 접는 방법SQL은 인용되지 않은 이름을 대문자로 접어야 한다는 SQL 표준[26]과 호환되지 않는다.[27] 따라서 Foo는 표준에 따라 Foo가 아닌 FOO와 동등해야 한다.
널리 사용되는 SQL 구현은 일반적으로 DATE 또는 TIME 데이터 유형과 같은 표준 SQL의 기본 기능에 대한 지원을 생략한다.그러한 예들 중 가장 명백하고 우연히 가장 인기 있는 상업 및 독점 SQL DBMS는 Oracle (DATETIME, [28][29]로 동작하며 TIME 유형이 결여된 DATE)과 MS SQL Server (2008년 버전 이전)이다. 결과적으로 SQL 코드는 수정 없이 데이터베이스 시스템 간에 포팅될 수 있는 경우는 거의 없다.
데이터베이스 시스템 간의 이동성 결여에는 다음과 같은 몇 가지 이유가 있다.
SQL 표준의 복잡성과 크기는 대부분의 구현자가 전체 표준을 지원하지 않는다는 것을 의미한다.
이 표준은 몇 가지 중요한 영역(예: 인덱스, 파일 저장소...)에서 데이터베이스 동작을 지정하지 않으므로 구현을 통해 동작 방법을 결정한다.
SQL 표준은 적합한 데이터베이스 시스템이 구현해야 하는 구문을 정확하게 지정한다. 그러나 표준의 어구구성의 의미론적 명세가 잘 규정되어 있지 않아 애매모호함을 초래한다.
많은 데이터베이스 공급업체는 기존 고객 기반이 크다. 새로운 버전의 SQL 표준이 공급업체 데이터베이스의 이전 동작과 충돌하는 경우, 공급업체는 역호환성을 깨려고 하지 않을 수 있다.
사용자가 데이터베이스 공급자를 더 쉽게 변경할 수 있도록 벤더에 대한 상업적 인센티브는 거의 없다(벤더 락인 참조).
데이터베이스 소프트웨어를 평가하는 사용자는 표준 적합성보다 성능 같은 다른 요소를 우선순위에 더 높게 두는 경향이 있다.
SQL은 1986년 미국 국립표준연구소(ANSI)가 SQL-86[31], 1987년 국제표준화기구(ISO)가 표준으로 채택했다.[13] ISO/IEC JTC 1, 정보 기술, 분과위원회 SC 32, 데이터 관리 및 교환에 의해 유지된다. 표준은 일반적으로 ISO/IEC 9075-n:yyyy Part n: 제목 또는 ISO/IEC 9075의 패턴으로 표시된다.
ISO/IEC 9075를 ISO/IEC 13249: SQL Multimedia and Application Package(SQL/MM)로 보완하여 SQL 기반 인터페이스와 패키지를 정의하여 비디오, 오디오, 공간 데이터 등 응용프로그램을 널리 보급한다.
1996년까지 NIST(National Institute of Standards and Technology) 데이터 관리 표준 프로그램은 SQL DBMS의 SQL 표준 준수를 인증하였다. 공급업체는 이제 자사 제품의 준수 여부를 자체 인증한다.[32]
원래 표준은 "SQL"의 공식 발음이 /ˌɛskkjuˈɛl/("ess cue el") 이니셜리즘이라고 선언했다.[11] 그럼에도 불구하고 많은 영어권 데이터베이스 전문가들(도날드 체임벌린 본인을 포함[33])은 /sisikwkw/l/("시퀀셀")의 약어 같은 발음을 사용하며, [34] 언어의 출시 전 개발 이름인 "SEECEL"을 미러링한다.[15][16][33][15] SQL 표준은 다음과 같은 여러 가지 개정을 거쳤다
'프로그래밍 JAVA' 카테고리의 다른 글
JAVA 컴퓨터 시뮬레이션 (0) 2020.07.15 JAVA JSONIQ 의 기초 ( JSON ) (0) 2020.07.14 701 에러 코드 대처 방법 (0) 2020.07.13 자바 랜덤클래스 (JAVA RANDOM CLASS 분석 ) (0) 2020.07.06 JAVA UPCASTING VS DOWNCASTING (자바 업캐스팅) (0) 2020.07.03