SQL 데이터베이스 생성, 개발, 전용 실습. SQL

세르게이 보로비요프
리드 엔지니어
SQL. 기본과정
www.aplana.ru

콘텐츠
● 1부. SQL 소개
● 2부. 데이터 정의 언어
● 3부. 데이터 조작 언어
● 파트 4. DRL. 간단한 쿼리.
● 파트 5. 여러 테이블에서 데이터 가져오기.
● 파트 6. 집계 기능. 데이터 그룹화.
● 7부. 하위 쿼리.
● 파트 8. 문자열, 날짜 및 숫자 작업을 위한 함수.
23

SQL. 기본과정
1부. SQL 소개
www.aplana.ru

SQL 소개
SQL은 구조적 쿼리 언어를 나타냅니다.
쿼리 ")는 다음을 위해 사용되는 범용 컴퓨터 언어입니다.
관계형 데이터베이스에서 데이터 생성, 수정 및 관리
데이터.
43

SQL 소개
데이터베이스 - 연결된 목록의 목록 또는 집합
정보
데이터베이스 관리 시스템(DBMS) - 특수
이 목록을 관리하는 소프트웨어
53

관계형 및 비관계형 데이터베이스
관계형 DB - 관계형 모델에 기반한 데이터베이스
데이터:
데이터베이스의 데이터는 테이블 세트입니다.
데이터가 특정 무결성 조건을 충족합니다.
테이블 조작 연산자 지원
(예: 테이블 가져오기 또는 복사).
비관계형 데이터베이스 - 계층적, 네트워크,
객체 지향, NoSQL.
63

데이터베이스가 스프레드시트와 다른 점
1. 많은 줄 저장
스프레드시트에는 제한된 수의 행이 있습니다.
수백만 개의 행이 데이터베이스에 저장됩니다.
2. 다수의 이용자 동시 서비스
3. 보안.
사용자는 다음에 대해서만 권한이 부여됩니다.
특정 테이블 및 작업.
4. 관계 속성.
데이터는 테이블 간에 서로 다른 테이블에 저장됩니다.
연결이 있습니다.
5. 데이터 품질을 보장하는 제한 사항.
73

테이블
행 - 각각에 대해 예약된 셀의 가로 행
테이블 개체.
레코드 - 행의 데이터입니다.
열 - 동일한 유형의 정보를 포함합니다.
필드 - 열과 행의 교차점.
83

SQL 인터페이스 기본 사항
DBMS
93
이름
복호화
인터베이스 / 파이어버드
PSQL
절차적 SQL
IBM DB2
SQL PL
SQL 절차적 언어
MS SQL 서버/사이베이스 ASE
T-SQL
Transact-SQL
MySQL
SQL/PSM
SQL / 영구 저장
기준 치수
신탁
PL / SQL
절차적 언어 / SQL
(Ada 언어 기준)
PostgreSQL
PL / pgSQL
절차적
언어 / PostgreSQL
(오라클과 매우 유사
PL/SQL)

10.

DBMS 함수 구문의 차이점
MSSQL
DB2
숫자
숫자
숫자
날짜추가
MONTH_ADD
(날짜 + 10일)
EOMONTH
마지막 날
마지막 날
DATEDIFF
MONTH_BETWEEN
TIMESTAMPDIFF
높은
높은
유카세/어퍼
전환하다
TO_CHAR
TO_CHAR
이니트캡
이니트캡
-
103
신탁

11.

SQL 구문
함수와 객체 이름은 대소문자를 구분하지 않습니다.
선택 = 선택
그러나 텍스트 필드를 통해 검색할 때 대소문자를 구분합니다.
SQL은 줄 바꿈에 민감하지 않습니다.
필수 문자 누락, 후행 줄
지원됨 - 한 줄 주석 및
/ * 여러 줄 * /
각 트랜잭션을 세미콜론으로 끝내는 것이 일반적이지만,
개별 명령을 실행할 때 그 사용은
필연적으로
113

12.

데이터 유형
CHAR(n) - 일정한 길이의 문자열(MS SQL Server의 경우 최대 256바이트), 즉
줄에 더 적은 데이터를 입력했습니다 - 크기는 변경되지 않습니다
VARCHAR(n) - 가변 길이 문자열, 즉 너무 많은 메모리가 필요합니다
얼마나 많은 데이터
INTEGER - 소수점이 없는 숫자
숫자(m, n) - 0과 양수 또는 양수를 저장하는 데 사용됨
음의 고정 및 부동 소수점 숫자. M ACCURACY(총 자릿수), n - SCALE(오른쪽 자릿수)
소수점). m / n - 선택적 매개변수
DATE - yyyy-mm-dd(ISO), dd/mm/yyyy(ANSI), dd-MON-yy 형식의 날짜입니다.
BOOLEAN - 부울 데이터 유형: true/false 또는 1/0.
또한 필드 값은 NULL일 수 있습니다. - 값이 없음을 의미합니다.
빈 셀.
123

13.

날짜 유형
기본적으로 데이터베이스의 날짜를 DD-MONYYYY 형식(예: '01 -FEB-1900 ')으로 나타낼 수 있습니다.
INSERT INTO table1 (id, date_work) 값 (1, '01 -FEB-1900 ').
DATE 키워드를 사용할 수도 있습니다. 게다가 이미
날짜 형식 YYYY-MM-DD(예: '1900-02-01'):
INSERT INTO table1(id, date_work) 값(1, DATE '1900-02-01').
또는 날짜 유형 + TIMESTAMP를 사용할 수도 있습니다.
날짜뿐만 아니라 시간도 설정하려면:
INSERT INTO table1(id, date_work) 값(1, '01 -FEB-1900-10.50.01 '),
저것들.
1900년 2월 1일 10시간 50분 1초(dd-MON-yy 형식
-hh.mm.ss.nnnnn)
133

14.

MSSQL의 데이터 유형 변환
CONVERT(데이터 유형, 문자열, 스타일) - 하나를 변환합니다.
다른 데이터 형식
기호:
변환(VARCHAR(20), GETDATE())
날짜에
변환(DATETIME, "14-11-2015", 105)
숫자로
변환(숫자, '1234657890 ")
143

15.

Oracle의 데이터 유형 변환
TO_CHAR(입력값, 형식) - 날짜 변환,
숫자, 문자열 시간.
형식: '월 DD', '월 DD, YYYY', 'DD / MM / YYYY', 'DAY MON, YY AD'
년도
$9,999.00
등.
TO_CHAR(SYSDATE, "월 DD")
TO_DATE(입력 값, 형식) - 문자열을 다음으로 변환
데이트. 형식: DD-MON-YYYY
월 일, YYYY, HH: MI 오후
등.
TO_DATE("02-JAN-2012", "DD-MON-YYYY")
TO_NUMBER(입력 값, 형식) - 문자열을 숫자로 변환합니다.
TO_NUMBER("123")
153

16.

기타 데이터베이스 개체
보기는 다음을 포함하지 않는 데이터베이스 개체입니다.
자신의 테이블이지만 해당 내용은 다른 테이블에서 가져옵니다.
또는 쿼리를 실행하여 조회할 수 있습니다.
스키마는 관련된 데이터베이스 개체의 명명된 그룹입니다.
색인(색인) - 승격을 위해 생성된 개체
검색 성능. 하나를 포함하는 숨겨진 테이블
또는 몇 가지 중요한 테이블 열과 행에 대한 포인터
테이블.
제약 - 충족되어야 하는 조건
사용자가 입력한 기록.
163

17.

기타 데이터베이스 개체
저장 프로시저 - 데이터베이스 개체
SQL 문의 집합입니다. 데이터베이스에 저장됩니다.
프로시저의 호출은 포함된 실행으로 이어집니다.
지침.
기능 - 저장 프로시저와 유사하지만 반환
더 크게 사용할 수 있는 값
운영자.
Trigger(트리거) - 자동으로 실행되는 절차,
어떤 주어진 이벤트가 발생할 때.
커서(커서) - 메모리의 컨텍스트 영역에 대한 참조입니다. 사용
커서와 연결된 각 줄을 별도로 처리할 수 있습니다.
SQL 문입니다.
173

18.

SQL 섹션
1. DDL - 데이터 정의 언어(데이터베이스 개체를 정의하기 위한 언어).
생성, 변경, 삭제 등
2. DCL - 데이터 제어 언어.
부여, 취소
3. DML - 데이터 조작 언어
데이터). 삽입, 업데이트, 삭제
4. 데이터 검색 - 데이터 검색 선택
5. 트랜잭션 제어(트랜잭션 프로세스를 지원하는 언어).
커밋, 롤백, 세이브포인트.
183

19.

SQL. 기본과정
2부. 데이터 보호 언어
www.aplana.ru

20.

데이터 보호 언어
1.
테이블 생성
일반 구문:
CREATE TABLE 테이블 이름(
field1 필드 유형1,
field2 field2의 유형,
…, 필드N 필드 유형N);
CREATE TABLE 사람 정보(
person_id INTEGER NOT NULL,
first_name VARCHAR(15) NOT NULL,
last_name VARCHAR(20) NOT NULL,
성별 CHAR(1),
생일 날짜,
급여 숫자 (7,2));
203

21.

데이터 보호 언어
2. ALTER TABLE(테이블 변경)
ALTER TABLE table_name(추가<имя столбца> <определение столбца>}|
(수정하다<имя столбца> <Определение столбца>) | (드롭 컬럼<имя
칼럼>)
3. DROP TABLE(테이블 삭제)
DROP TABLE table_name(CASCADE CONSTRAINTS);
4. 테이블 자르기
TRUNCATE TABLE 테이블 이름
213

22.

SQL. 기본과정
3부. 데이터 조작 언어
www.aplana.ru

23.

데이터 조작 언어
1. INSERT - 단일 레코드를 삽입합니다.
INSERT INTO table_name VALUES(필드1 값, 필드2 값, ..,
필드 값N);
INSERT INTO table_name (field1, field3, ...) VALUES (field1 값, field2 값, ...,
필드 값N);
INSERT INTO person_info VALUES(1, "John", "Smith", "M", "15-OCT-1973",
45568.56);
INSERT INTO person_info (person_id, first_name, last_name) VALUES (5, Sarah ",' Connor ");
성공했습니다.
INSERT INTO person_info VALUES(NULL, "Jane", "Smith", "F", "8-AUG-1987",
없는);
person_id가 NULL일 수 없기 때문에 오류가 발생했습니다.
233

24.

데이터 조작 언어
레코드 그룹 삽입
INSERT INTO table_name
선택하다 ...;
테이블 생성 t2(
first_1 VARCHAR(15),
last_1 VARCHAR(20),
생일_1일);
t2에 삽입
SELECT 이름, 성, 생일
사람 정보에서;
243

25.

데이터 조작 언어
INSERT INTO person_info VALUES(2, "Sara", "Doe", "F", "9-OCT-1986",
29789.56);

29789.56);
성공했습니다.
INSERT INTO person_info VALUES(3, "Sara", "Doe", "F", "9-OCT-1986",
29789.56);
이제 person_id = 2인 두 번째 레코드를 삭제하겠습니다.
person_info WHERE person_id = 2에서 삭제
253

26.

데이터 조작 언어
데이터 무결성
엔티티 무결성 - 테이블 행을 고유한 인스턴스로 정의합니다.
어떤 존재.
기본 키 - 열 또는 열 그룹이 고유합니다.
각 항목을 식별합니다.
외래 키는 테이블 간의 관계를 반영합니다. 부하
테이블에는 저장할 동일한 열(또는 열 그룹)이 있어야 합니다.
마스터 레코드를 고유하게 식별하는 값.
참조 무결성 - 하위 테이블에 레코드가 없어야 합니다.
존재하지 않는 마스터 테이블 레코드를 참조합니다.
263

27.

데이터 조작 언어
273

28.

데이터 조작 언어
기본 키
ALTER TABLE 테이블 이름
기본 키 추가(column_name);
ALTER TABLE 사람 정보
기본 키 추가(person_id);
기본 키 값은 고유 식별을 의미합니다.
각각의 값은 반복될 수 없습니다.
다시 person_id = 2인 레코드를 추가해 보겠습니다.
INSERT INTO person_info VALUES(2, "Rita", "Blow", "F", "9-OCT-1975",
29789.56);
283

29.

외부 키
ALTER TABLE 슬레이브_테이블_이름
ADD CONSTRAINT constraint_name FOREIGN KEY(column_name
부하
테이블) 참조 master_table_name;
CREATE TABLE 사람 주소(
person_id INTEGER,
주소 VARCHAR(200));
ALTER TABLE 사람 주소
CONSTRAINT 추가 person_fk_address
외래 키(person_id)
참조 person_info;
293

30.

데이터 조작 언어
INSERT INTO person_address VALUES(1, "Moscow, Arbat street, 67-14");
INSERT INTO person_address VALUES(2, "Moscow, Arbat street, 67-14");
성공했습니다.
INSERT INTO person_address VALUES(4, "Zelenograd, Green street, 23");
오류. 하위 레코드가 없는 경우 삽입 시도
해당 마스터 레코드.
INSERT INTO person_address VALUES(3, "Zelenograd, Green street, 23");
303

31.

생성 시 테이블 연결
앞에서 논의한 바와 같이 생성
PRIMARY KEY 및 FOREIGN KEY 키
명령을 통해 기존 테이블의 구조를 변경합니다. 또한
테이블을 생성할 때 다음 구성을 추가할 수 있습니다.
테이블 만들기 탭1(
아이디 정수 기본 키,
…..
313

32.

데이터 조작 언어
2. 업데이트 - 테이블 열의 값 변경
A) 테이블 컬럼의 모든 값 변경
업데이트
세트 =
개인 주소 업데이트
SET 주소 = "Volgograd, First street, 15-20"
B) 테이블의 특정 값 변경
업데이트
세트 =
어디 =
업데이트 person_address SET 주소 = "Volgograd, First street, 15-20"
어디 person_id = 3;
업데이트
세트 =
어디 = [운영자]
UPDATE person_info SET 급여 = 급여 * 2
어디 person_id = 3;
323

33.

데이터 조작 언어
3. DELETE - 테이블에서 행 삭제
A) 테이블 컬럼의 모든 값 삭제
삭제 위치
B) 테이블에서 특정 값 제거
삭제 위치
어디 =
333

34.

실제 작업 번호 1
1. 그림 1과 같이 데이터베이스를 생성합니다(테이블 및 외래 키 생성).
2. 다음 데이터를 테이블에 입력합니다.
부서: (1, "마케팅"), (2, "RD")
Emp: (1, 1, "제임스", 1000), (2, 2, "스미스", 2000)
3. dept 테이블과 동일한 구조로 dept_arch 테이블을 생성합니다.
4. dept_arch 테이블에 dept 테이블의 모든 데이터를 삽입합니다.
343

35.

실용과제 1번(계속)
5. Smith의 급여를 15% 인상합니다.
6. 다음 레코드가 부서 테이블에 삽입될 수 없는지 확인하십시오. (2, "Sales"). 왜요?
7. 다음 레코드를 emp 테이블에 삽입할 수 없는지 확인하십시오. (3, 4, "Black", 3000,
"활동적인"). 왜요?
8. RD 부서의 이름을 RandD(테이블 부서)로 변경합니다.
9. emp 테이블에서 emp_id = 1인 항목을 삭제합니다.
12. emp 테이블에서 모든 레코드를 삭제합니다.
13. emp 테이블을 삭제합니다.
353

36.

SQL. 기본과정
파트 4. DRL. 간단한 쿼리
www.aplana.ru

37.

교육 데이터베이스
373

38.

데이터 검색 언어
SELECT - 데이터 선택. 이 섹션은 요청 및
허용:
SELECT field1,… fieldN FROM table1, .., tableN WHERE 조건
383
출력 열 목록 정의
계산된 열 포함
상수 포함
출력 열 이름 바꾸기
중복 라인 처리 원칙 지정
집계 함수 포함

39.

데이터 검색 언어
1.
출력 열 목록 정의
출력 열 목록은 여러 가지 방법으로 지정할 수 있습니다.
... 쿼리 결과에 모든 열을 포함하려면 * 기호를 지정하십시오.
자연스러운 순서로 쿼리합니다.
... 원하는 순서대로 필요한 것만 나열<имена столбцов>.
SELECT person_code, first_name, last_name FROM 사람;
-- 열의 순서를 변경할 수 있습니다.
SELECT first_name, last_name, person_code FROM 사람;
393

40.

연쇄
두 개 이상의 텍스트 부분의 연결.
SELECT product_name + "판매자" + 판매원 FROM 구매;
403

41.

데이터 검색 언어
2. 계산된 열 포함
계산된 쿼리 열은 다음과 같을 수 있습니다.
... 가장 간단한 산술 표현식의 결과(+, -, /, * _ 또는
문자열 연결(+).
... 집계 함수 결과(AVG | SUM | MAX | MIN |
세다)
413

42.

데이터 검색 언어
3. 상수 포함
열은 숫자일 수 있으며
문자 유형.
SELECT "이러한 코드가 있습니다", person_code, "for", first_name, last_name
사람으로부터
423

43.

데이터 검색 언어
4.
출력 열 이름 바꾸기
원하는 경우 계산된 열과 다른 열,
키워드를 사용하여 고유한 이름을 지정할 수 있습니다.
같이:<выражение>같이<новое имя>
SELECT product_name + "판매자" + 판매원 AS SOLDBY
구매에서;
키워드를 사용하지 않고 별칭을 설정할 수 있지만 다음과 같은 제한이 있습니다.
SELECT product_name + "판매자" + 영업 사원 SOLDBY
구매에서;
SELECT product_name + "판매자" + 영업 사원 "판매자"
구매에서;
433

44.

데이터 검색 언어
5. 중복 처리 원칙 지정
DISTINCT - 출력에 중복 행이 표시되는 것을 방지합니다.
세트. SELECT 문당 한 번 지정할 수 있습니다.
실제로 출력 세트는 초기에 형성되며,
순서가 지정된 다음 중복이 제거됩니다.
가치. 이것은 일반적으로 시간이 오래 걸리고 따르지 않습니다.
남용.
SELECT DISTINCT * FROM 사람
모두(기본값) - 활성화
쿼리 결과 및 중복 값
443

45.

데이터 검색 언어
6.
집계 함수 활성화
집계 함수(집합에 대한 함수, 통계 또는
기본)에 대한 일부 값을 계산하도록 설계되었습니다.
주어진 라인 세트. 다음 집계가 사용됩니다.
기능:
평균 | 합계(<выражение) – подсчитывает среднее значение | сумму от
<выражение>.
최소 | 최대(<выражение>) - 최대값을 찾습니다. | 최소값.
카운트(* |<имя столбца>) - 줄 수를 계산합니다.
그러나 나중에 더 자세히 설명합니다.
453

46.

데이터 검색 언어
WHERE - 특정 조건을 만족하는 데이터 선택
정황.
SELECT field1,… fieldN FROM table1, .., tableM WHERE
조건1, ... 조건Y
463

47.

데이터 검색 언어
예:
SELECT * FROM product WHERE laststockdate IS NULL;
SELECT * FROM product WHERE laststockdate IS NOT NULL;
SELECT product_name, product_price, quantity_on_hand
FROM 제품 WHERE quantity_on_hand> 150;
SELECT product_name, product_price FROM 제품
WHERE 제품 이름<>사각 징크레이터;
473

48.

데이터 검색 언어
더 복잡한 조건도 있습니다.
세트 안타
<конструктор значений строки>에 (<подзапрос>|<набор конструкторов
문자열 값>)
비교 대상이 이전에 작성된 일련의 값이 결정됩니다.
IN 키워드는 속할 수도 있고 속하지 않을 수도 있습니다. 하위 쿼리가 아닌 경우
행을 반환하면 술어는 FALSE로 평가됩니다.
세트 작업의 예:
SELECT * FROM 구매 WHERE 영업 사원 IN ("CA", "BB");
SELECT * FROM 구매 WHERE 판매원 NOT IN ("CA", "BB");
SELECT * FROM 구매 WHERE(판매원 + 제품_이름)에서 (("CA" + "Small
위젯 "), (" GA "+" Chrome Phoobar "))
483

49.

데이터 검색 언어
액세서리 제품군
<конструктор значений строки>사이<конструктор
라인 값 1> AND<конструктор значений строки 2>
BETWEEN 술어는 IN 술어와 유사하지만 요소 대신
집합, [해서는 안 되는] 포함 경계를 지정합니다.
확인된 값을 누르십시오.
어디
product_price는 1과 80 사이가 아닙니다.
493

50.

데이터 검색 언어
부울 연산자
<предикат>(그리고 | 또는 | 아님)<предикат>
참고: 부울 연산자는 하나 이상의 술어를 형식에 바인딩합니다.
유일한 부울 값은 TRUE | FALSE입니다. 술어 사용
부울 연산자를 사용하면 선택도를 크게 높일 수 있습니다.
쿼리 결과에서 행을 선택하는 기능.
부울 연산자, 특히 NOT 연산자를 사용할 때 다음을 수행해야 합니다.
조건을 올바르게 공식화하려면 괄호를 적용하십시오(AND
OR 이전에 실행됨).

"% 위젯" 또는 product_price< 20;
SELECT product_name, product_price FROM product WHERE product_name LIKE
"% 위젯" AND product_price< 20;
503

51.

데이터 검색 언어

SELECT 필드 목록 FROM 테이블 목록 WHERE 확인 값 LIKE
(패턴) (ESCAPE(패스 이름));
단일 문자 - _
SELECT 사람 코드, 이름, 성 FROM 사람 WHERE 사람 코드 LIKE "_A";
모든 하위 문자열 -%
SELECT product_name FROM product WHERE product_name LIKE "% Chrome%";
% 기호가 있는 텍스트를 찾아야 하는 경우(예: 제품 이름
ab% cdef):
WHERE product_name LIKE "ab $% c%" ESCAPE "$";
첫 번째 %는 이름의 문자처럼, 두 번째는 문자열처럼 읽습니다.
513

52.

데이터 검색 언어
LIKE 대략적인 검색 연산자
... 여기서 '% s%'와 같은 중간 이름
... 여기서 'And%'와 같은 중간 이름
... 여기서 '% hiv'와 같은 중간 이름
... 여기서 성(예: '____ s')
523

53.

데이터 검색 언어
LIKE 대략적인 검색 연산자

구매에서 product_name 선택
여기서 product_name은 "% Widget"과 같습니다.
구매에서 product_name 선택
여기서 product_name은 "% $% Widget"과 같습니다.
"$" 이스케이프
533

54.

데이터 검색 언어
정렬
SELECT 컬럼 목록 FROM 테이블 목록 WHERE 조건
ORDER BY 열 목록 ASC(DESC);
내림차순:
SELECT product_name, product_price FROM 제품
ORDER BY product_price DESC;
오름차순:
SELECT product_name, product_price FROM 제품
ORDER BY product_name ASC;
543

55.

실용과제 2
1. 전체 구매 테이블을 보여주는 쿼리를 작성하십시오.
2. product_name 및 quantity 열을 선택하는 쿼리를 작성하십시오.
구매 테이블.
3. 이러한 열을 역순으로 선택하는 쿼리를 작성합니다.
4. person 테이블의 각 행에 대해 출력하는 쿼리 작성
다음 텍스트:
일을 시작했다 *. 수신된 열
"Started Work"라는 별칭을 할당합니다.
5. 제품 이름 product_name을 표시하는 쿼리 작성
가격이 정의되지 않은 (제품 테이블)(NULL).
6. 제품 이름 product_name을 표시하는 쿼리 작성
(구매 테이블), 3에서 23 조각까지 판매되었습니다.
* MSSQL은 varchar 및 date 열의 연결을 지원하지 않습니다. 연산자 사용
전환: CONVERT(VARCHAR, 고용 날짜)
3

56.

실제 작업 번호 2(계속)
7. 다음을 수행하는 직원의 이름을 표시하는 쿼리를 작성합니다.
2010년 2월 1일, 15일, 28일에 고용되었습니다.
8. 제품 이름을 표시하는 쿼리 작성
성이 "B"로 시작하는 직원이 판매하는 product_name(구매 테이블).
9. 제품 이름을 표시하는 쿼리 작성
성이 다음으로 시작하지 않는 직원이 판매하는 product_name(구매 테이블)
"NS".
10. 이름과 고용 날짜를 표시하는 쿼리 작성
성이 "B"로 시작하고 수락 된 직원
2010년 3월 1일 이전에 일할 수 있습니다.
11. 제품 이름을 표시하는 쿼리 작성
product_name 및 마지막 배송 laststockdate(테이블
제품) Small Widget, Medium Widget 및 Large
위젯 또는 마지막 배송 날짜가 없는 위젯.
마지막 배달 날짜를 내림차순으로 정렬합니다.
563

57.

SQL. 기본과정
5부. 여러 테이블에서 데이터 가져오기
www.aplana.ru

58.

여러 테이블에서 데이터 가져오기
SELECT table_name_1.column_name, table_name_2.
열 이름
FROM table_name_1, table_name_2;

구매, 사람에서;
데카르트 곱 - 없는 합성
각 행을 생성하는 WHERE 절
한 테이블이 다른 테이블의 각 행과 결합됩니다.
테이블.
583

59.

조건이 있는 여러 테이블에서 데이터 가져오기
SELECT table_name_1.column_name, table_name_2. 열 이름
FROM table_name_1, table_name_2
WHERE master_table_name.primary_key =
slave_table_name.external_key;
SELECT 구매.제품명, 사람.이름, 성.이름
FROM 구매, 본인
WHERE person.person_code = 구매.판매원;
593

60.

연결 유형
키로 테이블을 조인하는 다른 방법도 있습니다.
<таблица А> [<тип соединения>] 가입하다<таблица B>에<предикат>
<тип соединения>INNER | (LEFT | RIGHT |
가득한)
INNER - 일치하는 데이터가 있는 열이 있는 행 포함
조인된 테이블. 기본적으로 사용됩니다.
LEFT - 테이블 A(왼쪽 테이블)의 모든 행과 일치하는 모든 행 포함
테이블 B의 값. 일치하지 않는 행의 열은 NULL 값으로 채워집니다.
RIGHT - 테이블 B(오른쪽 테이블)의 모든 행과 일치하는 모든 행 포함
표 A의 값은 왼쪽 조인과 반대입니다.
FULL - 두 테이블의 모든 행을 포함합니다. 일치하는 행의 열
실제 값으로 채워지고 일치하지 않는 행은 NULL 값으로 채워집니다.
OUTER(바깥쪽)는 일치하지 않는 행을 의미하는 한정자입니다.
일치하는 테이블과 함께 선행 테이블이 포함됩니다.
603

61.

테이블 조인 옵션
주소
핸드폰
내부 조인
SELECT * FROM 주소 INNER JOIN 전화 ON address.ClientID = phone.ClientID
613

62.

테이블 조인 옵션
주소
핸드폰
SELECT * FROM 주소, 전화 WHERE address.clientID = phone.ClientID
623

63.

테이블 조인 옵션
주소
핸드폰
왼쪽 조인
SELECT * FROM 주소 LEFT JOIN 전화 ON address.ClientID = phone.ClientID
633

64.

테이블 조인 옵션
주소
핸드폰
오른쪽 조인
SELECT * FROM 주소 RIGHT JOIN 전화 ON address.ClientID = phone.ClientID
643

65.

테이블 조인 옵션
주소
핸드폰
전체 조인
SELECT * FROM 주소 FULL JOIN 전화 ON address.ClientID = phone.ClientID
653

66.

조인 연산자
UNION은 두 SELECT 문의 모든 행을 반환합니다. 반복되는
값이 제거됩니다.
UNION ALL은 두 SELECT 문의 모든 행을 반환합니다. 반복되는
값이 표시됩니다.
INTERSECT는 첫 번째와 두 번째 모두에서 반환된 행을 반환합니다.
SELECT 문.
EXCEPT는 첫 번째 SELECT 문에서 반환된 행을 반환합니다.
두 번째 문에서 반환된 것은 제외합니다.
두 테이블에서 SELECT에 의해 반환된 열의 수와 순서는 다음과 같아야 합니다.
일치하다.
663

67.

조인 연산자
제품 이름 선택
구매에서
ORDER BY product_name
673
제품 이름 선택
구매_아카이브에서
ORDER BY product_name
제품 이름 선택
구매에서
노동 조합
제품 이름 선택
구매_아카이브에서
ORDER BY product_name

68.

조인 연산자
SELECT product_name e
FROM 구매
UN ALL
SELECT product_name e
FROM 구매_아카이브
1로 주문
683
SELECT product_name e
FROM 구매
제외하고
SELECT product_name e
FROM 구매_아카이브
1로 주문
SELECT product_name e
FROM 구매
인터섹트
SELECT product_name e
FROM 구매_아카이브
1로 주문

69.

FROM 영역 별칭
구성표와 함께 큰 기지를 사용할 때 일반적입니다.
별칭 사용:
purc.product_name, prod.laststockdate, pers.first_name 선택,
pers.last_name
구매에서 구매,
사람대로,
제품 제품
어디 pers.person_code = purc.salesperson 및
prod.product_name = purc.product_name;
693

70.

실용과제 3
1. 테이블 곱의 데카르트 곱을 출력하는 쿼리 작성
그리고 구매.
2. 판매된 제품의 이름을 표시하는 쿼리 작성
product_name, 수량 수량(구매표) 및
수량_손(제품 테이블).
3. 제품 이름 product_name을 표시하는 쿼리 작성
(테이블 구매), 최종 배송일 laststockdate (테이블
product) 및 판매자의 last_name(테이블 사람).
4. product_name, first_name,
구매 및 개인 테이블의 외부 조인의 last_name. 테이블에 사용
짧은 별칭.
703

71.

실용과제 3번(계속)
5. 구매 시 반복되지 않는 모든 코드를 표시하는 요청 작성
판매자
구매_아카이브 테이블의 영업 사원.
6. 해당 영업 사원의 코드만 표시하는 쿼리를 작성하십시오.
buy_archive 테이블에도 포함된 구매 테이블.
7. 모든(중복 포함) 코드를 표시하는 쿼리 작성
구매 및 구매_아카이브 테이블의 영업 사원.
713

72.

SQL. 기본과정
6부. 집계 기능. 그룹화
데이터.
www.aplana.ru

73.

수학 연산자
수학 연산자 - 연산을 나타내는 기호(+, -, *, /)
테이블의 데이터를 사용하여 계산합니다.
SELECT product_name, product_price * 1.07 FROM 제품;
SELECT product_name, product_price * 수량_손
제품에서;
SELECT product_name, product_price * 1.07 * quantity_on_hand product_price * quantity_on_hand
제품에서;
SELECT product_name, product_price * (손에 있는 수량 + 10)
제품에서;
733

74.

수학 연산자
집계 함수(세트에 대한 함수, 통계 또는 기본)
주어진 세트에 대한 일부 값을 계산하도록 설계되었습니다.
윤곽.
1. SUM - 값을 합산하고 합계를 반환합니다.
SUM 선택(수량)
구매에서;
2.AVG - 지정된 값의 평균값을 반환합니다.
열.
평균 선택(제품 가격)
제품에서;
743

75.

수학 연산자
3. MIN - 지정된 열에서 최소값을 반환합니다.
SELECT MIN(제품_가격)
제품에서;
4. MAX - 지정된 열의 최대값을 반환합니다.
SELECT MAX(제품_가격)
제품에서;
753

76.

수학 연산자
5. COUNT - 레코드를 계산합니다.
개수 선택(*)
구매에서; --NULL 값을 포함한 행 수
SELECT COUNT(제품 이름)
FROM 구매 - 열의 값, NULL 무시
763

77.

그룹화 기준
이 섹션은 쿼리 결과를 그룹으로 그룹화하고 계산하기 위한 것입니다.
이러한 각 통계 값에 대해. 용어가 때때로 사용됩니다.
"그룹화된 테이블".
SELECT product_name, SUM(수량)
구매에서
GROUP BY product_name;
V SELECT 문여러 그룹 기능을 활성화할 수 있습니다.
SELECT product_name, SUM(수량) "Total Sold", COUNT(수량) 거래
구매에서
GROUP BY product_name;
773

78.

가지고
HAVING - 숫자를 제한하기 위한 하위 섹션입니다.
그룹화된 테이블의 행이며 GROUP BY 절의 일부입니다.
이 섹션의 술어는 다음과 동일한 의미 규칙에 따라 구성됩니다.
WHERE 절에 있지만
GROUP BY 절에 지정된 열. 나머지는 수
집계 함수 내부에서만 사용하십시오. 이번 장
라인의 그룹(하위 그룹) 구성을 제한합니다.
요청의 결과입니다. 그룹(하위 그룹)에는 다음의 그룹만 포함됩니다.
조건이 충족되는 값에 대한 가능한 문자열 집합
섹션 술어 HAVING. HAVING 섹션 내에서 다음을 사용할 수 있습니다.
집계 함수가 있는 중첩 쿼리 및 관련
하위 쿼리.
783

79.

가지고
즉, 위의 내용을 요약하면 다음과 같이 좁힐 수 있습니다.
하위 섹션 할당:
HAVING 구성을 사용하면 다음을 수행할 수 있습니다.
필터 그룹.
HAVING은 WHERE가 개별 레코드에 대해 작동하는 것과 같은 방식으로 그룹에 대해 작동합니다.
SELECT product_name, SUM(수량) "총 판매",
COUNT(수) 거래
구매에서
GROUP BY product_name
HAVING SUM(수량)< 5;
793

80.

실용과제 4
1. 제품 product_price의 가격이 얼마인지 보여주는 쿼리를 작성하세요.
15% 증가.
2. 제품 테이블에 몇 개의 제품이 있는지 보여주는 쿼리를 작성하십시오.
3. 얼마나 많은 제품(제품 테이블)이 없는지를 보여주는 쿼리를 작성하십시오.
가격이 표시됩니다.
4. product_price 제품의 최소 및 최대 가격을 표시하는 쿼리를 작성합니다.
5. 각 제품의 판매로 얼마나 많은 수익을 올렸는지 보여주는 쿼리 작성
이름.
6. 각 제품의 판매로 얼마나 많은 수익을 올렸는지 보여주는 쿼리 작성
이름. 총 매출이 125보다 큰 레코드만 표시합니다.
803

81.

SQL. 기본과정
7부. 하위 쿼리
www.aplana.ru

82.

하위 쿼리
하위 쿼리는 정상입니다. 쿼리 선택중첩 연산자
선택하다,
업데이트
또는
삭제.
FROM 절의 데이터 소스로 사용되거나
WHERE 상위 연산자.
823

83.

하위 쿼리
하위 쿼리 사용에는 몇 가지 제한 사항이 있습니다.
833
하위 쿼리는 하나의 열만 선택해야 합니다(
술어 EXISTS), 결과의 데이터 유형은 유형과 일치해야 합니다.
술어에 지정된 값이 주어집니다.
어떤 경우에는 DISTINCT 키워드를 사용하여 다음을 보장할 수 있습니다.
단일 값을 얻습니다.
하위 쿼리에 ORDER BY 및 UNION 절을 포함할 수 없습니다.
하위 쿼리는 검색어의 왼쪽이나 오른쪽에 위치할 수 있습니다.
하위 쿼리는 섹션 없이 집계 함수를 사용할 수 있습니다.
그룹화 기준

84.

한 줄 하위 쿼리
한 줄 하위 쿼리는 1개의 값만 반환하는 하위 쿼리입니다.
비교 문자는 중첩 쿼리(=,<>, <, <=,
>, >=)
제품에서 * 선택
WHERE laststockdate = (마지막 재고 날짜 선택
FROM product WHERE product_name = "작은 위젯");
예(사용 집계 함수한 줄 하위 쿼리에서):
SELECT * FROM product WHERE product_price>
(SELECT AVG (product_price) FROM 제품);
843

85.

여러 줄 하위 쿼리
여러 줄 하위 쿼리는 > = 1만 반환하는 하위 쿼리입니다.
의미.
이러한 하위 쿼리는 다음과 비교할 수 없습니다.
등호/부등호 사용 당신은 기능을 사용해야합니다
에.
제품에서 * 선택
WHERE product_name IN
(SELECT DISTINCT product_name FROM 구매);
업데이트 제품 SET product_price = product_price * 0.9
WHERE product_name NOT IN(SELECT DISTINCT product_name
구매에서);
853

86.

존재
EXISTS는 하위 쿼리를 인수로 사용하고
하위 쿼리에 다음이 포함되어 있으면 참으로 평가합니다.
출력하고 그렇지 않으면 false로 출력합니다.
하위 쿼리는 한 번 실행되며 다음을 포함할 수 있습니다.
값이 확인되지 않기 때문에 여러 열,
그러나 행의 존재 결과는 단순히 고정됩니다.
EXISTS 술어에 대한 참고 사항:
EXISTS는 TRUE 또는 FALSE를 반환하는 술어이며,
단독으로 또는 다른 부울과 함께 사용할 수 있습니다.
표현.
863

87.

존재
제품에서 * 선택
존재하는 곳
(선택 * 구매에서
WHERE product.product_name = 구매.product_name);
873

88.


ALL - 다음과 같은 모든 레코드와 비교됩니다.
하위 쿼리(또는 집합의 모든 값)를 반환합니다. 진실
반환하는 모든 레코드가 있는 경우에만 반환됩니다.
하위 쿼리는 지정한 조건을 충족합니다.
제품에서 * 선택
WHERE product_price> = ALL (SELECT product.product_price
FROM 구매, 제품


요청은 가격이 더 높거나 더 높은 제품 테이블의 모든 제품을 반환합니다.
직원 코드 "GA"로 판매되는 각 품목의 가격과 동일합니다.
883

89.

그룹 조건(비교 연산자).
ANY - 조건이 하나 이상 충족되면 비교가 true를 반환합니다.
하위 쿼리(또는 집합)의 항목입니다.
SELECT * FROM product WHERE product_price> ANY (SELECT
product.product_price
FROM 구매, 제품
WHERE 구매.제품_이름 = 제품.제품_이름
그리고 구매.판매원 = "GA");
쿼리는 제품 가격이 포함된 제품 테이블의 모든 레코드를 반환합니다.
직원 코드 "GA"로 판매되는 모든 제품의 가격보다 높습니다.
SOME - ANY와 동일합니다. 완전히 교환 가능합니다.
893

90.

실제 작업 번호 5
1. 같은 회사에 고용된 모든 직원을 반환하는 쿼리 작성
직원 존 스미스로 일.
2. 평균 가격보다 낮은 모든 제품을 반환하는 쿼리를 작성합니다.
3. 둘 이상 판매된 모든 제품을 반환하는 쿼리 작성
타임스.
4. 두 번 이상 판매된 상품의 가격이 15% 인상되었습니다.
5. EXISTS 절을 사용하여 모든 직원을 반환하는 쿼리를 작성합니다.
적어도 한 번 이상 무언가를 판매한 사람.
6. 가격이 포함된 제품 테이블의 모든 제품을 반환하는 쿼리를 작성합니다.
코드가 "GA"인 직원이 판매한 품목의 가격보다 낮습니다.
7. 더 저렴한 제품 테이블의 모든 제품을 반환하는 쿼리 작성
직원이 코드 "GA"로 판매한 하나 이상의 제품 가격. 확인
SOME 및 ANY 연산자는 서로 바꿔 사용할 수 있습니다.
903

91.

SQL. 기본과정
파트 8. 문자열, 날짜 및 작업을 위한 함수
숫자
www.aplana.ru

92.

숫자 작업을 위한 함수
ROUND - 숫자를 주어진 정밀도로 반올림합니다.
ROUND(input_value, number_of_chars_behind_decimal_point)
SELECT product_name, ROUND (product_price, 0)
제품에서;
라운드 선택(1234.5678, 3) --MSSQL
이중에서 라운드 선택(1234.5678, 3);
라운드 기능
라운드(1234.5678.4)
라운드 (1234.5678, 3)
라운드 (1234.5678, 2)
라운드 (1234.5678,1)
라운드 (1234.5678,0)
라운드(1234.5678, -1)
라운드(1234.5678, -2)
라운드(1234.5678, -3)
923
반환 값
1234.5678
1234.568
1234.57
1234.6
1235
1230
1200
1000
--신탁

93.

숫자 작업을 위한 함수
TRUNC - 숫자를 잘라 정밀도를 줄입니다.
TRUNC 함수
반환 값
TRUNC(1234.5678.4)
1234.5678
TRUNC(1234.5678.3)
1234.567
TRUNC (1234.5678, 2) 1234.56
TRUNC(1234.5678,1)
1234.5
TRUNC(1234.5678.0)
1234
TRUNC(1234.5678, -1)
1230
TRUNC (1234.5678, -2) 1200
TRUNC (1234.5678, -3) 1000
933

94.

보조 테이블
더미 테이블
다수의 DBMS에서 특정 테이블에 바인딩하지 않고 기능 수행
SQL이 의미하므로 서비스 테이블을 지정해야 합니다.
구성에서 ...를 선택합니다.
오라클 - 듀얼
DB2 - SYSDUMMY1
사이베이스 - 더미
MySQL - 듀얼
MSSQL이 없습니다. MSSQL은 다음 없이 서비스 요청을 인식합니다.
더미 테이블을 지정해야 합니다.
943

95.

날짜 작업을 위한 함수
GETDATE - 현재 날짜를 반환합니다.
getdate()를 선택하십시오.
DATEADD - 얻은 날짜를 원래 날짜의 합계로 반환합니다.
날짜 및 날짜의 지정된 날짜 부분 구성 요소에 추가된 간격
데이트.
АDD_МONTHS(값, 수량, 시작 날짜)
SELECT DATEADD(월, 1, GETDATE());
SELECT DATEADD(연도, -2, GETDATE());
953

96.

날짜 작업을 위한 함수
EOMONTH - 지정된 달의 마지막 날을 반환합니다.
전달된 날짜(MSSQL 2012+).
EOMONTH(날짜)
EOMONTH 선택(GETDATE());
EOMONTH 선택("2015-03-15");
SELECT 이름, 성, 채용일, EOMONTH(채용일) +1
사람으로부터;
963

97.

날짜 작업을 위한 함수
DATEDIFF - 두 날짜를 구분하는 단위 수를 반환합니다.
DATEDIFF(값, 시작 날짜, 종료 날짜)
SELECT DATEDIFF(밀리초, GETDATE(), SYSDATETIME());
SELECT DATEDIFF(MONTH, "2012년 8월 17일", GETDATE());
973

98.

텍스트 작업을 위한 기능
UPPER - 문자열의 모든 문자를 대문자로 표시합니다.
LOWER - 문자열의 모든 문자를 소문자로 표시합니다.
INITCAP(oracle) - 문자열의 대소문자를 혼합(각 문자열의 첫 글자
단어는 대문자, 나머지 단어는 소문자).
SELECT UPPER(product_name) FROM 제품;
SELECT LOWER(product_name) FROM 제품;
SELECT INITCAP("이 텍스트는 예측할 수 없는 경우") FROM DUAL;
983

99.

텍스트 작업을 위한 기능
LEN - 문자열의 길이를 결정합니다.
SELECT 제품 이름, LEN(제품 이름) LENGTH
제품에서
WHERE LEN(제품명)> 15;
993

100.

텍스트 작업을 위한 기능
SUBSTRING - 매개변수의 값을 자릅니다.
SUBSTRING(source_text, 시작 문자 위치,
캐릭터)
SUBSTRING(라인 1, a, [, b])
문자 번호 a로 시작하는 "라인 1" 부분을 반환하고,
b 문자의 길이를 가집니다. a = 0이면 다음과 같습니다.
a = 1(문자열의 시작) b가 양수인 경우 문자가 반환됩니다.
왼쪽에서 오른쪽으로. b가 음수이면 문자열 끝에서 시작하고
오른쪽에서 왼쪽으로 간주됩니다! b가 없으면 기본적으로
문자열의 끝까지 모든 문자가 반환됩니다.
100
3

101.

텍스트 작업을 위한 기능
서브스트링 선택(item_id, 1, 3) 위치,
SUBSTRING(항목_ID, 5, 3) ITEM_NUMBER
FROM old_item;
101
3

102.

텍스트 작업을 위한 기능
CHARINDEX- 요소를 구분하는 문자(또는 문자)의 위치를 ​​찾습니다.
윤곽.
CHARINDEX(1행, 2행, [, a])
"라인 2"의 위치 "라인 1"을 반환합니다. "라인 2"가 스캔 중입니다.
왼쪽, 위치에서 시작합니다. 음수이면 "행 2"가 스캔됩니다.
오른쪽에. 의 기본값은 1이며 결과적으로 위치,
"라인 2"에서 첫 번째 발생, "라인 1". 주어진 경우 "행 1"은
발견, 0 반환
102
3

103.

텍스트 작업을 위한 기능
CHARINDEX(search_character, text_for_search, 위치
_start_character)
SELECT item_desc, CHARINDEX(",", item_desc, 1)
FROM old_item;
103
3

104.

함수 중첩
SELECT item_desc, SUBSTRING(item_desc, 1, CHARINDEX(",", item_desc, 1))
범주
FROM old_item;
104
3

105.

함수 중첩
105
3
item_desc 선택,
SUBSTRING(item_desc, 1, CHARINDEX(",", item_desc, 1) -1) 카테고리,
SUBSTRING(item_desc, CHARINDEX(",", item_desc, 1) +2, 99) ITEM_SIZE
FROM old_item;

106.

실제 작업 번호 6
1. 날짜 및 숫자 작업을 위한 함수 사용, 계산,
몇 살이에요.
2. 맨 위에 "I KNOW TEXT FUNCTIONS" 줄을 출력하고
소문자.
3. 이 선의 길이를 구하십시오.
4. purchase.product_name 열로 작업하면 다음과 같이 출력됩니다.
처음 세 문자
네 번째부터 나머지 모든 문자
전체 라인
106
3

107.

유용한 리소스
http://sqlfiddle.com/ - 빈 DB를 에뮬레이트하는 도구:
DML, DDR 및 DR의 상당 부분을 실행할 수 있습니다.
요청. 5개의 주요 방언 지원
http://www.sql-tutorial.ru/ - SQL에 대한 대화형 자습서
러시아인
http://www.sql-ex.ru/ - 해결을 위한 대화형 포털
SQL 작업
https://dev.mysql.com/downloads/mysql/ - 무료 SQL
다양한 OS용 서버
https://www.mysql.com/products/workbench/ - 무료
MySql 서버 작업을 위한 도구
107
3

108.

관심을 가져 주셔서 감사합니다!
당신의 질문?
아플라나 컴퍼니
세르게이 보로비요프
수석 테스트 엔지니어
+7-917-556-13-49
www.aplana.ru

SQL 언어. 기본 코스.

Yevgeny Morgunov가 작성한 이 튜토리얼은 SQL 언어의 기초를 다룹니다. 이것은 기초 과정입니다. 또한 언어는 특정 데이터베이스 관리 시스템(DBMS)인 PostgreSQL과 관련하여 고려됩니다. 각 DBMS에서 SQL 언어의 구현은 어느 정도 표준을 준수하지만 표준화된 기능 및 기능 외에도 각 DBMS는 고유한 추가 언어 확장도 제공합니다. PostgreSQL은 SQL 언어 표준을 매우 훌륭하게 지원하며 흥미롭고 유용한 추가 기능도 제공합니다. PostgreSQL의 주요 장점 중 하나는 확장성입니다. 이는 예를 들어 사용자(물론 데이터베이스 전문가)가 자신의 데이터 유형을 개발할 수 있음을 의미합니다. 이러한 데이터 유형은 기본 제공 데이터 유형의 모든 속성을 가지며 서버를 중지하지 않고 작동할 수 있습니다. 또한 PostgreSQL은 무료 오픈 소스이며 다양한 플랫폼에서 사용할 수 있습니다.

이 자습서에서는 모든 기본 SQL 명령뿐만 아니라 인덱스 및 트랜잭션과 같은 기타 주제도 다룹니다. 매뉴얼은 교사의 지도 하에 또는 독립적으로 사용할 수 있도록 작성되었습니다. 학생들은 이미 설치된 DBMS에 액세스할 수 있다고 가정하므로 PostgreSQL 설치 절차는 자세히 다루지 않고 설치 지침을 찾을 수 있는 위치에 대한 지침만 제공됩니다. 이 자습서는 SQL 언어 사용에 대한 실용적인 기술을 제공하도록 설계되었습니다. 교육 자료는 독자가 각 장의 끝 부분에 있는 과제를 완료한 결과로 많은 중요한 지식을 얻을 수 있는 방식으로 제공됩니다.

이 지식은 장의 본문에 표시되지 않을 수 있습니다. 작업의 상당 부분은 독자가 PostgreSQL DBMS 설명서를 사용하여 독립적으로 수행한다고 가정하지만 구현 지침이 제공되는 경우가 많습니다.

매뉴얼은 09.03.01 - "정보학 및 컴퓨터 과학", 09.03.02 - "정보 시스템 및 기술", 09.03.03 - "응용 정보학", 09.03.04 - "소프트웨어 공학" 및 02.03.03 - "정보 시스템의 수학적 지원 및 관리". PostgreSQL 데이터베이스 관리 시스템 환경에서 SQL 언어의 기초를 익히고자 하는 광범위한 학생 및 전문가에게 유용할 수 있습니다.

게시자 - Postgres 전문가

발행 연도 - 2017

책 형식 - PDF

SQL(일반적으로 "SIKWEL"으로 발음)은 구조적 쿼리 언어를 나타냅니다. 테이블에 저장된 관련 정보의 모음인 관계형 데이터베이스를 만들고 작업할 수 있는 언어입니다. SQL 학습을 어디서부터 시작해야 하는지 궁금하시다면 저희에게 문의하세요. 우리 회사는 SQL 과정과 초보자를 위한 SQL 강의를 제공하며, 학습 후 SQL 데이터베이스를 직접 만들 수 있습니다. SQL을 배우는 것은 매우 유망한 일입니다. 여기에는 SQL 강의, SQL 데이터베이스 과정 및 SQL 쿼리 과정이 포함됩니다. SQL 언어 과정을 수강하고 처음부터 SQL 교육을 수행할 수 있는 기회가 있으며, 독점적인 실습을 받은 온라인으로 SQL 교육을 사용하여 SQL 프로그래밍 과정을 수강할 수 있습니다.

데이터베이스의 세계는 점점 더 통합되고 있으며, 이에 따라 다양한 유형의 컴퓨팅 환경에서 작동하는 데 사용할 수 있는 표준 언어가 필요하게 되었습니다. 표준 언어를 사용하면 한 가지 명령 집합을 알고 있는 SQL 교육 또는 SQL Server 과정을 이수한 사용자가 작업 위치에 관계없이 정보를 생성, 검색, 수정 및 전달하는 데 사용할 수 있습니다.

점점 더 상호 연결되는 컴퓨팅 세계에서 이러한 언어를 갖춘 사용자는 다양한 소스의 정보를 다양한 방식으로 사용하고 합성하는 데 엄청난 이점을 가지고 있습니다. 따라서 SQL Server 교육 및 SQL 쿼리 교육은 매우 중요합니다.

우아함과 세부 사항으로부터의 독립성 컴퓨터 기술그리고 관계형 데이터베이스 기술 분야의 업계 리더들의 지원 덕분에 SQL은 가까운 장래에 주요 표준 언어가 되었으며 앞으로도 계속 사용될 것입니다. 이러한 이유로 데이터베이스 작업을 하고자 하는 사람은 SQL을 알고, SQL 기초 과정을 수강하거나 처음부터 SQL을 배우고 기초 SQL 과정을 배워야 합니다.

SQL 표준은 ANSI(American National Standards Institute)에서 정의하고 현재 ISO(International Organization for Standardization)에서도 채택하고 있습니다. 그러나 대부분의 상용 데이터베이스 프로그램은 ANSI 알림 없이 SQL을 확장하여 매우 유용할 것으로 생각되는 언어에 다양한 다른 기능을 추가합니다. 좋은 아이디어는 유용성 때문에 발전하여 곧 "시장" 표준이 되는 경향이 있지만 언어 표준을 어느 정도 위반하기도 합니다. 그리고 우리 사무실에서 SQL 교육 과정을 수강하거나 온라인 SQL 연구를 통해 이러한 모든 기능을 배울 수 있습니다.

SQL을 사용하기 전에 관계형 데이터베이스가 무엇이고 어떻게 개발되는지 이해하고 SQL 교육 과정을 수강하고 SQL Server 수업을 배워야 SQL 데이터베이스 개발이 복잡한 작업처럼 보이지 않도록 해야 합니다.

앞서 강조했듯이 SQL은 Structured Query Language의 약자입니다. SQL 쿼리를 탐색하고 데이터베이스에 대한 쿼리를 작성하는 것은 아마도 SQL에서 가장 일반적으로 사용되는 측면일 것입니다. 사실, SQL 사용자 범주의 경우 이 언어를 다른 용도로 사용하는 사람은 거의 없습니다. 이러한 이유로 쿼리와 해당 언어에서 쿼리가 실행되는 방식에 대해 논의하여 SQL 언어 학습을 시작합니다.

쿼리는 데이터베이스 프로그램에 제공하고 테이블에서 메모리로 특정 정보를 덤프하도록 지시하는 명령입니다. 이 정보는 일반적으로 사용 중인 컴퓨터나 터미널의 화면으로 직접 보내지지만 대부분의 경우 프린터로 보내거나 파일에 저장하거나(컴퓨터 메모리의 개체로) 다른 사람에게 입력으로 제시할 수도 있습니다. 명령 또는 프로세스.

쿼리는 일반적으로 DML의 일부로 간주됩니다. 그러나 쿼리는 테이블의 정보를 변경하지 않고 단순히 사용자에게 보여주기 때문에 쿼리를 데이터베이스의 내용만 보여주는 것이 아니라 동작을 수행하는 DML 명령 중 독립적인 범주로 간주합니다.

모든 SQL 쿼리는 단일 명령으로 구성됩니다. 이 명령의 구조는 매우 복잡한 평가 및 데이터 조작을 수행하도록 확장해야 하기 때문에 믿을 수 없을 정도로 간단합니다. 이 명령을 - SELECT라고 합니다.

성적 증명서

2 Postgres Professional Company EP Morgunov SQL 언어. 기본 과정 교육 및 실습 가이드 모스크바 2017

3 UDC LBC М79 М79 Morgunov, EP 언어 SQL. 기본 과정: 교과서-실기. 수당 / EP Morgunov; 에드. E. V. 로고바, P. V. 루자노바; 포스트그레스 프로페셔널. 엠., 피. 이 실용적인 자습서는 러시아 회사 Postgres Professional에서 제공하는 SQL 언어 교육 과정의 첫 번째 기본 부분입니다. 교육 자료는 PostgreSQL 데이터베이스 관리 시스템 사용에 대한 관점에서 제공됩니다. 매뉴얼은 교사의 지도 하에 SQL 언어의 독학에 모두 사용할 수 있습니다. 이 매뉴얼은 "정보학 및 컴퓨터 공학", "정보 시스템 및 기술", "응용 정보학", "소프트웨어 공학" 및 "정보 시스템의 수학 지원 및 관리" 영역에서 공부하는 학생들을 대상으로 합니다. PostgreSQL 데이터베이스 관리 시스템 환경에서 SQL 언어의 기초를 익히고자 하는 광범위한 학생 및 전문가에게 유용할 수 있습니다. UDC BBK Postgres Professional, 2017 E. P. Morgunov, 2017

4 목차 서론 5 1 데이터베이스와 SQL 소개 데이터베이스란 무엇이고 왜 필요한지 관계형 모델의 기본 개념 SQL이란 무엇인가 도메인과 훈련 데이터베이스에 대한 언어 설명 시험 문제와 과제 작업 환경 만들기 DBMS 프로그램 설치 psql PostgreSQL 대화형 터미널 교육 데이터베이스 배포 테스트 질문 및 작업 테이블을 사용한 기본 작업 22 테스트 질문 및 작업 PostgreSQL DBMS의 데이터 유형 숫자 유형 문자(문자열) 유형 날짜/시간 유형 부울 유형 배열 JSON 유형 테스트 질문 및 작업 데이터 정의 언어 기본 기본값 값 및 제한 무결성 테이블 생성 및 삭제 테이블 뷰 수정 데이터베이스 스키마 테스트 질문 및 작업 쿼리 SELECT 명령의 추가 기능 연결 집계 및 그룹화 하위 쿼리 테스트 질문 및 작업 데이터 수정 테이블에 행 삽입 테이블의 행 업데이트 행 삭제 테이블 테스트 질문 및 작업

5 8 지수 일반 정보다중 열 인덱스 고유 인덱스 식 기반 인덱스 부분 인덱스 질문 및 작업 검토 트랜잭션 격리 수준 READ UNCOMMITTED 격리 수준 READ COMMITTED 격리 수준 REPEATABLE READ 격리 수준 SERIALIZABLE 트랜잭션 사용 예 잠금 질문 및 작업 확인 성능 향상 기본 개념 테이블 스캔 생성 기술 조인 행 집합 관리 스케줄러 관리 쿼리 최적화 테스트 질문 및 작업 권장 소스 255 4

6 머리말 현재 "데이터베이스"라는 용어는 컴퓨터 프로그램의 전문적인 개발과는 거리가 먼 사람들에게도 많은 사람들에게 알려져 있습니다. 데이터베이스는 매우 널리 퍼진 기술이 되었고, 이에 따라 데이터베이스를 설계하고 유지 관리하는 데 더 많은 사람이 필요했습니다. 데이터베이스의 이론과 실제가 발전하는 과정에서 관계형 데이터 모델이 사실상의 표준이 되었으며 이 모델 내에서 SQL(Structured Query Language)로 필요한 모든 작업을 수행할 수 있는 특수 프로그래밍 언어가 형성되었습니다. 데이터. 따라서 SQL 언어에 대한 능숙도는 데이터베이스 전문가 자격의 중요한 구성 요소입니다. 이 튜토리얼은 기초 과정에서 SQL 언어의 기초를 다룹니다. 또한 언어는 특정 데이터베이스 관리 시스템(DBMS) PostgreSQL과 관련하여 고려됩니다. 각 DBMS에서 SQL 언어의 구현은 어느 정도 표준을 준수하지만 표준화된 기능 및 기능 외에도 각 DBMS는 고유한 추가 언어 확장도 제공합니다. PostgreSQL은 SQL 언어 표준을 매우 훌륭하게 지원하며 흥미롭고 유용한 추가 기능도 제공합니다. PostgreSQL의 주요 장점 중 하나는 확장성입니다. 이는 예를 들어 사용자(물론 데이터베이스 전문가)가 자신의 데이터 유형을 개발할 수 있음을 의미합니다. 이러한 데이터 유형은 기본 제공 데이터 유형의 모든 속성을 가지며 서버를 중지하지 않고 작동할 수 있습니다. 또한 PostgreSQL은 무료 오픈 소스이며 다양한 플랫폼에서 사용할 수 있습니다. 이 자습서에서는 모든 기본 SQL 명령뿐만 아니라 인덱스 및 트랜잭션과 같은 기타 주제도 다룹니다. 매뉴얼은 교사의 지도 하에 또는 독립적으로 사용할 수 있도록 작성되었습니다. 학생들은 이미 설치된 DBMS에 액세스할 수 있다고 가정하므로 PostgreSQL 설치 절차는 자세히 다루지 않고 설치 지침을 찾을 수 있는 위치에 대한 지침만 제공됩니다. 이 자습서는 SQL 언어 사용에 대한 실용적인 기술을 제공하도록 설계되었습니다. 교육 자료는 독자가 각 장의 끝 부분에 있는 과제를 완료한 결과로 많은 중요한 지식을 얻을 수 있는 방식으로 제공됩니다. 이 지식은 장의 본문에 표시되지 않을 수 있습니다. 작업의 상당 부분은 독자가 PostgreSQL DBMS 설명서를 사용하여 독립적으로 수행한다고 가정하지만 구현 지침이 제공되는 경우가 많습니다. 매뉴얼의 작업은 난이도가 다양합니다. 가장 어려운 것과 완료하는 데 오랜 시간이 걸리는 것은 별표로 표시됩니다. 과제는 공부하면서 완료할 수 있습니다. 교재특정 장. 그러나 그 중 일부는 본질적으로 복잡하므로 완료하려면 전체 장 또는 적어도 여러 섹션을 공부해야 합니다. 5

7 매뉴얼은 이론적인 과정이 아닌 실용적인 부분에 중점을 두고 있지만, 첫 번째 장에서는 데이터베이스 이론과 관계형 모델의 기본 개념을 초급 수준에서 간략하게 설명합니다. 이는 학생들이 학기 초부터 강의 과정에서 이러한 개념을 철저히 고려하기 전에도 지체 없이 SQL 언어의 실질적인 숙달을 시작할 수 있도록 하기 위함입니다. 학부에서 정보 기술러시아 대학에서 데이터베이스는 전통적으로 2년 또는 3년에 연구됩니다. 또한이 분야는 원칙적으로 한 학기가 걸립니다. 그러나 학습 시간의 수는 다를 수 있습니다. 커리큘럼이 이 분야의 실습을 위해 36시간을 할당한다면, 우리는 매뉴얼의 자료를 공부하기 위해 다음과 같은 시간 배분을 권장합니다. 1장. 데이터베이스와 SQL 소개 2장. 작업 환경 만들기 3장. 테이블을 이용한 기본 연산 4장. PostgreSQL DBMS의 데이터 유형 5장. 데이터 정의 언어의 기초 6장. 쿼리 7장. 데이터 수정 8장. 인덱스 9장. 트랜잭션 10장. 성능 향상 1시간 1시간 4시간 4시간 4시간 8시간 4시간 2시간 4시간 4시간 PostgreSQL이 이미 설치되어 있어야 하므로 1장과 2장을 2시간짜리 강의 하나로 공부할 수 있습니다. 미리 교실에서. 3장은 SQL 언어의 기본 기능에 대한 간략한 개요입니다. 학습 후 학생들은 이해해야 합니다. 간단한 방법언어의 모든 기본 명령을 사용합니다. 이 장은 별로 어렵지는 않지만 길기 때문에 공부하는데 4시간이 걸립니다. 4장에서는 PostgreSQL에서 사용되는 기본 데이터 유형에 대해 설명합니다. 이것은 큰 장이지만 활동과 연습의 상당 부분이 포함되어 있습니다. 학생들은 4시간 동안 데이터 유형을 사용하기 위한 기본 기술만 숙달해야 합니다. 그리고 지식을 통합하기 위해 매뉴얼의 나머지 장을 공부하는 과정에서 이 장의 자료(연습 포함)를 참조하는 것이 좋습니다. 사용의 특정 기능을 명확히 해야 하는 경우 특정 유형. 이 장의 학습에 할당된 시간은 숫자 및 문자열 유형, 날짜/시간 및 부울 유형의 처음 4개 단락에 대해 2시간, 배열 및 json/jsonb 유형에 대해 또 다른 2시간으로 분배하는 것이 좋습니다. 데이터베이스에 대한 쿼리를 실행하려면 데이터베이스 구조, 테이블 관계를 잘 이해해야 합니다. 따라서 데이터 정의 언어의 기초를 다루고 있는 5장은 항공운송 데이터베이스의 테이블에 대한 상세한 연구와 6장의 숙달을 위한 준비의 관점에서 매우 중요하다. 데이터베이스가 이미 학생의 컴퓨터에 배포되어 있다는 사실에 따라 테이블을 만드는 데 필요한 명령을 입력하지 않아도 됩니다. 이를 통해 해당 장을 공부하는 데 소요되는 시간을 줄일 수 있습니다. 이 자습서에서는 먼저 데이터 정의 명령을 살펴본 다음 데이터 조작 명령을 살펴보는 접근 방식을 취합니다. 따라서 5장 "데이터 정의 언어의 기초"가 6장보다 먼저 나옵니다.

8 6장 "요청". 그러나 선택한 접근 방식은 매우 엄격하게 구현되지 않습니다. 개요 3장에서는 간단한 쿼리를 포함한 기본 명령이 고려됩니다. 그리고 쿼리는 이미 데이터 조작 언어입니다. 5장에는 4시간의 학습 시간이 있습니다. 처음 2시간 동안에는 무결성 제약 조건, 테이블 생성 및 삭제와 같은 주제를 다루는 처음 두 단락을 공부하게 됩니다. 두 번째 2시간 수업은 나머지 세 단락을 연구하는 데 사용되어야 합니다. 그들은 뷰와 데이터베이스 스키마뿐만 아니라 테이블을 수정하는 방법에 대해 이야기합니다. 6장은 이 매뉴얼의 핵심이라 다른 장보다 공부하는데 8시간이 더 걸린다. 4개의 섹션으로 구성되어 있습니다. 첫 번째는 SELECT 명령의 다양한 추가 기능을 다룹니다. 여기에는 LIMIT 및 OFFSET 절, LIKE 연산자, WHERE 절의 정규식 등이 포함됩니다. 그럼에도 불구하고 이 단락의 내용은 어렵지 않고, 그것을 공부하는 데 한 시간을 할애하면 충분합니다. 두 번째 단락에서는 테이블을 조인하는 방법을 설명합니다. 이것은 더 복잡한 주제이며 공부하는 데 2시간이 필요합니다. 세 번째 단락은 집계 및 그룹화를 다룹니다. 또한 창 기능과 같은 중요하고 흥미로운 주제를 다룹니다. 이 단락은 또한 2시간의 수업이 필요합니다. 이 장의 가장 어려운 부분은 네 번째입니다. 서브 쿼리에 관한 것입니다. 특히 CTE(Common Table Expressions)와 같은 중요하고 흥미로운 주제를 다룹니다. 이 단락의 자료를 공부하려면 3시간을 할당해야 합니다. 7장에는 데이터 변경을 위한 모든 명령(행 삽입, 업데이트 및 삭제)이 포함되어 있습니다. 이러한 명령은 이전 장에서 이미 간단한 작업에 사용되었으므로 이 장에서는 보다 고급 사용 방법에 대해 설명합니다. 그것에는 많은 운동이 있으며 볼륨의 절반을 차지합니다. 2시간 동안 테이블에 행을 삽입하는 방법을 살펴보고 2시간 동안 행을 업데이트하고 삭제하는 방법을 살펴보는 것이 좋습니다. 8장은 인덱스에 대해 다루며 2시간짜리 수업으로 익숙해질 수 있을 정도로 작습니다. 인덱스는 성능 문제, 즉 쿼리 속도와 밀접한 관련이 있으므로 마지막 장을 공부한 후 8장으로 돌아가서 이미 EXPLAIN 명령에 대해 알고 있는 명령과 쿼리를 살펴보는 것이 좋습니다. 9장은 트랜잭션에 대해 설명하고 있으며 실행 메커니즘에는 많은 미묘함이 있으므로 이 장을 공부하는 동안 얻은 결과를 실험하고 설명해야 합니다. 마지막 10장에서는 생산성 문제를 검토합니다. 이 장은 초보자 SQL 과정에 대해 너무 추상적이고 복잡해 보일 수 있지만 그럼에도 불구하고 매우 중요합니다. 학생들은 쿼리 실행 계획을 읽고 계획에 제시된 각 작업의 목적을 이해하는 방법을 배워야 합니다. 그리고 쿼리 최적화 기술을 마스터하려면 많은 시간과 경험이 필요하며 바로 오지 않을 것입니다. 교과 과정의 "데이터베이스"분야에서 실습 교육에 54시간이 할당된 경우 제안된 교육 시간 배분을 변경할 수 있습니다. 특히 4장에서는 데이터 유형 7에 더 많은 시간을 할애할 수 있습니다.

9 json / jsonb 및 배열. 6장에서는 창 함수와 공통 테이블 표현식에 대해 자세히 살펴봅니다. 9장 트랜잭션에 대해 트랜잭션을 사용하는 간단한 응용 프로그램을 개발하고 여러 세션을 병렬로 실행하고 트랜잭션 격리 수준을 변경하여 해당 응용 프로그램을 실험하는 것이 좋습니다. 10장의 일부로 8장의 명령과 쿼리로 돌아가서 EXPLAIN 명령을 사용하여 실행 계획을 검토하는 것이 좋습니다. 추가 시간으로 인해 난이도가 높은 모든 작업과 연습(별표 표시)을 고려할 수 있습니다. 따라서 시간 분포는 다음과 같습니다. 1장. 데이터베이스 및 SQL 소개 2장. 작업 환경 만들기 3장. 테이블을 사용한 기본 작업 4장. PostgreSQL DBMS의 데이터 유형 5장. 데이터 정의 언어의 기본 챕터 6. 쿼리 7장. 데이터 수정 8장. 인덱스 9장. 트랜잭션 10장. 생산성 향상 1시간 1시간 4시간 6시간 6시간 12시간 6시간 4시간 8시간 6시간 이 튜토리얼에서는 다양한 유형의 글꼴을 사용하여 강조 표시합니다. 대상에 따라 텍스트 조각. 환경에서와 같이 사용자가 입력한 명령 운영 체제 psql 유틸리티 환경에서는 굵은 고정 폭 글꼴로 표시됩니다. 예: psql -d demo -U postgres 또는 SELECT avg (total_amount) FROM 예약; psql 유틸리티에서 실행된 운영 체제 명령 및 SQL 명령의 결과는 고정 폭 글꼴로 인쇄됩니다. 예를 들어 EXPLAIN SELECT * FROM 항공기에 대한 응답으로; 화면에 다음이 표시됩니다. 항공기의 QUERY PLAN Seq Scan(비용 = 행 = 9 너비 = 52) (1줄) 이 튜토리얼의 자료를 공부하면 기술을 향상하고 전문적인 시야를 넓히는 데 도움이 되기를 바랍니다. 여덟

10 1 데이터베이스 및 SQL 소개 이 장은 입문서입니다. 여기서 우리는 데이터베이스의 기본, 관계형 모델이 무엇인지, SQL이 필요한 이유를 다룰 것입니다. 이 장의 매우 중요한 주제는 SQL 언어 학습을 위한 플랫폼 역할을 하는 교육 데이터베이스를 설계하는 기반이 되는 주제 영역에 대한 설명입니다. 이 튜토리얼은 주로 데이터베이스 이론을 공부하기 위한 것이 아니라 SQL 언어의 실제적인 마스터링을 위한 것이므로 이론을 공부하려면 튜토리얼의 끝에 목록이 제공되는 권위 있는 소스를 참조해야 합니다. 1.1 데이터베이스의 정의와 필요한 이유 데이터베이스 기술이 항상 존재하는 것은 아닙니다. 그러나 실용화되기 전에도 사람들은 데이터를 수집하고 처리했습니다. 데이터를 저장하는 방법 중 하나는 매우 간단한 구조를 가진 소위 플랫 파일이었습니다. 데이터는 고정 길이의 필드로 분할된 레코드로 저장되었습니다. 실생활에서 종종 전자 데이터베이스로 전송되어야 하는 데이터 요소 간에 복잡한 관계가 발생합니다. 플랫 파일을 사용할 때 이러한 관계는 구성하기 어렵고 개별 데이터 항목을 변경하거나 삭제할 때 유지하기가 훨씬 더 어렵습니다. 데이터베이스 이론의 기본 개념 중 하나는 데이터 모델입니다. 데이터가 구성되는 방식과 데이터에 액세스하는 주요 방법을 특성화한다고 말할 수 있습니다. 먼저 계층 및 네트워크 데이터 모델을 제안했습니다. 그러나 이론과 아이디어가 진화하는 과정에서 관계형 데이터 모델이 개발되었으며 현재는 이것이 지배적입니다. 따라서 오늘날에는 관계형 데이터베이스가 우세합니다. 데이터가 사용자에게 테이블로 인식된다는 것이 특징입니다. 사용자에게는 테이블에서 데이터를 가져오고 새 데이터를 삽입하고 기존 데이터를 업데이트 및 삭제하는 연산자가 있습니다. 관계형 데이터베이스의 장점 중 하나는 데이터 항목 간의 관계를 유지 관리할 수 있어 프로그래머가 이 루틴과 매우 시간 소모적인 작업을 처리할 필요가 없다는 것입니다. 관계형 데이터베이스 기술이 널리 채택되기 전에 프로그래머는 현재 종속 테이블(파일)에서 레코드의 계단식 삭제 또는 계단식 외래 키 업데이트라고 하는 것을 절차 언어로 수동으로 구현해야 했습니다. 여기서 "수동으로"라는 단어는 이러한 작업을 수행하기 위해 기본 명령으로 구성된 코드를 작성해야 업데이트되거나 삭제된 각 레코드에 접근할 수 있음을 의미합니다. 데이터베이스 작업에 대한 이러한 접근 방식은 프로그램을 레코드 찾기를 위한 특정 알고리즘으로 지정하는 탐색 프로그래머라고 했습니다. 간단한 상황을 예로 들어 보겠습니다. 파일을 기반으로 구축된 데이터베이스에는 학생 및 시험 성적에 대한 정보가 저장되고 학생의 개인 데이터는 하나의 파일에 저장됩니다. 조건부로 "학생"이라고 부르겠습니다. "추정"이라고 하는 다른 파일의 시험 성적. 특정 학생 및 그의 시험에 대한 정보를 삭제하려는 경우 9

11개의 등급을 사용하는 경우 "Students" 파일에서 특정 레코드를 삭제하는 작업을 수행해야 할 뿐만 아니라 키 필드가 동일한 값을 갖는 "Grades" 파일에서 해당 레코드를 찾고 삭제하는 루프를 추가로 구성해야 합니다. "학생" 파일에서 삭제된 레코드의 필드로. 관계형 데이터베이스로 작업할 때 프로그래머는 이러한 데이터베이스와 "통신"하기 위한 현대 언어가 선언적이기 때문에 "원자적" 수준에서 프로그래밍하지 않아도 됩니다. 즉, 결과를 얻기 위해서는 무엇을 얻어야 하는지를 지시하는 것만으로도 충분하지만, 결과를 얻기 위한 방법, 즉 어떻게 얻어야 하는지를 규정할 필요는 없다. 데이터베이스 시스템은 사용자의 요청에 따라 정보를 저장, 처리 및 발행하기 위한 컴퓨터화된 시스템입니다. 이러한 시스템에는 소프트웨어 및 하드웨어, 데이터 자체 및 사용자가 포함됩니다. 최신 데이터베이스 시스템은 일반적으로 다중 사용자입니다. 이러한 시스템에서는 여러 사용자가 동시에 데이터베이스에 액세스할 수 있습니다. 주요 소프트웨어는 데이터베이스 관리 시스템입니다. 영어로 데이터베이스 관리 시스템(DBMS)이라고 합니다. DBMS 외에도 데이터베이스 시스템에는 유틸리티, 응용 프로그램(프로그램) 개발 도구, 데이터베이스 디자인 도구, 보고서 생성기 등이 포함될 수 있습니다. 데이터베이스가 있는 시스템의 사용자는 여러 범주로 나뉩니다. 첫 번째 범주는 응용 프로그램 프로그래머입니다. 두 번째 범주는 모든 작업이 수행되는 최종 사용자입니다. DBMS 자체의 소프트웨어에 포함된 응용 프로그램 또는 일반 응용 프로그램을 사용하여 데이터베이스에 액세스할 수 있습니다. 대부분의 DBMS에는 사용자가 고급 언어(예: SQL)로 명령을 입력할 수 있는 쿼리 언어 프로세서가 있습니다. 세 번째 사용자 범주는 데이터베이스 관리자입니다. 그들의 책임에는 다음이 포함됩니다: 데이터베이스 생성, 최적의 액세스 모드 선택, 데이터베이스의 특정 정보에 액세스할 수 있는 다양한 사용자의 권한 차별화, 수행 사본 예약데이터베이스 등. 데이터베이스 시스템은 서버와 클라이언트 세트(또는 외부 인터페이스)의 두 가지 주요 구성 요소로 나눌 수 있습니다. 서버는 DBMS입니다. 클라이언트는 애플리케이션 프로그래머가 작성한 다양한 애플리케이션 또는 DBMS와 함께 제공되는 임베디드 애플리케이션입니다. 하나의 서버가 여러 클라이언트에 서비스를 제공할 수 있습니다. 최신 DBMS에는 데이터 사전이 포함됩니다. 이것은 데이터베이스에 저장된 실제 데이터를 설명하는 부분입니다. 데이터 사전은 DBMS가 기능을 수행하는 데 도움이 됩니다. 1.2 관계형 모델의 기본 개념 각 기술 영역에는 고유한 용어가 있습니다. 모든 추가 추론의 기반이 되는 기본 용어가 있습니다. 이러한 용어는 10을 의미합니다.

12 데이터베이스 분야에도 존재합니다. 이제 우리는 그들에 대해 간단히 이야기 할 것입니다. 관계 이론이 탄생하기 이전 시대에 데이터베이스는 전통적으로 기록 파일의 모음으로 간주되었으며 기록은 다시 별도의 필드로 세분화되었습니다. 필드는 데이터의 기본 단위였습니다. 관계형 데이터베이스에서 사용자는 데이터를 테이블 형태로 인식합니다. 따라서 "파일"이라는 용어는 "테이블"이라는 용어에 해당하고 "레코드"라는 용어 대신 "행"이라는 용어가 사용되고 "필드"라는 용어 대신 "열"(또는 "열")이라는 용어가 사용됩니다. 따라서 테이블은 행과 열로 구성되며, 그 교차점에는 의미를 잃지 않고 더 작은 요소로 나눌 수 없는 "원자적" 값이 있어야 합니다. 관계형 데이터베이스의 형식 이론에서 이러한 테이블을 관계라고 하므로 데이터베이스를 관계형이라고 합니다. 관계는 수학 용어입니다. 이러한 관계의 속성을 결정할 때 집합 이론이 사용됩니다. 이 이론의 관점에서 테이블의 행을 튜플이라고 하고 열을 속성이라고 합니다. 관계에는 속성으로 구성된 헤더와 튜플로 구성된 본문이 있습니다. 속성의 수를 관계의 정도라고 하고 튜플의 수를 기수라고 합니다. 집합 이론 외에도 관계 이론의 기초 중 하나는 술어 미적분학과 같은 수학 논리의 한 분야입니다. 따라서 데이터베이스의 이론과 실제에는 세 가지 용어 그룹이 있습니다. 때로는 다른 그룹의 용어가 서로 바꿔서 사용됩니다(예: 표기법 및 문자열). 위에서 말했듯이 관계형 데이터베이스에서 사용자는 데이터를 테이블 형태로 인식합니다. 두 개의 테이블만 있는 간단한 시스템을 고려하십시오. 첫 번째 "학생": 성적 장부 전체 이름 문서 시리즈 문서 번호 Ivanov Ivan Petrovich Klimov Andrey Ivanovich Novikov Nikolay Yurievich 그리고 두 번째 "진행 상황": 성적부 주제 학년 학기 평가 물리학 2016 / 수학 2016 / 물리학 2016 / 물리학 20 작업 시 데이터베이스의 경우 특정 주제 영역의 특성으로 인해 다양한 제한 사항을 따라야 하는 경우가 많습니다. 실제 상황을 단순화하여 다음 제한 사항을 수락합니다. 11

13 성적 기록 번호는 5자리로 구성되며 음수가 될 수 없습니다(대학마다 성적 기록에 숫자를 할당하는 방식이 다릅니다. 이러한 방식은 우리가 채택한 방식보다 훨씬 복잡할 수 있으며 예를 들어 학생의 연도를 고려할 수 있습니다. 대학에 입학); 일련의 신분증 번호는 4자리 숫자이고 신분증 번호는 6자리 숫자입니다. 학기 번호는 1(가을 학기)과 2(봄 학기)의 두 값만 사용할 수 있습니다. 등급은 3(만족), 4(양호), 5(우수)의 세 가지 값만 사용할 수 있습니다. 다른 등급을 기록부에 넣는 것은 허용되지 않습니다. 테이블의 행을 식별하고 테이블을 함께 연결하기 위해 소위 키가 사용됩니다. 잠재적 키는 테이블의 행을 고유하게 식별하는 테이블 속성의 조합입니다. 키는 테이블의 하나의 속성으로만 구성될 수 있습니다. 예를 들어, "학생" 테이블에서 이 식별자는 "성적부 번호" 속성이 될 수 있습니다. 함께 취한 두 가지 속성은 이 테이블의 잠재적 키 역할을 할 수도 있습니다. "신분증 문서 시리즈" 및 "신분증 문서 번호". 이들 중 어느 것도 고유 식별자로 사용할 수 없습니다. 이 경우 키는 합성됩니다. 잠재적 키는 중복되지 않아야 합니다. 즉, 여기에 포함된 속성의 하위 집합에는 고유성 속성이 없어야 합니다. 언급된 두 속성을 포함하는 잠재적 키는 중복되지 않습니다. 행(레코드) 수준에서 주소를 지정하려면 키가 필요합니다. 테이블에 둘 이상의 잠재적 키가 있는 경우 그 중 하나가 소위 기본 키로 선택되고 나머지는 대체 키가 됩니다. "학생" 및 "성과" 테이블을 고려하십시오. "Students" 테이블에 성적 번호가 55900인 행이 포함되어 있지 않다고 가정하면 "Grades" 테이블에 이 성적 번호가 있는 행을 포함하는 것은 의미가 없습니다. 따라서 "성적" 테이블의 "성적 번호" 열 값은 "학생" 테이블의 동일한 열 값과 일치해야 합니다. Grades 테이블의 Gradebook Number 속성은 외래 키의 예입니다. 외래 키를 포함하는 테이블을 참조 테이블이라고 합니다. 해당 후보 키를 포함하는 테이블을 참조 테이블이라고 합니다. 이러한 경우 외래 키는 참조된 테이블의 후보 키를 참조한다고 합니다. 외래 키는 복합 키일 수 있습니다. 즉, 둘 이상의 속성을 포함할 수 있습니다. 외래 키는 고유할 필요가 없습니다. 데이터베이스에 잘못된 외래 키 값이 포함되어 있지 않은지 확인하는 문제를 참조 무결성 문제라고 합니다. 외래 키 값이 후보 키 값과 일치해야 하는 제약을 참조 무결성 제약(referential 제약)이라고 합니다. DBMS는 참조 무결성 제약 조건을 적용할 책임이 있으며 개발자는 외부 12 역할을 하는 속성을 지정하기만 하면 됩니다.

14 키. 데이터베이스 설계에서 참조된 테이블에서 행이 삭제되면 참조된 테이블의 해당 행도 삭제되어야 하고 외래 키가 참조하는 열의 값이 변경되면 외래 키 값이 변경되는 경우가 종종 있습니다. 참조된 테이블에서 변경해야 합니다. 이 접근 방식을 계단식 삭제(업데이트)라고 합니다. 다른 접근 방식이 때때로 사용됩니다. 예를 들어, 참조된 테이블에서 행을 삭제하는 대신 이러한 행은 외래 키에 포함된 속성 값을 소위 NULL 값으로 간단히 대체합니다. 이들은 "아무것도"또는 값이 없음을 의미하는 특수 값으로 "0"또는 "빈 문자열"값과 일치하지 않습니다. NULL은 데이터베이스에서 사용되며 사용자가 특정 값을 입력하지 않은 경우 기본값으로 사용됩니다. 기본 키는 NULL 값을 포함할 수 없습니다. 트랜잭션은 데이터베이스 이론에서 가장 중요한 개념 중 하나입니다. 트랜잭션 실행 중 어떤 종류의 오류가 발생한 경우 데이터베이스에 대한 일련의 작업을 분리할 수 없는 단일 작업 단위로 간주하여 전체를 수행하거나 전혀 수행하지 않는 것을 의미합니다. 따라서 트랜잭션은 데이터 일관성을 보장하는 수단입니다. 우리 데이터베이스에서 트랜잭션은 예를 들어 "Students" 테이블에서 행을 삭제하고 "Grades" 테이블에서 외래 키 관련 행을 삭제하는 두 가지 작업일 수 있습니다. 1.3 SQL 언어란 무엇인가 SQL은 모든 관계형 DBMS에서 데이터 작업의 표준 수단인 비절차적 언어입니다. 이 언어로 작성된 연산자(명령어)는 DBMS에 어떤 결과를 얻어야 하는지만 지시할 뿐 이 결과를 얻는 절차는 설명하지 않습니다. DBMS 자체가 사용자 명령이 실행되는 방식을 결정합니다. SQL 언어에는 전통적으로 데이터 정의 언어 DDL, 데이터 조작 언어 DML 및 데이터 제어 언어 DCL 그룹이 있습니다. DDL(데이터 정의 언어) 문에는 테이블, 뷰 및 기타 데이터베이스 개체를 생성, 수정 및 삭제하기 위한 명령이 포함됩니다. 5장과 8장에서는 이러한 명령에 대해 자세히 설명합니다.DML(데이터 조작 언어) 문은 테이블에서 행을 가져오고, 테이블에 행을 삽입하고, 행을 업데이트 및 삭제하는 명령입니다. 이러한 명령은 6장과 7장에서 자세히 설명합니다. DCL 연산자는 이 자습서에서 다루지 않습니다. PostgreSQL을 사용하면 SQL 학습의 초기 단계에서 DCL 연산자를 사용하지 않고도 수행할 수 있기 때문입니다. 13

15 1.4 주제 영역 및 샘플 데이터베이스 설명 SQL 언어의 모든 기본 기능을 표시하려면 데이터베이스가 필요합니다. 이 데이터베이스는 학습하는 데 너무 복잡하거나 너무 오래 걸리지 않아야 합니다. 그러나 동시에 실제 작업과 거의 동일하게 요청이 그럴듯해 보일 정도로 다양해야 합니다. 여객 항공 운송을 주제 영역으로 선택합시다. 항공 운송 데이터베이스의 원래 설명과 설명은 주소 및 ru/docs/postgrespro/current/demodb-bookings.html에서 찾을 수 있습니다. 이 영역이 튜토리얼의 많은 독자들에게 친숙하기를 바랍니다. 물론 교육적 목적을 위해 실제 상황은 일부러 단순화했지만 기본적인 것은 모두 보존했다. 따라서 특정 러시아 항공사는 여객 항공 운송을 수행합니다. 그것은 다양한 모델의 자체 항공기를 보유하고 있습니다. 각 항공기 모델에는 IATA(International Air Carriers Association)에서 할당한 특정 코드가 있습니다. 이 경우 동일한 모델의 항공기가 동일한 객실 레이아웃, 즉 비즈니스 클래스와 이코노미 클래스 객실의 좌석 순서와 좌석 번호를 가지고 있다고 가정합니다. 예를 들어 Sukhoi SuperJet-100 모델인 경우 2A 좌석은 비즈니스 클래스에 속하고 20D 좌석은 이코노미 클래스에 속합니다. 비즈니스 클래스와 이코노미 클래스는 소위 서비스 클래스의 변형입니다. 저희 항공사는 러시아 공항 간 항공편을 운행합니다. 각 공항에는 고유한 3자리 코드가 할당되며 라틴 알파벳의 대문자만 사용됩니다. 이 코드는 항공사 자체가 아니라 여객 항공 운송을 관리하는 특수 조직에서 할당합니다. 종종 공항의 이름은 이 공항이 속한 도시의 이름과 일치하지 않습니다. 예를 들어, Novosibirsk시에서는 공항을 Tolmachevo, Koltsovo의 Yekaterinburg시 및 Pulkovo의 St. Petersburg시에서 공항이라고합니다. 또한 일부 도시에는 공항이 두 개 이상 있습니다. 예를 들어 Domodedovo, Sheremetyevo 및 Vnukovo 공항이 있는 모스크바를 즉시 기억합니다. 중요한 세부 사항을 하나 더 추가해 보겠습니다. 각 공항은 지리적 좌표, 경도 및 위도와 시간대를 특징으로 합니다. 도시 간 비행 경로가 형성되고 있습니다. 물론 이러한 각 경로에는 도시뿐만 아니라 공항도 표시해야 합니다. 이미 말했듯이 도시에는 두 개 이상의 공항이 있을 수 있기 때문입니다. 현실을 단순화하기 위해 경로에 중간 기착이 없도록 결정합니다. 즉, 출발 공항과 도착 공항만 있을 것입니다. 각 경로에는 라틴 알파벳의 숫자와 문자를 포함하여 6자리 숫자가 있습니다. 경로 목록을 기반으로 비행(또는 비행) 일정이 형성됩니다. 시간표는 예정된 출발 시간과 예정된 도착 시간 및 이 비행을 수행하는 항공기의 종류를 나타냅니다. 비행이 실제로 수행될 때 추가 정보, 즉 실제 출발 시간과 실제 도착 시간, 비행 상태를 고려해야 합니다. 항공편 상태는 다음과 같은 여러 값을 가질 수 있습니다. 14

16 예정(예약 가능성은 한 달에 열립니다); 정시(등록은 하루 전에 시작됨); 지연(비행 지연); 출발 (출발); 도착(도착); 취소 된 이제 승객을 살펴보겠습니다. 비행은 항공권 예약으로 시작됩니다. 이제 전자 항공권을 발행하는 것이 일반적입니다. 각 티켓에는 고유한 13자리 숫자가 있습니다. 하나의 예약 절차의 틀 내에서 여러 티켓을 발행할 수 있지만 각 절차에는 라틴 알파벳의 대문자와 숫자로 구성된 고유한 6자리 예약 번호(코드)가 있습니다. 또한, 각 예약 절차에 대해 예약 날짜가 기록되고 발권된 총 티켓 비용이 계산됩니다. 각 티켓에는 13자리 숫자 외에 승객의 식별자, 성과 이름(라틴어로 표기) 및 연락처 정보가 포함되어 있습니다. 신분증 번호는 승객의 식별자로 사용됩니다. 물론 승객은 다른 날짜에 티켓을 예약하는 사이에 경과된 시간 동안 문서, 때로는 성 및 이름까지 변경할 수 있으므로 동일한 승객에 대해 특정 티켓이 발행되었다고 확신할 수는 없습니다. 각 전자 항공권에는 두 개 이상의 항공편이 포함될 수 있습니다. 전문가들은 이러한 비행 기록 세그먼트를 호출합니다. 여러 세그먼트의 존재 예는 다음과 같습니다. 크라스노야르스크 모스크바, 모스크바 아나파, 아나파 모스크바, 모스크바 크라스노야르스크. 동시에 동일한 예약 내에서 다른 승객에 대해 여러 티켓을 발행할 수 있습니다. 각 항공편에 대해 편명, 출발 및 도착 공항, 출발 및 도착 시간, 비행 비용이 표시됩니다. 또한 이코노미, 비즈니스 등의 소위 서비스 클래스가 표시됩니다. 승객이 출발 공항에 도착하여 티켓 등록을 통과하면 소위 탑승권이 발급됩니다. 이 쿠폰은 항공권과 연결되어 있습니다. 쿠폰에는 이 승객의 전자 항공권과 동일한 번호가 포함되어 있습니다. 또한 티켓에는 비행기의 항공편 번호와 좌석 번호가 포함되어 있습니다. 탑승권 번호도 표시되며 이 항공편의 체크인 과정에서 할당된 일련 번호입니다. 참고로 항공기 객실의 각 좌석은 특정 서비스 클래스에 해당합니다. 이 정보는 티켓을 등록하고 탑승권을 발행할 때 고려됩니다. 예를 들어 승객이 이코노미 클래스 서비스가 포함된 항공권을 구매한 경우 탑승권에는 이코노미 클래스 객실의 좌석 번호가 표시되지만 비즈니스 클래스 객실은 표시되지 않습니다. 위의 주제 영역에 대한 설명에 따라 SQL 언어 학습을 위한 모델 데이터베이스를 설계할 수 있습니다. 우리의 튜토리얼은 데이터베이스 디자인의 기술을 마스터하는 것이 아니라 주로 SQL 언어를 배우는 것에 관한 것이기 때문에 그림 15만 보여줄 것입니다.

17 예약 공항 예약 공항 # book_ref * book_date * total_amount # airport_code * airport_name * 도시 * 경도 * 위도 * 시간대 티켓 티켓 # ticket_no * book_ref * Passenger_id * Passenger_name contact_data Ticket_flights 항공편 # ticket_no # flight_id * 항공편 금액_conditions_ 항공편 * 항공편 # * 예정 Scheduled_arrival * Departure_airport * arrival_airport * 상태 * 항공기_코드 actual_departure actual_arrival 항공기 항공기 # 항공기 코드 * 모델 * 범위 Boarding_passes 탑승권 좌석 좌석 # ticket_no # flight_id * boarding_no * seat_no # 항공기 코드 # seat_no * 요금_조건 및 주제 영역에서 선택한 구성표 데이터 그들의 관계와 속성으로. 특정 데이터 유형, 기본 및 외래 키, 속성 및 테이블에 부과된 제한 사항은 데이터베이스에서 물리적으로 테이블을 생성하도록 설계된 SQL 명령을 살펴보는 과정의 후속 장에서 보여줍니다. 이 다이어그램은 이 섹션의 시작 부분에 나열된 주소의 Postgres Professional 웹 사이트에서 찾을 수 있습니다. 테스트 질문 및 작업 1. SQL 언어에서 어떤 연산자 그룹이 눈에 띄는가? 2. 관계형 데이터 모델의 기본 개념인 관계, 튜플, 속성에 대한 비공식적 정의를 제공합니다. 3. 관계형 테이블에서 외래 키는 무엇을 위한 것입니까? 4. 잠재적인 열쇠는 무엇입니까? 5. * Air Transportation 데이터베이스의 테이블 중 하나에 대한 중복 후보 키의 예를 제공하고 중복되는 이유를 설명하십시오. 16

6. * 항공 운송 데이터베이스의 현재 구현에서는 동일한 모델의 항공기가 하나의 객실 레이아웃만 가질 수 있다고 가정합니다. 경영진이 각 모델에 대해 다른 레이아웃을 가질 가능성을 고려하기로 결정했다고 상상해 보십시오. 이 경우 어떤 테이블을 어떻게 수정해야 합니까? 추가 테이블을 생성해야 합니까? 17

19 2 작업 환경 설정 SQL을 직접 배우기 전에 PostgreSQL 서버에 액세스해야 합니다. 이는 예를 들어 컴퓨터실에서 또는 터미널을 통해 원격 서버에 액세스하여 수행할 수 있습니다. 그러나 자신과 자신을 위한 작업 환경을 만들 수 있습니다. 로컬 컴퓨터 PostgreSQL DBMS의 정식 버전, 즉 서버 및 클라이언트 프로그램을 설치하여 이 경우 PostgreSQL을 구성하고 사용할 수 있는 권한이 훨씬 더 많아집니다. 이 장의 마지막 부분에서는 특별히 준비된 그럴듯한 데이터로 가득 찬 항공 운송 훈련 데이터베이스를 배포하는 방법을 보여줍니다. 2.1 데이터베이스 설치 이 튜토리얼은 PostgreSQL 데이터베이스 관리의 기초가 아니라 SQL 언어를 배우는 것에 관한 것이므로 설치 지침을 찾을 수 있는 위치에 대한 빠른 가이드만 제공합니다. 설치하려는 DBMS 배포 키트를 선택하여 시작해야 합니다. 원본 PostgreSQL 변형 또는 Postgres Professional에서 제공하는 변형을 선택할 수 있습니다. Postgres Pro라고 하며 표준 배포판에 포함된 모든 기능과 모듈뿐만 아니라 Postgres Professional의 추가 개발도 포함합니다. SQL 언어의 기초를 배우기 위해서는 이러한 배포판이 동등하게 적합합니다. 그러나 러시아어 설명서는 PostgreSQL에만 포함되어 있습니다. 특정 DBMS 배포 키트를 결정한 후에는 운영 체제를 선택해야 합니다. PostgreSQL은 Windows뿐만 아니라 다양한 버전의 Linux를 포함한 많은 시스템을 지원합니다. 최신 안정 버전의 DBMS를 설치하는 것이 좋습니다. 원본 PostgreSQL 배포를 사용하기로 선택한 경우 PostgreSQL 배포를 선택한 경우 최신으로 이동에서 다양한 운영 체제에 설치하는 방법에 대한 지침을 찾을 수 있습니다. Windows에 PostgreSQL과 Postgres Pro를 모두 설치한 후 psql 대화형 터미널에서 러시아어 알파벳을 쉽게 사용할 수 있도록 추가 단계를 수행해야 합니다. psql 유틸리티는 다음 섹션에서 설명합니다. 설치 프로세스는 postgres라는 DBMS 사용자 계정을 생성합니다. 이 튜토리얼을 공부하기 위해 추가 계정을 만들 필요는 없습니다. 십팔

20 하나 또는 다른 PostgreSQL 배포 키트를 설치했으면 데이터베이스 서버를 시작하는 방법을 배워야 합니다. 그렇지 않으면 데이터 작업이 불가능하기 때문입니다. 이 작업을 수행하는 방법은 섹션 18.3 "데이터베이스 서버 시작"의 설명서에 자세히 설명되어 있습니다. 이 섹션은 current / server-start.html에서 찾을 수 있습니다. Windows 환경에서 DBMS를 설치하면 운영체제가 부팅될 때 PostgreSQL 서버를 자동으로 시작하는 서비스가 생성됩니다. 서버 작업이 끝나면 올바르게 중지(꺼짐)해야 합니다. 이러한 상황에서의 작업 순서는 섹션 18.5 "서버 종료"의 설명서에 설명되어 있습니다. 이 섹션은 postgresql / 9.6 / server-shutdown.html에서 찾을 수 있습니다. 2.2 psql 프로그램 PostgreSQL 대화형 터미널 데이터베이스 서버에 액세스하기 위해 PostgreSQL은 psql 대화형 터미널과 함께 제공됩니다. 시작하기 위해서는 psql 명령어를 입력해야 하며, Windows 환경에서 psql 유틸리티를 실행하면 러시아어 알파벳이 잘못 표시될 수 있습니다. 이를 없애기 위해 psql이 실행되고 있는 창의 속성에서 글꼴을 Lucida Console로 변경하고 chcp 명령어를 사용하여 현재 코드 페이지를 CP1251로 변경합니다. chcp 1251 psql 유틸리티 환경에서는 SQL 뿐만 아니라 명령뿐만 아니라 유틸리티 자체에서 지원하는 다양한 서비스 명령도 있습니다. 모든 서비스 명령에 대한 빠른 도움말을 보려면 \? 이러한 명령 중 대부분은 \d 문자로 시작합니다. 예를 들어, 현재 연결되어 있는 데이터베이스에 생성된 모든 테이블과 보기의 목록을 보려면 \ dt 명령을 입력하십시오. 예를 들어, Students는 명령을 입력해야 합니다. \ d Students 모든 SQL 명령 목록을 얻으려면 , 명령을 실행해야 합니다. \ h 특정 SQL 명령(예: CREATE TABLE)에 대한 설명을 표시하려면 다음을 수행해야 합니다. \ h CREATE TABLE 19

21 이 유틸리티를 사용하면 입력한 명령을 psql로 보완하여 수동 입력의 양을 줄일 수 있습니다. 예를 들어, SQL 명령을 입력할 때 Tab 키를 사용하여 입력한 명령 키워드 또는 데이터베이스 테이블 이름을 완성할 수 있습니다. 예를 들어, CREATE TABLE ... 명령을 입력할 때 "cr" 문자를 입력하고 Tab 키를 누를 수 있습니다. Psql은 "create" 전에 이 단어를 완성합니다. TABLE이라는 단어로 동일한 작업을 수행할 수 있습니다. 그것을 입력하려면 문자 "ta"를 입력하고 Tab 키를 누르십시오. psql이 키워드를 고유하게 식별하기 위해 너무 적은 문자를 입력하면 패딩이 발생하지 않습니다. 그러나 이 경우 Tab 키를 두 번 누르면 입력한 문자 조합으로 시작하는 모든 키워드 목록을 얻을 수 있습니다. 2.3 샘플 데이터베이스 배포 데이터베이스 서버 설정을 완료한 후 Postgres Professional에서 준비한 Air Transport 샘플 데이터베이스를 PostgreSQL 클러스터에 배포하는 방법에 대한 질문으로 넘어갈 수 있습니다. 회사 웹 사이트에는 이 데이터베이스 전용 섹션이 있습니다. 링크를 따라가면 찾을 수 있습니다. 데이터 양만 다른 세 가지 버전으로 제공됩니다. 가장 컴팩트한 버전에는 한 달 동안의 데이터가 포함되어 있고, 중간 버전에는 한 달 동안의 데이터가 포함되어 있습니다. 기간은 3개월이며 가장 완전한 버전에는 1년 전체의 데이터가 포함됩니다. 모든 데이터는 "개연성"을 보장하기 위해 특수 알고리즘을 사용하여 생성되었습니다. Air Transport 데이터베이스의 컴팩트 버전으로 시작하고 SQL 쿼리 작성에 대한 약간의 경험을 얻은 후 정식 버전을 설치하고 이미 여기에 작업의 다양한 미묘함을 더 잘 "느낄" 것을 권장합니다. 예를 들어 대용량 데이터의 경우 인덱스가 데이터 액세스 속도에 미치는 영향을 평가합니다. 데이터베이스 배포의 첫 번째 단계로 압축 파일을 다운로드해야 합니다. 지원 zip 링크 아래에 있습니다. 그런 다음 아카이브에서 파일을 추출해야 합니다. unzip demo_small.zip 추출된 파일의 이름은 demo_small.sql입니다. 이제 PostgreSQL 클러스터에 demo라는 데이터베이스를 생성합니다. 명령의 가장 짧은 버전은 다음과 같습니다. psql -f demo_small.sql -U postgres demo.log 2> demo.err 오류에 대해 stdout과 stdout을 분리할 수 있습니다. 일반 메시지는 demo.log 파일로 리디렉션되고 오류 메시지는 demo.err 파일로 리디렉션됩니다. 표준 오류 메시지 출력에 대한 핸들을 나타내는 숫자 2와 출력 리디렉션을 나타내는 > 기호 사이에 공백이 없어야 합니다. 스물

22 모든 메시지를 하나의 공통 파일로 수집하는 것이 더 편리한 경우 다음을 수행해야 합니다. psql -f demo_small.sql -U postgres> demo.log 2> & 1 전체 표현식 2> & 1 명령 끝에 공백 없이 작성됩니다. 운영 체제에 오류 메시지를 일반 메시지와 동일한 위치로 라우팅하도록 지시합니다. SQL 파일이 매우 크면 명령줄 끝에 "&"를 넣어 백그라운드에서 명령을 실행하고 tail 명령을 사용하여 실시간으로 진행 상황을 볼 수 있습니다. psql -f demo_small.sql -U postgres> demo.log 2> & 1 & tail -f demo.log 데이터베이스 배포를 위한 명령 옵션 중 하나를 선택하고 이 명령을 실행합니다. 모든 준비가 완료되었습니다! 새 데이터베이스에 연결할 수 있습니다. psql -d demo -U postgres 보안 질문 및 작업 1. 선택한 운영 체제에서 PostgreSQL 설치 절차를 완료합니다. 2. 내장된 도움말을 사용하여 psql 유틸리티와 psql --help 명령에 의해 호출된 도움말 사용에 익숙해집니다. 3. psql 외에도 PostgreSQL 데이터베이스 작업을 위한 다른 범용 프로그램이 있습니다. 서버(예: pgadmin). 강력한 그래픽 유틸리티입니다. pgadmin 프로그램을 직접 설치하고 작업의 기본을 배우십시오. 4. 샘플 데이터베이스를 배포합니다. psql 유틸리티를 사용하여 연결을 시도하십시오. \ q 명령을 사용하여 유틸리티를 종료합니다. 21

23 3 테이블을 사용한 기본 작업 SQL 언어는 매우 다양하며 여러 명령을 포함하며 때로는 많은 매개변수와 키워드를 포함합니다. 그러나 우리는 다음과 같이 시작할 것입니다. 간략한 개요 SQL 언어의 기본 기능 이 장에서는 데이터베이스에 데이터를 입력하는 방법, 데이터베이스에서 정보를 얻는 기본 방법, 즉 샘플링을 익히고 데이터베이스에 저장된 정보를 변경하고 삭제된 데이터를 삭제하는 방법을 배웁니다. 더 이상 필요하지 않습니다. 외국어 학습 관행에는 좋은 전통이 있습니다. 이미 첫 번째 수업에서 학생은 가장 단순하지만 그럼에도 불구하고 실질적으로 유용한 몇 가지 문구를 말할 수 있게 해주는 몇 가지 기본적인 문법 구조와 단어를 배웁니다. 우리는 이 전통을 따를 것입니다. 튜토리얼의 이 섹션에서는 기본 작업을 수행할 수 있는 기본 SQL 명령을 배웁니다. 다음 장에서 더 복잡하고 흥미로운 명령을 배우게 될 것입니다. 일에 대한 우리의 접근 방식에 대해 몇 마디 말씀드리겠습니다. 원칙적으로 학생(학습자)의 작업을 구성하는 두 가지 가능한 방법이 있습니다. 첫 번째 방법은 다음과 같습니다. 학생은 교과서의 저자 또는 기타 자격을 갖춘 전문가가 미리 준비한 필요한 모든 테이블 및 기타 데이터베이스 개체가 이미 포함된 데이터베이스를 사용합니다. 동시에 필요한 특정 데이터 집합도 이미 테이블에 입력되어 있으므로 이러한 테이블에 대한 쿼리 실행을 즉시 진행할 수 있습니다. 설명된 방법은 SQL 언어를 마스터하는 초기 단계에서 적은 노력이 필요하기 때문에 매우 매력적으로 보입니다. 그러나 우리의 의견으로는 다른 방법이 더 정확합니다. 아마도 시간이 더 많이 걸리지만 사용하면 테이블을 만들고 이 테이블에 레코드를 입력하는 프로세스를 더 잘 느낄 수 있습니다. 그리고 데이터베이스에 대한 다양한 쿼리를 실행하면 모든 데이터를 직접 입력하고 화면에서 볼 것으로 예상되는 결과를 합리적으로 추측할 수 있기 때문에 쿼리 실행 결과의 정확성을 평가하는 것이 더 쉬울 것입니다. 물론 첫 번째 방법은 큰 데이터 세트를 사용하지 않고는 이해하기 어려운 SQL 언어의 보다 복잡하고 고급 기능을 학습할 때 매우 유용할 수 있으며 큰 데이터 세트를 데이터베이스에 수동으로 입력하는 것은 합리적이지 않습니다. 소프트웨어에서 자동으로 생성하는 것이 훨씬 더 합리적입니다. 1장에서 주제 영역에 대해 설명했으므로 이제 데이터베이스에서 직접 테이블 생성을 시작할 수 있습니다. 모든 후속 명령 및 작업을 실행하기 위해 표준 PostgreSQL 제공에 포함된 psql 유틸리티를 사용합니다. 데모 데이터베이스는 이미 컴퓨터에 배포되어 있어야 합니다. 생성 프로세스는 2장에 설명되어 있습니다. 이제 psql 유틸리티를 실행하고 다음을 사용하여 이 데이터베이스에 연결합니다. 계정포스트그레스 사용자: psql -d 데모 --U postgres CREATE TABLE 명령은 SQL에서 테이블을 생성하는 데 사용됩니다. 전체 구문은 PostgreSQL 설명서에 나와 있으며 단순화된 구문은 다음과 같습니다.


Postgres Professional E. P. Morgunov PostgreSQL. SQL 언어 자습서 St. Petersburg "BHV-Petersburg" 2018 UDC 004.655 BBK 32.973.26-018.2 M79 Morgunov, E. P. M79 PostgreSQL의 기초. 기본

SQL 언어 강의 6 색인 E. P. Morgunov Siberian State University of Science and Technology 학자 M. F. Reshetnev Krasnoyarsk Institute of Informatics and Telecommunications의 이름을 따서 명명되었습니다. [이메일 보호됨]

브라치코프 I.L. 41. 데이터베이스 디자인의 기초. DBMS 구축 방법. SQL, 구현 예. 현대 데이터베이스의 기초. 1. 기본 정의. 술어. 문학에서 찾을 수 있는

주제 10. 데이터베이스 기술의 기초 데이터베이스 기술은 정보를 구현하는 컴퓨터 정보 시스템 및 응용 프로그램을 구축하는 데 사용되는 정보학의 주요 성과 중 하나입니다.

데이터베이스의 기본 개념 1. 데이터베이스 설계를 위한 올바른 절차 선택 a) 데이터 전송 문제 해결 b) 최종 사용자의 요구 사항을 고려한 주제 영역 분석 c)

소개 이 책은 Oracle을 데이터베이스 관리 시스템(DBMS)으로 사용하는 개발자를 대상으로 합니다. 따라서 이 책은 문제를 해결하는 데 많은 공간을 할애하지 않습니다.

옵션 1 정답을 선택하세요. 가능한 정답은 하나뿐입니다. 1. 정보시스템 a) 모든 정보 처리 시스템 b) 텍스트 처리 시스템

SQL 언어 강의 3 데이터 정의 언어의 기초 E. P. Morgunov 시베리아 주립 과학 기술 대학 학자 M. F. Reshetnev Krasnoyarsk Institute of Informatics and Telecommunications

SQL 언어 강의 5 데이터 변경 E. P. Morgunov Siberian State University of Science and Technology 학자 M. F. Reshetnev Krasnoyarsk Institute of Informatics and Telecommunications의 이름을 따서 명명 [이메일 보호됨]

➀ 정보 시스템 및 데이터 뱅크. 모든 조직의 효과적인 기능을 보장하기 위한 가장 중요한 조건은 개발된 정보 시스템의 존재입니다. 정보시스템은 시스템이다

1장. 시작하기 데이터베이스 작동 방식 마이크로소프트 액세스데이터 구조 설계 데이터베이스 작업 단계 시작하기 사용자 인터페이스 Access 2007 항목 사용자 지정

3장. 다중 사용자 버전 설치 및 실행 요구 사항 및 조건 ... 1 네트워크에 SBiC ++ 설치 방법 ... 2 Pervasive.SQL 서버 및 클라이언트 설치 및 구성 ... 3 프로그램 설치 .. 4 준비

BANK OF TEST TASKS 학문 분야 방향 준비 수준 부서 B1.B.12 데이터 관리 09.03.02 정보 시스템 및 기술 학부 측정 및 자동화 방법 및 도구

데이터베이스 컴퓨터 기술의 개발은 두 가지 주요 영역에서 수행되었습니다. 수치 계산을 수행하기 위한 컴퓨터 기술의 사용; 컴퓨터 기술의 사용

Bauman Moscow State Technical University 칼루가 지점 Yu. E. Gagarin, S. V. Ponomarev MS 액세스에서 SQL 언어 적용 학습 가이드 UDC 681.3.06 LBC 32.973

1. 정보 및 데이터 2. 데이터베이스가 있는 시스템의 기본 개념 데이터베이스가 있는 정보 컴퓨터 시스템은 정보, 수학적, 소프트웨어, 언어적, 조직적 시스템입니다.

PDM STEP SUITE 버전 5.0 설치 지침 시스템 프로그래머를 위한 PDM STEP Suite 지침. Part 1 JSC R&D 센터 "응용물류" 2019 PDM STEP Suite v.5.0. 시스템 프로그래머 지침

1 of 6 강의 1. 데이터베이스 시스템 아키텍처. 기업 정보 시스템에서 데이터베이스 시스템 관리자의 기능. 데이터베이스 개체. 1.1. ANSI / SPARC 데이터베이스 시스템 아키텍처 ... 1

목차 소개 ... 3 1 주제 연구 및 문제 진술 ... 4 2 정보 모델 구축 ... 5 3 데이터베이스의 데이터 설계 ... 6 3.1 제어 시스템 선택

현대의 상황에서 기업을 자동화할 때 동일한 회계 섹션을 회계하기 위해 서로 다르고 종종 정반대의 요구 사항을 처리해야 합니다. 문서에 따르면

전문 응용 정보학(학사 학위) 학생을 위한 학문 분야 "데이터베이스 및 관리" 080800.62 강의 15 데이터베이스 액세스 조직 모델 교육 질문: 1. 아키텍처

SQL 언어 강의 7 트랜잭션 E. P. Morgunov Siberian State University of Science and Technology 학자 M. F. Reshetnev Krasnoyarsk Institute of Informatics and Telecommunications의 이름을 따서 명명 [이메일 보호됨]

컴퓨터 정보 기술 모듈 13. Access DBMS의 일반적인 특성 1 모듈 목표 모듈을 학습한 후 다음을 할 수 있습니다. 기능접근 DBMS; 기능을 알고

전자 문서 관리 시스템 Arkhivarsky

데이터베이스(DB). DB 제어 시스템 일반 조항 정보 시스템의 목적은 현실 세계의 개체에 대한 데이터를 처리하는 것입니다. 넓은 의미에서 데이터베이스는 다음과 같은 정보의 모음입니다.

데이터베이스 소개. SQL 소개. Sumy 교육 센터 소프트웨어 품질 보증(QA) Netcracker 2016 1 다음에 대해 알아보기 데이터베이스란 데이터베이스 분류 DBMS 클라이언트 DBMS

1.1. 데이터베이스 기초 1.1.1. 데이터베이스 및 데이터베이스 관리 시스템. 데이터 모델 데이터베이스(DB)는 특정 관련 구조화된 데이터의 명명된 모음입니다.

꽤 최근에 나온 것 같지만 그 이후로 얼마나 중요한 변화가 일어났습니까! 저자가 1999년 초에 Professional SQL Server 7.0 프로그래밍 책을 인쇄할 준비를 하는 동안

데이터베이스 이론 소개 강의 1 강의 개요 기본 개념 데이터베이스의 데이터 구성 데이터 모델의 유형 데이터베이스 아키텍처 데이터베이스 분류 Server 2008. 강의 1 2 기본 개념 Server 2008. 강의

부록 4 프로세스 및 계산 제어의 하위 시스템 목차 1. 일반 정보... 2 2. 상태 및 작업 프로세스 모델링 ... 2 2.1. 상태 그룹 목록 관리 ... 2 2.2. 창조

Softacom CRM 설치 가이드 버전 2.1. 1 "Softacom CRM 설치 가이드". 시스템 설치 프로세스에 대한 설명이 포함되어 있습니다. 목차 1 소개 ... 3 1.1 시스템에 대한 일반 ... 3 1.2 기능

연구실 작업 4 "테이블 간의 관계 생성" 작업 목적: 관계형 데이터베이스의 구조를 생성하는 기술 연구 마이크로 소프트 오피스 Access 2007 1. 이론적 요약

논리적 백업 주제 논리적 및 물리적 백업 개별 테이블 복사 데이터베이스 및 클러스터 백업 및 복원 2 백업 유형 논리적 백업

MICROSOFT 액세스: 링크, 계산된 필드, DB용 버튼 양식 생성 I. 테이블 링크 현대 데이터베이스는 일반적으로 함께 연결된 많은 테이블로 구성됩니다. 좋은 구조를 만드는 목표 중 하나

국립항공대학교 응용정보학과 코스 작업주제: DBMS Microsoft Access 데이터베이스 생성 및 처리 작업 목적: 작업의 기본 기술을 이론적으로, 실질적으로 마스터

트랜잭션 및 동시 액세스: PostgreSQL 및 Oracle 구현 비교 Egor Rogov, Postgres Professional 왜 이 모든 것입니까? 쿼리 결과 이 ​​모든 이유가 무엇입니까? 쿼리 결과 트랜잭션 원자성 모두

@ DB, DBMS 1. 하위 객체가 상위 객체에 종속되는 것을 특징으로 하는 데이터 구조를 A. 테이블 형식 B. 관계형 * C. 계층적 D. 네트워크 2. 고유

VOGBIT 설치 안내서 2010 목차 소개 ... 4 소프트웨어 및 하드웨어 요구 사항 ... 5 설치 순서 ... 6 소프트웨어 설치 ... 7 라이센스 요청 및 얻기 ...

데이터베이스 개발 단계 일반적으로 비전문가가 데이터베이스 작업을 수행하므로 데이터베이스에 대한 다음 요구 사항을 공식화할 수 있습니다. 개발자는 데이터베이스를 생성할 때 다음 사항에 중점을 두어야 합니다.

데이터베이스 관리 시스템 액세스 Kazan (Privozhsky) Federal University의 Elabuga Institute 외국어 학부 학생 Chibinova Nazlygul Niyazovna가 완료했습니다. 과학

정보학 강의 5 MS Access 정보 시스템 대용량 데이터의 저장, 보충, 편집 및 사용을 위한 응용 사용 중이란 가장 간단한 경우 액세스를 의미합니다.

목차 서문 ... 3 파트 I. 데이터베이스, DBMS 및 데이터 모델 1장. 데이터베이스 기술의 목적. 데이터베이스 관리 시스템의 기능 및 주요 구성 요소 ...........................................................

교육 과정의 모니터링 및 자동화를 위한 연구실. 교육 과정 지원 사이트 개정 3을 위한 관리자 안내서(15/12/18/15). Korotkov D.S., Zhuchok I.O. 켜기 끄기

6장 데이터베이스 이론 6.1. 일반 개념 6.2. 데이터 모델 6.3. 관계형 데이터베이스 6.4. 사후 관계형 모델 및 데이터베이스 6.5. 데이터베이스 디자인 현대 정보 시스템,

랩 9 SQL을 사용하여 쿼리를 구성하는 Microsoft Access 2007의 기능 탐색. 목적: 1. Microsoft Access에서 SQL을 사용하여 쿼리를 형성하는 순서 연구

항공 정보 문서 작성 복합 항공 데이터베이스 생성 일반 조항 복합 항공 정보의 주요 소스는 항공 관련 데이터베이스입니다.

1. 예상 모니터링 도구. 설문조사(토론용) 섹션에 제출된 질문 학문 분야: 섹션 1. 데이터 뱅크 소개 1. 데이터 뱅크(BnD)의 개념. BnD 구성 요소. 1.1. 정보 제공

강의 2 1 사전으로: 정보 시스템의 아키텍처 정보 시스템은 조직적으로 정렬된 일련의 문서(문서 배열) 및

J. Bowman, S. Emerson, M. Darnovsky A PRACTICAL GUIDE TO SQL 이 책은 최고의 사용자 매뉴얼이 도움이 되지 않을 때도 도움이 될 것입니다. 여기에서는 자주 간과되는 주제를 다룹니다.

전자 문서 관리 시스템 Arkhivaris 설치 매뉴얼 모스크바, 2009 2 초록 이 문서는 소프트웨어 제품 "EVFRAT-Document management."의 제공 세트에 대해 설명합니다.



관련 기사: