프로그램 작성

SQL – 초보자를 위한 빠른 안내서

2021년 10월 30일

SQL 구조적 쿼리 언어를 의미합니다. 데이터베이스에 저장된 데이터를 검색하는 데 사용되는 도메인별 언어입니다. SQL은 저장된 데이터를 처리합니다. 관계형 데이터베이스 관리 시스템 (RDBMS), 즉 엔터티와 변수 간의 관계를 포함하는 데이터입니다. 구조화된 쿼리 언어는 모든 주요 언어와 호환됩니다. 운영체제 .

이전에는 데이터 조작이 다음을 사용하여 수행되었습니다. ISAM(색인 순차 접근 방식) 그리고 VSAM(가상 스토리지 액세스 방법) . 구조화된 쿼리 언어는 ISAM 및 VSM보다 더 많은 이점이 있습니다. SQL에서 하나의 단일 명령을 사용하여 여러 레코드 또는 데이터를 검색할 수 있습니다. 또 다른 장점은 데이터에 도달하는 방법을 지정할 필요가 없다는 것입니다.

목차

SQL이란 무엇입니까?

SQL 데이터베이스를 생성, 조작 및 유지 관리하기 위한 언어입니다. 또한 데이터를 삽입, 삭제 또는 수정하는 데 도움이 됩니다. 이 언어는 다음과 같은 여러 하위 언어로 구성됩니다. 데이터 정의 언어(DDL) , 데이터 조작 언어(DML) , 데이터 쿼리 언어(DQL) , 그리고 데이터 제어 언어(DCL) .

SQL은 데이터 쿼리, 데이터 정의, 데이터 조작 및 데이터 액세스 제어로 구성됩니다. 데이터 쿼리는 데이터베이스에서 데이터를 검색하는 데 사용되는 명령입니다. 데이터 정의에는 데이터베이스 스키마 정의가 포함되며 데이터 조작에는 데이터 삽입, 업데이트 및 삭제가 포함됩니다.

1986년에 SQL은 미국 국립 표준 연구소 (안시) 기준. 이듬해에는 국제표준화기구(ISO) 기준. 1970년, 도널드 D. 체임벌린 그리고 레이먼드 F. 보이스 IBM에서 SQL을 개발했습니다.

이전에는 SEQUEL(Structured English Query Language)로 알려졌습니다. IBM의 데이터를 저장하고 검색하기 위해 특별히 설계되었습니다. 1989년, 1992년, 1996년, 1999년, 2003년, 2006년, 2008년, 2011년 및 2016년에 릴리스된 다양한 SQL 버전이 있습니다.

SQL은 MySQL, Oracle, Sybase, SQL Server, MS Access, Postgres 및 Informix와 같은 모든 관계형 데이터베이스 관리 시스템의 핵심 언어입니다. 이 쿼리 방언을 사용하면 여러 가지 이점이 있습니다. SQL을 사용하면 모든 관계형 데이터베이스 관리 시스템의 정보에 액세스할 수 있습니다.

사용자는 SQL을 사용하여 데이터를 정의, 수정 또는 삭제할 수 있습니다. 데이터 검색이 필요한 다른 프로그래밍 언어에도 이 방언을 포함할 수 있습니다. 이를 통해 사용자는 저장 프로시저, 함수 및 보기에 대한 권한을 생성하고 설정할 수 있습니다.

이제 우리는 SQL과 그 역사에 대해 알게 되었습니다. 이제 관계형 데이터베이스 관리 시스템(RDBMS)에 집중하겠습니다. PL/SQL, SQL에 대한 절차적 언어 확장 , SQL 확장을 돕고 절차적 기능을 제공합니다.

RDBMS 데이터베이스

우리는 SQL이 MySQL, SQL Server, Oracle, MS Access 등과 같은 많은 RDBMS 데이터베이스에서 사용되는 것을 보았습니다. 따라서 이 섹션에서는 몇 가지 RDBMS 데이터베이스를 배웁니다. 각 데이터베이스의 특징을 보고 차이점을 알 수 있습니다.

하나. MySQL:

스웨덴 회사인 MySQL AB는 MySQL 무료로 사용할 수 있는 오픈 소스 데이터베이스입니다. MySQL은 Microsoft Windows와 같은 모든 주요 시스템과 호환됩니다. 리눅스 , Unix 및 macOS 운영 체제. 상업용 또는 비상업용 버전을 활용할 수 있습니다. 버전에 따라 기능이 제공됩니다. 견고하고 빠르며 다중 스레드 및 다중 사용자 데이터베이스 서버를 통합합니다.

1994년 Micheal Widenius와 David Axmark는 'my ess-que-ell'의 맥락에서 발음되는 MySQL을 개발했습니다. 1995년 5월 23일 MySQL 데이터베이스의 첫 번째 릴리스가 출시되었습니다. 이 데이터베이스는 1998년 1월 8일에 Windows 시스템에서 실행되도록 호환되었습니다. Windows 95 및 NT용으로 처음 출시되었습니다.

그만큼 MySQL 버전 3.23: 베타는 2000년 6월부터 2001년 1월 사이에 출시되었습니다. 다음 버전인 4.0: 베타는 2002년 8월부터 2003년 3월까지 출시되었습니다. 2004년 6월부터 2004년 10월까지 버전 4.1: 베타가 출시되었습니다. 다음 버전인 5.1: 베타는 2005년 3월부터 2005년 10월까지 생산되었습니다. 2008년 후반에 MySQL은 Sun Microsystems에 인수되었으며 최신 버전 5.2: 베타가 출시되었습니다.

특징:

MySQL은 무엇이든 실행할 수 있는 고성능, 고가용성 및 유연성을 제공합니다. 또한 수행할 강력한 트랜잭션을 지원합니다. MySQL 데이터베이스의 모든 데이터는 보호되고 매우 안전합니다. 그것은 무료로 사용할 수 있으며 오픈 소스입니다.

둘. 신탁:

신탁 다중 사용자 및 대규모 관리 시스템이 있는 널리 사용되는 관계형 데이터베이스 중 하나입니다. Oracle Corporation은 Oracle 관계형 데이터베이스를 출시했습니다. 이 DBMS는 클라이언트/서버 운영에 가장 적합합니다. 여러 클라이언트가 네트워크를 통해 데이터에 액세스하고 데이터를 보낼 수 있습니다. Oracle은 UNIX, UnixWare, OS/2, NetWare 및 MSDOS와 같은 클라이언트 및 서버 시스템과 호환됩니다.

Larry Ellison, Ed Oates 및 Bob Miner는 1977년에 Oracle 데이터베이스를 개발하고 소프트웨어 개발 연구소를 설립했습니다. 1979년 2.0 Oracle 버전이 2년 만에 출시되어 최초의 상용 Oracle 버전이 되었습니다. 그들은 Software Development Laboratories라는 이름을 Relational Software Inc.(RSI)로 변경했습니다. 이 조직은 나중에 1982년에 Oracle Corporation으로 이름이 변경되었습니다. 다음 버전인 3.0은 1983년에 C 언어로 출시되었습니다. 1984년에 개발된 Oracle 버전 4.0에는 다중 버전 읽기 일관성, 동시성 제어 등과 같은 고급 기능이 포함되어 있습니다. 최신 버전인 Oracle 11g는 2007년에 출시되었습니다.

Oracle 관계형 데이터베이스에는 동시성, 잠금 메커니즘, SQL Plus, 리소스 관리자, 데이터 마이닝, 파티셔닝, 데이터 웨어하우징, 병렬 실행 등과 같은 고급 기능이 포함됩니다.

삼. MS SQL 서버:

