SQL이란 무엇이며 왜 필요한가요? 초보자를 위한 그림이 포함된 SQL 튜토리얼입니다. 쿼리의 기본 언어 문장 구조

다양한 유형의 수많은 컴퓨터 시스템에서 작동할 수 있는 데이터베이스. 실제로 이 도구의 도움으로 사용자는 개인용 컴퓨터, 네트워크 워크스테이션 또는 메인프레임에서 작업하는지 여부에 관계없이 데이터를 조작할 수 있습니다.

관계형 데이터 모델의 발전으로 등장한 언어 중 하나가 SQL 언어(Structured Query Language)인데, 이는 현재 매우 널리 보급되어 실제로 표준어 관계형 데이터베이스. 기준 SQL은 1986년 ANSI(American National Standards Institute)에서 발표되었으며, 1987년 ISO(International Standards Organization)에서 국제적으로 채택되었습니다. 현재 SQL 표준은 SQL/92로 알려져 있습니다.

모든 표준의 사용은 수많은 명백한 장점뿐만 아니라 특정한 단점과도 연관되어 있습니다. 우선, 표준은 관련 산업의 발전을 특정 방향으로 지시합니다. SQL 언어의 경우, 강력한 기본 원칙을 갖는 것은 궁극적으로 다양한 구현 간의 상호 운용성을 가져오고, 일반적으로 소프트웨어와 데이터베이스의 이식성을 높이고 데이터베이스 관리자의 다양성을 높이는 데 기여합니다. 반면에 표준은 특정 구현의 유연성과 기능을 제한합니다. 아래에 언어 구현 SQL은 해당 제조업체의 SQL 소프트웨어 제품을 나타냅니다. 기능을 확장하기 위해 허용된 표준을 준수하는 많은 개발자는 표준어 SQL의 다양한 확장. 표준에는 모든 완료가 필요하다는 점에 유의해야 합니다. 언어 구현 SQL은 특정 특성을 갖고 있으며 경쟁하는 모든 구현 간의 호환성을 제공할 뿐만 아니라 SQL 프로그래머와 사용자의 가치를 높이는 데 도움이 되는 주요 추세를 광범위하게 반영합니다. 관계형 데이터베이스현대 소프트웨어 시장에서

모든 특정 언어 구현서로 다소 다릅니다. 구현이 이식성 및 사용자 경험에 대한 현재 ANSI 표준을 충족하는지 확인하는 것이 제조업체의 최선의 이익입니다. 그러나 각 SQL 구현에는 특정 데이터베이스 서버의 요구 사항을 충족하기 위한 향상된 기능이 포함되어 있습니다. SQL 언어에 대한 이러한 향상 또는 확장은 표준 패키지에 추가되고 해당 특정 구현에서 사용할 수 있는 추가 명령 및 옵션입니다.

현재 SQL 언어는 개인용 컴퓨터에서 메인프레임에 이르기까지 다양한 컴퓨팅 플랫폼용으로 개발된 다양한 유형의 수십 개의 DBMS에서 지원됩니다.

모든 데이터 조작 언어는 출현 이전에 많은 DBMS를 위해 만들어졌습니다. 관계형 데이터베이스, 논리 파일 레코드 형식으로 표시되는 데이터를 사용한 작업에 중점을 두었습니다. 물론 이를 위해서는 사용자가 데이터 저장 조직에 대한 자세한 지식과 필요한 데이터, 위치 및 획득 방법을 지정하기 위한 진지한 노력이 필요했습니다.

고려 중인 SQL 언어는 논리적으로 상호 연결된 관계 테이블 집합의 형태로 표시되는 데이터를 사용한 작업에 중점을 둡니다. 그 구조의 가장 중요한 특징은 데이터 처리의 절차가 아니라 데이터 처리의 최종 결과에 초점을 맞춘다는 것입니다. SQL 언어 자체는 데이터가 있는 위치, 인덱스 및 결과를 얻기 위해 사용해야 하는 가장 효율적인 작업 순서를 결정하므로 데이터베이스 쿼리에서 이러한 세부 정보를 지정할 필요가 없습니다.

클라이언트-서버 기술 소개

정보 서비스 시장의 확장과 관련하여 소프트웨어 제조업체는 점점 더 지능적이고 그에 따라 방대한 소프트웨어 시스템을 생산하기 시작했습니다. 많은 조직과 개인 사용자가 구입한 제품을 자신의 컴퓨터에 배치할 수 없는 경우가 많습니다. 정보 교환과 배포를 위해 컴퓨터 네트워크가 만들어졌고 일반화 프로그램과 데이터가 특수 파일 서버에 설치되기 시작했습니다.

파일 서버와 함께 작동하는 DBMS 덕분에 많은 사용자가 동일한 데이터베이스에 액세스할 수 있습니다. 조직 관리를 위한 다양한 자동화 시스템 개발이 단순화됩니다. 그러나 이 접근 방식을 사용하면 프로그램이나 사용자 컴퓨터 단말의 요청에 대한 모든 처리가 해당 프로그램에서 수행되므로 간단한 요청이라도 구현하려면 파일 서버에서 전체 파일을 읽거나 써야 하며 이로 인해 충돌이 발생합니다. 상황 및 네트워크 과부하. 이러한 단점을 없애기 위해 제안된 클라이언트-서버 기술, 그러나 동시에 서버와 통신하기 위한 공통 언어가 필요했습니다. 선택은 SQL에 있었습니다.

