SQL은 우리의 전부입니다

이미 짐작하셨겠지만 SQL 서버에 대한 모든 명령은 SQL 쿼리를 통해 제공될 수 있습니다. 모든 것.

이 팀은 공식적으로 4개의 그룹으로 나뉩니다.

  • 데이터 정의 문 (데이터 정의 언어, DDL ):

    • CREATE는 데이터베이스 개체(데이터베이스 자체, 테이블, 뷰, 사용자 등)를 생성합니다.
    • ALTER는 객체를 변경합니다.
    • DROP은 개체를 제거합니다.
  • 데이터 조작 연산자 (Data Manipulation Language, DML ):

    • SELECT는 주어진 조건을 만족하는 데이터를 선택합니다.
    • INSERT는 새 데이터를 추가합니다.
    • 업데이트는 기존 데이터를 변경합니다.
    • DELETE는 데이터를 제거합니다.
  • 데이터 액세스 정의 연산자 (데이터 제어 언어, DCL ):

    • GRANT는 개체에 대해 특정 작업을 수행할 수 있는 사용자(그룹) 권한을 부여합니다.
    • REVOKE는 이전에 발급된 권한을 취소합니다.
    • DENY는 허가보다 우선하는 금지를 설정합니다.
  • TCL ( 트랜잭션 제어 언어) 문 :

    • COMMIT은 트랜잭션을 적용합니다.
    • ROLLBACK은 현재 트랜잭션의 컨텍스트에서 이루어진 모든 변경 사항을 롤백합니다.
    • SAVEPOINT는 트랜잭션을 더 작은 섹션으로 나눕니다.

그리고 처음 두 수준에서는 다양한 SELECT 문만 연구했습니다. 앞으로 얼마나 많은 흥미로운 일들이 우리를 기다리고 있을지 상상해 보십시오.

그러나 우리는 여기서 주로 Java 프로그래머에 대해 준비하고 있으므로 직장에서 확실히 접하게 될 시나리오를 연구할 것입니다.

프로젝트의 시스템 관리자가 모든 데이터베이스를 생성할 가능성이 높지만 데이터에서 직접 여러 번 선택해야 합니다.

더욱이 때로는 코드가 모든 데이터를 데이터베이스에 쓰지 않거나 잘못된 방식으로 작성하므로 종종 펜을 들고 데이터베이스에 들어가 실제로 무엇이 저장되어 있는지 확인해야 합니다.

이전 강의에서 다뤘던 내용을 다시 살펴보겠습니다.

데이터베이스에서 스키마 생성

DBMS에서 새 스키마를 생성하려면 다음 명령을 실행해야 합니다.

CREATE SCHEMA Name;

이것이 가장 쉬운 옵션입니다. 또한 새 스키마를 생성할 때 데이터 인코딩 형식 및 기타 매개 변수를 지정할 수 있습니다.

스키마를 삭제하고 싶지만 존재 여부가 확실하지 않은 경우 다음 명령을 실행해야 합니다.

DROP SCHEMA IF EXIST Name;

다른 데이터베이스의 백업이 있는 파일에서 이러한 명령을 자주 볼 수 있으므로 여기에 가져옵니다.

현재 구성표 선택

DBMS에 많은 스키마가 있는 경우 서로 다른 스키마에 동일한 테이블이 있는 경우가 쉽게 발생할 수 있습니다. 혼동을 피하기 위해 다음 두 가지 작업을 수행할 수 있습니다.

  • 항상 테이블 이름 앞에 스키마 이름을 입력하십시오.
  • 기본 스키마 지정

테스트 스키마 에 있는 사용자 테이블 에서 데이터를 선택하는 쿼리를 작성해 보겠습니다 . 다음과 같이 표시됩니다.

SELECT * FROM test.user;

이는 하나의 쿼리에서 서로 다른 스키마의 여러 ​​테이블을 조인(JOIN)해야 하는 경우 필수 불가결합니다.

그건 그렇고, Java 언어에서 우리는 종종 유사한 작업을 수행합니다. 코드에서 다른 패키지의 동일한 이름을 가진 클래스를 사용해야 하는 경우 클래스 이름 앞에 패키지 이름을 추가합니다.

두 번째 방법은 기본 스키마를 지정하는 것입니다 . 쿼리에서 테이블 이름은 지정하지만 스키마는 지정하지 않으면 기본 스키마가 사용됩니다. 이렇게 하려면 USE 문을 사용하십시오 .

USE name - schemes;

USE 문을 사용하여 이전 쿼리를 다시 작성해 보겠습니다.

USE test;
SELECT * FROM user;

보기 만들기

실제 데이터가 있는 테이블 외에도 SQL을 사용하면 실제 테이블에서 데이터를 가져오는 가상 테이블과 같은 것을 저장할 수 있습니다. 이러한 가상 테이블을 VIEW라고 합니다.

이러한 테이블은 실제 데이터를 저장할 수 없으며 액세스할 때마다 실제 테이블에서 데이터를 가져옵니다. 이러한 VIEW의 내용은 SQL 쿼리를 사용하여 지정됩니다.

다음과 같은 명령을 사용하여 모든 SELECT 쿼리에서 VIEW를 만들 수 있습니다.

CREATE VIEW Name AS
SELECT-request;
직원 테이블을 기반으로 직원 급여 정보가 숨겨지는 public_employee 가상 테이블을 생성하는 쿼리를 작성해 보겠습니다.
CREATE VIEW public_employee AS
SELECT id, name FROM employee

위의 예에서 테이블(VIEW) public_employee에는 직원 ID와 이름만 포함되며 급여에 대한 정보는 포함되지 않습니다. 실제 테이블과 같은 곳에서 이러한 뷰를 사용할 수 있습니다.

뷰가 필요한 이유는 무엇입니까? 다음과 같은 여러 가지 장점이 있습니다.

정보에 대한 액세스를 유연하게 제어합니다 . 특정 사용자에게 VIEW에 대한 액세스 권한만 부여할 수 있지만 테이블에 대한 액세스 권한은 부여할 수 없습니다. 그리고 View에서는 테이블에서 공개된 정보만 가져옵니다. 또한 향후 중요한 정보가 포함된 새로운 열이 테이블에 추가되더라도 실수로 View에 들어가지 않습니다.

데이터 비정규화 . 저장의 편의를 위해 데이터는 종종 수백, 수천 개의 테이블로 나뉘지만 일반인이 이러한 데이터로 작업하는 것은 그리 편리하지 않습니다. 너무 복잡한 쿼리를 작성해야 합니다. View를 사용하면 수십 개의 서로 다른 테이블의 데이터를 단일 테이블에 표시하는 가상 테이블을 생성할 수 있습니다.

다형성과 캡슐화 . 데이터베이스 구조를 변경할 수 있습니다. 동시에 귀하의 보기로 작업하는 프로그램 사용자는 변경된 사항이 있다고 추측하지 않습니다. 또한 View에 액세스할 수 있는 프로그램의 코드를 다시 작성할 필요가 없습니다. VIEW와 관련된 SQL 스크립트를 수정하기만 하면 됩니다.

읽기 전용 . View는 SELECT 쿼리로만 설정할 수 있으므로 View로 작업해도 실제 테이블의 데이터를 변경할 수 없습니다. 그건 그렇고, 이것은 쿼리 캐싱을 선호하는 또 다른 장점입니다. 그러나 다음에 더 자세히 설명합니다.