Microsoft의 관계형 데이터베이스는 MS SQL 서버 . 이 데이터베이스의 주요 목적은 데이터베이스에 데이터를 저장하고 검색하는 것입니다. Microsoft Windows, Linux 및 윈도우 서버 운영체제. MS SQL Server를 사용하면 동일한 컴퓨터나 다른 컴퓨터 또는 네트워크를 통해 존재하는 모든 소프트웨어 응용 프로그램이 데이터를 검색할 수 있습니다. ANSI SQL 및 T-SQL 데이터베이스 언어를 사용합니다.

처음에 1987년에 SQL Server는 Sybase에 의해 UNIX 시스템용으로 개발되었습니다. 다음 해에 Microsoft, Aston-Tate 및 Sybase는 OS/2용 SQL Server 1.0을 출시했습니다. Windows 3.0 사용자의 경우 1990년에 SQL Server 버전 1.1이 출시되었습니다. 나중에 Aston-Tate는 조직을 떠났고 Micorosft는 2000년에 SQL Server 2000을 출시했습니다. 이듬해에는 이 데이터베이스용 XML이 개발되었습니다. SQLXML 2.0은 2002년에 개발되었으며 이후에 SQLXML 3.0을 릴리스했습니다. 최신 버전인 SQL Server 2005는 2005년 11월 7일에 개발되었습니다.

MS SQL Server는 데이터베이스 미러링, DDL 트리거, 원활한 XML 통합, 데이터베이스 메일, 고성능 및 고가용성을 제공합니다.

4. MS 액세스:

또 다른 인기 있는 관계형 데이터베이스는 MS Access입니다. 위의 데이터베이스와 마찬가지로 MS Access도 Microsoft의 제품입니다. 이 DBMS는 소규모 비즈니스에 사용되며 매우 저렴합니다. 그것은 Jet 데이터베이스 엔진을 통합합니다. 이 엔진은 SQL 언어를 사용하므로 Jet SQL이라고도 합니다.

1992년, 최초의 MS Access 버전 1.0이 개발되었습니다. 이듬해에는 호환성 향상을 위해 Access Basic 프로그래밍 언어로 진화했습니다. 나중에 ACCDB 형식을 사용하는 Access 2007이 출시되었습니다. 이 MS Access 버전은 고급이며 복잡한 데이터 유형과 다중값 필드를 포함합니다.

MS Access는 연결된 테이블, 양식, 보고서 및 쿼리에 매크로를 사용합니다. 이 시스템을 사용하면 ASCII, Oracle, ODBC, SQL Server 등과 같은 여러 형식으로 데이터를 내보내고 가져올 수 있습니다. Jet 형식은 응용 프로그램과 해당 데이터를 하나의 파일에 함께 보관합니다. 따라서 모든 응용 프로그램을 쉽게 공유할 수 있습니다. 파일 서버 기반 시스템이므로 데이터베이스 트리거, 저장 프로시저 및 트랜잭션 로깅을 지원하지 않습니다.

RDBMS란 무엇입니까?

SQL, Oracle, MySQL, Microsoft Access 등과 같은 거의 모든 현재 데이터베이스 시스템은 관계형 데이터베이스 관리 시스템을 사용합니다. 이 데이터베이스 시스템은 관계형 모델을 기반으로 합니다. E. F. Codd는 관계형 데이터베이스 관리 시스템을 제안했습니다. RDBMS에는 SQL로 넘어가기 전에 알아야 할 특정 요소가 있습니다. 아래에서 각 측면에 대해 논의해 보겠습니다.

하나. 테이블:

RDBMS에서 데이터는 테이블 형태로 저장됩니다. 이 테이블을 개체라고 합니다. 라고도 한다 관계 . RDBMS의 테이블에는 행과 열이 있습니다. RDBMS의 각 테이블에는 특정 테이블 이름이 있습니다. 테이블은 가장 단순한 데이터 저장 형식으로 간주됩니다.

테이블 이름이 'Student'인 테이블을 생각해 보겠습니다. 이름, 나이, Student_ID 및 City와 같은 학생 정보를 Student 테이블에 저장합니다.

이름나이학생 아이디도시
스티브231092뉴욕
올리버241093천사들
로버트이십 일1094시카고
메리251095캘리포니아
제니퍼231096뉴욕
제임스221097워싱턴 DC
남자이십 일1098캘리포니아
남자241099시카고

위의 표는 학생들에 대한 정보를 제공합니다.

둘. 들:

다음 RDBMS 요소는 필드입니다. 필드는 테이블의 더 작은 엔터티입니다. 예를 들어 위의 표에서 'Student', Name, Age, Student_ID 및 City는 필드입니다. 따라서 테이블의 각 열은 특정 정보나 레코드를 저장하는 필드입니다.

삼. 열:

행을 레코드라고도 합니다. 레코드 또는 행에는 특정 엔터티에 대한 정보가 포함됩니다. 위의 'Student' 테이블에는 8개의 다른 행 또는 레코드가 있습니다. 즉, 위의 표는 8명의 다른 학생들의 데이터를 담고 있습니다. 단일 수평 엔터티는 행 또는 레코드입니다. 다음은 'Student' 테이블의 행 또는 레코드입니다.

|_+_|

4. 열:

우리는 행이 수평 엔티티임을 보았습니다. 행과 달리 열은 수직 엔티티입니다. 열에는 필드와 관련된 모든 데이터가 포함됩니다. '학생' 테이블에서 이름, 연령, 학생 ID 및 도시는 필드입니다. 따라서 '이름' 필드가 있는 열에는 학생의 이름이 포함됩니다. 이 열은 다음과 같이 표시됩니다.

|_+_|

5. 없는:

특정 필드에 데이터가 없거나 필드에 공백이 있는 경우 해당 값은 NULL 값입니다. NULL 값은 0과 같지 않습니다. 레코드를 생성하는 동안에는 공백으로 유지됩니다.

SQL 기초

구문, 쿼리 처리, 제약 조건, 명령 및 데이터베이스 정규화와 같은 이 부분의 모든 SQL 기본 사항을 배웁니다.

SQL 구문

SQL 쿼리에는 데이터베이스에서 데이터를 검색하기 위한 여러 요소가 포함됩니다. 다음은 쿼리와 관련된 구성 요소입니다.

    조항:

절은 쿼리의 선택적 부분입니다. 쿼리의 요소입니다. 예를 들어, UPDATE, SET, WHERE 등이 절입니다.

    표현:

쿼리의 식은 행과 열이 있는 테이블 형식의 데이터를 생성합니다. 행을 '튜플'이라고 하고 열을 '속성'이라고 합니다.

    술어:

술어는 3값 논리(True/False/Unknown)를 생성하는 조건입니다.

    쿼리:

쿼리는 조건을 사용하여 데이터베이스에서 필요한 데이터를 가져옵니다.

    진술:

명령문은 프로그램, 트랜잭션, 연결 등의 흐름을 제어합니다. 여기에는 세미콜론 ';.'이 포함될 수도 있습니다.

    중요하지 않은 공백:

원하지 않는 공백은 SQL 쿼리에서 고려되지 않으므로 더 이해하기 쉽고 읽기 쉽습니다.

여기서 우리는 세 가지 절인 update, set, where를 사용하는 작은 예를 볼 것입니다.

  1. 업데이트 나이;

위의 쿼리는 age 속성을 업데이트합니다.

  1. SET 나이 = 나이+2;

위의 표현은 'age+2'라는 표현으로 나이를 2씩 증가시키며 그 결과를 나이에 대입한다.

  1. WHERE emp_name = '존';