클라이언트-서버 기술단일 시스템을 형성하는 소프트웨어 구성 요소의 상호 작용 방식을 의미합니다. 이름 자체에서 알 수 있듯이 특정 리소스가 필요한 특정 클라이언트 프로세스가 있습니다. 서버 프로세스, 이러한 리소스를 제공합니다. 동일한 컴퓨터에 있을 필요는 없습니다. 일반적으로 로컬 네트워크의 한 노드에 서버를 배치하고 다른 노드에 클라이언트를 배치하는 것이 일반적입니다.

데이터베이스 컨텍스트에서 클라이언트는 데이터베이스 애플리케이션을 실행하는 워크스테이션 역할을 하면서 애플리케이션의 사용자 인터페이스와 논리를 제어합니다. 클라이언트는 사용자의 요청을 수락하고 구문을 확인한 다음 SQL 또는 애플리케이션 논리에 적합한 다른 데이터베이스 언어로 데이터베이스 쿼리를 생성합니다. 그런 다음 서버에 메시지를 보내고 응답을 기다린 다음 사용자에게 표시할 수 있도록 수신된 데이터의 형식을 지정합니다. 서버는 데이터베이스에 대한 요청을 수신하고 처리한 다음 결과를 클라이언트에 다시 보냅니다. 이 처리에는 클라이언트 자격 증명 확인, 무결성 요구 사항 확인, 요청 이행 및 데이터 업데이트가 포함됩니다. 또한 동시성 제어 및 복구도 지원됩니다.

클라이언트-서버 아키텍처에는 여러 가지 장점이 있습니다.

오늘 우리는 컴퓨터 주제를 다룰 것이므로 이 기사는 무엇보다도 프로그래머에게 특히 흥미로울 것입니다. 독자 여러분, 영어로 SQL(Structured Query Language)로 암호화되는 구조적 쿼리 언어에 대해 이야기하겠습니다. 이제 요점을 살펴보겠습니다. 이제 SQL이 무엇이고 무엇이 필요한지에 대해 이야기해 보겠습니다.

구조적 쿼리 언어(Structured Query Language)는 관계형 데이터베이스의 일부인 정보를 생성, 수정 및 관리하기 위한 범용 언어입니다. 처음에는 SQL이 데이터 작업을 위한 주요 방법이었습니다. 이를 사용하여 사용자는 다음 작업을 수행할 수 있습니다.

  • 데이터베이스(DB)에 새 테이블을 생성합니다.
  • 기존 테이블에 새 레코드를 추가합니다.
  • 기록 편집;
  • 기록의 완전한 삭제;
  • 지정된 조건에 따라 다른 테이블에서 레코드를 선택합니다.
  • 하나 이상의 테이블의 모양과 구조를 변경합니다.

SQL은 개발되면서 크게 변화했고 새로운 유용한 기능이 풍부해졌으며 그 결과 점점 더 실제 프로그래밍 언어와 유사해 보이기 시작했습니다. 오늘날 SQL은 애플리케이션 소프트웨어와 데이터베이스를 연결할 수 있는 유일한 메커니즘입니다. SQL이 바로 그것이다.

SQL에는 여러 유형의 쿼리가 있습니다. 모든 SQL 쿼리는 원하는 데이터베이스의 데이터 요청 또는 의무적인 데이터 변경이 있는 데이터베이스에 대한 액세스를 의미한다는 점은 주목할 가치가 있습니다. 이와 관련하여 다음 유형의 요청을 구별하는 것이 일반적입니다.

  • 데이터베이스에서 새 개체 또는 기존 개체를 생성하거나 변경합니다.
  • 데이터 수신;
  • 테이블에 새로운 데이터를 추가하는 것;
  • 데이터 삭제;
  • 데이터베이스 관리 시스템(DBMS)에 액세스합니다.

이 데이터 처리 시스템의 장점과 단점에 대해 조금 설명합니다.

SQL의 이점

  • 해당 시스템의 기존 DBMS로부터 독립성. SQL 텍스트는 많은 DBMS에서 보편적입니다. 그러나 이 규칙은 테이블의 데이터 처리와 관련된 간단한 작업에 적용됩니다.
  • SQL 표준이 있으면 언어를 "안정화"하는 데 도움이 됩니다.
  • 선언성. 이 장점은 데이터 작업 시 프로그래머가 변경하거나 수정해야 하는 정보만 선택한다는 것입니다. 이를 수행하는 방법은 DBMS 자체의 소프트웨어 수준에서 자동으로 결정됩니다.

SQL의 단점

  • SQL은 관계형 데이터 모델을 따르지 않습니다. 이런 점에서 SQL은 진정한 관계형인 Tutorial D 언어를 대체합니다.
  • SQL의 복잡성에 따라 목적이 결정됩니다. 언어는 너무 복잡해서 프로그래머만이 사용할 수 있습니다. 원래는 일반 사용자가 사용할 수 있는 제어 도구로 고안되었지만.
  • 표준의 일부 불일치. DBMS를 개발하는 많은 회사에서는 SQL 언어 방언에 자체 기능을 추가하는데, 이는 언어의 보편성에 큰 영향을 미칩니다.

마지막으로, SQL Server란 무엇입니까? 이것은 유명한 회사인 Microsoft의 내부에서 개발된 데이터베이스 관리 시스템입니다. 이 시스템은 가정용 개인용 컴퓨터의 데이터베이스와 대기업의 대규모 데이터베이스에서 성공적으로 작동합니다. 이 시장 부문에서 SQL Server는 경쟁력 그 이상입니다.

