기능 및 언어 도구 subd. 데이터베이스 관리 시스템. 정보 보안의 기초


강의는 웹사이트에서 확인할 수 있습니다. 웹사이트 섹션: 전문 재교육 작업 프로그램



데이터 정의 및 데이터 조작 언어 특수 언어는 데이터베이스 개체 및 작업과 관련된 명령문의 하위 집합을 포함하기 때문에 일반적으로 데이터 하위 언어라고 하는 데이터베이스 작업에 사용되지만 모든 계산 작업을 수행하기 위한 구성은 포함하지 않습니다. 고급 프로그래밍 언어. 많은 DBMS는 COBOL, Fortran, Pascal, Ada, C와 같은 고급 언어에 데이터 하위 언어 문을 삽입할 수 있는 가능성을 지원합니다. 이미 언급한 바와 같이 이 경우 고급 언어는 기본 언어로 간주되며 데이터는 하위 언어가 내장되어 있습니다. DBMS는 기능에 특화된 여러 하위 언어를 지원합니다. 두 가지 범주로 나눌 수 있습니다. - 데이터 정의 언어 - 주제 영역을 설명하는 데 사용되는 설명 언어: 개체에 이름이 지정되고 해당 속성과 개체 간의 관계가 결정됩니다. 주로 데이터베이스의 논리적 구조를 정의하는 데 사용되며 데이터 조작에는 사용할 수 없습니다. DDL 연산자를 컴파일한 결과는 메타 데이터를 포함하는 시스템 카탈로그에 저장된 테이블 세트입니다. 데이터 조작 언어에는 데이터 조작 연산자 세트가 포함되어 있습니다. 즉, 데이터베이스에 데이터를 입력하거나 삭제, 수정 또는 기존 데이터를 선택합니다. 데이터 조작 언어는 절차적 DML과 선언적(비절차적) DML의 두 가지 유형으로 나뉩니다.


절차적 DMD로 작업할 때 사용자는 무엇을 얻어야 하고 DMD 도구를 사용하여 어떻게 할 수 있는지에 대한 명확한 아이디어가 있어야 합니다. 이러한 도구는 필요한 정보를 얻기 위해 특정 순서로 실행해야 하는 데이터 연산자입니다. 일반적으로 이러한 절차적 언어를 사용하면 레코드를 검색하고 처리할 수 있으며 얻은 결과에 따라 유사한 처리 등을 거쳐야 하는 다른 레코드를 검색할 수 있습니다. DMD 선언적 언어는 사용자에게 필요한 데이터만 지정하는 수단을 제공합니다. 검색 방법을 결정하는 것은 프로세서에 달려 있습니다. 주어진 언어전체 레코드 집합에서 작동하는 A입니다. 비절차적 DML 언어를 사용하면 단일 추출 또는 업데이트 문으로 전체 필수 데이터 집합을 정의할 수 있습니다. DBMS는 JMD 표현을 요청된 레코드 집합을 조작하는 절차(또는 절차 집합)로 변환합니다. 이 접근 방식을 사용하면 데이터 구조의 내부 구현에 대한 세부 사항과 데이터를 추출하고 변환하는 데 사용되는 알고리즘의 기능을 알아야 할 필요가 없습니다. 비절차적 언어는 일반적으로 절차적 언어보다 이해하고 사용하기 쉽습니다. 관계형 DBMS에는 일반적으로 비절차적 데이터 조작 언어, 가장 일반적으로 SQL 구조적 쿼리 언어 또는 QBE 스타일 쿼리 언어에 대한 지원이 포함됩니다. 데이터 추출을 담당하는 비절차적 JMD 언어 부분을 쿼리 언어라고 합니다. 쿼리 언어는 데이터베이스에서 정보를 검색하기 위한 다양한 요구 사항을 충족하도록 설계된 높은 수준의 고도로 전문화된 언어로 정의할 수 있습니다. 데이터 처리 언어의 발전 추세를 분석해보면, 앞으로는 종종 "4세대 도구"라고 불리는 고급 구성 요소를 사용하는 비절차적 언어의 개발 방향으로 갈 가능성이 가장 높다고 가정할 수 있습니다. .


SQL(Structured Query Language) SQL(일반적으로 "SEQUEL" 또는 "ESQUEL"로 발음)은 Structured Query Language를 나타냅니다. 테이블에 저장된 관련 정보 모음인 관계형 데이터베이스를 만들고 작업할 수 있게 해주는 언어입니다.


데이터 조작 언어 관계형 데이터베이스의 출현 이전에 많은 데이터베이스 관리 시스템(DBMS)용으로 개발된 모든 데이터 조작 언어(DML) 개인용 컴퓨터, 논리 파일 레코드로 표현된 데이터를 사용한 작업에 중점을 두었습니다. 이를 위해서는 사용자가 데이터 저장 방법에 대한 자세한 지식과 필요한 데이터뿐만 아니라 데이터의 위치와 단계별로 가져오는 방법을 지정하는 데 충분한 노력이 필요했습니다. 영화 이름을 말하면 운전자가 원하는 영화가 상영되는 영화관을 직접 찾을 수 있습니다. (마찬가지로 자체적으로 요청된 SQL 데이터를 조회합니다.) 원하는 영화가 표시되는 위치를 직접 찾고 영화관 이름을 지정합니다. 그런 다음 운전자는 이 영화관의 주소를 찾아야 합니다. 당신은 영화관의 주소를 직접 알아내고 그러한 거리를 따라 운전하도록 운전자를 초대해야 할 것입니다. 최악의 경우 길을 따라 "좌회전 ... 5 블록 운전 ... 우회전 ..."과 같이 방향을 제시해야 할 수도 있습니다.


SQL 출현의 역사에서 Codd가 제안한 관계형 데이터베이스 이론과 쿼리 언어 "ALPHA"의 출현은 관계형 미적분학을 기반으로 두 가지 클래스로 분류할 수 있는 여러 쿼리 언어의 개발을 시작했습니다. (JOIN - 연결, INTERSECT - 교차, SUBTRACT - 빼기 등). 2. 주어진 기존 관계 세트에서 새로운 관계를 정의하는 표현식을 작성하기 위한 규칙 세트인 술어 미적분학의 언어. 즉, 술어 계산은 이미 데이터베이스에 있는 관계에서 (질의에 대한 답변으로) 얻고자 하는 관계를 결정하는 방법입니다.


개발은 주로 IBM(ISBL, SQL, QBE 언어) 및 미국 대학(PIQUE, QUEL)의 부서에서 수행되었습니다. 후자는 70년대 초에 University of pc에서 개발된 INGRES(Interactive Graphics and Retrieval System) DBMS를 위해 만들어졌습니다. 캘리포니아는 오늘날에도 여전히 상위 5개 전문 DBMS 중 하나입니다. 오늘날 QBE(Query-By-Example) 및 SQL은 이러한 모든 언어에서 완전히 보존되고 개발되며 나머지는 확장으로 가져옵니다. 내부 언어 DBMS는 가장 흥미로운 디자인만을 제공합니다.


1980년대 초에 SQL은 다른 쿼리 언어를 "이겼고" 전문 관계형 DBMS용 언어의 사실상의 표준이 되었습니다. 1987년에는 국제 데이터베이스 언어 표준이 되었고 모든 일반 개인용 컴퓨터 DBMS에 도입되기 시작했습니다.