여기서 'emp_name = 'John'은 술어이고 'John'은 표현식입니다.

쿼리 처리

SQL의 쿼리는 컴퓨터가 이해할 수 있는 낮은 수준의 표현식으로 변환하도록 처리됩니다. 모든 쿼리 처리에는 파서, 번역기, 진화 엔진, 데이터베이스 등과 같은 여러 구성 요소가 포함됩니다. 상위 수준 쿼리는 파일 시스템의 물리적 수준과 호환되는 표현식으로 변환됩니다. 다음은 쿼리가 물리적 수준에서 구현되도록 처리되고 최적화되는 방법을 보여주는 다이어그램입니다.

img 617dd1be21877

첫째, 높은 수준의 쿼리가 이해할 수 있는 식, 즉 대수식으로 변환됩니다. 이 변환 동안 쿼리는 위의 다이어그램과 같이 여러 단계를 거칩니다. 첫 번째 단계에서 파서는 쿼리의 구문을 확인하고 관련된 관계와 속성이 올바른지 관찰합니다. 변환기는 쿼리를 최적화 프로그램에 제공되는 내부 표현으로 변환합니다.

쿼리 최적화 프로그램은 쿼리의 내부 표현을 실행 가능한 표현식으로 변환합니다. 이러한 표현식은 DBMS 엔진 또는 쿼리 평가 엔진에 의해 실행됩니다. DBMS 엔진의 결과는 데이터베이스의 물리적 수준에 제공됩니다.

SQL 절

SQL의 절은 쿼리의 구성 요소입니다. SQL에는 여러 절이 있습니다. 아래의 구문을 통해 각 절을 자세히 살펴보겠습니다.

    선택 절:

지정된 열이나 행에서 데이터를 검색하려면 SELECT 절을 사용할 수 있습니다. 또한 여러 테이블 또는 뷰의 행에서 데이터를 검색할 수도 있습니다. select 문의 결과 집합도 테이블입니다.

통사론:

|_+_|
    DISTINCT 절:

DISTINCT 절은 SELECT 절과 함께 사용됩니다. 고유하고 다른 값을 반환합니다. 결과 집합에 중복 값이 ​​없습니다.

통사론:

|_+_|
    WHERE 절:

Where 절은 데이터 검색 조건을 지정하는 데 사용됩니다. 조건에 지정된 행만 표시합니다.

통사론:

|_+_|
    GROUP BY 절:

이 절은 유사한 값을 가진 행을 하나의 결과 집합으로 그룹화합니다. GROUP BY 절은 SUM, MAX, MIN, COUNT 및 AVG와 같은 함수가 있는 쿼리에서 항상 사용됩니다.

통사론:

|_+_|
    주문:

결과를 오름차순 또는 내림차순으로 정렬해야 하는 경우 ORDER BY 문을 사용할 수 있습니다. 기본적으로 이 문은 결과를 오름차순으로 정렬합니다. 결과 집합을 내림차순으로 정렬하려면 쿼리에 'desc'를 지정할 수 있습니다.

통사론:

|_+_|
    가지고:

HAVING 키워드의 주요 목적은 SUM, MIN, MAX, COUNT 및 AVG와 같은 집계 함수에만 사용된다는 것입니다. WHERE 키워드는 집계 함수와 호환되지 않습니다.

통사론:

|_+_|

SQL의 명령

SQL 명령은 DDL, DML, DQL, TCL 및 DCL의 5가지 유형으로 분류됩니다. 아래에서 이 세 가지 유형에 대해 자세히 알아보겠습니다.

    DDL:

데이터 정의 언어는 생성, 변경, 자르기 및 삭제의 네 가지 SQL 명령으로 구성됩니다. 이 명령은 테이블 구조를 변경하는 데 사용됩니다. 그것들은 모두 자동 커밋됩니다. 즉, 테이블 구조의 변경 사항은 영구적으로 저장됩니다.

create table 문은 새 테이블, 테이블 보기 또는 데이터베이스의 다른 개체를 만드는 데 사용됩니다.

통사론:

|_+_|

예시:

|_+_|

또 다른 명령인 alter는 기존 보기나 테이블을 수정하거나 변경하는 데 사용됩니다. alter 명령을 사용하여 테이블에 새 열을 추가하거나 특정 테이블의 기존 열을 변경할 수 있습니다.

통사론:

|_+_|

예시:

|_+_|

truncate DDL 명령은 테이블에서 모든 행을 삭제합니다. 테이블은 삭제되지 않습니다.

통사론:

|_+_|

예시:

|_+_|

마지막으로 drop 명령은 테이블이나 뷰를 삭제합니다. 테이블 구조와 테이블에 저장된 데이터를 완전히 삭제합니다.

통사론:

|_+_|

예시:

|_+_|
    DML:

데이터 조작 언어는 삽입, 삭제 및 업데이트의 세 가지 명령으로 구성됩니다. 이 명령은 테이블 데이터를 수정합니다. DDL 명령과 달리 DML 명령은 자동 커밋되지 않습니다. 세 가지 명령 중 하나를 사용할 때 변경 사항을 영구적으로 저장하려면 'commit' 키워드를 사용해야 합니다.

INSERT 명령은 데이터를 테이블에 삽입합니다. 새로운 데이터가 테이블에 추가될 때마다 튜플 수가 증가합니다.

통사론:

|_+_|

또는

|_+_|

예시:

|_+_|

다음은 업데이트 문입니다. 이 문은 단일 속성의 기존 값을 업데이트하거나 수정합니다.

통사론:

|_+_|

예시:

|_+_|

마지막으로 delete 문은 테이블에서 특정 행을 삭제합니다.

통사론:

|_+_|

예시:

|_+_|
    DCL:

SQL에서 우리는 데이터베이스에서 데이터를 조작, 액세스 또는 삭제하기 위해 사람들에게 일부 권한이나 권한을 할당합니다. GRANT 및 REVOKE 명령을 사용하여 권한을 부여하고 회수할 수 있습니다.

GRANT 문은 데이터베이스 액세스 권한을 부여하는 데 사용됩니다. 사용자는 권한이 부여된 경우 데이터베이스에 액세스할 수 있습니다.

통사론:

|_+_|

REVOKE 문은 GRANT 문과 반대입니다. 사용자의 모든 권한을 데이터베이스에 액세스 .

|_+_|
    DQL:

데이터 쿼리 언어에는 SELECT라는 하나의 명령만 있습니다. 이 명령은 테이블에서 특정 속성을 선택하는 데 사용됩니다. 지정된 WHERE 조건에 따라 속성을 선택합니다.

통사론:

|_+_|

예시:

|_+_|
    TCL:

트랜잭션 제어 언어에는 커밋, 롤백 및 저장점의 세 가지 명령이 포함됩니다. TCL 문은 DML 명령에만 사용할 수 있습니다. 변경 사항을 데이터베이스에 영구적으로 자동으로 저장하므로 DDL 문과 함께 사용할 수 없습니다.

commit 문은 데이터베이스의 테이블에 대한 모든 변경 사항을 영구적으로 저장합니다.

통사론:

|_+_|

예시:

|_+_|

데이터베이스에 커밋되지 않은 이전 트랜잭션을 실행 취소하려는 경우 롤백 문을 실행할 수 있습니다.

통사론:

|_+_|

예시:

|_+_|

마지막으로 SAVEPOINT 문은 트랜잭션의 효율적인 롤백을 수행합니다. 전체 트랜잭션을 롤백할 필요 없이 특정 트랜잭션을 원하는 지점으로 롤백합니다.

통사론:

|_+_|

데이터 무결성