자, 간단히 말해서 MySQL을 기억해 봅시다. 이 애플리케이션은 일반적으로 로컬 또는 원격 클라이언트로부터 요청을 받는 서버로 사용됩니다. MySQL은 독립 실행형 프로그램에도 포함될 수 있습니다. 이 애플리케이션은 다양한 유형의 테이블을 포함하므로 가장 유연한 데이터 관리 시스템 중 하나입니다.

마지막 업데이트: 2017년 6월 24일

SQL Server는 세계에서 가장 인기 있는 데이터베이스 관리 시스템(DBMS) 중 하나입니다. 이 DBMS는 소규모 애플리케이션부터 로드가 많은 대규모 프로젝트까지 다양한 프로젝트에 적합합니다.

SQL Server는 Microsoft에서 만들었습니다. 첫 번째 버전은 1987년에 출시되었습니다. 그리고 현재 버전은 버전 16으로 2016년에 출시되어 현재 가이드에 사용될 예정입니다.

SQL Server는 오랫동안 Windows 전용 데이터베이스 관리 시스템이었지만 버전 16부터는 Linux에서도 사용할 수 있습니다.

SQL Server의 특징은 다음과 같습니다.

    성능. SQL Server는 매우 빠릅니다.

    신뢰성과 안전성. SQL Server는 데이터 암호화를 제공합니다.

    간단. 이 DBMS는 작업 및 관리가 상대적으로 쉽습니다.

모든 DBMS와 마찬가지로 MS SQL Server의 핵심 측면은 데이터베이스입니다. 데이터베이스는 특정 방식으로 구성된 데이터 저장소입니다. 이러한 대응이 반드시 필요한 것은 아니지만 데이터베이스는 물리적으로 하드 드라이브의 파일을 나타내는 경우가 많습니다. 데이터베이스 관리 시스템 또는 DBMS는 데이터베이스를 저장하고 관리하는 데 사용됩니다. MS SQL Server도 그러한 DBMS 중 하나입니다.

MS SQL Server는 관계형 모델을 사용하여 데이터베이스를 구성합니다. 이 데이터베이스 모델은 1970년 Edgar Codd에 의해 개발되었습니다. 그리고 오늘날 이는 실제로 데이터베이스 구성의 표준이 되었습니다.

관계형 모델에는 테이블 형식으로 데이터를 저장하는 작업이 포함되며 각 테이블은 행과 열로 구성됩니다. 각 행은 별도의 개체를 저장하고 열에는 해당 개체의 속성이 포함됩니다.

기본 키는 테이블 내의 각 행을 식별하는 데 사용됩니다. 기본 키는 하나 이상의 열일 수 있습니다. 기본 키를 사용하면 테이블의 특정 행을 참조할 수 있습니다. 따라서 두 행은 동일한 기본 키를 가질 수 없습니다.

키를 통해 한 테이블을 다른 테이블에 연결할 수 있습니다. 즉, 두 테이블 간의 관계를 구성할 수 있습니다. 그리고 테이블 자체도 관계로 표현될 수 있습니다.

데이터베이스와 상호작용하기 위해 SQL(Structured Query Language) 언어가 사용됩니다. 클라이언트(예: 외부 프로그램)는 특수 API를 사용하여 SQL로 요청을 보냅니다. DBMS는 요청을 적절하게 해석하고 실행한 후, 실행 결과를 클라이언트로 보냅니다.

SQL은 원래 IBM이 System/R이라는 데이터베이스 시스템용으로 개발했습니다. 동시에 언어 자체를 SEQUEL(Structured English Query Language)이라고 불렀습니다. 이후에 데이터베이스나 언어 자체는 공식적으로 출판되지 않았지만 전통적으로 SQL이라는 용어 자체는 "속편"으로 발음되는 경우가 많습니다.

1979년, 관계형 소프트웨어 주식회사(Relational Software Inc.) SQL 언어를 사용한 최초의 데이터베이스 관리 시스템인 Oracle을 개발했습니다. 이 제품의 성공으로 인해 회사 이름은 Oracle로 변경되었습니다.

이후 SQL을 사용하는 다른 데이터베이스 시스템도 등장하기 시작했다. 그 결과, 1989년에 ANSI(American National Standards Institute)가 언어를 성문화하고 첫 번째 표준을 발표했습니다. 이후 정기적으로 표준이 업데이트되고 보완되었습니다. 마지막 업데이트는 2011년에 이루어졌습니다. 그러나 표준이 있음에도 불구하고 DBMS 제조업체는 서로 약간 다른 자체 SQL 언어 구현을 사용하는 경우가 많습니다.

SQL 언어에는 PL-SQL과 T-SQL이라는 두 가지 종류가 있습니다. PL-SQL은 Oracle, MySQL 등의 DBMS에서 사용됩니다. T-SQL(Transact-SQL)은 SQL Server에서 사용됩니다. 실제로 이것이 현재 가이드에서 T-SQL을 고려하는 이유입니다.

