MariaDB 튜토리얼: 구문 학습, 예제가 포함된 명령
MariaDB?
MariaDB 의 포크이다 MySQL 데이터베이스 관리 시스템. 그것은 원래 개발자에 의해 만들어졌습니다. 이 DBMS 도구는 소규모 및 기업 작업 모두에 대한 데이터 처리 기능을 제공합니다.
MariaDB 의 개선된 버전입니다 MySQL. 여기에는 수많은 강력한 기능이 내장되어 있으며 다른 곳에서는 찾을 수 없는 많은 유용성, 보안 및 성능 개선 사항이 있습니다. MySQL.
의 기능은 다음과 같습니다. MariaDB:
- GPL, BSD 또는 LGPL 라이센스에 따라 운영됩니다.
- MariaDB 대중적이고 표준적인 쿼리 언어를 지원합니다.
- 다른 관계형 데이터베이스 관리 시스템과 통합할 수 있는 고성능 엔진을 포함하여 다양한 스토리지 엔진이 함께 제공됩니다.
- 갈레라 클러스터 기술을 제공합니다.
- MariaDB 웹 개발에 널리 사용되는 언어인 PHP를 지원합니다.
- MariaDB 다양한 운영체제에서 실행될 수 있으며, 수많은 프로그래밍 언어를 지원합니다.
- MariaDB 에서는 사용할 수 없는 추가 명령이 제공됩니다. MySQL. MySQL DBMS 성능에 부정적인 영향을 미치는 기능이 있습니다. 이러한 기능은 다음에서 대체되었습니다. MariaDB.
MariaDB 대 MySQL
다음은 다음과 같은 몇 가지 주요 차이점입니다. MariaDB vs MySQL
매개 변수 | MariaDB | MySQL |
---|---|---|
스토리지 엔진을 위한 추가 옵션 | MariaDB 다른 곳에서는 볼 수 없는 12개의 새로운 스토리지 엔진이 있습니다. MySQL. | 비해 저장 옵션이 적습니다. MariaDB. |
속도 향상 | MariaDB 비해 향상된 속도를 보여줍니다. MySQL. 속도 최적화를 위한 다양한 기능이 제공됩니다. 이러한 기능에는 파생된 뷰/테이블, 하위 쿼리, 실행 제어, 디스크 액세스 및 최적화 프로그램 제어가 포함됩니다. | MySQL 비해 느린 속도를 보인다. MariaDB. 속도 최적화를 위해 해시 인덱스와 같은 몇 가지 기능에만 의존합니다. |
더 빠른 캐시/인덱스 | 메모리 스토리지 엔진으로 MariaDB, INSERT 문은 표준보다 24% 완료될 수 있습니다. MySQL. | 메모리 저장 엔진 MySQL 그에 비해 속도가 느리다 MariaDB. |
더 크고 더 빠른 연결 풀 | MariaDB 더 빠르게 실행하고 최대 200,000개 이상의 연결을 지원할 수 있는 고급 스레드 풀이 함께 제공됩니다. | 에서 제공하는 스레드 풀 MySQL 시간당 최대 200,000개의 연결을 지원할 수 없습니다. |
향상된 복제 | In MariaDB, 복제를 더욱 안전하고 빠르게 수행할 수 있습니다. 업데이트도 기존보다 2배 더 빠르게 수행할 수 있습니다. MySQL. | MySQL'의 커뮤니티 에디션에서는 정적인 개수의 스레드를 연결할 수 있습니다. MySQL의 엔터프라이즈 플랜에는 스레드 기능이 포함되어 있습니다. |
새로운 기능/확장 | MariaDB JSON, WITH 및 KILL 문을 포함한 새로운 기능과 확장 기능이 함께 제공됩니다. | 새로운 MariaDB 기능은 제공되지 않습니다 MySQL. |
누락 된 기능 | MariaDB 제공되는 기능 중 일부가 부족합니다. MySQL 기업용 에디션. 이 문제를 해결하기 위해 대체 오픈 소스 플러그인을 제공합니다. 따라서, MariaDB 사용자는 다음과 같은 기능을 즐길 수 있습니다. MySQL 엔터프라이즈 에디션 사용자. | 엔터프라이즈 에디션 MySQL 독점 코드를 사용합니다. 사용자만 MySQL Enterprise Edition은 이에 액세스할 수 있습니다. |
설치하는 방법 MariaDB
독립 실행형 응용 프로그램으로 설치
사용하기 위해서는 MariaDB, 컴퓨터에 설치해야 합니다.
설치는 아래 단계에 따라 진행할 수 있습니다.
단계 1) 아래 URL 열기
링크에서 설치 파일을 다운로드하세요. https://downloads.mariadb.org/
단계 2) Double 파일을 클릭하여 설치를 시작하세요
다운로드가 완료되면 파일 열기
단계 3) 다음 버튼을 클릭하십시오.
팝업창에서 다음 버튼을 클릭하세요.
단계 4) 라이센스 계약에 동의
그런 다음 다음 버튼을 클릭합니다.
단계 5) 왼쪽 메뉴에서 MariaDB 서버
설치할 기능을 선택하고 다음을 클릭하십시오.
단계 6) 비밀번호를 입력하십시오.
다음 창에서는 루트 사용자의 비밀번호를 변경해야 합니다.
- 비밀번호를 입력하고 동일한 비밀번호를 다시 입력하여 확인합니다. 원격 컴퓨터에서 액세스를 허용하려면 필요한 확인란을 활성화합니다.
- 완료되면 다음 버튼을 클릭하세요.
단계 7) 이름 입력 및 포트 번호 선택
다음 창에서 인스턴스 이름을 입력하고 포트 번호를 선택한 후 필요한 크기를 설정합니다. 다음 버튼을 클릭하세요.
단계 8) 다음을 클릭하십시오.
다음 창에서 다음 버튼을 클릭하기만 하면 됩니다.
단계 9) 설치를 클릭하십시오
설치 버튼을 클릭하여 설치를 시작합니다.
단계 10) 진행률 표시줄 표시
설치 진행률을 보여주는 진행률 표시줄이 나타납니다.
단계 11) 완료 버튼을 클릭하세요
설치가 완료되면 마침 버튼이 표시됩니다. 창을 닫으려면 버튼을 클릭하세요.
단계 12) 축하합니다!
당신은 지금 MariaDB 컴퓨터에 설치되어 있어야합니다.
명령 프롬프트 작업
이제 당신은 MariaDB 컴퓨터에 설치되었으면 이제 실행하고 사용을 시작할 차례입니다. 이 작업은 다음을 통해 수행할 수 있습니다. MariaDB 명령 프롬프트.
아래 단계를 따르십시오.
단계 1) 시작을 클릭하고 모든 프로그램을 선택한 다음 클릭하세요. MariaDB...
단계 2) 선택 MariaDB 명령 프롬프트를 누릅니다.
단계 3) 이 어플리케이션에는 XNUMXµm 및 XNUMXµm 파장에서 최대 XNUMXW의 평균 출력을 제공하는 MariaDB 명령 프롬프트가 시작됩니다. 이제 로그인할 시간입니다. 루트 사용자로 로그인해야 하며 설치 시 설정한 비밀번호를 입력해야 합니다. MariaDB. 명령 프롬프트에 다음 명령을 입력하세요.
MySQL -u root -p
단계 4) 비밀번호를 입력하고 리턴 키를 누르십시오. 아래와 같이 로그인되어 있어야 합니다.
이제 로그인되었습니다 MariaDB.
데이터 타입
MariaDB 다음 데이터 유형을 지원합니다:
- 문자열 데이터 유형
- 숫자 데이터 유형
- 날짜/시간 데이터 유형
- 대형 객체 데이터 유형
문자열 데이터 유형
여기에는 다음이 포함됩니다.
문자열 데이터 유형 | 상품 설명 |
---|---|
문자(크기) | 크기는 저장할 문자 수를 나타냅니다. 최대 255자를 저장합니다. 고정 길이 문자열. |
varchar(크기) | 크기는 저장할 문자 수를 나타냅니다. 최대 255자를 저장합니다. 가변 길이 문자열. |
텍스트(크기) | 크기는 저장할 문자 수를 나타냅니다. 최대 255자를 저장합니다. 고정 길이 문자열. |
바이너리(크기) | 크기는 저장할 문자 수를 나타냅니다. 최대 255자를 저장합니다. 고정 크기 문자열. |
숫자 형 데이터 타입
여기에는 다음이 포함됩니다.
숫자 형 데이터 타입 | 상품 설명 |
---|---|
비트 | tinyint(1)에 해당하는 매우 작은 정수 값입니다. 부호 있는 값의 범위는 -128에서 127 사이입니다. 부호 없는 값의 범위는 0에서 255입니다. |
정수(m) | 표준 정수 값입니다. 부호 있는 값의 범위는 -2147483648에서 2147483647 사이입니다. 부호 없는 값의 범위는 0에서 4294967295 사이입니다. |
플로트(m, d) | 단정밀도의 부동 소수점 숫자입니다. |
더블(m,d) | 배정밀도의 부동 소수점 숫자. |
플로트(p) | 부동 소수점 숫자. |
날짜/시간 데이터 유형
여기에는 다음이 포함됩니다.
날짜/시간 데이터 유형 | 상품 설명 |
---|---|
날짜 | 'yyyy-mm-dd' 형식으로 표시됩니다. 값의 범위는 '1000-01-01'과 '9999-12-31'입니다. |
날짜 시간 | 'yyyy-mm-dd hh:mm:ss' 형식으로 표시됩니다. 값 범위는 '1000-01-01 00:00:00'과 '9999-12-31 23:59:59'입니다. |
타임스탬프(m) | 'yyyy-mm-dd hh:mm:ss' 형식으로 표시됩니다. 값 범위는 '1970-01-01 00:00:01' utc에서 '2038-01-19 03:14:07' utc입니다. |
Time | 'hh:mm:ss' 형식으로 표시됩니다. 값 범위는 '-838:59:59'와 '838:59:59' 사이입니다. |
LOB(대형 개체 데이터 유형)
여기에는 다음이 포함됩니다.
대형 객체 데이터 유형 | 상품 설명 |
---|---|
작은 덩어리 | 최대 크기는 255바이트입니다. |
덩어리(크기) | 최대 크기는 65,535바이트입니다. |
중간 덩어리 | 최대 크기는 16,777,215바이트입니다. |
긴 텍스트 | 최대 크기는 4GB입니다. |
데이터베이스 및 테이블 생성
새 데이터베이스를 생성하려면 MariaDB, 루트 사용자와 관리자에게만 부여되는 특별한 권한이 있어야 합니다.
새로운 데이터베이스를 생성하려면 다음 구문을 사용하는 CREATE DATABASE 명령을 사용해야 합니다.
CREATE DATABASE DatabaseName;
이 경우 데이터베이스를 생성하고 Demo라는 이름을 지정해야 합니다.
시작 MariaDB 명령 프롬프트에 다음 명령을 입력하여 루트 사용자로 로그인하세요.
mysql -u root -p
루트 비밀번호를 입력하고 리턴 키를 누르십시오. 로그인됩니다.
이제 다음 명령을 실행합니다.
CREATE DATABASE Demo;
그러면 Demo라는 이름의 데이터베이스가 생성됩니다. 데이터베이스가 성공적으로 생성되었는지 확인하는 것이 좋습니다. 다음 명령을 실행하여 사용 가능한 데이터베이스 목록만 표시하면 됩니다.
SHOW DATABASES;
위 출력은 데모 데이터베이스가 목록의 일부이므로 데이터베이스가 성공적으로 생성되었음을 보여줍니다.
MariaDB 데이터베이스 선택
특정 데이터베이스를 사용하거나 작업하려면 사용 가능한 데이터베이스 목록에서 해당 데이터베이스를 선택해야 합니다. 데이터베이스를 선택한 후 데이터베이스 내에서 테이블 생성 등의 작업을 수행할 수 있습니다.
데이터베이스를 선택하려면 USE 명령을 사용해야 합니다. 아래 주어진 구문을 사용합니다.
USE database_name;
Demo 데이터베이스를 사용해야 합니다. 다음 명령을 실행하여 선택할 수 있습니다.
USE Demo;
위 이미지는 MariaDB 명령 프롬프트가 없음에서 선택한 데이터베이스 이름으로 변경되었습니다.
이제 데모 데이터베이스 내에서 테이블을 생성할 수 있습니다.
MariaDB – 테이블 생성
테이블을 생성하려면 데이터베이스를 선택해야 합니다. CREATE TABLE 문을 사용하여 테이블을 생성할 수 있습니다. 명령 구문은 다음과 같습니다.
CREATE TABLE tableName (columnName columnType);
열 중 하나를 기본 키로 설정할 수 있습니다. 이 열은 Null 값을 허용해서는 안 됩니다.
데모 데이터베이스 내에 Book 및 Price 테이블이라는 두 개의 테이블을 생성하겠습니다. 각 테이블에는 두 개의 열이 있습니다.
먼저 id와 name이라는 두 개의 열이 있는 Book 테이블을 만들어 보겠습니다. 다음 명령을 실행합니다.
CREATE TABLE Book( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, PRIMARY KEY (id));
PRIMARY KEY 제약 조건은 id 열을 테이블의 기본 키로 설정하는 데 사용되었습니다. AUTO_INCREMENT 속성은 테이블에 삽입된 새 레코드마다 자동으로 id 열의 값을 1씩 증가시킵니다. 모든 열은 Null 값을 허용하지 않습니다.
이제 두 번째 테이블인 Price 테이블을 만듭니다.
CREATE TABLE Price( id INT NOT NULL AUTO_INCREMENT, price float NOT NULL, PRIMARY KEY (id));
id 열이 테이블의 기본 키로 설정되었습니다.
테이블 표시
이제 두 테이블을 만들었으니 테이블이 성공적으로 만들어졌는지 여부를 확인하는 것이 좋습니다. 다음 명령을 실행하여 데이터베이스에 포함된 테이블 목록을 표시할 수 있습니다.
SHOW TABLES;
위 스크린샷은 데모 데이터베이스 내에서 두 테이블이 성공적으로 생성되었음을 보여줍니다.
테이블 구조 표시
특정 테이블의 구조를 보려면 DESCRIBE 명령을 사용할 수 있습니다. 일반적으로 DESC로 축약됩니다. 다음 구문을 사용합니다.
DESC TableName;
예를 들어, Book이라는 테이블의 구조를 보려면 다음 명령을 실행하면 됩니다.
DESC Book;
테이블에는 두 개의 열이 있습니다. Price 테이블의 구조를 보려면 다음 명령을 실행할 수 있습니다.
DESC Price;
CRUD 및 조항
INSERT
데이터를 삽입하려면 MariaDB 테이블에서는 INSERT INTO 문을 사용해야 합니다. 이 명령은 아래 주어진 구문을 사용합니다.
INSERT INTO tableName (column_1, column_2, ... ) VALUES (value1, value2, ... ), (value1, value2, ... ), ...;
위 구문은 데이터를 삽입하려는 테이블 열과 삽입해야 하는 데이터를 지정해야 함을 보여줍니다.
Book 테이블에 레코드를 삽입해 보겠습니다.
INSERT INTO book (id, name) VALUES(1, 'MariaDB Book');
테이블에 단일 레코드를 삽입했습니다. 가격 테이블에 레코드를 삽입합니다.
INSERT INTO price (id, price) VALUES(1, 200);
기록이 생성되었습니다.
SELECT
SELECT 명령문은 데이터베이스 테이블의 내용을 보거나 확인하는 데 도움이 됩니다. 예를 들어 Book 테이블의 내용을 보려면 다음 명령을 실행해야 합니다.
SELECT * from book;
이제 Price 테이블의 내용을 봅니다.
SELECT * from price;
여러 레코드 삽입
여러 레코드를 하나의 파일에 삽입하는 것이 가능합니다. MariaDB 한 번에 테이블을 실행합니다. 이를 보여주려면 다음 예제를 실행합니다.
INSERT INTO book (id, name) VALUES (2,'MariaDB Book2'), (3,'MariaDB Book3'), (4,'MariaDB Book4'), (5,'MariaDB Book5');
테이블을 쿼리하여 레코드가 성공적으로 삽입되었는지 확인할 수 있습니다.
SELECT * FROM book;
레코드가 성공적으로 삽입되었습니다. 다음 예제를 실행하여 Price 테이블에 여러 레코드를 삽입합니다.
INSERT INTO price (id, price) VALUES (2, 250), (3, 220), (4, 190), (5, 300);
레코드가 성공적으로 생성되었는지 확인해 보겠습니다.
SELECT * FROM price;
UPDATE
UPDATE 명령은 테이블에 이미 삽입된 레코드를 변경하거나 수정하는 데 도움이 됩니다. 이를 WHERE 절과 결합하여 업데이트할 레코드를 지정할 수 있습니다. 구문은 다음과 같습니다.
UPDATE tableName SET field=newValue, field2=newValue2,... [WHERE ...]
UPDATE 명령은 SET, WHERE, LIMIT 및 ORDER BY와 같은 절과 결합될 수도 있습니다. 곧 이 내용을 보게 될 것입니다:
다음 레코드가 있는 Price라는 테이블을 생각해 보세요.
ID가 1인 책의 가격을 200에서 250으로 변경해 보겠습니다.
UPDATE price SET price = 250 WHERE id = 1;
명령이 성공적으로 실행되었습니다. 이제 테이블을 쿼리하여 변경이 발생했는지 확인할 수 있습니다.
위의 스크린샷은 변경 사항이 구현되었음을 보여줍니다. 다음 레코드가 있는 Book 테이블을 고려하세요.
Book이라는 책의 이름을 다음으로 변경해 보겠습니다. MariaDB 책1. 책의 ID는 1입니다. 이에 대한 명령은 다음과 같습니다.
UPDATE book SET name = “MariaDB Book1” WHERE id = 1;
변경 사항이 구현되었는지 확인하세요.
위 스크린샷은 변경 사항이 성공적으로 구현되었음을 보여줍니다.
위의 예에서는 한 번에 하나의 열만 변경했습니다. 그러나 한 번에 여러 열을 변경할 수 있습니다. 예제를 사용하여 이를 보여드리겠습니다.
다음 데이터가 있는 Price 표를 사용해 보겠습니다.
id가 5인 책의 id와 price를 모두 변경해 보겠습니다. id를 6으로, price를 6으로 변경합니다. 다음 명령을 실행합니다.
UPDATE price SET id = 6, price = 280 WHERE id = 5;
이제 테이블을 쿼리하여 변경이 성공적으로 이루어졌는지 확인합니다.
변경이 성공적으로 이루어졌습니다.
.
테이블에서 하나 이상의 레코드를 삭제해야 할 때 DELETE 명령을 사용합니다. 명령 구문은 다음과 같습니다.
DELETE FROM tableName [WHERE condition(s)] [ORDER BY exp [ ASC | DESC ]] [LIMIT numberRows];
다음 레코드가 있는 Price 표를 고려해 보세요.
테이블에서 마지막 레코드를 삭제해야 합니다. ID는 6이고 가격은 280입니다. 레코드를 삭제해 보겠습니다.
DELETE FROM price WHERE id = 6;
명령이 성공적으로 실행되었습니다. 삭제가 성공했는지 확인하기 위해 테이블을 쿼리해 보겠습니다.
출력에는 레코드가 성공적으로 삭제되었음을 표시합니다.
어디에
WHERE 절은 변경해야 할 정확한 위치를 지정하는 데 도움이 됩니다. INSERT, SELECT, UPDATE, DELETE와 같은 명령문과 함께 사용됩니다. 다음 데이터가 있는 Price 테이블을 고려해 보세요.
가격이 250보다 작은 레코드를 확인해야 한다고 가정해 보겠습니다. 다음 명령을 실행할 수 있습니다.
SELECT * FROM price WHERE price < 250;
가격이 250 미만인 모든 기록이 반환되었습니다.
WHERE 절은 AND 문과 결합할 수 있습니다. Price 테이블에서 가격이 250 미만이고 id가 3 이상인 모든 레코드를 확인해야 한다고 가정해 보겠습니다. 다음 명령을 실행할 수 있습니다.
SELECT * FROM price WHERE id > 3 AND price < 250;
하나의 레코드만 반환되었습니다. 그 이유는 지정된 모든 조건, 즉 id가 3 이상, 가격이 250 미만을 충족해야 하기 때문입니다. 이 조건 중 하나라도 위반되면 레코드가 반환되지 않습니다.
이 절은 OR 명령과 결합될 수도 있습니다. 이전 명령의 AND를 OR로 바꾸고 우리가 받는 출력의 종류를 살펴보겠습니다.
SELECT * FROM price WHERE id > 3 OR price < 250;
이제 2개가 아닌 1개의 기록을 얻습니다. 이는 적격 기록의 경우 지정된 조건 중 하나만 충족하면 되기 때문입니다.
처럼
이 절은 정확한 일치가 필요한 테이블 데이터에 접근할 때 데이터 패턴을 지정하는 데 사용됩니다. INSERT, UPDATE, SELECT 및 DELETE 문과 결합할 수 있습니다.
찾고 있는 데이터의 패턴을 절에 전달해야 하며, 이는 true 또는 false를 반환합니다. 절과 함께 사용할 수 있는 와일드카드 문자는 다음과 같습니다.
- %: 0개 이상의 문자를 일치시킵니다.
- _: 단일 문자를 일치시키는 데 사용됩니다.
LIKE 절의 구문은 다음과 같습니다.
SELECT field_1, field_2,... FROM tableName1, tableName2,... WHERE fieldName LIKE condition;
% 와일드카드 문자가 있는 절을 사용하는 방법을 보여드리겠습니다. 다음 레코드가 있는 Book 테이블을 사용해 보겠습니다.
우리는 이름이 M으로 시작하는 모든 레코드를 확인해야 합니다. 다음 명령을 실행할 수 있습니다.
SELECT name FROM book WHERE name LIKE 'M%';
모든 레코드는 이름이 M으로 시작하기 때문에 반환되었습니다. 4로 끝나는 모든 이름을 보려면 다음 명령을 실행할 수 있습니다.
SELECT name FROM book WHERE name LIKE '%4';
조건을 충족하는 유일한 이름이므로 하나의 이름만 반환되었습니다.
검색 패턴을 와일드카드로 묶을 수도 있습니다.
SELECT name FROM book WHERE name LIKE '%DB%';
% 와일드카드 외에 LIKE 절을 _ 와일드카드와 함께 사용할 수 있습니다. 이는 밑줄 와일드카드이며 단일 문자만 찾습니다.
다음 레코드를 사용하여 Price 테이블을 살펴보겠습니다.
가격이 1_0과 같은 레코드를 확인해 보겠습니다. 다음 명령을 실행합니다.
SELECT * FROM price WHERE price LIKE '1_0';
가격이 190인 기록을 반환했습니다. 다른 패턴을 시도해 볼 수도 있습니다.
SELECT * FROM price WHERE price LIKE '_2_';
LIKE 절을 NOT 연산자와 함께 사용할 수 있습니다. 이렇게 하면 지정된 패턴을 충족하지 않는 모든 레코드가 반환됩니다. 예를 들어:
다음 레코드가 있는 Price 표를 사용해 보겠습니다.
가격이 2로 시작하지 않는 모든 레코드를 찾아보겠습니다.
SELECT * FROM price WHERE price NOT LIKE '2%';
단 하나의 레코드만이 지정된 패턴을 충족하지 않습니다.
에 의하여 주문
이 절은 기록을 오름차순 또는 내림차순으로 정렬하는 데 도움이 됩니다. 아래와 같이 SELECT 문과 함께 사용합니다.
SELECT expression(s) FROM tables [WHERE condition(s)] ORDER BY exp [ ASC | DESC ];
ASC나 DESC 부분을 추가하지 않고도 이 절을 사용할 수 있습니다. 예를 들어:
다음 레코드가 있는 Price 표를 사용하겠습니다.
테이블에 대해 다음 명령을 실행합니다.
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price;
위의 명령에서는 가격으로 주문했습니다. 가격이 오름차순으로 기록이 정렬되었습니다. 즉, 순서를 지정하지 않으면 기본적으로 오름차순으로 정렬이 수행됩니다.
DESC 옵션을 사용하여 절을 실행해 보겠습니다.
SELECT * FROM price WHERE price LIKE '2%' ORDER BY price DESC;
기록은 우리가 지정한 대로 가격이 내림차순으로 정렬되었습니다.
ASC 속성과 함께 ORDER BY 절을 사용해 보겠습니다.
SELECT * FROM price WHERE price LIKE '2%.' ORDER BY price ASC;
레코드가 주문되었지만 가격은 오름차순입니다. 이는 ASC 또는 DESC 속성 없이 ORDER BY 절을 사용할 때와 유사합니다.
DISTINCT
이 절은 테이블에서 레코드를 선택할 때 중복을 방지하는 데 도움이 됩니다. 이는 고유한 기록을 얻는 데 도움이 된다는 것을 의미합니다. 구문은 다음과 같습니다.
SELECT DISTINCT expression(s) FROM tableName [WHERE condition(s)];
이를 보여주기 위해 다음 데이터가 있는 Price 표를 사용하겠습니다.
표에서 가격 열을 선택하면 다음과 같은 결과가 나옵니다.
SELECT price FROM Price;
가격이 250인 두 개의 레코드가 있어 중복 항목이 생성됩니다. 고유한 레코드만 있으면 됩니다. 아래와 같이 DISTINCT 절을 사용하여 이를 필터링할 수 있습니다.
SELECT DISTINCT price FROM Price;
이제 위 출력에는 중복된 내용이 없습니다.
~
데이터베이스 테이블에서 데이터를 가져오는 데 사용되는 FROM 절입니다. 테이블을 조인할 때도 도움이 될 수 있습니다. 명령 구문은 다음과 같습니다.
SELECT columnNames FROM tableName;
book 테이블의 내용을 보려면 다음 명령을 실행하세요.
SELECT * FROM price;
이 절을 사용하면 데이터베이스 테이블에서 단일 열만 가져오는 데 도움이 될 수 있습니다. 예를 들어:
SELECT price FROM Price;
고급 작업
저장 프로 시저
절차는 MariaDB 매개변수를 전달할 수 있는 프로그램입니다. 프로시저는 값을 반환하지 않습니다. 프로시저를 생성하려면 CREATE PROCEDURE 명령을 사용합니다.
프로시저를 생성하고 호출하는 방법을 보여주기 위해 book 테이블에서 이름 열을 선택하는 데 도움이 되는 myProcedure()라는 프로시저를 생성하겠습니다. 절차는 다음과 같습니다.
DELIMITER $ CREATE PROCEDURE myProcedure() BEGIN SELECT name FROM book; END; ;
프로시저가 생성되었습니다. 우리는 단순히 프로시저의 BEGIN 및 END 절 내에 SELECT 문을 포함시켰습니다.
이제 아래와 같이 이름으로 프로시저를 호출할 수 있습니다.
CALL myProcedure();
프로시저가 호출되면 책 테이블의 이름 열을 반환합니다.
매개변수를 받는 프로시저를 만들 수 있습니다. 예를 들어, 책 이름을 선택하고 책 ID를 사용하여 필터링해야 합니다. 이를 위해 다음 프로시저를 만들 수 있습니다.
DELIMITER $ CREATE PROCEDURE myProcedure2(book_id int) BEGIN SELECT name FROM book WHERE id = book_id; END; ;
위에서는 myProcedure2()라는 프로시저를 만들었습니다. 이 절차는 이름을 확인해야 하는 책의 ID인 book_id라는 하나의 정수 매개변수를 사용합니다. ID가 3인 책 이름을 보려면 다음과 같이 프로시저를 호출할 수 있습니다.
CALL myProcedure2(3);
함수
프로시저와 달리 매개변수를 함수에 전달해야 하며 함수는 값을 반환해야 합니다. 함수를 생성하려면 MariaDB, CREATE FUNCTION 문을 사용합니다. 이 문은 다음 구문을 사용합니다.
CREATE [ DEFINER = { CURRENT-USER | username } ] FUNCTION function-name [(parameter datatype [, parameter datatype]) ] RETURNS datatype [LANGUAGE SQL | DETERMINISTIC | NOT DETERMINISTIC | {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA} | SQL SECURITY {DEFINER | INVOKER} | COMMENT 'comment' BEGIN declaration-section executable-section END;
위의 매개변수는 아래에 설명되어 있습니다.
매개 변수 | 상품 설명 |
---|---|
DEFINER 절 | 이 매개변수는 선택사항입니다. 지정하지 않으면 정의자는 함수를 생성한 사용자가 됩니다. 다른 정의자를 지정해야 하는 경우 user_name이 함수의 정의자가 되는 DEFINER 절을 포함합니다. |
함수 이름 | 이 기능에 할당될 이름은 MariaDB. |
매개 변수 | 함수에 전달된 매개변수입니다. 함수를 생성하는 동안 모든 매개변수는 다음과 같이 처리됩니다. IN 매개변수 (OUT/INOUT 매개변수 대신). |
return_datatype | 함수 반환 값의 데이터 유형입니다. |
언어 SQL | 휴대성에 영향을 주지만 기능에는 영향을 미치지 않습니다. |
결정적 | 이 함수는 여러 매개변수가 제공된 경우에만 하나의 결과를 반환합니다. |
비결정적 | 여러 매개변수가 주어지면 함수가 다른 결과를 반환하는 것이 가능합니다. |
SQL을 포함합니다. | 알려 MariaDB 이 함수에는 SQL이 포함되어 있습니다. 데이터베이스는 이것이 사실인지 확인하지 않습니다. |
SQL 없음 | 이 절은 사용되지 않으며 기능에 영향을 주지 않습니다. |
SQL 데이터 읽기 | 알 MariaDB 이 함수는 SELECT 문을 사용하여 데이터를 읽지만 데이터를 수정하지는 않습니다. |
SQL 데이터 수정 | 알 MariaDB 이 함수는 INSERT, DELETE, UPDATE 및 기타 기능을 사용합니다. DDL SQL 데이터를 수정하는 명령문입니다. |
선언 섹션 | 여기서 지역 변수를 선언해야 합니다. |
실행 섹션 | 여기에 함수 코드를 추가해야 합니다. |
다음은 그 예이다 MariaDB 기능:
DELIMITER // CREATE FUNCTION sumFunc (x INT ) RETURNS INT DETERMINISTIC BEGIN DECLARE sum INT; SET sum = 0; label1: WHILE sum <= 3000 DO SET sum = sum + x; END WHILE label1; RETURN sum; END; // DELIMITER ;
그런 다음 위의 함수를 다음과 같이 호출할 수 있습니다.
select sumFunc(1000);
이 명령은 다음을 반환합니다.
함수를 다 사용했으면 삭제하는 것이 좋습니다. 다음 구문을 사용하는 DROP FUNCTION 명령문만 호출하면 되므로 쉽습니다.
DROP FUNCTION function_name;
예를 들어, myFunc라는 함수를 삭제하려면 다음 명령을 실행할 수 있습니다.
DROP FUNCTION myFunc;
JOIN
한 번에 둘 이상의 테이블에서 데이터를 검색해야 하는 경우 다음을 사용하세요. MariaDB 조인. 이는 다음을 의미합니다. JOIN 두 개 이상의 테이블에서 작동합니다. 다음 세 가지 유형의 JOINS가 지원됩니다. MariaDB:
- 내부/단순 조인
- 왼쪽 외부 조인/왼쪽 조인
- 오른쪽 외부 조인/오른쪽 조인
하나씩 논의해 보겠습니다.
내부 결합
내부 조인은 조인 조건이 true인 테이블의 모든 행을 반환합니다. 구문은 다음과 같습니다.
SELECT columns FROM table-1 INNER JOIN table-2 ON table-1.column = table-2.column;
예 :
우리는 두 개의 테이블, 책, 책을 사용할 것입니다.
book 테이블에는 다음과 같은 데이터가 있습니다.
가격 표에는 다음과 같은 데이터가 있습니다.
목표는 Book 테이블의 이름 열과 Price 테이블의 가격 열을 단일 테이블로 조인하는 것입니다. 이는 아래에 설명된 것처럼 내부 조인을 사용하여 가능합니다.
SELECT book.name, price.price FROM book INNER JOIN price ON book.id = price.id;
이 명령은 다음을 반환합니다.
왼쪽 외부 조인
이 조인은 왼쪽 테이블의 모든 행과 다른 테이블의 조인 조건이 true인 행만 반환합니다. 구문은 다음과 같습니다.
SELECT columns FROM table-1 LEFT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
OUTER 키워드는 선택 사항이기 때문에 대괄호로 묶었습니다.
예 :
SELECT book.name, price.price FROM book LEFT JOIN price ON book.id = price.id;
이 명령은 다음을 반환합니다.
위 표의 마지막 레코드의 왼쪽에는 일치하는 값이 없습니다. 그래서 NULL로 대체되었습니다.
오른쪽 외부 조인
이 조인은 오른쪽 테이블의 모든 행과 다른 테이블의 조인 조건이 true인 행만 반환합니다. 구문은 다음과 같습니다.
SELECT columns FROM table-1 RIGHT [OUTER] JOIN table-2 ON table-1.column = table-2.column;
OUTER 키워드는 선택 사항이기 때문에 대괄호로 묶었습니다.
예 :
SELECT book.name, price.price FROM book RIGHT JOIN price ON book.id = price.id;
이 명령은 다음을 반환합니다.
그 이유는 오른쪽 테이블의 모든 행이 다른 테이블의 행과 일치했기 때문입니다. 일부 행이 일치하지 않으면 첫 번째 열에 NULL이 표시됩니다.