데이터베이스의 데이터 무결성은 정확성과 중복성을 의미합니다. 데이터베이스에 있는 데이터는 정확하고 반복되지 않아야 합니다. 이러한 목적을 위해 제약 조건을 사용합니다. 일반적으로 제약은 제한 또는 제한을 의미합니다. SQL에서 제약 조건은 테이블의 열에 대한 규정 또는 규칙을 의미합니다. 즉, 제약 조건은 테이블에 추가해야 하는 데이터를 지정합니다. 데이터 열에 제약 조건을 적용하면 신뢰할 수 있음 데이터의 정확성.

SQL

위의 다이어그램은 엔티티 무결성, 참조 무결성 및 도메인 무결성의 세 가지 범주로 그룹화된 다양한 제약 조건을 보여줍니다.

테이블의 열에 제약 조건을 적용하거나 테이블에 직접 제약 조건을 적용할 수 있습니다. 열에 제약 조건을 적용하려는 경우 이를 열 수준 제약 조건이라고 합니다. 열 수준 제약 조건을 하나 또는 두 개의 열에 적용할 수 있습니다. 그리고 전체 테이블에 제약 조건을 사용하는 것을 테이블 수준 제약 조건이라고 합니다. 테이블 수준 제약 조건을 적용하면 테이블의 모든 열에 적용됩니다.

이제 위의 세 가지 데이터 무결성 범주를 모두 알려 주십시오.

    엔티티 무결성:

엔터티 무결성에서 테이블의 각 튜플은 아래 세 가지 제약 조건을 사용하여 고유하게 식별됩니다.

  • NOT NULL 제약 조건: 테이블이나 열에 NULL 값이 없도록 합니다.
  • UNIQUE 제약 조건: 이 규칙은 테이블의 열이 고유한 값을 갖도록 지정합니다. 열에 값이 반복되지 않습니다.
  • 기본 키: 이 제약 조건을 테이블의 열에 적용하면 해당 열은 테이블의 각 행 또는 튜플을 고유하게 식별합니다.
    참조 무결성:

데이터베이스에서 두 개의 서로 다른 테이블을 연관시키려면 참조 무결성을 사용할 수 있습니다.

  • FOREIGN 키: 다른 테이블의 행이나 튜플을 고유하게 식별합니다. 한 테이블의 기본 키는 다른 테이블의 속성으로 있어야 합니다. 이러한 속성을 FOREIGN 키라고 합니다.
    도메인 무결성:

도메인 무결성은 테이블의 모든 값이 정의된 규칙을 따르도록 하는 데 사용됩니다.

  • DEFAULT 제약 조건: 특정 값이 명시되지 않은 경우 컬럼에 기본값을 할당합니다.
  • CHECK 제약 조건: 모든 열 값이 지정된 조건을 만족하는지 확인하려는 경우 CHECK 제약 조건을 적용할 수 있습니다.

INDEX: 데이터베이스의 데이터를 가져오거나 생성하려는 경우 INDEX를 사용할 수 있습니다.

데이터베이스 정규화

데이터베이스 정규화는 데이터베이스의 데이터를 구조화된 형식으로 구성하는 프로세스입니다. 에는 다양한 일반 형태가 있습니다. 데이터베이스 정규화 , 중복을 제거하고 데이터 무결성을 향상하는 데 도움이 됩니다. E. F. Codd는 데이터베이스 정규화 개념을 제안했습니다. 데이터베이스 정규화에는 두 가지 주요 이유가 있습니다.

  • 데이터베이스에서 반복되는 데이터를 제거합니다.
  • 모든 데이터 종속성이 정확하고 타당한지 확인합니다.

중복 데이터를 제거하면 디스크 공간을 확보하는 데 도움이 됩니다. 데이터베이스 정규화를 사용하면 좋은 데이터베이스를 만들고 논리적으로 데이터를 저장할 수 있습니다. 데이터베이스 정규화에는 다양한 정규 형식이 있으므로 잘 구조화된 데이터베이스를 만드는 데 도움이 됩니다. 이러한 일반 형식은 다음과 같습니다.

  • 첫 번째 정규형
  • 제2정규형
  • 제3정규형
  • 보이스 코드 노멀 폼
  • 네 번째 정규형
  • 제5정규형

SQL 데이터 유형

SQL 데이터 유형은 사용 중인 데이터 유형을 정의합니다. SQL에는 숫자, 날짜 및 시간, 문자 및 문자열, 유니코드 문자, 이진 및 기타의 6가지 데이터 유형이 있습니다. 이러한 데이터 유형은 데이터베이스에서 테이블을 생성하는 동안 사용됩니다. 각 열은 데이터 유형에 할당되며 지정된 유형의 데이터만 포함해야 합니다.

모든 관계형 데이터베이스는 모든 SQL 데이터 유형을 지원하지 않습니다. Oracle 관계형 데이터베이스는 DATETIME 데이터 유형을 지원하지 않으며 MySQL 데이터베이스는 CLOB 데이터 유형을 지원하지 않습니다. 별도의 추가 데이터 유형이 있는 특정 데이터베이스가 있습니다. Microsoft SQL Server에서 다른 데이터 유형은 'money'와 'smallmoney'입니다. 이제 아래에서 각 데이터 유형에 대해 설명하겠습니다.

하나. 숫자 데이터 유형

SQL에는 11가지 다른 숫자 데이터 유형이 있으며 두 그룹으로 분류됩니다. 첫 번째 그룹에는 정확한 숫자 데이터 유형이 있고 두 번째 그룹에는 대략적인 숫자 데이터 유형이 있습니다. 정확한 숫자 데이터 유형에는 bigint, int, smallint, tinyint, decimal, money, numeric, smallmoney 및 bit가 포함됩니다. 그리고 대략적인 숫자 데이터 유형에는 float 및 real이 포함됩니다. 아래 표는 정확한 데이터 유형과 대략적인 데이터 유형의 범위 값을 보여줍니다.

정확한 데이터 유형

데이터 형식 에서 에게 저장
조금0하나
비긴트-9,223,372,036,854,775,8089,223,372,036,854,775,8078바이트
작은02551바이트
소액-214,748.3648+214.748.36474 바이트
-922,337,203,685,477.5808+922,337,203,685,477.58078바이트
스몰 인트-32,76832,7672바이트
정수-2,147,483,6482,147,483,6474 바이트
숫자-10^38 +110^38-15 – 17바이트
소수-10^38 +110^38-15 – 17바이트

대략적인 데이터 유형

데이터 형식 에서 에게 저장
진짜-3.40E + 383.40E + 384 또는 8바이트
뜨다-1.79E + 3081.79E + 3084 바이트

둘. 날짜와 시간

날짜 및 시간 데이터 유형에는 datetime, date, time 및 smalldatetime의 네 가지 데이터 유형이 있습니다. 이제 각 날짜 및 시간 데이터 유형의 범위 값을 알려줍니다.

데이터 형식 에서 에게 저장
작은 날짜 시간1900년 1월 1일2079년 6월 6일4 바이트
날짜 시간1753년 1월 1일9999년 12월 31일8바이트
날짜/시간20001년 1월 1일9999년 12월 31일6 – 8바이트
데이트이 데이터 유형은 1991년 6월 30일 형식으로 날짜를 저장합니다.3바이트
시각이 데이터 유형은 오후 12:30 형식으로 시간을 저장합니다.3 – 5바이트

삼. 문자 및 문자열

문자 및 문자열 데이터 유형은 알파벳과 단어를 삽입하는 데 사용됩니다. 다음과 같이 4개의 고유한 문자 및 문자열 데이터 유형이 있습니다.