T-SQL 명령이 수행하는 작업에 따라 다음 유형 중 하나일 수 있습니다.

    DDL(데이터 정의 언어). 이 유형에는 데이터베이스, 테이블, 인덱스, 저장 프로시저 등을 생성하는 다양한 명령이 포함됩니다. 일반적으로 데이터가 결정됩니다.

    특히 다음 명령을 이 유형으로 분류할 수 있습니다.

    • CREATE : 데이터베이스 객체(데이터베이스 자체, 테이블, 인덱스 등)를 생성합니다.

      ALTER: 데이터베이스 개체를 수정합니다.

      DROP: 데이터베이스 개체를 제거합니다.

      TRUNCATE: 테이블에서 모든 데이터를 제거합니다.

    DML(데이터 조작 언어). 이 유형에는 데이터 선택, 업데이트, 추가, 삭제를 위한 명령이 포함됩니다. 일반적으로 데이터를 관리할 수 있는 모든 명령이 포함됩니다.

    다음 명령이 이 유형에 속합니다.

    • SELECT: 데이터베이스에서 데이터를 검색합니다.

      업데이트: 데이터 업데이트

      INSERT: 새 데이터를 추가합니다.

      DELETE: 데이터를 삭제합니다.

    DCL(데이터 제어 언어/데이터 액세스 제어 언어). 이 유형에는 데이터 액세스 권한을 관리하는 명령이 포함됩니다. 특히 다음 명령은 다음과 같습니다.

    • GRANT: 데이터에 접근할 수 있는 권한을 부여합니다.

      REVOKE: 데이터 접근 권한을 취소합니다.

번역: 알렉산드르 피라미드

이 문서에서는 SQL 언어의 구조뿐만 아니라 포함될 수 있는 데이터 필드 유형 및 SQL에 존재하는 일부 모호성과 같은 몇 가지 일반적인 개념을 소개합니다. 이 기사에 언급된 모든 세부 사항을 기억할 필요는 없습니다. 이는 간략한 개요일 뿐입니다. 나중에 언어를 마스터할 때 참조할 수 있도록 많은 세부 사항이 제공됩니다.

SQL은 어떻게 작동하나요?

SQL은 관계형 데이터베이스(RDB)를 위해 특별히 설계된 언어입니다. C와 같은 범용 프로그래밍 언어를 사용하는 경우 해야 할 많은 작업을 수행합니다. C로 RDB를 구성하려면 처음부터 시작해야 합니다. 원하는 수만큼 행을 가질 수 있는 테이블이라는 개체를 정의한 다음 값을 삽입하고 검색하는 증분 프로시저를 만듭니다.

특정 문자열을 찾으려면 다음과 같은 단계별 절차를 따라야 합니다.

  • 테이블 행을 고려해보세요.
  • 이 문자열이 필요한 문자열 중 하나인지 확인하세요.
  • 그렇다면 전체 테이블이 확인될 때까지 어딘가에 저장하십시오.
  • 테이블에 다른 행이 있는지 확인하십시오.
  • 있는 경우 1단계로 돌아갑니다.
  • 더 이상 행이 없으면 3단계에서 저장한 모든 값을 인쇄합니다.

(물론 이것은 실제 C 명령 세트가 아니라 실제 프로그램에 포함되는 단계의 논리일 뿐입니다.) SQL이 이 모든 작업을 수행합니다. SQL의 명령은 모든 테이블 그룹에서 단일 엔터티로 작동할 수 있으며 해당 테이블에서 추출되거나 파생된 모든 정보를 단일 단위로 처리할 수 있습니다.

ANSI는 무엇을 합니까?

서문에서 말했듯이 SQL 표준은 ANSI(American National Standards Institute) 코드를 사용하여 정의됩니다. SQL은 ANSI가 발명한 것이 아닙니다. 이것은 본질적으로 IBM의 발명품입니다. 그러나 다른 회사들은 곧바로 SQL로 뛰어들었습니다. 적어도 한 회사(Oracle)가 IBM으로부터 SQL 제품을 판매할 수 있는 권리를 획득했습니다.

다수의 경쟁 SQL 프로그램이 시장에 출시된 후 ANSI는 해당 프로그램이 준수해야 하는 표준을 정의했습니다. (이러한 표준을 정의하는 것은 ANSI의 기능입니다.) 그러나 이후 몇 가지 문제가 나타났다. 이는 일부 제한 사항의 형태로 ANSI 표준화의 결과로 발생했습니다. ANSI는 항상 가장 유용한 것이 무엇인지 정의하지 않기 때문에 프로그램은 ANSI 표준이 표준을 너무 많이 제한하지 않고 따르도록 노력합니다. 이는 결과적으로 무작위 불일치로 이어집니다. 데이터베이스 프로그램은 일반적으로 ANSI SQL에 추가 기능을 추가하고 많은 제한 사항을 완화하는 경우가 많습니다. 따라서 일반적인 ANSI 변형도 고려됩니다. 물론 모든 예외나 변형을 다룰 수는 없지만 ANSI 표준에 정의되지 않은 경우에도 좋은 아이디어가 다양한 프로그램에 채택되어 사용되는 경향이 있습니다. ANSI는 최소 표준의 한 유형으로, 지정된 작업을 수행할 때 지침을 따라야 하지만 허용되는 것보다 더 많은 작업을 수행할 수 있습니다.

대화형 및 중첩 SQL

SQL에는 대화형과 중첩이라는 두 가지 SQL이 있습니다. 대부분의 경우 두 형식 모두 동일하게 작동하지만 다르게 사용됩니다. 대화형 SQL은 데이터베이스에서 직접 실행되어 고객이 사용할 출력을 생성하는 데 사용됩니다. 이 SQL에서는 명령을 입력하면 즉시 실행되고 출력(있는 경우)을 즉시 볼 수 있습니다.