왜 SQL인가? 1. 성능의 지속적인 향상과 컴퓨터의 전력 소비, 크기 및 비용 감소로 인해 판매 가능한 시장, 사용자 범위, 다양한 유형 및 가격이 급격히 확장되었습니다. 당연히 다양한 소프트웨어에 대한 수요가 확대되었습니다. 2. 소프트웨어를 생산하는 회사는 점점 더 지능적이고 결과적으로 방대한 소프트웨어 시스템을 시장에 출시하기 시작했습니다. 이러한 컴플렉스를 획득(획득하고자)할 때 많은 조직과 개인 사용자는 종종 이를 자신의 컴퓨터에 배치할 수 없었지만 새로운 서비스도 거부하고 싶지 않았습니다. 정보 교환과 사회화를 위해 사회화 된 프로그램과 데이터가 특수 서비스 장치 인 파일 서버에 배치되기 시작한 컴퓨터 네트워크가 생성되었습니다. 3. 파일 서버와 함께 작동하는 DBMS는 서로 다른 컴퓨터(때로는 서로 상당히 멀리 떨어져 있음)의 많은 사용자가 동일한 데이터베이스에 액세스할 수 있도록 합니다. 이것은 다양한 개발을 단순화합니다. 자동화 시스템많은 직원(학생)이 공통 데이터를 사용하고 작업(교육) 과정에서 생성된 데이터를 교환해야 하는 조직, 교육 단지, 정보 및 기타 시스템 관리. 그러나 이 이데올로기에서는 프로그램 또는 사용자 컴퓨터의 터미널에서 오는 모든 요청 처리가 동일한 컴퓨터에서 수행됩니다. 따라서 간단한 요청이라도 구현하려면 컴퓨터에서 자주 읽어야 합니다. 파일 서버및/또는 전체 파일을 서버에 쓰기 때문에 충돌 및 네트워크 정체가 발생합니다.


4. 이러한 단점과 다른 단점을 제거하기 위해 사용자 컴퓨터(클라이언트)의 요청을 특수 데이터베이스 서버(서버)에서 처리하고 요청 처리 결과만 반환하는 "클라이언트-서버" 기술이 제안되었습니다. 컴퓨터에. 물론 동시에 서버와의 단일 통신 언어가 필요하며 그러한 언어로 SQL이 선택됩니다. 따라서 모든 최신 버전의 전문 관계형 DBMS(DB2, Oracle, Ingres, Informix, Sybase, Progress, Rdb) 및 심지어 비관계형 DBMS(예: Adabas)도 클라이언트-서버 기술과 SQL 언어를 사용합니다. 또한 DBMS 개인용 컴퓨터 개발자가 등장하는데 이미 SQL 언어가 탑재된 컴퓨터가 많습니다. 5. 테이블 형식 데이터 표현에 초점을 맞춘 작업 개념을 SQL로 구현하면 작은(30개 미만) 문장 세트로 압축된 언어를 만들 수 있습니다. SQL은 INTERACTIVE(쿼리 실행용) 및 INLINE(구축용)으로 사용할 수 있습니다. 응용 프로그램).


구성 SQL 언어 SQL 언어는 관계형 데이터베이스에서 데이터를 조작하고, 데이터베이스 구조를 결정하고, 다중 사용자 환경에서 데이터 액세스 권한을 관리하기 위한 것입니다. 따라서 SQL 언어에서 다음과 같이 구성 부품포함 사항: 데이터 조작 언어(DML) 데이터 정의 언어(DDL) 데이터 제어 언어(DCL). 우리는 이것이 별개의 언어가 아니라 동일한 언어의 다른 명령이라는 점을 강조합니다. 이러한 구분은 이러한 명령의 기능적 목적이 다르다는 관점에서만 수행됩니다.




데이터 정의 언어는 데이터베이스 구조와 해당 구성 요소(테이블, 인덱스, 뷰(가상 테이블), 트리거 및 저장 프로시저)를 만들고 수정하는 데 사용됩니다. CREATE DATABASE(데이터베이스 생성) CREATE TABLE(테이블 생성) CREATE VIEW(가상 테이블 생성) CREATE INDEX(인덱스 생성) CREATE TRIGGER(트리거 생성) CREATE PROCEDURE(저장 프로시저 생성) ALTER DATABASE(데이터베이스 수정) ALTER TABLE(테이블 수정) ALTER VIEW(가상 테이블 수정) ALTER INDEX(인덱스 수정) ALTER TRIGGER(트리거 수정) ALTER PROCEDURE(저장 프로시저 수정) DROP DATABASE(데이터베이스 삭제) DROP TABLE(테이블 삭제) DROP VIEW(가상 테이블 삭제) DROP INDEX(인덱스 삭제) DROP TRIGGER(트리거 삭제) DROP PROCEDURE(저장 프로시저 삭제)


데이터 관리 언어는 다중 사용자 환경에서 데이터 액세스 권한 및 절차 실행을 관리하는 데 사용됩니다. 보다 정확하게는 "액세스 제어 언어"라고 할 수 있습니다. GRANT(권한 부여) REVOKE(권한 박탈)의 두 가지 주요 명령으로 구성됩니다.


API 관점에서 SQL 명령에는 대화식 SQL과 Embedded SQL의 두 가지 유형이 있습니다. 대화형 SQL은 SQL 명령을 사용하여 쿼리를 대화형으로 입력하고 실행을 위해 서버로 보내고 이를 위한 창에서 결과를 받을 수 있는 특수 유틸리티(예: WISQL 또는 DBD)에서 사용됩니다. Embedded SQL은 애플리케이션 프로그램에서 사용되어 집합 지향 및 레코드 지향 접근 방식을 결합하는 것을 포함하여 서버에 쿼리를 보내고 결과를 처리할 수 있습니다.


SQL에는 다음이 포함됩니다. 1. 데이터 정의 절(데이터베이스 정의 및 테이블과 인덱스의 정의 및 파괴) 2. 데이터 선택 요청(SELECT 절) 3. 데이터 수정 제안(데이터 추가, 삭제 및 변경) 4. 데이터 관리 제안(데이터 액세스, 트랜잭션 관리 등을 위한 권한 부여 및 취소). 또한 다음과 같은 문장에서 수행할 수 있는 기능을 제공합니다. 산술 계산(다양한 기능 변환 포함), 텍스트 문자열 처리 및 산술 표현식과 텍스트의 값을 비교하는 작업 수행 인쇄 또는 디스플레이 화면에 표의 내용을 표시할 때 행 및(또는) 열을 정렬합니다. 사용자가 데이터베이스에서 볼륨을 늘리지 않고 데이터에 대한 고유한 보기를 가질 수 있도록 하는 보기(가상 테이블) 생성 요청 시 표시되는 테이블, 여러 테이블 또는 다른 테이블의 보기(관계 할당 작업)의 내용을 저장합니다. 데이터 집계: 데이터를 그룹화하고 이러한 그룹에 평균, 합계, 최대값, 최소값, 요소 수 등과 같은 작업을 적용합니다.


주요 유형 SQL 데이터 1.INTEGER - 정수(일반적으로 최대 10개의 유효 숫자와 부호); 2.SMALLINT - "짧은 정수"(일반적으로 최대 5개의 유효 숫자 및 부호); 3.DECIMAL(p,q) - p 자리의 십진수(0 0 및 다른 DBMS에서 다르지만 4096 이상); 7.DATE - 특수 명령으로 정의된 형식의 날짜(기본값 mm/dd/yy) 날짜 필드는 기원전 수 천년을 시작하는 실제 날짜만 포함할 수 있습니다. 서기 5000년에서 10000년까지로 제한됨; 8.TIME - 특수 명령으로 정의된 형식의 시간(기본적으로 hh.mm.ss). 9.DATETIME - 날짜와 시간의 조합; 10.MONEY - 기호를 정의하는 형식의 돈 화폐 단위($, rub,...) 및 위치(접미사 또는 접두사), 소수 부분의 정확도 및 화폐 가치를 표시하기 위한 조건. 0, DBMS마다 다르지만 4096 이상); 7.DATE - 특수 명령으로 정의된 형식의 날짜(기본값 mm/dd/yy) 날짜 필드는 기원전 수 천년을 시작하는 실제 날짜만 포함할 수 있습니다. 서기 5000년에서 10000년까지로 제한됨; 8.TIME - 특수 명령으로 정의된 형식의 시간(기본적으로 hh.mm.ss). 9.DATETIME - 날짜와 시간의 조합; 10.MONEY - 통화 기호($, 문지름, ...) 및 위치(접미사 또는 접두사), 소수 부분의 정확도 및 통화 가치를 표시하기 위한 조건을 정의하는 형식의 돈입니다.">