char 데이터 유형은 고정 길이이며 최대 크기 제한은 8,000자입니다.

    바르차르

이 데이터 유형은 가변 길이이며 최대 크기 제한은 8,000자입니다.

    텍스트

텍스트 데이터 유형은 가변 길이를 가지며 최대 크기 제한은 최대 2,147,483,647자입니다.

    varchar(최대)

이 데이터 유형도 가변 길이이며 최대 크기 제한은 2E + 31입니다.

위의 모든 데이터 유형은 유니코드가 아닙니다.

4. 바이너리:

SQL에는 바이너리, varbinary, varbinary(max) 및 이미지의 네 가지 바이너리 데이터 형식이 있습니다. 다음은 이러한 각 데이터 유형에 대한 간략한 설명입니다.

    바이너리

이 데이터 유형은 최대 길이 제한이 8,000바이트인 고정 길이입니다.

    varbinary

varbinary는 길이가 가변적인 또 다른 이진 데이터 유형입니다. 최대 크기 제한은 8,000바이트입니다.

    변수 바이너리(최대)

varbinary와 마찬가지로 varbinary(max)도 가변 길이 데이터 유형이며 최대 크기 제한은 2E + 31바이트입니다. SQL Server 2005에서만 사용됩니다.

    영상

image는 또한 최대 제한이 2,147,483,647바이트인 가변 길이 이진 데이터입니다.

5. 유니코드 데이터 유형

또한 이 그룹에는 nchar, nvarchar, nvarchar(max) 및 ntext의 4가지 고유한 데이터 형식이 있습니다.

    엔차

nchar는 최대 길이가 4,000바이트인 고정 길이 유니코드 데이터 유형입니다.

    nvarchar

nchar와 달리 nvarchar는 최대 크기 제한이 4,000바이트인 가변 길이 유니코드입니다.

    nvarchar(최대)

nvarchar(max)는 SQL Server 2005 데이터베이스와만 호환됩니다. 최대 크기 제한은 2E + 31이며 길이는 가변적입니다.

    엔텍스트

ntext는 최대 길이가 1,073,741,823바이트인 가변 길이 유니코드입니다.

6. 여러 가지 잡다한

다음은 기타 그룹에 속하는 데이터 유형입니다.

    sql_variant: timestamp, text 및 ntext를 제외하고 SQL Server 데이터베이스에서 지원하는 모든 데이터 형식의 값을 보유합니다.고유식별자: 이 데이터 유형은 전역적으로 고유한 식별자인 GUID를 보유합니다.커서: 커서 객체를 참조합니다.타임스탬프: 데이터베이스의 임의의 행이 수정될 때마다 변경되는 고유 번호입니다.XML: SQL Server 2005에서 지원하며 xml 데이터를 보유합니다.테이블: 향후에 사용되는 결과 집합을 포함합니다.

SQL 연산자

연산자는 예약어 또는 문자입니다. 특정 작업을 수행하기 위한 것입니다. 일반적으로 연산자는 WHERE 절에서 조건을 지정하는 데 사용됩니다. 연산자는 산술, 논리 또는 비교가 될 수 있습니다. 또한 연산자를 사용하여 동일한 명령문에서 두 조건을 결합할 수 있습니다. SQL에는 산술, 비교 및 ​​논리 연산자의 세 가지 연산자 유형이 있습니다.

하나. 산술 연산자

산술 연산자는 더하기, 빼기, 곱하기, 모듈러스 및 나누기와 같은 산술 연산을 수행할 수 있습니다. 'a, 값 15'를 하나의 변수로, 'b, 값 30'으로 다른 변수로 가정해 보겠습니다. 아래에서 각 산술 연산자의 예를 살펴보겠습니다.

운영자 설명 예시
+'+' 연산자는 두 변수의 덧셈을 수행합니다.a+b=15+30=45
'-' 연산자는 왼쪽 변수에서 오른쪽 변수를 뺍니다.a-b =15-30=-15
%'%'는 왼쪽 변수를 오른쪽 변수로 나눈 결과에 대한 나머지를 생성합니다.b/a=30%15=0
/'/'는 나눗셈을 수행합니다. 왼쪽 변수 값을 오른쪽 변수 값으로 나눕니다.b/a =30/15=2
*'*'는 두 변수를 곱합니다.a*b=15*30=450

둘. 논리 연산자

여기에서는 SQL에서 사용되는 모든 논리 연산자에 대한 간략한 설명을 볼 수 있습니다.

  • AND: AND는 하나의 SQL 문에서 여러 조건을 결합하는 데 사용됩니다.
  • BETWEEN: 이 연산자는 값 범위를 지정하는 데 사용됩니다. BETWEEN 키워드를 사용하여 최소값과 최대값을 설정할 수 있습니다.
  • IN: IN 키워드를 적용하면 단일 값을 지정된 목록에 있는 다른 모든 리터럴 값과 비교합니다.
  • NOT: 이 연산자는 EXISTS, BETWEEN과 같은 다른 논리 연산자와 함께 사용됩니다. 예를 들어 NOT EXISTS, NOT BETWEEN, NOT IN 등을 적용할 수 있습니다.
  • IS NULL: 어떤 값과 NULL 값을 비교하려면 IS NULL을 사용할 수 있습니다.
  • ALL: 이 연산자는 한 세트의 값을 다른 세트의 다른 모든 값과 비교하는 데 사용됩니다.
  • ANY: 값을 목록의 실제 값과 비교합니다.
  • EXISTS: 테이블에 특정 행이 있는지 확인합니다.
  • LIKE: 비슷한 값과 비교하고 싶을 때 LIKE 키워드를 사용합니다.
  • OR: AND와 마찬가지로 OR도 WHERE 절의 여러 조건을 결합합니다.
  • UNIQUE: 이 키워드는 테이블에 있는 각 행의 고유성을 확인합니다.

삼. 비교 연산자

비교 연산자를 확인하기 위해 두 개의 변수와 b를 사용합니다. 'a'를 15라고 하면 'b'를 20이라고 합시다.

운영자 설명 예시
두 변수의 값이 같은지 여부를 확인합니다. 같지 않으면 true를 반환하고 그렇지 않으면 true를 반환합니다.(ab) =(1530)=참
==와 마찬가지로 == 는 두 변수의 값이 동일한지 확인합니다. 값이 같으면 true를 반환합니다.(a==b)=(15==30)=사실이 아님
!='!='는 '.'와 유사합니다. 두 변수의 값이 같지 않은 경우에도 true를 생성합니다.(ab) =(1530)=참
>왼쪽 변수의 값이 오른쪽 변수보다 크면 '>'는 true를 반환합니다.(a>b)=(15>30)= 사실이 아님
!>'!>'는 '>' 연산자와 반대입니다. 왼쪽 변수 값이 오른쪽 변수 값보다 크지 않으면 true를 반환합니다.(a!>b)=(15!>30)= 참
>=왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 조건이 참이 됩니다.(a=30)= 사실이 아님
<왼쪽 변수 값이 오른쪽 변수 값보다 작으면 '<’ returns true. (에게
!<'!<’ is opposite to the ‘<’ operator. It returns true if the left variable value is not less than the right variable value. (에게
<=왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 조건이 참이 됩니다.(에게<=b)=(15<=30)= true

SQL 표현식

SQL에서 표현식은 연산자, 하나 이상의 값 및 SQL 함수로 구성됩니다. 항상 WHERE 절에 지정됩니다. 다음은 데이터베이스 쿼리에서 표현식의 사용을 설명하는 구문입니다.

통사론:

|_+_|

