SQL 기초

DDL, DML 및 JOIN에 대해 알아보십시오.

Structured Query Language 는 최신 데이터베이스 아키텍처의 기본 빌딩 블록 중 하나입니다. SQL은 모든 주요 플랫폼에서 관계형 데이터베이스를 작성하고 조작하는 데 사용되는 메소드를 정의합니다. 언뜻보기에는 언어가 협박적이고 복잡해 보일 수도 있지만 그렇게 어려운 것은 아닙니다.

SQL의 기본 원리에 대한 소개에서는 데이터베이스를 작성하고 수정하는 데 사용되는 몇 가지 기본 명령을 간단히 살펴 보겠습니다.

SQL 정보

SQL의 올바른 발음은 데이터베이스 공동체 내에서 논쟁의 여지가있는 문제입니다. SQL 표준에서 American National Standards Institute는 공식 발음이 "es que el"이라고 선언했습니다. 그러나 많은 데이터베이스 전문가들은 속어 "후속편"을 사용했습니다. 너의 선택이야.

SQL은 여러 가지 형태로 제공됩니다. 오라클 데이터베이스 는 독점적 인 PL / SQL을 사용합니다. Microsoft SQL Server는 Transact-SQL을 사용합니다. 모든 변형은 업계 표준 ANSI SQL을 기반으로합니다. 이 소개에서는 현대의 관계형 데이터베이스 시스템에서 작동하는 ANSI 호환 SQL 명령을 사용합니다.

DDL 및 DML

SQL 명령은 두 개의 주요 하위 언어로 나눌 수 있습니다. DDL (데이터 정의 언어)에는 데이터베이스와 데이터베이스 객체를 만들고 파괴하는 데 사용되는 명령이 들어 있습니다. 데이터베이스 구조가 DDL로 정의되면 데이터베이스 관리자와 사용자는 DML (Data Manipulation Language)을 사용하여 그 안에 포함 된 데이터를 삽입, 검색 및 수정할 수 있습니다.

데이터 정의 언어 명령

데이터 정의 언어는 데이터베이스와 데이터베이스 개체를 만들고 파괴하는 데 사용됩니다. 이 명령은 주로 데이터베이스 프로젝트의 설정 및 제거 단계에서 데이터베이스 관리자가 사용합니다. 다음은 네 가지 기본 DDL 명령의 구조와 사용법을 보여줍니다.

몹시 떠들어 대다. 컴퓨터에 데이터베이스 관리 시스템 을 설치하면 여러 독립 데이터베이스를 작성하고 관리 할 수 ​​있습니다. 예를 들어 영업 부서의 고객 담당자 데이터베이스와 HR 부서의 인사 데이터베이스를 유지 관리 할 수 ​​있습니다. CREATE 명령은 사용자 플 '폼에서이 데이터베이스 각각을 확립하는 데 사용됩니다. 예를 들어, 다음 명령은 :

CREATE DATABASE 직원

DBMS에 "employees"라는 빈 데이터베이스를 만듭니다. 데이터베이스를 작성한 후, 다음 단계는 데이터를 포함하는 테이블을 작성하는 것입니다. 이 목적을 위해 CREATE 명령의 또 다른 변형을 사용할 수 있습니다. 명령 :

CREATE TABLE personal_info (first_name char (20) not null, last_name char (20) not null, employee_id int not null)

현재 데이터베이스에 "personal_info"라는 제목의 테이블을 설정합니다. 이 예에서 테이블에는 세 가지 속성 first_name, last_name 및 employee_id와 몇 가지 추가 정보가 있습니다.

용도. USE 명령을 사용하면 DBMS에서 작업 할 데이터베이스를 지정할 수 있습니다. 예를 들어, 현재 판매 데이터베이스에서 작업 중이며 직원 데이터베이스에 영향을 줄 일부 명령을 실행하려면 다음 SQL 명령을 사용하십시오.

직원 고용

데이터를 조작하는 SQL 명령을 실행하기 전에 작업하고있는 데이터베이스를 항상 의식하는 것이 중요합니다.

바꾸다. 데이터베이스 내에 테이블을 작성한 후에는 테이블의 정의를 수정할 수 있습니다. ALTER 명령을 사용하면 삭제 및 다시 작성하지 않고 테이블의 구조를 변경할 수 있습니다. 다음 명령을 살펴보십시오.

ALTER TABLE 개인 정보 추가 급여 금액 null

이 예는 직원의 급여 인 personal_info 테이블에 새로운 속성을 추가합니다. "money"인수는 직원의 급여가 달러 및 센트 형식으로 저장되도록 지정합니다. 마지막으로, "null"키워드는 데이터베이스에이 필드가 주어진 직원에 대해 값을 포함하지 않는다고 알려줍니다.

하락. 데이터 정의 언어 DROP의 마지막 명령은 DBMS에서 전체 데이터베이스 객체를 제거 할 수있게 해줍니다. 예를 들어, 생성 한 personal_info 테이블을 영구히 제거하려면 다음 명령을 사용합니다.

DROP TABLE 개인 정보

마찬가지로 아래 명령은 전체 직원 데이터베이스를 제거하는 데 사용됩니다.

DROP DATABASE 직원

주의해서이 명령을 사용하십시오. DROP 명령은 데이터베이스에서 전체 데이터 구조를 제거합니다. 개별 레코드를 제거하려면 데이터 조작 언어의 DELETE 명령을 사용하십시오.

데이터 조작 언어 명령

DML (Data Manipulation Language)은 데이터베이스 정보를 검색, 삽입 및 수정하는 데 사용됩니다. 이 명령은 데이터베이스의 루틴 조작 중에 모든 데이터베이스 사용자가 사용합니다.