테이블 지향 SQL에는 복잡한 애플리케이션을 작성하기에 충분한 도구가 없습니다. 따라서 다른 DBMS에서는 고급 프로그래밍 언어(예를 들어 C, Pascal 등)와 함께 사용하거나 특별히 개발된 DBMS 언어(dBASE, R:BASE 등)의 명령어에 포함되어 사용된다. ). 현대 전문 DBMS의 전체 언어 통합은 4세대 객체 지향 언어 4GL의 도입을 통해 이루어집니다. 후자는 주기, 조건문, 메뉴, 화면 형식, 복잡한 쿼리영숫자 터미널과 창 모드 모두를 지향하는 인터페이스가 있는 데이터베이스 GUI(X-Windows, MS-Windows).




뷰 뷰가 해결할 수 있는 주요 작업 중 하나는 사용자 프로그램이 확장될 때 데이터베이스의 논리적 구조 변경 및/또는 예를 들어 테이블을 분할할 때 발생하는 열 배치 변경과 독립적인지 확인하는 것입니다. . 후자의 경우 데이터베이스 구조가 변경되기 전에 존재했던 프로그램을 저장할 수있는 분할 테이블의 이름 및 구조와의 연결 인 VIEW를 만들 수 있습니다. 또한 보기를 사용하면 여러 사용자가 같은 데이터를 다른 방식으로, 아마도 동시에 볼 수 있습니다. 이는 단일 통합 데이터베이스를 사용하여 다양한 범주의 사용자와 작업할 때 특히 유용합니다. 사용자는 관심 있는 데이터만 가장 편리한 형태로 제공됩니다(테이블 또는 모든 테이블 연결에 대한 창). 마지막으로 일부 데이터는 제공하는 보기를 통해 볼 수 없는 특정 사용자에게 숨길 수 있습니다. 따라서 사용자가 뷰를 통해 데이터베이스에 액세스하도록 하는 것은 액세스 권한을 제어하기 위한 간단하면서도 효과적인 메커니즘입니다.


커서 프로그램에 SELECT 문을 "포함"할 때의 주요 문제는 SELECT가 일반적으로 많은 행과 열이 있는 테이블을 생성하고 둘러싸는 언어가 한 번에 둘 이상의 레코드(행)에서 작동하는 데 적합한 기능이 없다는 것입니다. 이러한 이유로 SQL 언어의 집합 계층과 둘러싸는 언어의 레코드 계층 사이에 일종의 브리지를 제공해야 합니다. 커서는 이러한 브리지를 제공합니다. 기본적으로 커서는 여러 레코드를 탐색하는 데 사용할 수 있는 일종의 포인터로 구성됩니다. 각 항목을 차례로 나열 주어진 세트, 한 번에 하나씩 이러한 레코드에 액세스할 수 있는 기능을 제공합니다.


기본 테이블 생성 기본 테이블은 CREATE TABLE 절을 사용하여 SQL로 설명되며 구문은 DBMS마다 약간씩 다릅니다. 그러나 모두 다음과 같은 최소 형식을 지원합니다. CREATE TABLE base_table (column datatype [,column datatype ]...); 여기서 DATA_TYPE은 DBMS에서 지원하는 데이터 유형 중 하나여야 합니다.






데이터베이스 “Suppliers-Details”의 논리적 개념 스키마 Reg_code Reg_name Post_code wsh Post_name wsh City_code Post_code wsh Part_code and Quantity Part_code 및 Name_det Color_code City_code yes City_name yes Region_code Color_code Color_name Region City Delivery Supplier Detail Colors


























기본 테이블 삭제 DROP TABLE 절을 사용하여 언제든지 기존 기본 테이블을 삭제할 수 있습니다. DROP TABLE base_table; 테이블의 설명, 테이블의 데이터, 관련 뷰 및 테이블의 열에 대해 작성된 인덱스가 삭제됩니다.








SELECT 절 정보 하나 이상의 테이블에서 거의 모든 양의 데이터를 검색하는 모든 쿼리는 단일 SELECT 절로 실행됩니다. 일반적으로 SELECT 절의 결과는 다른 테이블입니다. 이 새로운 (작업 중인) 테이블에서 SELECT 작업 등을 다시 적용할 수 있습니다. 이러한 작업은 서로 중첩될 수 있습니다. 역사적으로 흥미로운 점은 SQL 언어의 이름에 "구조화된"이라는 형용사를 사용하게 된 동기가 된 다른 절 안에 하나의 SELECT 절을 포함할 수 있다는 사실입니다.


SELECT 절은 다음과 같이 사용할 수 있습니다. 1. 하나 이상의 테이블(뷰)의 열과 행으로 구성된 테이블의 행을 가져오고 표시하기 위한 독립 명령 2. 요소 WHERE- 또는 HAVING-조건("중첩 쿼리"라고 하는 문장의 축약된 버전); 3. CREAT VIEW, DECLARE CURSOR 또는 INSERT 명령의 선택 구문; 4. 전역 할당 도구 변수 값생성된 테이블의 행에서(INTO 구문).


지정된 열에서 데이터를 선택(선택)하고 (필요한 경우) 지정된 표현식 및/또는 FROM 함수에 따라 출력 전에 변환을 수행합니다. 이러한 열이 있는 나열된 테이블에서 WHERE(어디에서) 행이 지정된 테이블은 SQL 함수 SUM(합계), COUNT(개수), MIN을 사용하여 각 그룹에 대해 단일 집계 값을 얻기 위해 지정된 열 목록을 기준으로 그룹화하는 GROUP BY 행 선택 조건의 지정된 목록을 충족해야 합니다. (최소값), SELECT 절의 MAX(최대값) 또는 AVG(평균값) HAVING(가짐) 결과적으로 지정된 그룹 선택 조건 목록을 만족하는 그룹만









=(크거나 같음), NOT 연산자가 앞에 올 수 있으며 예를 들어 "title=" WHERE 절을 사용하여 선택(조건이 있는 선택) 원하는 테이블 행을 선택하려면 비교 연산자를 사용할 수 있습니다: =(같음), (같지 않음), (보다 큼), >=(크거나 같음), 앞에 NOT 연산자가 올 수 있습니다." class="link_thumb"> 52 !} WHERE 절을 사용한 선택(조건이 있는 선택) 원하는 테이블 행을 선택하려면 =(같음), (같지 않음), (보다 큼), >=(크거나 같음) 비교 연산자를 사용할 수 있습니다. ), NOT 연산자가 앞에 올 수 있으며 예를 들어 "no less" 및 "no more" 관계를 생성합니다. 논리 연산자 AND, OR, AND NOT 및 OR NOT으로 연결된 여러 조건을 사용하는 기능을 통해 행을 더 자세히 선택할 수 있습니다. =(크거나 같음), NOT 연산자가 앞에 올 수 있으며 예를 들어 "> =(크거나 같음) 앞에 NOT 연산자가 올 수 있으며 예를 들어 "not"을 만듭니다. 보다 작음" 및 "보다 크지 않음" 관계. 논리 연산자 AND, OR, AND NOT 및 OR NOT과 연결된 조건을 사용하면 행을 더 자세히 선택할 수 있습니다."> = (크거나 같음), 이는 다음과 같을 수 있습니다. 예를 들어 "title=" WHERE 절을 사용하여 선택(조건이 있는 선택) 원하는 테이블 행을 선택하려면 다음과 같은 비교 연산자를 사용할 수 있습니다. =(같음), (같지 않음), (보다 큼), >=(크거나 같음), NOT 연산자가 앞에 올 수 있습니다."> title="WHERE 절을 사용한 선택(조건이 있는 선택) 원하는 테이블 행을 선택하려면 =(같음), (같지 않음), (보다 큼), >=(크거나 같음) 비교 연산자를 사용할 수 있습니다. ), NOT 연산자가 앞에 올 수 있습니다. 예를 들어 다음과 같습니다."> !}


색상 코드 111로 해당 연도에 생산된 일부 부품




LIKE 사용 텍스트 유형의 열에 대한 일반 형식 "column_name LIKE text_constant"는 "text_constant"로 지정된 패턴과 일치하는 지정된 열의 모든 값을 찾습니다. 이 상수의 문자는 다음과 같이 해석됩니다. 문자 *(별표) - N 문자의 시퀀스를 대체합니다(여기서 N은 0일 수 있음). 다른 모든 문자는 자신을 의미합니다.



매개변수 쿼리 실행을 위해 쿼리를 시작할 때 사용자가 직접 필터 조건을 설정할 때 LIKE를 사용하여 소위 PARAMETER QUERY를 생성할 수 있습니다: "column_name LIKE [text to filter]"



정렬을 통한 정렬 이 구문의 가장 간단한 버전은 정렬 순서를 오름차순 ASC(ASCending) 또는 내림차순 DESC(DESCending)로 지정하거나 지정하지 않고 열 중 하나의 값으로 결과 행을 정렬하는 것입니다. (기본적으로 행은 지정된 열(ASC)에 있는 값의 오름차순으로 정렬됩니다.)




SQL 데이터 집계 많은 특수 표준 함수(SQL 함수)가 있습니다. 이러한 각 함수는 일부 테이블의 열에 있는 값 집합에서 작동하며 다음과 같이 정의된 단일 값을 생성합니다. COUNT - 열에 있는 값의 수 SUM - 열에 있는 값의 합계 AVG - 열의 평균값 MAX - 열의 가장 큰 값 MIN - 열의 가장 작은 값. SUM 및 AVG 함수의 경우 해당 열에 숫자 값이 포함되어야 합니다.


여기서 열은 기본 테이블의 열뿐만 아니라 기능 변환 및/또는 심볼 바인딩으로 얻은 데이터를 포함할 수 있는 가상 테이블 열입니다. 산술 연산하나 이상의 열의 값. 이러한 테이블의 열을 정의하는 표현식은 임의로 복잡할 수 있지만 SQL 함수를 포함해서는 안 됩니다(SQL 함수의 중첩은 허용되지 않음). 그러나 모든 표현식은 SQL 함수에서 구성될 수 있습니다. 모든 함수의 인수 앞에는 다음이 올 수 있습니다. 예어기능이 적용되기 전에 중복 중복 값을 제거해야 함을 나타내는 DISTINCT(다양한).


집계의 예 이름이 Nut(=531)인 부품의 총 수와 부품 이름이 Nut인 레코드에 해당하는 Quantity 필드의 비어 있지 않은 값의 수가 계산됩니다(해당 필드 3개).





HAVING 절 HAVING 절은 WHERE 절이 행에 대해 수행하는 것과 동일한 역할을 그룹에 대해 수행합니다. WHERE가 행을 제외하는 데 사용되는 것처럼 그룹을 제외하는 데 사용됩니다. 이 절은 GROUP BY 절이 있고 HAVING 표현식이 그룹에 대해 단일 값을 가져야 하는 경우에만 절에 포함됩니다. SQL 데이터 수정 절 DELETE(삭제), INSERT(삽입) 및 UPDATE(업데이트) 절을 사용하여 데이터 수정을 수행할 수 있습니다. SELECT 절과 마찬가지로 기본 테이블과 뷰 모두에서 작동할 수 있습니다. 그러나 여러 가지 이유로 모든 보기를 업데이트할 수 있는 것은 아닙니다.




INSERT 절의 형식은 다음 중 하나입니다. INSERT INTO (기본 테이블 | 보기) [(column [,column]...)] VALUES ((상수 | 변수) [,(상수 | 변수)]...); 또는 INSERT INTO (기본 테이블 | 뷰) [(column [,column]...)] subquery; 첫 번째 형식에서는 VALUES(값) 구문 목록에 지정된 필드 값을 사용하여 행이 테이블에 삽입되고 i번째 값열 목록의 i번째 열에 해당합니다(목록에 지정되지 않은 열은 NULL 값으로 채워짐). 구문의 VALUES 목록에 수정된 테이블의 모든 열이 포함되고 목록 순서가 테이블 설명의 열 순서와 일치하는 경우 INTO 절의 열 목록을 생략할 수 있습니다. 두 번째 형식에서는 하위 쿼리가 먼저 실행됩니다. SELECT 문은 메모리에 작업 테이블을 만든 다음 작업 테이블 행을 수정 중인 테이블로 로드합니다. 여기서 i번째 열작업 테이블( i 번째 요소 SELECT 목록)은 수정된 테이블의 열 목록에서 i번째 열에 해당합니다.


UPDATE 절의 형식은 다음과 같습니다. UPDATE(기본 테이블 | 뷰) SET 열 = 값 [, 열 = 값]... 여기서 값은 열 | 식 | 상수 | 변수이며 업데이트된 테이블의 열만 포함할 수 있습니다. 수정된 테이블의 열 중 하나의 값은 다른 열의 값 또는 수정 중인 열을 포함하여 여러 열의 값을 포함하는 표현식으로 대체될 수 있습니다. WHERE 절이 없으면 지정된 열의 값이 수정된 테이블의 모든 행에서 업데이트됩니다. WHERE 절을 사용하면 선택 조건을 지정하여 업데이트할 행 수를 줄일 수 있습니다. SET 구문 등호의 오른쪽에 있는 값에서 테이블 이름을 접두사로 사용하여 사용된 열의 이름을 한정해야 합니다.

DBMS 언어 및 소프트웨어 도구

DBMS의 개념과 분류

DBMS는 소프트웨어 및 언어 복합물,컴퓨터의 많은 사용자를 위한 공통 데이터베이스를 만들고 여기에 저장된 데이터를 관리하도록 설계되었습니다. 데이터베이스 관리는 데이터베이스를 최신 정보, 데이터베이스에 저장된 적시 변경, 비표준 상황의 경우 데이터 복구, 무단 개입으로부터 데이터 보호 및 특정 주제 영역의 데이터베이스를 적절하게 표시하는 기타 여러 기능의 성능을 통해 달성됩니다. DBMS는 사용자에게 부여된 권한의 프레임워크 내에서 포함된 데이터에 대한 효과적인 사용자 액세스를 제공합니다.

범용성의 정도에 따라 DBMS에는 두 가지 클래스가 있습니다.

특정 주제 영역이나 특정 사용자 그룹의 정보 요구에 초점을 맞추지 않는 범용 시스템

특정 운영 체제의 특정 컴퓨터 모델에서 작동하고 특정 주제 영역의 데이터베이스와 함께 작동하도록 설정하는 수단이 있는 특수 시스템.

기능별 DBMS는 정보와 운영으로 나뉩니다. 정보를 사용하면 정보 저장을 구성하고 검토 및 간단한 인증서 발급을 위해 정보에 액세스할 수 있습니다. 수술실은 복잡한 데이터 처리를 수행합니다.

의사소통의 언어로 DBMS는 개방, 폐쇄 및 혼합이 가능합니다. 에 개방형 시스템데이터베이스에 액세스하기 위해 범용 프로그래밍 언어가 사용됩니다. 폐쇄형 시스템은 데이터베이스 사용자와 고유한 통신 언어를 가지고 있습니다.

힘으로데스크톱 및 기업용 DBMS를 할당합니다. 데스크톱 시스템(Access, FoxPro, Paradox)은 최종 사용자(특정 주제 분야의 전문가). 그들은 높은 요구 사항을 요구하지 않습니다. 기술적 수단, 비용이 저렴합니다. 기업 DBMS(Oracle, SyBase, DB2)는 분산 환경에서 작업을 제공하고 고성능, 고급 관리 도구 등을 제공합니다. 넓은 기회무결성 유지. DBMS MS SQL Server, Interbase는 데스크톱 및 기업 시스템의 기능을 모두 갖추고 있습니다.

구현된 데이터 모델에 따르면 DBMS는 지원하는 데이터 스키마(계층적, 네트워크, 관계형, 객체 지향)에 따라 이름이 지정됩니다.

DBMS 언어 및 소프트웨어 도구

다음 기능을 수행하려면 DBMS 언어 도구가 필요합니다.

– DB 표현에 대한 설명

– 데이터 조작 작업 수행

- 데이터베이스 관리.

이러한 기능 중 첫 번째가 제공됩니다. 데이터의 설명(정의) 언어(요드) - Shema 정의 언어. DDL을 통한 데이터베이스 설명은 다음과 같습니다. 데이터베이스 스키마. DB 스키마 사용된 DBMS의 데이터 모델에 의해 규제되는 규칙에 따라 데이터베이스의 구조와 데이터베이스에 부과된 무결성 제약 조건을 설명합니다. 일부 DBMS에서 데이터 설명 언어는 데이터 또는 사용자 권한에 대한 액세스에 대한 제한을 설정하는 기능도 제공합니다.

데이터 조작 언어(YAMD) - Shema 조작 언어데이터베이스에 데이터를 입력하고, 삭제하고, 수정하고, 데이터베이스에서 요청된 정보를 선택할 수 있는 일련의 데이터 조작 연산자를 포함합니다.

현재 단일 구문 프레임워크에서 데이터를 설명하고 데이터를 조작할 수 있는 가능성을 결합한 DBMS 언어의 예가 많이 있습니다. 최신 DBMS의 단일 통합 언어에는 모든 것이 포함되어 있습니다. 필요한 자금생성부터 시작하여 데이터베이스 작업을 수행하고 다음을 제공합니다. 사용자 인터페이스 DB와 함께 관계형 DBMS의 가장 대중적이고 표준적인 것은 SQL 언어입니다. (구조화된 쿼리 언어- 구조화된 쿼리 언어 ), IBM에서 개발. 지원을 위해 개체 모델 OQL(Object Query Language)은 SQL을 기반으로 설계되었습니다.

이 클래스의 다른 언어의 예는 다음과 같습니다. 캘리포니아 대학에서 만든 Ingres 시스템의 Quel; Asthon-Tate DBMS 제품군의 dBase; R:Microrim의 베이스.

데이터베이스를 관리하는 데 사용되는 절차적 언어는 QBE 언어입니다. (예제별 쿼리). 이 언어는 데이터베이스 유지 관리 작업을 수행하기 위한 편리하고 통합된 인터페이스를 사용자에게 제공합니다.

DBMS 소프트웨어에는 다음에 초점을 맞춘 복잡한 데이터 처리 시스템을 만들 수 있는 프로그래밍 언어가 포함되어 있습니다. 특정 작업그리고 특정 사용자.

MS Access DBMS에서는 매크로와 모듈을 이용하여 프로그래밍을 합니다. 매크로 Access 시스템의 매크로 언어로 된 작은 프로그램입니다. 순차적으로 또는 특정 조건에 지정된 순서대로 실행되는 하나 이상의 매크로로 구성된 구조입니다. 매크로를 사용하면 DBMS의 기능을 구성하고 프로그래밍 언어를 모르는 데이터베이스 사용자가 수행하는 거의 모든 절차를 프로그래밍할 수 있습니다.

모듈 VBA(Visual Basic for Application) 언어의 프로시저입니다.

VBA는 모두를 위한 공통 언어입니다. 마이크로소프트 애플리케이션 Office를 사용하면 특정 사용자의 작업 자동화에서 다음을 사용하는 복잡한 응용 프로그램 개발에 이르기까지 모든 프로그래밍 작업을 해결할 수 있습니다. 마이크로 소프트 오피스개발 환경으로. VBA 언어는 객체 지향 프로그래밍 및 컴퓨팅 언어입니다. VBA 프로그램의 기본은 필요한 작업을 수행하는 명령으로 구성된 절차입니다. 프로시저는 실행이 요청된 모듈에 저장됩니다. 이 모듈은 다음에 대한 절차를 결합하는 데 사용됩니다. 기능적 목적또는 양식이나 보고서에 바인딩합니다.

웹 프로그래밍에서는 MySQL DBMS가 활발히 사용되고 있다. 이 시스템의 데이터베이스로 작업하기 위해 언어가 사용됩니다. PHP 프로그래밍. 웹 서버에서 프로그램을 빠르게 만들 수 있도록 설계된 C와 유사한 언어입니다.

PHP 언어스크립트(스크립팅 언어)는 데이터베이스에서 선택한 데이터에 대해 특정 작업을 수행하기 위한 코드(프로그램) 지침으로 개발됩니다. 스크립트는 HTML 문서에 삽입되어 정적 문서를 활성 문서로 변환합니다. 웹 서버는 문서를 스캔하고 그 안에 있는 PHP 명령어를 실행하고 명령어 실행 결과를 사용자에게 반환합니다.

에서 PHP 사용양식에서 데이터를 처리하고, 동적 페이지를 생성하고, 카운터, 방명록 등을 만들 수 있습니다. PHP는 FilePro, Informix, MySQL, Oracle, Sybase 등 많은 데이터베이스에 대한 지원을 포함합니다.

DBMS 도구가 지원하는 데이터 모델의 기능은 언어 도구 덕분에 사용자가 사용할 수 있습니다. DBMS 언어 도구는 시스템 아키텍처의 관리 수준에서 데이터베이스 표시를 설명하고 데이터 조작 작업을 수행하는 두 가지 주요 기능을 수행하는 데 사용됩니다.

데이터 설명 언어(DDL)은 해당 DBMS에서 지원하는 데이터 모델에 의해 규제되는 규칙 내에서 데이터베이스 구조 및 무결성 제약 조건에 대한 설명을 포함하는 데이터베이스 스키마를 지정하도록 설계되었습니다. 이러한 기능 외에도 DDL은 데이터 액세스 또는 사용자 권한에 대한 제한을 설정하는 기능도 제공합니다.

데이터 조작 언어(YMD)를 사용하면 데이터베이스의 데이터에 대해 시스템에서 제공하는 작업을 요청할 수 있습니다. JMD에 기록된 오퍼레이터 실행 후 데이터베이스의 정보 내용이 변경됨

쿼리 언어(YaZ)를 사용하면 데이터베이스에서 데이터를 선택하고 모든 종류의 분석 처리를 집계하고 적용할 수 있습니다.

데이터 정의 언어와 유사하게 DML은 구문적으로 독립적인 DBMS 언어로 반드시 작동하지는 않습니다. 실제로 NDL과 NMD의 분리는 방법론적 역할을 더 많이 수행하거나 기술적 목적으로 사용됩니다.

DDL, DMD 및 DL이 항상 독립적인 언어로 구문적으로 배열되는 것은 아닙니다. 오히려 현재는 모두 통합 관계형 언어인 SQL에 포함되어 있다. 1986년부터 여러 버전의 국제 SQL 표준이 채택되었습니다. 개인용 컴퓨터를 포함하여 대부분의 상용 관계형 DBMS에서 사용됩니다.

일부 DBMS에는 데이터 정의 및 데이터 조작 기능을 구현할 뿐만 아니라 범용 프로그래밍 언어 고유의 기능도 포함하는 언어가 있습니다. 이로 인해 기능적으로 완전한 것으로 사용할 수 있습니다. 도구데이터베이스 시스템 응용 프로그램을 생성합니다. 예를 들어 dBase, Clipper, Paradox 시스템의 언어를 살펴보겠습니다.

고급 응용 프로그램 개발 도구를 갖기 위해 응용 프로그램 프로그래밍 인터페이스가 DBMS에 제공됩니다. 이러한 시스템을 위한 응용 프로그램은 지정된 인터페이스의 연산자(명령, 기능, 프로시저 등)로 기존 프로그래밍 언어를 확장하여 개발할 수 있습니다. 덕분에 이 시스템의 언어의 기능적 불완전성이 채워질 것입니다. 프로그래밍 언어는 DBMS의 응용 프로그래밍 인터페이스의 언어와 관련하여 포괄적인 언어 역할을 하며, 응용 시스템이러한 확장된 언어로 구현됩니다. 애플리케이션 프로그래밍 인터페이스는 많은 DBMS에서 제공됩니다.



시험 문제이 주제에.

1. 데이터 모델의 언어 도구는 어떤 형태로 DBMS에서 구현될 수 있습니까?

2. 데이터 모델 언어 도구의 두 가지 주요 기능은 무엇입니까?

3. DBMS에서 데이터 정의 언어의 목적은 무엇입니까?

4. 데이터베이스 스키마란 무엇이며 스키마와 데이터 정의 언어 간의 관계는 무엇입니까?

5. DBMS에서 레벨간 데이터 매핑은 어떤 언어로 결정되는가?

6.데이터 조작 언어는 어떤 기능을 수행합니까?

7. 데이터 정의와 데이터 조작 기능을 모두 수행하는 언어의 예를 들어보십시오.

8. DBMS 쿼리 언어의 목적은 무엇입니까?

9.데이터베이스 프로그래밍 언어는 어떤 목적으로 개발되었나요?

데이터베이스 관리 시스템(DBMS)은 데이터베이스를 구성하고 유지 관리하도록 설계된 특수 프로그램(일반적으로 프로그램 집합)입니다. 정보시스템을 생성하고 관리하기 위해서는 프로그램을 개발하는 것과 같은 정도의 DBMS가 필요하다. 알고리즘 언어번역가가 필요합니다.

DBMS의 주요 기능:

외부 메모리(디스크)의 데이터 관리

데이터 관리 랜덤 액세스 메모리디스크 캐시 사용;

변경 사항 로깅 지원장애 발생 후 데이터베이스 복구

데이터베이스 언어 지원(데이터 정의어, 데이터 조작어)

일반적으로 최신 DBMS에는 다음 구성 요소가 포함됩니다.

외부 및 RAM의 데이터 관리 및 로깅을 담당하는 커널

데이터를 추출 및 변경하고 일반적으로 기계 독립적인 실행 가능한 내부 코드를 생성하기 위해 쿼리를 최적화하는 데이터베이스 언어 프로세서;

DBMS와의 사용자 인터페이스를 생성하는 데이터 조작 프로그램을 해석하는 런타임 지원 서브시스템;

다양한 서비스를 제공하는 서비스 프로그램(외부 유틸리티) 추가 기능정보시스템 유지보수.

DBMS 분류.

데이터 모델별:

· 계층적;

회로망;

· 관계형;

· 개체 관계형;

· 객체 지향.

데이터 저장 조직의 아키텍처에 따르면:

로컬 DBMS(로컬 DBMS의 모든 부분이 한 컴퓨터에서 호스팅됨)

분산 DBMS(DBMS의 일부는 둘 이상의 컴퓨터에서 호스팅될 수 있음).

데이터베이스에 액세스하는 방법:

· 파일 서버.

파일 서버 DBMS에서 데이터 파일은 파일 서버의 중앙에 위치합니다. DBMS 커널은 각 클라이언트 컴퓨터에 상주합니다. 데이터는 로컬 네트워크를 통해 액세스됩니다. 읽기 및 업데이트의 동기화는 파일 잠금을 통해 수행됩니다. 이 아키텍처의 장점은 서버의 CPU 부하가 적고 단점은 로컬 네트워크의 부하가 높다는 것입니다.

예: Microsoft Access, 볼랜드 패러독스.

· 클라이언트 서버.

이러한 DBMS는 클라이언트 부분과 서버로 구성됩니다. 클라이언트-서버 DBMS는 파일-서버 DBMS와 달리 사용자 간의 액세스 제어를 제공하고 네트워크와 클라이언트 시스템에 약간의 부하를 줍니다. 서버는 클라이언트와 관련하여 외부 프로그램이며 필요한 경우 다른 프로그램으로 대체될 수 있습니다. 클라이언트-서버 DBMS의 단점은 서버가 존재한다는 사실과 서버가 소비하는 대용량 컴퓨팅 리소스입니다.

예: Firebird, Interbase, MS SQL Server, Sybase, Oracle, PostgreSQL, MySQL, Linter.

· 임베디드.

임베디드 DBMS는 대량의 데이터를 로컬 머신에 통합된 방식으로 저장할 수 있게 해주는 라이브러리입니다. 데이터는 SQL 또는 특수 DBMS 기능을 통해 액세스할 수 있습니다. 내장형 DBMS는 기존의 클라이언트-서버 방식보다 빠르고 서버 설치가 필요 없어 로컬 소프트웨어에서 수요가 많다. 대용량데이터(예: 지리 정보 시스템).

예: OpenEdge, SQLite, BerkeleyDB, Firebird 변형, MySQL 변형, Sav Zigzag, 마이크로소프트 SQL서버 컴팩트, LINTER.

데이터베이스 언어 지원

데이터베이스 작업에는 일반적으로 데이터베이스 언어라고 하는 특수 언어가 사용됩니다. 초기 DBMS에서는 기능에 특화된 여러 언어를 지원했다. 대부분의 경우 데이터베이스 스키마 정의 언어(SDL - Schema Definition Language)와 데이터 조작 언어(DML - Data Manipulation Language)의 두 가지 언어가 구별되었습니다. SDL은 주로 데이터베이스의 논리적 구조를 정의하는 역할을 했습니다. 사용자에게 나타나는 데이터베이스의 구조. DML에는 일련의 데이터 조작 문이 포함되어 있습니다. 데이터베이스에 데이터를 입력하고 기존 데이터를 삭제, 수정 또는 선택할 수 있는 연산자입니다.

최신 DBMS에서는 일반적으로 단일 통합 언어가 지원되며 데이터베이스 작업에 필요한 모든 도구가 포함되어 있고 생성부터 시작하여 데이터베이스에 대한 기본 사용자 인터페이스를 제공합니다. SQL(Structured Query Language)은 오늘날 가장 일반적인 관계형 DBMS의 표준 언어입니다.

SQL 인터페이스의 구현에 의해 지원되는 관계형 DBMS의 주요 기능):

우선, SQL 언어는 SDL과 DML의 도구를 결합합니다. 관계형 데이터베이스 스키마를 정의하고 데이터를 조작할 수 있습니다. 동시에 SQL 언어 컴파일러가 특별히 지원되는 서비스를 기반으로 개체 이름을 내부 식별자로 변환한다는 점에서 데이터베이스 개체의 이름 지정(관계형 데이터베이스의 경우 테이블 및 해당 열의 이름 지정)은 언어 수준에서 지원됩니다. 카탈로그 테이블. DBMS(커널)의 내부 부분은 테이블의 이름과 열을 전혀 다루지 않습니다.

SQL 언어에는 다음이 포함됩니다. 특별한 수단데이터베이스 무결성 제약 조건 결정. 다시, 무결성 제약 조건은 특수 카탈로그 테이블에 저장되며 데이터베이스 무결성 제어는 언어 수준에서 보장됩니다. 데이터베이스 수정 명령문을 컴파일할 때 SQL 컴파일러는 데이터베이스의 무결성 제약 조건을 기반으로 해당 프로그램 코드를 생성합니다.

SQL 언어의 특수 연산자를 사용하면 명명된 열이 있는 데이터베이스(관계형 데이터베이스에 대한 모든 쿼리의 결과는 테이블임)에 실제로 저장된 쿼리인 소위 DB 보기를 정의할 수 있습니다. 사용자에게 보기는 데이터베이스에 저장된 기본 테이블과 동일한 테이블이지만 보기를 사용하여 특정 사용자에 대한 데이터베이스의 가시성을 제한하거나 그 반대로 확장할 수 있습니다. 표현은 언어 수준에서도 유지됩니다.

데이터베이스 개체에 대한 액세스 권한도 다음을 기반으로 합니다. 스페셜 세트 SQL 문. 아이디어는 SQL 문을 실행하기 위해 다른 종류의사용자는 다른 권한을 가지고 있어야 합니다. 데이터베이스 테이블을 생성한 사용자는 이 테이블에 대해 작업할 수 있는 전체 권한을 가집니다. 이러한 권한에는 권한 이전 권한을 포함하여 권한의 전부 또는 일부를 다른 사용자에게 이전할 수 있는 권한이 포함됩니다. 사용자 권한은 특수 카탈로그 테이블에 설명되어 있으며 권한 제어는 언어 수준에서 지원됩니다.

보다 정확하게는 DBMS의 기능은 다음과 같습니다.

1. 외장 메모리 데이터 직접 관리

이 기능에는 데이터베이스에 직접 포함된 데이터를 저장하고 경우에 따라 데이터 액세스 속도를 높이는 것과 같은 서비스 목적으로 필요한 외부 메모리 구조를 제공하는 것이 포함됩니다.(일반적으로 인덱스가 이를 위해 사용됩니다). 일부 DBMS 구현에서는 기존 파일 시스템의 기능을 적극적으로 활용하고, 다른 경우에는 해당 수준까지 작업을 수행합니다. 외부 메모리 장치. 그러나 우리는 개발된 DBMS에서 사용자는 DBMS가 사용하는지 여부를 어떠한 경우에도 알 필요가 없음을 강조합니다. 파일 시스템, 그리고 만약 그렇다면 파일이 어떻게 구성되어 있는지. 특히 DBMS는 자체 시스템데이터베이스 개체의 이름을 지정합니다.

2. RAM 버퍼 관리

DBMS는 일반적으로 상당한 크기의 데이터베이스에서 작동합니다. 적어도 이 크기는 일반적으로 사용 가능한 RAM 양보다 훨씬 큽니다. 데이터 요소에 액세스할 때 외부 메모리와의 교환이 수행되면 전체 시스템이 빠른 속도로 작동한다는 것이 분명합니다. 외부 메모리 장치. 거의 유일한 방법이 속도의 실제 증가는 RAM의 데이터 버퍼링입니다. 동시에, 비록 운영 체제시스템 전반에 걸친 버퍼링을 수행하지만(UNIX OS의 경우와 같이) 이것은 데이터베이스의 한 부분 또는 다른 부분을 버퍼링하는 유용성에 대한 훨씬 더 많은 정보를 가지고 있는 DBMS의 목적에 충분하지 않습니다. 따라서 개발된 DBMS는 자체 버퍼 교체 원칙을 통해 자체 RAM 버퍼 세트를 유지합니다.

RAM에서 전체 데이터베이스의 지속적인 존재에 초점을 맞춘 별도의 방향 DBMS가 있습니다. 이 방향은 미래에 컴퓨터의 RAM 양이 버퍼링에 대해 걱정할 필요가 없을 만큼 충분히 커질 것이라는 가정을 기반으로 합니다. 이 작품들이 연구 단계에 있는 동안.

3. 거래 관리

거래 - 이것은 전체적으로 DBMS에 의해 고려되는 데이터베이스에 대한 일련의 작업입니다.

트랜잭션이 성공하고 DBMS가 이 트랜잭션에 의해 수행된 데이터베이스 변경 사항을 외부 메모리에 커밋하거나 이러한 변경 사항 중 어느 것도 데이터베이스 상태에 영향을 미치지 않습니다.

트랜잭션의 개념은 데이터베이스의 논리적 무결성을 유지하는 데 필요합니다. EMPLOYEES 및 DEPARTMENTS 파일이 있는 정보 시스템의 예를 들어 보겠습니다. 새 직원을 고용하는 작업을 수행할 때 데이터베이스의 무결성을 위반하지 않는 유일한 방법은 EMPLOYEES 및 DEPARTMENTS 파일에 대한 기본 작업을 하나의 트랜잭션으로 결합하는 것입니다. 따라서 트랜잭션 메커니즘을 유지하는 것은 단일 사용자 DBMS의 경우에도 전제 조건입니다(물론 그러한 시스템이 DBMS라는 이름을 가질 자격이 있는 경우). 그러나 트랜잭션의 개념은 다음에서 훨씬 더 중요합니다. 다중 사용자 DBMS.

각 거래가 시작되는 속성 온전한 상태데이터베이스는 완료 후에도 이 상태를 그대로 유지하므로 트랜잭션의 개념을 하나의 단위로 사용하는 것이 매우 편리합니다. 사용자 활동데이터베이스와 관련하여. 동시에 실행되는 트랜잭션을 DBMS에서 적절히 관리하면 원칙적으로 각 사용자는 DBMS의 유일한 사용자처럼 느낄 수 있습니다. 다중 사용자 DBMS동료의 존재를 감지할 수 있습니다.)

4. 저널라이제이션

DBMS의 주요 요구 사항 중 하나는 외부 메모리에 데이터 저장의 신뢰성입니다. 스토리지 안정성은 DBMS가 하드웨어 또는 소프트웨어 장애 후 데이터베이스의 일관된 마지막 상태를 복원할 수 있어야 한다는 사실을 나타냅니다.일반적으로 두 가지 유형의 하드웨어 오류가 고려됩니다. 즉, 컴퓨터의 갑작스러운 중지(예: 비상 전원 꺼짐)로 해석될 수 있는 소위 소프트 오류와 하드웨어에 대한 정보 손실을 특징으로 하는 하드 오류입니다. 외부 메모리 미디어. 소프트웨어 오류의 예는 다음과 같습니다. 일시 휴업 DBMS(프로그램 오류 또는 일부 하드웨어 오류로 인해) 또는 사용자 프로그램이 충돌하여 일부 트랜잭션이 완료되지 않았습니다. 첫 번째 상황은 특별한 종류의 소프트 하드웨어 오류로 생각할 수 있습니다. 후자가 발생하면 단 하나의 트랜잭션 결과를 제거해야 합니다.

어쨌든 데이터베이스를 복원하려면 몇 가지 추가 정보가 필요합니다. 즉, 데이터베이스에서 데이터 저장의 신뢰성을 유지하기 위해서는 중복 데이터 저장이 필요하며 복구에 사용되는 데이터 부분은 특히 안정적으로 저장되어야 합니다. 이러한 중복 정보를 유지 관리하는 가장 일반적인 방법은 다음과 같습니다. 변경 로그 DB .

신문 - 이것은 데이터베이스의 특수 부분으로, DBMS 사용자가 액세스할 수 없으며 세심한 주의를 기울여 유지 관리됩니다(때로는 서로 다른 물리적 디스크에 있는 두 개의 로그 복사본이 유지 관리됨). 이 부분은 데이터베이스의 주요 부분에 대한 모든 변경 사항에 대한 기록을 수신합니다.다른 DBMS에서는 데이터베이스 변경 사항이 기록됩니다. 다른 수준: 때때로 로그 항목은 데이터베이스를 변경하는 일부 논리적 작업(예: 관계형 데이터베이스의 테이블에서 행을 삭제하는 작업)에 해당하고 때로는 외부 메모리 페이지를 수정하는 최소 내부 작업에 해당합니다. 일부 시스템은 두 가지 접근 방식을 동시에 사용합니다.

모든 경우에 "선제적" 로깅 전략(소위 Write Ahead Log - WAL 프로토콜)을 따릅니다. 대략적으로 말하자면, 이 전략은 변경된 개체가 데이터베이스 주요 부분의 외부 메모리에 들어가기 전에 데이터베이스 개체의 변경 기록이 로그의 외부 메모리에 들어가야 한다는 것입니다. WAL 프로토콜이 DBMS에서 올바르게 관찰되면 저널의 도움으로 장애 발생 후 데이터베이스 복원의 모든 문제를 해결할 수 있는 것으로 알려져 있습니다.

제일 간단한 상황복구 - 개별 트랜잭션 롤백. 엄밀히 말하면 이것은 시스템 전체에 변경 로그 DB . 각 트랜잭션은 이 트랜잭션에서 수행된 데이터베이스 수정 작업의 로컬 로그를 유지하고 로컬 로그의 끝에서 역방향 작업을 수행하여 트랜잭션을 롤백하면 충분합니다. 일부 DBMS에서는 이를 수행하지만 대부분의 시스템에서는 로컬 로그를 지원하지 않으며 개별 트랜잭션은 시스템 전체 로그에 따라 롤백되며 한 트랜잭션의 모든 레코드는 역방향 목록(끝에서 끝에서 시작).

5. DB 언어 지원

데이터베이스 작업에는 일반적으로 데이터베이스 언어라고 하는 특수 언어가 사용됩니다. 초기 DBMS에서는 기능에 특화된 여러 언어를 지원했다. 가장 일반적인 두 언어

  • 데이터베이스 스키마 정의 언어(SDL - 스키마 정의 언어) 및
  • 데이터 조작 언어(DML - 데이터 조작 언어).

SDL은 주로 다음을 정의하는 역할을 했습니다. 논리적 구조 DB, 즉 사용자에게 나타나는 데이터베이스의 구조. DML에는 일련의 데이터 조작 문이 포함되어 있습니다. 데이터베이스에 데이터를 입력하고 기존 데이터를 삭제, 수정 또는 선택할 수 있는 연산자입니다.

최신 DBMS에서는 일반적으로 단일 통합 언어가 지원되며 데이터베이스 작업에 필요한 모든 도구가 포함되어 있고 생성부터 시작하여 데이터베이스에 대한 기본 사용자 인터페이스를 제공합니다. 오늘날 가장 일반적인 관계형 DBMS의 표준 언어는 SQL 쿼리 언어(Structured Query Language)입니다.

SQL 언어결정하는 특별한 수단을 포함 무결성 제약 DB . 다시 한번, 무결성 제약특수 카탈로그 테이블에 저장되며 무결성 제어데이터베이스는 언어 수준에서 생성됩니다. 데이터베이스 수정 명령문을 컴파일할 때 데이터베이스에서 사용 가능한 명령문을 기반으로 하는 SQL 컴파일러 무결성 제약해당 프로그램 코드를 생성합니다.

SQL 언어의 특수 연산자를 사용하면 이름이 지정된 열이 있는 데이터베이스에 실제로 저장된 쿼리(관계형 데이터베이스에 대한 모든 쿼리의 결과는 테이블임)인 소위 데이터베이스 뷰를 정의할 수 있습니다. 사용자에게 보기는 데이터베이스에 저장된 기본 테이블과 동일한 테이블이지만 보기를 사용하여 특정 사용자에 대한 데이터베이스의 가시성을 제한하거나 그 반대로 확장할 수 있습니다. 표현은 언어 수준에서도 유지됩니다.

드디어, 액세스 권한 부여데이터베이스 개체에 대한 작업도 특수한 SQL 문 집합을 기반으로 수행됩니다. 아이디어는 사용자가 다른 종류의 SQL 문을 실행하기 위해 다른 권한을 가져야 한다는 것입니다. 데이터베이스 테이블을 생성한 사용자는 이 테이블에 대해 작업할 수 있는 전체 권한을 가집니다. 이러한 권한에는 권한 이전 권한을 포함하여 권한의 전부 또는 일부를 다른 사용자에게 이전할 수 있는 권한이 포함됩니다. 사용자 권한은 특수 카탈로그 테이블에 설명되어 있으며 권한 제어는 언어 수준에서 지원됩니다.

DBMS 기능

보편성의 정도에 따라 DBMS의 두 가지 클래스가 구분됩니다.

  • 범용 시스템- 특정 운영 체제의 컴퓨터에서 작동할 수 있는 소프트웨어 제품으로 구현되고 상용 제품으로 사용자에게 제공됩니다.
  • 특수 시스템 - 범용 DBMS를 사용하는 것이 불가능하거나 부적합한 경우 생성됩니다.

범용 DBMS는 정보 시스템 데이터베이스의 생성 및 운영과 관련된 전체 기능 집합을 수행하도록 설계된 복잡한 소프트웨어 시스템입니다.

시장 소프트웨어 PC에는 다양한 기능이 있습니다. 기능상용 범용 DBMS 시스템.

DBMS - 소프트웨어 시장의 리더:

  • dBASE IV, 볼랜드 인터내셔널;
  • 마이크로소프트 액세스 2007;
  • DOS용 Microsoft FoxPro 2.6;
  • 마이크로소프트 폭스프로 윈도우용, 마이크로 소프트 회사:
  • DOS 4.5의 역설:
  • Paradox for Windows, 버전 4.5 Borland.

성능 DBMS 평가:

  • 쿼리 실행 시간;
  • 정보검색속도;
  • 다른 형식에서 데이터를 가져오는 데 걸리는 시간
  • 업데이트, 삽입, 데이터 삭제와 같은 작업을 수행하는 속도;
  • 다중 사용자 모드에서 최대 병렬 데이터 액세스 수
  • 보고서 생성 시간.

성능 DBMS는 다음 두 가지 요소의 영향을 받습니다.

  • 적절한 디자인
  • 데이터베이스 구축.