SQL에서 사용되는 표현식에는 부울(boolean), 숫자(numeric), 날짜(date)의 세 가지 종류가 있습니다.

하나. 부울 표현식

부울 표현식은 단일 값과 일치하는 데이터를 검색합니다. EXPRESSION에 지정된 값과 일치하는 행을 검색합니다.

통사론:

|_+_|

이전에 'Student'라는 테이블 이름을 가진 테이블을 만들었습니다. SELECT 문을 사용하여 데이터를 검색합니다.

|_+_|

산출:

|_+_|

이제 Student_ID = 1098 값과 일치하는 데이터를 가져옵니다. 다음과 같이 하나의 행만 표시됩니다.

|_+_|

결과:

|_+_|

둘. 숫자 표현

숫자 표현식은 수학 연산입니다. 다음과 같이 표현됩니다.

통사론:

|_+_|

숫자 표현식을 사용하여 모든 수학 연산을 수행할 수 있습니다. 다음은 숫자 표현식을 사용한 수학 연산을 보여주는 한 가지 예입니다.

|_+_|

산출:

|_+_|

avg(), max(), count(), min() 및 sum()과 같은 집계 함수를 숫자 표현식에 포함할 수도 있습니다. 이제 '학생' 테이블의 레코드 또는 행 수를 계산합니다.

|_+_|

산출:

|_+_|

삼. 날짜 표현식

날짜 표현식은 시스템의 현재 날짜와 시간을 제공하는 SQL에서 가장 바람직한 표현식입니다. 시스템의 현재 날짜와 시간을 표시하는 쿼리를 살펴보겠습니다.

|_+_|

산출:

|_+_|

SQL에서 데이터베이스 문 생성, 삭제 및 사용

하나. 데이터베이스 생성

테이블을 생성하기 전에 먼저 데이터베이스를 생성해야 합니다. 먼저 작업하려는 데이터베이스를 만듭니다. 이제 데이터베이스를 생성하는 방법을 살펴보겠습니다.

통사론:

|_+_|

데이터베이스 이름은 고유하고 달라야 합니다. 전에 사용해서는 안됩니다.

이제 이름이 인 데이터베이스를 생성해 보겠습니다.

|_+_|

데이터베이스를 생성하려면 관리자 권한이 있어야 합니다. 'SHOW DATABASES' 명령을 사용하여 생성된 모든 데이터베이스를 볼 수 있습니다. 이전에 school_info, softwaretesttips, test, company 및 origin과 같은 여러 데이터베이스를 만들었습니다.

|_+_|

결과:

|_+_|

위의 출력은 생성된 데이터베이스 목록을 표시했습니다.

둘. 데이터베이스 삭제

위의 데이터베이스 중 하나를 삭제하려고 한다고 가정합니다. 이를 위해 'DROP DATABASE' 문을 사용합니다.

통사론:

|_+_|

SQL 스키마에서 '테스트' 데이터베이스를 삭제하려고 한다고 가정합니다. 데이터베이스를 삭제하면 그 안에 있는 모든 데이터가 삭제됩니다. 데이터베이스를 삭제하려면 관리자 권한도 있어야 합니다.

|_+_|

'테스트' 데이터베이스를 삭제했습니다. 이제 스키마에 있는 데이터베이스 목록을 살펴보겠습니다.

|_+_|

산출:

|_+_|

삼. 데이터베이스 사용 및 선택

우리 스키마에는 여러 데이터베이스가 있습니다. 하나의 특정 데이터베이스로만 작업하기를 원한다고 가정합니다. 모든 데이터베이스에서 하나를 선택해야 합니다. 하나의 데이터베이스를 선택한 후 해당 데이터베이스에서 모든 DDL 작업을 수행할 수 있습니다. 데이터베이스를 선택하기 위한 USE 문이 있습니다.

통사론:

|_+_|

모든 데이터베이스 작업을 수행할 데이터베이스 목록에서 하나의 데이터베이스 'softwaretesttips'를 선택합니다.

|_+_|

테이블 또는 보기, 생성한 모든 것이 'softwaretesttips' 데이터베이스에 표시됩니다.

이것은 SQL에 대한 모든 빠른 자습서였습니다. 이제 'softwaretesttips' 데이터베이스에 하나의 테이블을 만들고 해당 테이블에서 모든 SQL 작업을 수행합니다.

테이블 생성

테이블 생성 구문과 예제를 보았습니다. 이 진술은 다음과 같이 작성됩니다.

|_+_|

create table 문에서 테이블 이름, 속성 및 데이터 유형을 지정합니다. create table 문을 사용하여 속성에 제약 조건을 적용할 수도 있습니다. 테이블 이름이 고유하고 이전에 사용되지 않았는지 확인하십시오.

이제 '테이블 생성' 문을 사용하여 테이블을 생성합니다. 직원의 데이터를 저장하는 'EMPLOYEE' 테이블을 생성해 보겠습니다. 이 테이블에 대해 Emp_ID, Name, Age, City 및 Salary의 5가지 속성을 생성합니다.

|_+_|

EMP_ID, NAME, AGE, CITY 및 SALARY를 속성으로 사용하여 'EMPLOYEE' 테이블을 생성했습니다. 'EMPLOYEE' 테이블의 기본 키는 NULL이 아니어야 하는 EMP_ID입니다. 또한 NAME 및 AGE 속성도 NULL이 아니어야 합니다.

위의 create table 문을 작성하면 화면에 'table created successfully'라는 메시지가 표시됩니다. 테이블 또는 테이블 스키마의 속성을 보려면 아래 명령을 입력하십시오.

|_+_|

산출:

|_+_|

DROP 문을 사용하여 'EMPLOYEE' 테이블을 삭제할 수 있습니다.

|_+_|


테이블을 삭제한 후 데이터베이스에서 삭제됩니다. 'DESC' 명령을 실행하려고 하면 다음과 같은 오류가 발생합니다.

|_+_|

테이블에 값 삽입

특정 데이터베이스에 테이블을 생성하고 데이터베이스에서 삭제하는 방법을 배웠습니다. 이제 테이블에 데이터를 삽입하는 데 중점을 둘 것입니다. 이 기사의 초기 섹션에서 insert 문을 작성하는 방법을 보았습니다. 여기에서는 예제를 사용하여 insert 문을 작성하는 방법을 배웁니다.

위의 'EMPLOYEE' 테이블에서 insert 키워드를 사용하여 직원의 데이터를 삽입합니다. 테이블에 데이터를 삽입하는 방법에는 두 가지가 있습니다.

|_+_|

INSERT 문을 작성하는 또 다른 가장 간단한 형식은 다음과 같습니다.

|_+_|

첫 번째 형식에서는 열과 값을 지정했습니다. 두 번째 형식의 값만 지정했습니다. 두 번째 형식을 사용하는 동안 테이블 생성 중에 속성을 지정한 대로 올바른 순서로 값을 삽입해야 합니다.

이제 EMPLOYEE 테이블에 직원의 데이터를 삽입해 보겠습니다.

|_+_|

첫 번째 형식을 사용하여 6명의 직원 데이터를 삽입했습니다. 두 번째 형식을 사용하여 직원의 데이터를 삽입해 보겠습니다.

|_+_|

이제 EMPLOYEE 테이블에는 7개의 레코드 또는 행이 있습니다. EMPLOYEE 테이블의 데이터를 표시하기 위해 SELECT 문을 사용합니다. 이제 SELECT 문에 집중하겠습니다.

SELECT 문

SELECT 문은 특정 테이블에서 데이터를 검색하는 데 사용됩니다. SELECT 문을 사용하여 데이터를 가져오면 테이블 형식으로 데이터를 반환합니다. 앞에서 SELECT 문을 작성하는 방법에 대해 알아보았습니다.

|_+_|

위의 명령문은 지정된 테이블의 column1과 column2만 표시합니다. 특정 테이블의 모든 데이터를 보여주고 싶다면 모든 컬럼을 지정하는 대신 '*'를 사용한다.

|_+_|

EMPLOYEE 테이블의 모든 데이터를 표시합니다.

|_+_|

산출:

|_+_|

직원의 이름과 ID만 검색한다고 가정합니다. SELECT 문에서 EMP_ID 및 NAME을 지정할 수 있습니다.

|_+_|

산출:

|_+_|

WHERE 절

WHERE 절은 데이터를 검색하기 위한 조건을 정의하는 데 사용됩니다. 또한 두 개의 서로 다른 테이블을 결합하는 데 사용됩니다. WHERE 절에 특정 조건을 적용하면 조건이 true인 경우에만 데이터를 검색합니다. WHERE 키워드는 사용자가 특정 정보를 필요로 할 때 일반적으로 사용됩니다. 이 키워드는 DELETE 및 UPDATE 문에서 사용됩니다.

|_+_|

이 조건에서 논리 및 비교 연산자를 사용할 수 있습니다. EMPLOYEE 테이블을 고려하십시오. 이제 급여가 40,000 이상인 모든 직원 ID, 이름 및 급여를 검색해 보겠습니다. 따라서 WHERE 절에서 조건을 급여 >= 40,000으로 지정합니다.

|_+_|

산출:

|_+_|

결과 집합에는 급여가 40,000 이상인 모든 직원 ID, 이름 및 급여가 포함됩니다.

WHERE 문의 조건에 문자열이 포함된 경우 작은따옴표(' ')로 작성합니다. 이름이 Mary인 직원의 이름, ID 및 나이를 검색해 보겠습니다.

|_+_|

산출:

|_+_|

AND 및 OR 연산자

AND 및 OR 연산자는 둘 이상의 다른 조건을 결합합니다. 테이블에서 정확하고 간결한 데이터가 필요한 경우 AND 또는 OR 연산자를 사용하여 여러 조건을 조인할 수 있습니다.

AND 연산자를 사용하여 조건을 결합하면 모든 조건이 충족되는 경우에만 결과를 반환합니다. 조건 중 하나라도 충족되면 데이터를 반환하지 않습니다. WHERE 키워드에 연산자가 사용된다는 것을 알고 있습니다. 다음과 같이 작성됩니다.

|_+_|

여러 조건을 지정할 수 있습니다. EMPLOYEE 테이블을 고려하십시오. 이제 나이가 40세 이상이고 급여가 35,000 이상인 직원의 이름, ID, 나이 및 급여를 검색해 보겠습니다.

|_+_|

산출:

|_+_|

두 조건이 모두 충족되면 직원 데이터가 검색됩니다.

OR 연산자는 또한 둘 이상의 조건을 결합합니다. AND 키워드와 달리 OR 절을 사용하여 WHERE 키워드에 지정된 모든 조건이 참일 필요는 없습니다. 단일 조건이 true인 경우에도 결과 집합에 데이터를 씁니다. 아래와 같이 OR 키워드를 사용하여 여러 조건을 지정할 수 있습니다.

|_+_|

EMPLOYEE 테이블에서 도시가 California이거나 급여가 30,000인 이름, 도시 및 급여를 검색합니다.

|_+_|

산출:

|_+_|

위의 결과 집합에는 캘리포니아에 거주하거나 급여가 30,000인 모든 직원 이름이 포함됩니다.

HAVING 절

더 구체적인 데이터로 결과를 필터링하려면 HAVING 절이 사용됩니다. 데이터 검색 조건을 지정하는 HAVING 키워드에는 집계 함수만 적용할 수 있습니다. HAVING 키워드를 작성하는 형식은 다음과 같습니다.

|_+_|

테이블 이름이 EMPLOYEE2인 테이블을 사용합니다. 표는 다음과 같습니다.

|_+_| |_+_|

산출:

|_+_|

집계 함수

의 집계 함수 데이터베이스 관리 시스템은 레코드에서 여러 데이터를 가져와 계산 후 단일 값을 반환합니다. 합계(), avg(), count(), min() 및 max()의 5가지 집계 함수가 있습니다. 이 모든 함수는 count() 함수를 제외하고 숫자 데이터에만 적용할 수 있습니다. 아래에서 각 기능에 대해 자세히 살펴보겠습니다. 예를 들어 집계 함수를 이해하기 위해 EMPLOYEE 테이블을 사용합니다.

|_+_|
    합집합():sum() 함수는 열에 있는 모든 숫자의 합계를 반환합니다. 위의 표에서는 sum() 함수를 사용하여 모든 직원의 급여를 합산합니다. 여러 데이터를 사용하고 단일 값을 반환합니다.
|_+_|

결과:

|_+_|
    평균():avg() 함수도 단일 값을 반환합니다. 열에 있는 모든 데이터 수의 합을 계산하고 이를 총 열 수로 나눕니다. avg() 함수는 모든 숫자 데이터의 평균을 계산합니다.
|_+_|

결과:

|_+_|
    최대():데이터 세트에서 최대값을 찾아야 할 때 특정 열에 max() 함수를 적용할 수 있습니다. 또한 결과 집합에서 단일 값을 반환합니다.
|_+_|

산출:

|_+_|
    최소():min() 함수는 max() 함수와 반대입니다. 특정 열의 최소값을 반환합니다.
|_+_|

산출:

|_+_|
    세다():Count()는 테이블의 레코드 수를 계산하는 데 사용됩니다. 테이블의 모든 데이터 유형에 count() 함수를 적용할 수 있습니다. 또한 NULL 및 중복 데이터도 고려합니다. 중복 데이터를 제거하려면 DISTINCT 키워드를 추가해야 합니다.
|_+_|

산출:

|_+_|

count() 함수는 EMPLOYEE 테이블의 유형 수를 반환합니다.

|_+_|

산출:

|_+_|

여기에서는 CITY 열의 count() 함수와 함께 DISTINCT 키워드를 사용했습니다. 고유한 도시 이름의 개수를 반환했습니다. count() 함수를 사용하여 WHERE 구문을 추가할 수도 있습니다.

|_+_|

산출:

|_+_|

40대 이상의 직원들이 많이 있습니다.

키워드 업데이트

테이블에 있는 데이터를 수정하려는 경우 업데이트 키워드를 사용할 수 있습니다. update 키워드를 사용하여 WHERE 키워드를 추가할 수도 있습니다. WHERE 키워드를 사용하여 수정하려는 레코드만 업데이트할 수 있습니다. WHERE 키워드를 추가하지 않으면 모든 레코드가 업데이트됩니다. 다음과 같은 방법으로 업데이트 쿼리를 작성할 수 있습니다.

|_+_|

둘 이상의 레코드에 변경 사항을 적용해야 하는 경우 AND 및 OR 연산자를 적용할 수 있습니다. EMPLOYEE 테이블을 사용하십시오. ID가 405인 직원의 나이를 업데이트합니다. 나이를 37에서 40으로 설정합니다.

|_+_|

ID가 405인 직원의 연령을 업데이트하면 이 변경 사항이 테이블에 반영됩니다. EMPLOYEE 테이블이 수정된 후 어떻게 보일지 알게 될 것입니다.

산출:

|_+_|

이제 ID가 407인 직원의 급여와 연령을 변경하려고 한다고 가정합니다. 급여를 55,000으로 설정하고 연령을 35로 설정합니다.

|_+_|

산출:

|_+_|

위의 표에는 업데이트된 데이터가 포함되어 있습니다.

쿼리 삭제

테이블에서 레코드를 삭제하려면 delete 키워드가 사용됩니다. 특정 튜플이나 행을 삭제하려면 조건을 지정하는 WHERE 키워드를 추가합니다. AND 또는 OR 연산자를 사용하여 여러 조건을 결합합니다. 아래와 같이 삭제 쿼리를 작성할 수 있습니다.

|_+_|

예를 들어, EMPLOYEE 테이블을 사용하십시오. 사원 ID가 405인 사원 기록을 삭제합니다.

|_+_|

위 쿼리를 실행한 후 직원 ID가 405인 직원 레코드는 테이블에 포함되지 않습니다.

산출:

|_+_|

테이블에서 모든 행을 삭제하려면 아래 쿼리를 사용하십시오.

|_+_|

이 쿼리를 실행하면 테이블 스키마가 아닌 데이터만 삭제됩니다.

ORDER BY 절

ORDER BY 구문을 사용하여 열 데이터를 오름차순 또는 내림차순으로 정렬할 수 있습니다. 기본적으로 열 데이터는 오름차순으로 정렬됩니다. ORDER BY 구문을 작성하려면 아래 형식을 따르십시오.

|_+_|

column-list는 순서대로 정렬하거나 정렬하려는 모든 열을 포함해야 합니다. 간단한 예를 들어 이 문구를 이해하기 위해 동일한 EMPLOYEE 표를 사용하십시오. 열 목록에 열 이름, NAME 및 SALARY를 추가합니다.

|_+_|

테이블은 이름에 따라 오름차순으로 정렬됩니다.

산출:

|_+_|

이제 NAME 열을 사용하여 내림차순으로 테이블을 생성합니다.

|_+_|

산출:

|_+_|

GROUP BY 절

동일한 데이터 그룹화의 경우 GROUP BY 절이 사용됩니다. WHERE 키워드 뒤에는 항상 GROUP BY 절이 오고 GROUP BY 구 뒤에는 ORDER BY 절이 옵니다. 유사한 데이터를 WHERE 절의 조건으로 지정된 그룹으로 그룹화합니다. GROUP BY 절은 다음과 같이 작성됩니다.

|_+_|

우리는 다른 테이블에 GROUP BY 구문을 적용할 것입니다. 아래 표 EMPLOYEE1를 고려하십시오.

|_+_|

여기에서 Steve는 캘리포니아뿐만 아니라 시카고에서도 일하고 ​​있습니다. 따라서 GROUP BY 구문을 사용하여 Steve의 데이터를 그룹화할 수 있습니다. 여기에는 그의 이름과 전체 급여가 표시됩니다.

|_+_|

산출:

|_+_|

DISTINCT 키워드

DISTINCT 키워드는 테이블에서 모든 중복 값을 제거합니다. 많은 테이블에 중복되거나 중복된 데이터가 포함될 수 있습니다. 이러한 상황에서 DISTINCT 키워드를 사용하면 고유한 데이터를 검색하는 데 도움이 됩니다. 고유 데이터를 가져와야 하는 열을 지정할 수 있습니다. DISTINCT 키워드를 작성하는 형식은 다음과 같습니다.

|_+_|

DISTINCT 키워드의 작동 방식을 이해하기 위해 EMPLOYEE 테이블을 살펴보겠습니다. 먼저 급여를 기준으로 오름차순으로 테이블을 정렬합니다.

|_+_|

산출:

|_+_|

위의 결과 집합에는 중복 데이터가 있습니다. 즉, 30,000개가 서로 다른 두 행에 있습니다. DISTINCT 키워드를 적용하면 결과에 중복 데이터가 포함되지 않습니다.

|_+_|

산출:

|_+_|

SQL 조인

IN SQL에서 조인은 둘 이상의 테이블에 있는 레코드를 단일 테이블로 결합합니다. JOIN은 테이블의 공통 열을 사용하여 테이블을 결합하는 소스입니다. JOIN이 어떻게 수행되는지 확인하는 예를 볼 것입니다.

우리는 두 개의 테이블을 가져와서 이들 사이의 공통 속성을 기반으로 이 두 테이블을 조인할 것입니다. EMPLOYEE 테이블을 사용하십시오. DEPARTMENT라는 또 다른 테이블을 생성합니다.

|_+_|

이제 두 개의 테이블이 있습니다. 이 두 테이블을 결합하고 결과 집합을 표시합니다. 두 테이블 모두 EMP_ID라는 공통 속성이 있습니다.

|_+_|

결과는 다음과 같습니다.

|_+_|

WHERE 절에서 , =, BETWEEN, !, NOT 등의 여러 연산자를 사용하여 테이블이나 관계를 조인할 수 있습니다. 조인은 여러 유형으로 나눌 수 있습니다. INNER 조인은 테이블을 조인하고 두 관계 간에 일치하는 데이터의 결과를 반환합니다. 또 다른 조인은 왼쪽 테이블의 모든 데이터를 반환하는 LEFT 조인입니다. 왼쪽 테이블과 오른쪽 테이블이 일치하지 않으면 NULL이 기록됩니다. RIGHT 조인은 오른쪽 테이블에서 모든 데이터를 생성합니다. 일치 항목을 사용할 수 없는 오른쪽 테이블의 경우 NULL을 작성합니다.

왼쪽 조인

왼쪽 조인은 공통 속성을 갖는 두 관계를 결합합니다. 두 관계 모두에서 표시할 열을 지정할 수 있습니다. 왼쪽 테이블의 모든 데이터가 결과 집합에 있습니다. 왼쪽 테이블 데이터와 일치하지 않는 오른쪽 테이블 데이터에 대해서는 NULL을 쓴다. EMPLOYEE 및 DEPARTMENT를 사용하는 왼쪽 조인의 예를 살펴보겠습니다.

|_+_|

부서

|_+_|

이제 LEFT JOIN 키워드를 사용하여 이 두 관계를 결합하는 쿼리를 작성합니다.

|_+_|

결과:

|_+_|

오른쪽 조인

오른쪽 조인은 두 테이블도 조인합니다. 두 관계에 오른쪽 조인을 적용하면 왼쪽 테이블과 일치하는 오른쪽 테이블의 모든 데이터가 표시됩니다. 오른쪽 테이블 데이터와 일치하지 않는 왼쪽 테이블에 대해 NULL을 씁니다. 올바른 조인 키워드를 이해하기 위해 동일한 두 관계인 EMPLOYEE 및 DEPARTMENT를 사용합니다.

|_+_|

산출:

|_+_|

결론

SQL(구조적 쿼리 언어)은 MySQL, MS Access, Oracle 등 모든 주요 데이터베이스에서 사용됩니다. 이 언어를 사용하면 사용자가 데이터베이스에 테이블을 생성하고 여러 절, 연산자, 명령문을 사용하여 테이블을 조작할 수 있습니다. 이 문서는 초보자를 위한 SQL 빠른 참조입니다. 초보 사용자는 이 튜토리얼에서 모든 SQL 기본 사항을 배울 수 있습니다.

이 게시물은 데이터베이스의 데이터 조작에 대한 기본 지식을 제공하는 SQL 빠른 참조입니다. DML, DDL, TCL, DQL, DCL 명령의 모든 기본 구문을 살펴보았습니다. 나중에 다른 절, 데이터 무결성, 데이터 유형, 연산자 및 표현식을 배웠습니다. 나중 섹션에서 우리는 데이터베이스에서 데이터를 생성, 조작 및 삭제하는 예를 보았습니다.