끼워 넣다. SQL의 INSERT 명령은 레코드를 기존 테이블에 추가하는 데 사용됩니다. 이전 섹션의 personal_info 예제로 돌아와 인사 부서에서 새 직원을 데이터베이스에 추가해야한다고 가정 해보십시오. 다음과 유사한 명령을 사용할 수 있습니다.

INSERT INTO personal_info 값 ( 'bart', 'simpson', 12345, $ 45000)

레코드에 대해 지정된 네 개의 값이 있음에 유의하십시오. 이들은 정의 된 순서대로 테이블 속성에 대응합니다 : first_name, last_name, employee_id 및 salary.

고르다. SELECT 명령은 SQL에서 가장 일반적으로 사용되는 명령입니다. 데이터베이스 사용자는 운영 데이터베이스에서 원하는 특정 정보를 검색 할 수 있습니다. 직원 데이터베이스의 personal_info 테이블을 다시 사용하여 몇 가지 예를 살펴보십시오.

아래 표시된 명령은 personal_info 테이블에 포함 된 모든 정보를 검색합니다. 별표는 SQL에서 와일드 카드로 사용됩니다. 이것은 말 그대로 "personal_info 테이블에서 모든 것을 선택하십시오"를 의미합니다.

SELECT * FROM personal_info

또는 사용자는 데이터베이스에서 검색된 속성을 제한하려고 할 수 있습니다. 예를 들어, 인사 부서에서는 회사의 모든 직원의 성의 목록을 요구할 수 있습니다. 다음 SQL 명령은 해당 정보 만 검색합니다.

last_name FROM personal_info에서 SELECT하십시오.

WHERE 절은 검색된 레코드를 지정된 기준을 만족하는 레코드로 제한하는 데 사용될 수 있습니다. CEO는 모든 고임금 직원의 인사 기록을 검토하는 데 관심이있을 수 있습니다. 다음 명령은 salary 값이 $ 50,000보다 큰 레코드에 대해 personal_info에 포함 된 모든 데이터를 검색합니다.

SELECT * FROM personal_info 어디에서 급여> $ 50000

최신 정보. UPDATE 명령은 테이블에 포함 된 정보를 대량으로 또는 개별적으로 수정하는 데 사용할 수 있습니다. 회사는 모든 직원에게 연간 급여 생활비가 3 % 증가한다고 가정합니다. 다음 SQL 명령을 사용하여 데이터베이스에 저장된 모든 직원에게이를 신속하게 적용 할 수 있습니다.

UPDATE personal_info SET 급여 = 급여 * 1.03

신입 사원 바트 심슨 (Bart Simpson)이 임무 수행 이상의 업무 수행 능력을 입증하면 경영진은 5,000 달러 인상을 통해 자신의 업적을 인정하고자합니다. 이 절상을 위해 Bart를 단발하는 데 WHERE 절을 사용할 수 있습니다.

UPDATE personal_info SET 급여 = 급여 + $ 5000 WHERE employee_id = 12345

지우다. 마지막으로 DELETE 명령을 살펴 보겠습니다. 이 명령의 구문은 다른 DML 명령의 구문과 유사하다는 것을 알 수 있습니다. 불행히도, 우리의 최신 기업 실적 보고서는 기대에 미치지 못했으며 바트 (Bart)는 해고되었습니다. WHERE 절이있는 DELETE 명령을 사용하여 personal_info 테이블에서 레코드를 제거 할 수 있습니다.

DELETE FROM personal_info WHERE employee_id = 12345

가입

이제 SQL의 기초를 배웠으므로 언어가 제공해야하는 가장 강력한 개념 중 하나 인 JOIN 문으로 이동할 때입니다. JOIN 문을 사용하면 여러 테이블의 데이터를 결합하여 많은 양의 데이터를 효율적으로 처리 할 수 ​​있습니다. 이 진술은 데이터베이스의 진정한 힘이있는 곳입니다.

기본 JOIN 조작을 사용하여 두 테이블의 데이터를 결합하려면 PERSONAL_INFO 테이블을 사용하여 예제를 계속 진행하고 혼합에 추가 테이블을 추가하십시오. 다음 문으로 작성된 DISCIPLINARY_ACTION이라는 테이블이 있다고 가정하십시오.

CREATE TABLE disciplinary_action (action_id int not null, employee_id int not null, 주석 char (500))

이 표에는 회사 직원에 대한 징계 조치 결과가 나와 있습니다. 직원 번호 이외의 직원에 대한 정보는 포함되어 있지 않습니다. DISCIPLINARY_ACTION W PERSONAL_INFO 테이블의 정보를 결합하려는 여러 시나리오를 쉽게 상상할 수 있습니다.

$ 40,000 이상의 급여를 가진 모든 직원에 대해 취해진 징계 조치를 나열하는 보고서를 작성해야한다고 가정합니다. 이 경우 JOIN 연산을 사용하는 것은 간단합니다. 다음 명령을 사용하여이 정보를 검색 할 수 있습니다.

SELECT personal_info.first_name, personal_info.last_name, disciplinary_action.comments FROM personal_info, disciplinary_action 여기서 personal_info.employee_id = disciplinary_action.employee_id 및 personal_info.salary> 40000

이 코드는 FROM 절에서 결합하려는 두 테이블을 지정한 다음 WHERE 절에 구문을 포함시켜 일치하는 직원 ID를 갖고 $ 40,000 이상의 급여 기준을 만족시키는 레코드로 결과를 제한합니다.