중첩 SQL은 일반적으로 다른 언어(예: COBOL 또는 PASCAL)로 작성된 프로그램 내에 배치된 SQL 명령으로 구성됩니다. 이는 그러한 프로그램을 더욱 강력하고 효과적으로 만듭니다.

그러나 이러한 언어를 허용하려면 일부 대화형 SQL 확장이 필요한 SQL 구조 및 데이터 관리 스타일이 필요합니다. 중첩된 SQL에 SQL 명령을 전달하는 것은 중첩된 프로그램에서 사용하는 변수나 매개변수에 대해 "전달"됩니다.

이 책에서는 SQL을 대화형 방식으로 제시합니다. 이를 통해 명령이 다른 언어와 어떻게 인터페이스되는지 걱정하지 않고 명령과 해당 동작에 대해 논의할 수 있습니다. 대화형 SQL은 프로그래머가 아닌 사람에게 가장 유용한 형식입니다. 대화형 SQL에 대해 배우는 모든 내용은 일반적으로 중첩 양식에 적용됩니다. 중첩된 양식을 사용하는 데 필요한 변경 사항은 이 책의 마지막 장에서 다루겠습니다.

SQL 하위 섹션

대화형 및 중첩 형식의 SQL에는 모두 수많은 부분 또는 하위 섹션이 있습니다. SQL을 읽을 때 이 용어를 접할 가능성이 높으므로 몇 가지 설명을 제공하겠습니다. 불행히도 이러한 용어는 모든 구현에서 보편적으로 사용되지 않습니다. 이는 ANSI에 의해 지정되고 개념적 수준에서 유용하지만 대부분의 SQL 프로그램은 이를 별도로 처리하는 작업이 거의 없으므로 본질적으로 SQL 명령의 기능 범주가 됩니다.

  • DDL(데이터 정의 언어)(ANSI에서는 스키마 설명 언어라고 함)은 데이터베이스에 개체(테이블, 인덱스, 뷰 등)를 생성하는 명령으로 구성됩니다.
  • DML(Data Manipulation Language)은 주어진 시간에 테이블에 어떤 값이 표시되는지 결정하는 명령 집합입니다.
  • DCD(데이터 제어 언어)는 사용자가 특정 작업을 수행하도록 허용할지 여부를 결정하는 도구로 구성됩니다. 이는 ANSI DDL의 일부입니다.

이 이름들을 잊지 마세요. 이는 다른 언어가 아니라 기능별로 그룹화된 SQL 명령 섹션입니다.

다양한 데이터 유형

테이블 필드에서 찾을 수 있는 모든 유형의 값이 논리적으로 동일한 것은 아닙니다. 가장 눈에 띄는 차이점은 숫자와 텍스트의 차이입니다. 숫자를 알파벳 순서로 입력하거나 다른 이름에서 한 이름을 뺄 수 없습니다.

DDB 시스템은 정보 간의 관계를 기반으로 하기 때문에 서로 다른 유형의 데이터를 서로 구별하여 적절한 프로세스와 비교가 이루어질 수 있어야 합니다. SQL에서는 각 필드에 해당 필드가 포함할 수 있는 값 유형을 나타내는 데이터 유형을 할당하여 이를 수행합니다. 이 필드의 모든 값은 동일한 유형이어야 합니다. 예를 들어 Customers 테이블에서 cname과 city에는 평가할 텍스트 줄이 포함되어 있고 snum과 cnum은 숫자입니다. 이러한 이유로 숫자 데이터 유형인 등급 필드에는 최고 값 또는 없음 값을 입력할 수 없습니다. 이 제약조건은 데이터에 일부 구조를 부과하기 때문에 좋습니다. 특정 필드의 값 중 일부 또는 전부를 비교하는 경우가 많으므로 전체 행이 아닌 특정 행에서만 작업을 수행하고 싶을 수도 있습니다. 필드 값이 혼합된 데이터 유형인 경우에는 이 작업을 수행할 수 없습니다.

불행하게도 이러한 데이터 유형을 정의하는 것은 대부분의 상용 데이터베이스 프로그램과 공식 SQL 표준이 항상 일치하지 않는 주요 영역입니다. ANSI SQL 표준은 텍스트와 숫자만 인식하는 반면, 대부분의 상용 프로그램은 다른 특수 유형을 사용합니다. DATA 및 TIME과 같은 유형은 사실 거의 표준 유형입니다(정확한 형식은 다양하지만). 일부 패키지는 MONEY 및 BINARY와 같은 유형도 지원합니다. (MONEY는 컴퓨터가 사용하는 특별한 "통화" 시스템입니다.)

컴퓨터 내의 모든 정보는 이진수로 전송된 후 우리가 쉽게 사용하고 이해할 수 있도록 다른 시스템으로 변환됩니다.

ANSI는 여러 가지 숫자 유형을 정의하는데, 그 차이는 매우 미묘하고 때로는 혼란스럽습니다. 허용되는 ANSI 데이터 유형은 부록 B에 나열되어 있습니다. ANSI 숫자 유형의 복잡성은 적어도 부분적으로 중첩 SQL을 여러 다른 언어와 호환되게 만들려는 노력에 기인할 수 있습니다. 두 가지 ANSI 숫자 유형인 INTEGER 및 DECIMAL(각각 INT 및 DEC로 축약 가능)은 대부분의 실제 비즈니스 응용 프로그램의 목적뿐만 아니라 우리의 목적에도 적합합니다. 당연히 INTEGER 타입은 소수점 이하의 숫자를 포함하지 않는 DECIMAL NUMBER로 표현될 수 있다.

텍스트 유형은 텍스트 문자열을 참조하는 CHAR(또는 CHAR)입니다. CHAR 필드의 길이는 해당 필드에 입력할 수 있는 최대 문자 수에 따라 결정됩니다. 대부분의 구현에는 텍스트 문자열인 VARCHAR이라는 비표준 유형도 있으며 구현에서 정의한 최대 길이(일반적으로 254자)까지 가능합니다. CHARACTER 및 VARCHAR 값은 "text"로 작은따옴표 안에 포함됩니다. CHAR과 VARCHAR의 차이점은 CHAR은 문자열의 최대 길이에 대해 충분한 메모리를 예약해야 하는 반면 VARCHAR은 필요에 따라 메모리를 할당한다는 것입니다.

문자 유형은 숫자를 포함하여 인쇄 가능한 모든 문자로 구성됩니다. 그러나 숫자 1은 기호 "1"과 동일하지 않습니다. 문자 "1"은 인쇄된 텍스트일 뿐이며 시스템에서 숫자 값 1로 정의되지 않습니다. 예를 들어 1 + 1 = 2이지만 "1" + "1"은 "2"와 같지 않습니다. 문자 값은 컴퓨터에 바이너리 값으로 저장되지만 사용자에게는 인쇄된 텍스트로 표시됩니다.

변환은 사용 중인 시스템에 의해 결정된 형식으로 수행됩니다. 이 변환 형식은 컴퓨터 시스템에서 사용되는 두 가지 표준 유형(확장 가능) 중 하나입니다: ASCII 코드(모든 개인용 및 소형 컴퓨터에서 사용됨) 및 EBCDIC(Extended Binary Decimal Information Interchange Code) 코드(대형 컴퓨터에서 사용됨). 필드 값을 알파벳순으로 정렬하는 등의 특정 작업은 형식에 따라 변경됩니다.

DATE 유형을 사용할 때는 ANSI가 아닌 시장을 따라야 합니다. (DATE 유형을 인식하지 못하는 시스템에서는 물론 날짜를 문자나 숫자 필드로 선언할 수 있지만 이렇게 하면 대부분의 작업이 더 노동 집약적으로 됩니다.)

정확히 어떤 데이터 유형을 지원하는지 알아보려면 사용할 소프트웨어 패키지에 대한 설명서를 검토해야 합니다.

SQL. 불일치.

이전 논의에서 SQL 세계의 제품 간에는 별도의 불일치가 있음을 이해할 수 있습니다. SQL은 상용 데이터베이스 세계에서 도구로 등장했으며 나중에 ANSI 표준으로 개발되었습니다. 불행하게도 ANSI는 무엇이 가장 유용한지 항상 결정하는 것은 아니기 때문에 프로그램은 ANSI 표준이 표준을 너무 많이 제한하지 않도록 하면서 따르려고 노력합니다. ANSI는 일종의 최소 표준입니다. 허용되는 것보다 더 많은 작업을 수행할 수 있지만 동일한 작업을 수행할 때 동일한 결과를 얻을 수 있어야 합니다.

"사용자"란 무엇입니까?

SQL은 일반적으로 두 명 이상의 사용자가 있는 컴퓨터 시스템에 상주하므로 사용자를 구별해야 합니다(PC 제품군에는 사용자 수에 제한이 없지만 일반적으로 한 사용자를 다른 사용자와 구별할 방법이 없습니다).

일반적으로 이러한 시스템에서 각 사용자는 자신을 식별하는 일종의 권한 확인 코드를 갖습니다(용어는 다양함). 컴퓨터와의 세션이 시작될 때 사용자는 로그인(등록)하여 특정 ID를 사용하여 자신을 식별함으로써 사용자가 누구인지 컴퓨터에 알립니다. 액세스 ID를 사용하는 사람은 개인 사용자입니다. 마찬가지로 한 사람이 다른 SQL 액세스 ID를 사용하여 (다른 시간에) 많은 수의 사용자를 나타낼 수 있습니다. 대부분의 SQL 환경의 작업은 특정 사용자와 정확히 일치하는 특정 액세스 식별자에 매핑됩니다. 테이블이나 기타 개체는 해당 개체에 대한 모든 권한을 가진 사용자가 소유합니다. 사용자는 객체에 대한 작업을 수행할 권한이 있을 수도 있고 없을 수도 있습니다. 우리의 목적을 위해 우리는 22장의 권한에 대한 논의로 구체적으로 돌아갈 때까지 모든 사용자가 모든 작업을 수행하는 데 필요한 권한을 갖는다는 데 동의합니다. 특수 값 USER는 명령에서 인수로 사용될 수 있습니다. 명령을 실행하는 사용자의 사용 가능한 ID를 나타냅니다.

규칙 및 용어

키워드는 SQL에서 특별한 의미를 갖는 단어입니다. 명령은 될 수 있지만 텍스트나 개체 이름은 될 수 없습니다. 주요 단어를 대문자로 입력하여 강조 표시하겠습니다. 키워드와 용어를 혼동하지 않도록 주의해야 합니다.

SQL에는 이를 설명하는 데 사용되는 특정 특수 용어가 있습니다. 그 중에는 "쿼리", "절", "술어"와 같은 단어가 있는데, 이는 언어를 설명하고 이해하는 데 가장 중요하지만 SQL에 대해 독립적인 의미는 없습니다.

명령이나 명령문은 SQL 데이터베이스에 액세스하는 데 사용되는 지침입니다.

명령은 절이라고 불리는 하나 이상의 별도 논리적 부분으로 구성됩니다.

문장은 키워드로 시작하고 키워드와 인수로 구성됩니다. 예를 들어, "FROM Salespeope" 및 "WHERE city = "London""과 같은 절이 나타날 수 있습니다. 인수는 문장의 의미를 완성하거나 변경합니다. 위의 예에서 Salespeople은 인수이고 FROM은 FROM 절의 키워드입니다. 마찬가지로 "city = "London""은 WHERE 절에 대한 인수입니다.

객체는 이름이 부여되고 메모리에 저장되는 데이터베이스 구조입니다. 여기에는 기본 테이블, 뷰 및 인덱스가 포함됩니다.

팀이 어떻게 구성되는지 보여주기 위해 예제를 통해 이를 수행하겠습니다. 그러나 표준화된 규칙을 사용하여 명령을 설명하는 보다 공식적인 방법이 있습니다. 다른 SQL 문서에서 이러한 규칙을 접할 경우 이러한 규칙을 이해하기 위한 편의를 위해 이후 장에서 이를 사용할 것입니다.

대괄호()는 사용할 수 없는 부분을 나타내고, 생략 부호(...)는 그 앞의 모든 내용이 여러 번 반복될 수 있음을 나타냅니다. 꺾쇠 괄호() 안의 단어는 해당 단어가 무엇인지 설명하는 특수 용어입니다. 이해하기 어렵지 않게 표준 SQL 용어를 크게 단순화했습니다.

요약

이번 장에서는 기본적인 내용을 간략하게 다루었습니다. 하지만 우리의 의도는 SQL의 기본을 빠르게 다루어 정보의 전체 범위를 다룰 수 있도록 하는 것이었습니다.

이제 SQL에 대한 몇 가지 사항을 알게 되었습니다. SQL의 구조가 무엇인지, 어떻게 사용되는지, 데이터를 어떻게 표현하는지, 어떻게 정의하는지(및 그에 수반되는 일부 불일치), SQL을 설명하는 데 사용되는 몇 가지 규칙과 용어를 알게 되었습니다. 이 모든 것은 한 장에 대한 정보가 너무 많습니다. 이러한 세부 사항을 모두 기억할 수는 없지만 나중에 필요한 경우 다시 참조할 수 있습니다.

PHP와 데이터베이스

많은 양의 정보를 효율적으로 저장하고 검색하는 능력은 인터넷의 성공적인 발전에 큰 공헌을 했습니다. 일반적으로 데이터베이스는 정보를 저장하는 데 사용됩니다. 야후, 아마존, 이베이 등 유명 사이트의 운영은 막대한 양의 정보를 저장하는 데이터베이스의 신뢰성에 크게 좌우됩니다. 물론, 데이터베이스 지원은 대기업만을 위한 것이 아닙니다. 웹 프로그래머는 상대적으로 저렴한 비용(또는 무료)으로 배포되는 몇 가지 강력한 데이터베이스 구현을 마음대로 사용할 수 있습니다.

적절한 데이터베이스 구성은 더 빠르고 유연한 데이터 검색 기능을 제공합니다. 이는 검색 및 정렬 도구의 구현을 크게 단순화하고, 많은 데이터베이스 관리 시스템(DBMS)에 있는 권한 제어를 사용하여 정보에 대한 액세스 권한 문제를 해결합니다. 또한 데이터 복제 및 보관 프로세스가 단순화됩니다.

이 장은 아마도 PHP에서 가장 많이 사용되는 DBMS인 MySQL(http://www.mysql.com)에서 데이터를 검색하고 업데이트하는 방법에 대한 자세한 설명으로 시작됩니다. MySQL을 예로 들어, 데이터베이스의 데이터가 PHP에서 어떻게 로드되고 업데이트되는지 보여드리겠습니다. 많은 웹 애플리케이션에서 사용되는 기본 검색 및 정렬 도구를 살펴보겠습니다. 그런 다음 동시에 다른 DBMS에 연결하는 데 사용할 수 있는 일반 인터페이스인 ODBC(Open Data Base Connectivity)에 대한 PHP 지원에 대해 살펴보겠습니다. PHP의 ODBC 지원은 Microsoft Access 데이터베이스에 연결하고 데이터를 검색하여 시연됩니다. 이 장은 즐겨찾는 사이트에 대한 정보가 포함된 계층적 디렉토리를 생성하기 위해 PHP와 MySQL을 사용하는 프로젝트로 마무리됩니다. 새 사이트가 카탈로그에 포함되면 사용자는 이를 사이트 관리자가 정의한 표준 범주 중 하나에 할당합니다.

MySQL에 대해 논의하기 전에, 데이터베이스 작업에 가장 널리 사용되는 언어인 SQL에 대해 몇 마디 말씀드리고 싶습니다. SQL 언어는 거의 모든 기존 DBMS의 기초입니다. 데이터베이스 작업의 예를 살펴보려면 최소한 SQL 작동 방식에 대한 일반적인 이해가 필요합니다.

SQL은 일반적으로 관계형 데이터베이스와 상호 작용하는 데 사용되는 표준 언어로 설명됩니다(아래 참조). 그러나 SQL은 C, C++ 또는 PHP와 같은 프로그래밍 언어가 아닙니다. 오히려 다양한 데이터베이스 작업을 수행하고 사용자에게 표준 명령 세트를 제공하는 인터페이스 도구입니다. SQL의 기능은 데이터베이스에서 데이터를 검색하는 것으로 제한되지 않습니다. SQL은 다음을 포함하여 데이터베이스와 상호 작용하기 위한 다양한 옵션을 지원합니다.

  • 데이터 구조 정의-- 데이터를 저장할 때 사용되는 구조의 정의;
  • 데이터 샘플링-- 데이터베이스에서 데이터를 로드하고 출력에 편리한 형식으로 표시합니다.
  • 데이터 처리-- 정보 삽입, 업데이트 및 삭제
  • 액세스 제어-- 개별 사용자 수준에서 데이터 샘플링, 삽입, 업데이트 및 삭제를 허용/금지하는 기능
  • 데이터 무결성 제어-- 병렬 업데이트나 시스템 장애 등의 문제 발생 시 데이터 구조 보존.

SQL의 정의에 이 언어가 함께 작동하도록 명시되어 있다는 점에 유의하십시오. 관계형데이터베이스. 관계형 DBMS에서 데이터는 상호 연결된 테이블 집합으로 구성됩니다. 테이블 간의 관계는 다른 테이블의 데이터에 대한 링크 형태로 구현됩니다. 테이블각 요소의 위치가 특정 행과 열 값으로 특징지어지는 2차원 배열로 생각할 수 있습니다. 관계형 데이터베이스의 예가 그림 1에 나와 있습니다. 11.1.

쌀. 11.1.관계형 데이터베이스 예

그림에서 볼 수 있듯이. 11.1에서 각 테이블은 행(레코드)과 열(필드)로 구성됩니다. 각 필드에는 테이블 내에서 고유한 이름이 할당됩니다. 화살표로 표시된 고객과 주문 테이블 간의 관계를 확인하세요. 짧은 고객 식별자가 주문 정보에 포함되어 고객 이름과 기타 세부 정보가 중복 저장되는 것을 방지합니다. 표시된 데이터베이스에는 주문과 제품 테이블 간의 관계가 하나 더 있습니다. 이 연결은 이 클라이언트가 주문한 제품의 식별자(custjd 필드에서 정의)를 저장하는 prod_id 필드를 사용하여 설정됩니다. 이러한 연결을 통해 간단한 식별자를 사용하여 전체 고객 및 제품 데이터를 쉽게 참조할 수 있습니다. 적절하게 구성된 데이터베이스는 최소한의 중복으로 데이터를 구성하고 효율적으로 저장하는 강력한 도구가 됩니다. 이 데이터베이스를 기억하세요. 추가 예제에서 자주 언급하겠습니다.

그렇다면 관계형 데이터베이스 작업은 어떻게 수행됩니까? 이를 위해 SQL에는 SELECT, INSERT, UPDATE 및 DELETE와 같은 특별한 일반 명령 세트가 있습니다. 예를 들어 ID가 2001cu인 고객의 이메일 주소를 가져와야 하는 경우(그림 11.1 참조) 다음 SQL 명령을 실행하면 됩니다.

custjd = "2001cu"인 고객의 cust_email을 선택하세요.

모든 것이 매우 논리적이지 않습니까? 요약하면 명령은 다음과 같습니다.

SELECT 필드_이름 FROM 테이블_이름 [ WHERE 조건 ]

대괄호는 명령의 마지막 부분이 선택 사항임을 나타냅니다. 예를 들어 고객 테이블에서 모든 고객의 이메일 주소를 가져오려면 다음 쿼리를 실행하면 됩니다.

고객에게서 cust_email 선택

제품 테이블에 새 항목을 추가한다고 가정해 보겠습니다. 가장 간단한 삽입 명령은 다음과 같습니다.

제품 VALUES("1009pr", "Red Tomatoes", "1.43")에 INSERT

나중에 이 데이터를 삭제해야 하는 경우 다음 명령을 사용하십시오.

prod_id = 1009r인 제품에서 삭제";

SQL 명령에는 다양한 유형이 있으며 이에 대한 완전한 설명은 이 책의 범위를 벗어납니다. 이 주제에 관해 별도의 책을 쉽게 쓸 수 있습니다! 나는 예제에 사용된 SQL 명령을 상대적으로 간단하면서도 충분히 현실적으로 유지하려고 노력했습니다. 웹에는 SQL 교육 정보와 리소스가 많이 있습니다. 이 섹션의 끝에 일부 링크가 제공됩니다.

SQL 명령을 대문자로 작성할 필요는 없습니다. 그러나 나는 요청의 구성요소를 구별하는 데 도움이 되기 때문에 이 표기법을 선호합니다.

이 책을 읽고 계시다면 아마도 웹에서 데이터베이스를 어떻게 사용하는지 궁금하실 것입니다. 원칙적으로 먼저 일부를 사용하여

또는 인터페이스 언어(PHP, Java 또는 Perl)를 사용하여 데이터베이스에 대한 연결이 생성된 후 프로그램은 표준 도구 세트를 사용하여 쿼리를 통해 데이터베이스에 액세스합니다. 인터페이스 언어는 데이터베이스를 웹에 연결하는 일종의 "접착제"로 생각할 수 있습니다. 나는 내가 가장 좋아하는 프론트엔드 언어인 PHP를 사용한다.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: