MariaDB-퀵 가이드
데이터베이스 애플리케이션은 기본 애플리케이션과 별도로 존재하며 데이터 콜렉션을 저장합니다. 모든 데이터베이스는 포함 된 데이터의 생성, 액세스, 관리, 검색 및 복제를 위해 하나 또는 여러 API를 사용합니다.
데이터베이스는 또한 개체 또는 파일과 같은 비 관계형 데이터 소스를 사용합니다. 그러나 데이터베이스는 검색 속도가 느리고 다른 데이터 소스로 쓰기가 어려워지는 대규모 데이터 세트에 가장 적합한 옵션임을 입증합니다.
관계형 데이터베이스 관리 시스템 (RDBMS)은 다양한 테이블에 데이터를 저장합니다. 이러한 테이블 간의 관계는 기본 키와 외래 키를 사용하여 설정됩니다.
RDBMS는 다음과 같은 기능을 제공합니다.
이를 통해 테이블, 열 및 색인이있는 데이터 소스를 구현할 수 있습니다.
여러 테이블의 행에서 참조의 무결성을 보장합니다.
인덱스를 자동으로 업데이트합니다.
테이블에서 데이터를 조작하거나 소싱 할 때 SQL 쿼리 및 작업을 해석합니다.
RDBMS 용어
MariaDB에 대한 논의를 시작하기 전에 데이터베이스와 관련된 몇 가지 용어를 살펴 보겠습니다.
Database − 데이터베이스는 관련 데이터를 보유한 테이블로 구성된 데이터 소스입니다.
Table − 스프레드 시트를 의미하는 테이블은 데이터를 포함하는 행렬입니다.
Column− 데이터 요소를 의미하는 열은 한 유형의 데이터를 보유하는 구조입니다. 예 : 배송 날짜.
Row− 행은 관련 데이터를 그룹화 한 구조입니다. 예를 들어, 고객 데이터. 튜플, 항목 또는 레코드라고도합니다.
Redundancy −이 용어는 시스템을 가속화하기 위해 데이터를 두 번 저장하는 것을 의미합니다.
Primary Key− 이것은 고유 한 식별 값을 나타냅니다. 이 값은 테이블 내에서 두 번 나타날 수 없으며 연관된 행이 하나뿐입니다.
Foreign Key − 외래 키는 두 테이블 간의 링크 역할을합니다.
Compound Key− 복합 키 또는 복합 키는 여러 열을 참조하는 키입니다. 고유 한 품질이 부족한 컬럼으로 인해 여러 컬럼을 나타냅니다.
Index − 색인은 책의 색인과 거의 동일합니다.
Referential Integrity −이 용어는 모든 외래 키 값이 기존 행을 가리 키도록하는 것을 의미합니다.
MariaDB 데이터베이스
MariaDB는 MySQL의 원래 개발자가 만든 인기있는 MySQL 포크입니다. 그것은 오라클의 MySQL 인수와 관련된 우려에서 비롯되었습니다. 소규모 데이터 처리 작업과 엔터프라이즈 요구 사항을 모두 지원합니다. MySQL을 간단히 제거하고 MariaDB를 설치하기 만하면되는 MySQL의 드롭 인 교체를 목표로합니다. MariaDB는 MySQL과 동일한 기능 등을 제공합니다.
MariaDB의 주요 기능
MariaDB의 중요한 기능은 다음과 같습니다.
모든 MariaDB는 GPL, LGPL 또는 BSD에 속합니다.
MariaDB에는 다른 RDBMS 데이터 소스 작업을위한 고성능 스토리지 엔진을 포함한 다양한 스토리지 엔진이 포함되어 있습니다.
MariaDB는 널리 사용되는 표준 쿼리 언어를 사용합니다.
MariaDB는 다양한 운영 체제에서 실행되며 다양한 프로그래밍 언어를 지원합니다.
MariaDB는 가장 인기있는 웹 개발 언어 중 하나 인 PHP를 지원합니다.
MariaDB는 Galera 클러스터 기술을 제공합니다.
MariaDB는 또한 MySQL에서 사용할 수없는 많은 작업과 명령을 제공하며 성능에 부정적인 영향을 미치는 기능을 제거 / 대체합니다.
시작하기
이 튜토리얼을 시작하기 전에 PHP 및 HTML에 대한 기본 지식, 특히 PHP 및 HTML 튜토리얼에서 논의 된 자료가 있는지 확인하십시오.
이 가이드는 PHP 환경에서 MariaDB를 사용하는 데 중점을 두므로 예제는 PHP 개발자에게 가장 유용합니다.
익숙하지 않거나 검토가 필요한 경우 PHP 자습서를 검토하는 것이 좋습니다.
MariaDB에 대한 모든 다운로드 는 공식 MariaDB 재단 웹 사이트 의 다운로드 섹션에 있습니다. 원하는 버전에 대한 링크를 클릭하면 여러 운영 체제, 아키텍처 및 설치 파일 유형에 대한 다운로드 목록이 표시됩니다.
LINUX / UNIX에 설치
Linux / Unix 시스템에 대해 잘 알고있는 경우 소스를 다운로드하여 설치를 빌드하십시오. 권장되는 설치 방법은 배포 패키지를 사용하는 것입니다. MariaDB는 다음 Linux / Unix 배포 용 패키지를 제공합니다.
- RedHat/CentOS/Fedora
- Debian/Ubuntu
다음 배포판에는 저장소에 MariaDB 패키지가 포함되어 있습니다.
- openSUSE
- 아치 리눅스
- Mageia
- Mint
- Slackware
Ubuntu 환경에 설치하려면 다음 단계를 따르십시오.
Step 1 − 루트 사용자로 로그인합니다.
Step 2 − MariaDB 패키지가 포함 된 디렉토리로 이동합니다.
Step 3 − 다음 코드로 GnuPG 서명 키 가져 오기 −
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
Step 4 − MariaDB를 sources.list파일. 파일을 열고 다음 코드를 추가하십시오-
sudo add-apt-repository 'deb http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntuprecise main'
Step 5 − 다음으로 시스템 새로 고침 −
sudo apt-get update
Step 6 − 다음과 같이 MariaDB를 설치합니다 −
sudo apt-get install mariadb-server
Windows에 설치
자동 설치 파일 (MSI)을 찾아서 다운로드 한 후 파일을 두 번 클릭하면 설치가 시작됩니다. 설치 마법사는 모든 설치 단계와 필요한 설정을 안내합니다.
명령 프롬프트에서 시작하여 설치를 테스트하십시오. 일반적으로 디렉토리에서 설치 위치로 이동하고 프롬프트에 다음을 입력하십시오.
mysqld.exe --console
설치에 성공하면 시작과 관련된 메시지가 표시됩니다. 이것이 나타나지 않으면 권한 문제가있을 수 있습니다. 사용자 계정이 애플리케이션에 액세스 할 수 있는지 확인하십시오. Windows 환경에서 MariaDB 관리에 그래픽 클라이언트를 사용할 수 있습니다. 명령 줄이 불편하거나 번거 롭다면 반드시 시험해보십시오.
설치 테스트
몇 가지 간단한 작업을 수행하여 MariaDB의 작동 및 설치를 확인합니다.
Use the Admin Utility to Get Server Status
mysqladmin 바이너리로 서버 버전을 확인합니다.
[root@host]# mysqladmin --version
버전, 배포, 운영 체제 및 아키텍처가 표시되어야합니다. 해당 유형의 출력이 표시되지 않으면 설치에 문제가 있는지 검사하십시오.
Execute Simple Commands with a Client
MariaDB에 대한 명령 프롬프트를 불러옵니다. 이렇게하면 MariaDB에 연결되고 명령을 실행할 수 있습니다. 다음과 같이 간단한 명령을 입력하십시오-
mysql> SHOW DATABASES;
설치 후
MariaDB를 성공적으로 설치 한 후 루트 암호를 설정하십시오. 새로 설치하면 암호가 비어 있습니다. 새 암호를 설정하려면 다음을 입력하십시오-
mysqladmin -u root password "[enter your password here]";
새 자격 증명으로 서버에 연결하려면 다음을 입력하십시오.
mysql -u root -p
Enter password:*******
Windows에서 업그레이드
Windows 시스템에 이미 MySQL이 설치되어 있고 MariaDB로 업그레이드하려는 경우; MySQL을 제거하고 MariaDB를 설치하지 마십시오. 이로 인해 기존 데이터베이스와 충돌이 발생합니다. 대신 MariaDB를 설치 한 다음 Windows 설치 파일에서 업그레이드 마법사를 사용해야합니다.
MySQL my.cnf 파일의 옵션은 MariaDB에서 작동합니다. 그러나 MariaDB에는 MySQL에는없는 많은 기능이 있습니다.
my.cnf 파일에서 다음 충돌을 고려하십시오.
MariaDB는 기본적으로 임시 파일에 Aria 스토리지 엔진을 사용합니다. 임시 파일이 많은 경우 MyISAM 테이블을 사용하지 않는 경우 키 버퍼 크기를 수정하십시오.
애플리케이션이 자주 연결 / 연결 해제되는 경우 스레드 캐시 크기를 변경하십시오.
100 개 이상의 연결을 사용하는 경우 스레드 풀을 사용하십시오.
적합성
MySQL과 MariaDB는 본질적으로 동일합니다. 그러나 업그레이드 문제를 일으킬 수있는 충분한 차이가 있습니다. MariaDB 기술 자료 에서 이러한 주요 차이점을 더 많이 검토하십시오 .
MariaDB를 실행하기 전에 먼저 현재 상태 (실행 중 또는 종료)를 확인하십시오. MariaDB를 시작하고 중지하는 세 가지 옵션이 있습니다.
- mysqld (MariaDB 바이너리)를 실행합니다.
- mysqld_safe 시작 스크립트를 실행합니다.
- mysql.server 시작 스크립트를 실행합니다.
비표준 위치에 MariaDB를 설치 한 경우 스크립트 파일에서 위치 정보를 편집해야 할 수 있습니다. 스크립트와 함께 "stop"매개 변수를 추가하여 MariaDB를 중지하십시오.
Linux에서 자동으로 시작하려면 시작 스크립트를 init체계. 각 배포에는 다른 절차가 있습니다. 시스템 문서를 참조하십시오.
사용자 계정 생성
다음 코드로 새 사용자 계정을 만듭니다-
CREATE USER 'newusername'@'localhost' IDENTIFIED BY 'userpassword';
이 코드는 권한이없는 사용자 테이블에 행을 추가합니다. 암호에 해시 값을 사용하는 옵션도 있습니다. 다음 코드로 사용자 권한을 부여하십시오-
GRANT SELECT, INSERT, UPDATE, DELETE ON database1 TO 'newusername'@'localhost';
다른 권한에는 MariaDB에서 가능한 거의 모든 명령 또는 작업이 포함됩니다. 사용자를 생성 한 후 부여 테이블을 새로 고치려면 "FLUSH PRIVILEGES"명령을 실행합니다. 이를 통해 사용자 계정을 사용할 수 있습니다.
구성 파일
Unix / Linux에서 빌드 한 후 구성 파일“/etc/mysql/my.cnf”를 다음과 같이 편집해야합니다.
# Example mysql config file.
# You can copy this to one of:
# /etc/my.cnf to set global options,
# /mysql-data-dir/my.cnf to get server specific options or
# ~/my.cnf for user specific options.
#
# One can use all long options that the program supports.
# Run the program with --help to get a list of available options
# This will be passed to all mysql clients
[client]
#password = my_password
#port = 3306
#socket = /tmp/mysql.sock
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
# The MySQL server
[mysqld]
#port = 3306
#socket = /tmp/mysql.sock
temp-pool
# The following three entries caused mysqld 10.0.1-MariaDB (and possibly other
versions) to abort...
# skip-locking
# set-variable = key_buffer = 16M
# set-variable = thread_cache = 4
loose-innodb_data_file_path = ibdata1:1000M
loose-mutex-deadlock-detector
gdb
######### Fix the two following paths
# Where you want to have your database
data = /path/to/data/dir
# Where you have your mysql/MariaDB source + sql/share/english
language = /path/to/src/dir/sql/share/english
[mysqldump]
quick
MariaDB
8
set-variable = max_allowed_packet=16M
[mysql]
no-auto-rehash
[myisamchk]
set-variable = key_buffer = 128M
환경에 맞게“data =”및“language =”줄을 편집합니다.
파일 수정 후 소스 디렉토리로 이동하여 다음을 실행하십시오.
./scripts/mysql_install_db --srcdir = $PWD --datadir = /path/to/data/dir -- user = $LOGNAME
“$PWD” variable if you added datadir to the configuration file. Ensure “$LOGNAME”은 MariaDB 버전 10.0.1을 실행할 때 사용됩니다.
관리 명령
MariaDB로 작업 할 때 정기적으로 사용할 중요한 명령 목록을 검토하십시오.
USE [database name] − 현재 기본 데이터베이스를 설정합니다.
SHOW DATABASES − 현재 서버에있는 데이터베이스를 나열합니다.
SHOW TABLES − 임시가 아닌 모든 테이블을 나열합니다.
SHOW COLUMNS FROM [table name] − 지정된 테이블에 대한 열 정보를 제공합니다.
SHOW INDEX FROM TABLENAME [table name] − 지정된 테이블과 관련된 테이블 인덱스 정보를 제공합니다.
SHOW TABLE STATUS LIKE [table name]\G – − 임시 테이블이 아닌 테이블에 대한 정보를 테이블에 제공하며 LIKE 절 다음에 나타나는 패턴을 사용하여 테이블 이름을 가져옵니다.
MariaDB는 PHP, C #, JavaScript, Ruby on Rails, Django 등과 같은 다양한 프로그래밍 언어 및 프레임 워크와 잘 호환됩니다. PHP는 단순성과 역사적 공간으로 인해 사용 가능한 모든 언어 중에서 가장 인기가 있습니다. 이 가이드는 MariaDB와 제휴 한 PHP에 중점을 둡니다.
PHP는 MySQL 데이터베이스 작업을위한 다양한 기능을 제공합니다. 이러한 함수는 액세스 또는 작업 수행과 같은 작업을 수행하며 MariaDB와 완전히 호환됩니다. 다른 PHP 함수를 호출하는 것처럼이 함수를 호출하기 만하면됩니다.
MariaDB에 사용할 PHP 함수는 다음 형식을 따릅니다.
mysql_function(value,value,...);
함수의 두 번째 부분은 동작을 지정합니다. 이 가이드에서 사용하는 두 가지 기능은 다음과 같습니다.
mysqli_connect($connect); mysqli_query($connect,"SQL statement");
다음 예제는 MariaDB 함수에 대한 PHP 호출의 일반적인 구문을 보여줍니다.
<html>
<head>
<title>PHP and MariaDB</title>
</head>
<body>
<?php
$retval = mysql_function(value, [value,...]); if( !$retval ) {
die ( "Error: Error message here" );
}
// MariaDB or PHP Statements
?>
</body>
</html>
다음 섹션에서는 PHP 함수를 사용하여 필수 MariaDB 작업을 살펴 보겠습니다.
MariaDB와 연결을 설정하는 한 가지 방법은 명령 프롬프트에서 mysql 바이너리를 사용하는 것입니다.
MYSQL 바이너리
아래에 주어진 예를 검토하십시오.
[root@host]# mysql -u root -p
Enter password:******
위에 제공된 코드는 MariaDB에 연결하고 SQL 명령을 실행하기위한 명령 프롬프트를 제공합니다. 코드를 입력하면 성공적으로 연결되었음을 알리는 환영 메시지가 나타나고 버전 번호가 표시됩니다.
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 122323232
Server version: 5.5.40-MariaDB-log
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
이 예제에서는 루트 액세스를 사용하지만 권한이있는 모든 사용자는 물론 MariaDB 프롬프트에 액세스하여 작업을 수행 할 수 있습니다.
다음을 통해 MariaDB에서 연결 해제 exit 다음과 같이 명령-
mysql> exit
PHP 연결 스크립트
MariaDB에 연결하고 연결을 끊는 또 다른 방법은 PHP 스크립트를 사용하는 것입니다. PHP는mysql_connect()데이터베이스 연결을 여는 기능. 5 개의 선택적 매개 변수를 사용하고 연결 성공 후 MariaDB 링크 식별자를 반환하거나 연결 실패시 false를 반환합니다. 그것은 또한 제공합니다mysql_close() 단일 매개 변수를 사용하는 데이터베이스 연결을 닫는 기능.
통사론
다음 PHP 연결 스크립트 구문을 검토하십시오-
connection mysql_connect(server,user,passwd,new_link,client_flag);
매개 변수에 대한 설명은 다음과 같습니다.
Sr. 아니요 | 매개 변수 및 설명 |
---|---|
1 | server 이 선택적 매개 변수는 데이터베이스 서버를 실행하는 호스트 이름을 지정합니다. 기본값은 "localhost : .3036"입니다. |
2 | user 이 선택적 매개 변수는 데이터베이스에 액세스하는 사용자 이름을 지정합니다. 기본값은 서버의 소유자입니다. |
삼 | passwd 이 선택적 매개 변수는 사용자의 비밀번호를 지정합니다. 기본값은 공백입니다. |
4 | new_link 이 선택적 매개 변수는 두 번째 호출에서 mysql_connect() 새 연결이 아닌 동일한 인수를 사용하면 현재 연결의 식별자가 반환됩니다. |
5 | client flags 이 선택적 매개 변수는 다음 상수 값의 조합을 사용합니다.
|
아래 주어진 PHP 연결 해제 스크립트 구문을 검토하십시오.
bool mysql_close ( resource $link_identifier );
리소스를 생략하면 가장 최근에 열린 리소스가 닫힙니다. 성공적으로 마감되면 true 값을 반환하거나 false를 반환합니다.
다음 예제 코드를 사용하여 MariaDB 서버에 연결하십시오.
<html>
<head>
<title>Connect to MariaDB Server</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'guest1'; $dbpass = 'guest1a';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($conn);
?>
</body>
</html>
성공적으로 연결되면 다음 출력이 표시됩니다.
mysql> Connected successfully
MariaDB에서 데이터베이스를 생성하거나 삭제하려면 일반적으로 루트 사용자 또는 관리자에게만 부여 된 권한이 필요합니다. 이 계정에는 mysqladmin 바이너리와 PHP 스크립트의 두 가지 데이터베이스 생성 옵션이 있습니다.
mysqladmin 바이너리
다음 예제는 이름이있는 데이터베이스를 생성 할 때 mysqladmin 바이너리를 사용하는 방법을 보여줍니다. Products −
[root@host]# mysqladmin -u root -p create PRODUCTS
Enter password:******
PHP 데이터베이스 생성 스크립트
PHP는 mysql_queryMariaDB 데이터베이스 생성 기능. 이 함수는 두 개의 매개 변수 (선택 사항)를 사용하며 성공하면 "true"값을 반환하고 그렇지 않으면 "false"값을 반환합니다.
통사론
다음을 검토하십시오. create database script 구문-
bool mysql_query( sql, connection );
매개 변수에 대한 설명은 다음과 같습니다.
S. 아니 | 매개 변수 및 설명 |
---|---|
1 | sql 이 필수 매개 변수는 작업을 수행하는 데 필요한 SQL 쿼리로 구성됩니다. |
2 | connection 지정되지 않은 경우이 선택적 매개 변수는 가장 최근에 사용 된 연결을 사용합니다. |
데이터베이스를 생성하기 위해 다음 예제 코드를 시도하십시오-
<html>
<head>
<title>Create a MariaDB Database</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully<br />';
$sql = 'CREATE DATABASE PRODUCTS'; $retval = mysql_query( $sql, $conn );
if(! $retval ) { die('Could not create database: ' . mysql_error()); } echo "Database PRODUCTS created successfully\n"; mysql_close($conn);
?>
</body>
</html>
성공적으로 삭제되면 다음 출력이 표시됩니다.
mysql> Database PRODUCTS created successfully
mysql> SHOW DATABASES;
+-----------------------+
| Database |
+-----------------------+
| PRODUCTS |
+-----------------------+
MariaDB에서 데이터베이스를 생성하거나 삭제하려면 일반적으로 루트 사용자 또는 관리자에게만 부여되는 권한이 필요합니다. 이 계정에는 mysqladmin 바이너리와 PHP 스크립트의 두 가지 데이터베이스 삭제 옵션이 있습니다.
삭제 된 데이터베이스는 복구 할 수 없으므로이 작업을 수행 할 때주의하십시오. 또한 삭제에 사용되는 PHP 스크립트는not 삭제하기 전에 확인 메시지를 표시합니다.
mysqladmin 바이너리
다음 예제는 mysqladmin 바이너리를 사용하여 기존 데이터베이스를 삭제하는 방법을 보여줍니다.
[root@host]# mysqladmin -u root -p drop PRODUCTS
Enter password:******
mysql> DROP PRODUCTS
ERROR 1008 (HY000): Can't drop database 'PRODUCTS'; database doesn't exist
PHP 드롭 데이터베이스 스크립트
PHP는 mysql_queryMariaDB 데이터베이스 삭제 기능. 이 함수는 두 개의 매개 변수 (선택 사항)를 사용하며 성공하면 "true"값을 반환하고 그렇지 않으면 "false"값을 반환합니다.
통사론
다음 드롭 데이터베이스 스크립트 구문 검토-
bool mysql_query( sql, connection );
매개 변수에 대한 설명은 다음과 같습니다.
Sr. 아니요 | 매개 변수 및 설명 |
---|---|
1 | sql 이 필수 매개 변수는 작업을 수행하는 데 필요한 SQL 쿼리로 구성됩니다. |
2 | connection 지정되지 않은 경우이 선택적 매개 변수는 가장 최근에 사용 된 연결을 사용합니다. |
데이터베이스를 삭제하기 위해 다음 예제 코드를 시도하십시오-
<html>
<head>
<title>Delete a MariaDB Database</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully<br />';
$sql = 'DROP DATABASE PRODUCTS'; $retval = mysql_query( $sql, $conn );
if(! $retval ){ die('Could not delete database: ' . mysql_error()); } echo "Database PRODUCTS deleted successfully\n"; mysql_close($conn);
?>
</body>
</html>
성공적으로 삭제되면 다음 출력이 표시됩니다.
mysql> Database PRODUCTS deleted successfully
MariaDB에 연결 한 후에는 많은 데이터베이스가 존재할 수 있으므로 작업 할 데이터베이스를 선택해야합니다. 이 작업을 수행하는 방법에는 두 가지가 있습니다. 명령 프롬프트에서 또는 PHP 스크립트를 통해.
명령 프롬프트
명령 프롬프트에서 데이터베이스를 선택할 때 간단히 SQL 명령을 사용하십시오. ‘use’ −
[root@host]# mysql -u root -p
Enter password:******
mysql> use PRODUCTS;
Database changed
mysql> SELECT database();
+-------------------------+
| Database |
+-------------------------+
| PRODUCTS |
+-------------------------+
데이터베이스를 선택하면 모든 후속 명령이 선택한 데이터베이스에서 작동합니다.
Note− 모든 이름 (예 : 데이터베이스, 테이블, 필드)은 대소 문자를 구분합니다. 명령이 적절한 대소 문자를 준수하는지 확인하십시오.
PHP 데이터베이스 스크립트 선택
PHP는 mysql_select_db데이터베이스 선택 기능. 이 함수는 두 개의 매개 변수 (선택 사항 중 하나)를 사용하며 성공적인 선택시 "true"값을, 실패시 false 값을 반환합니다.
통사론
다음 데이터베이스 선택 스크립트 구문을 검토하십시오.
bool mysql_select_db( db_name, connection );
매개 변수에 대한 설명은 다음과 같습니다.
S. 아니 | 매개 변수 및 설명 |
---|---|
1 | db_name 이 필수 매개 변수는 사용할 데이터베이스의 이름을 지정합니다. |
2 | connection 지정되지 않은 경우이 선택적 매개 변수는 가장 최근에 사용 된 연결을 사용합니다. |
데이터베이스를 선택하기 위해 다음 예제 코드를 시도하십시오-
<html>
<head>
<title>Select a MariaDB Database</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036'; $dbuser = 'guest1';
$dbpass = 'guest1a'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_select_db( 'PRODUCTS' );
mysql_close($conn);
?>
</body>
</html>
성공적으로 선택하면 다음 출력이 표시됩니다.
mysql> Connected successfully
좋은 필드 정의는 데이터베이스 최적화에 필수적입니다. 이상적인 접근 방식을 사용하려면 필요한 유형과 크기의 필드 만 사용해야합니다. 예를 들어, 5 자 너비의 필드 만 사용하려는 경우 20 자 너비의 필드를 정의하지 마십시오. 필드 (또는 열) 유형은 필드 내에 저장된 데이터 유형이 주어지면 데이터 유형이라고도합니다.
MariaDB 데이터 유형은 숫자, 날짜 및 시간, 문자열 값으로 분류 할 수 있습니다.
숫자 데이터 유형
MariaDB에서 지원하는 숫자 데이터 유형은 다음과 같습니다.
TINYINT −이 데이터 유형은 부호있는 -128 ~ 127 범위와 부호없는 0 ~ 255 범위에 속하는 작은 정수를 나타냅니다.
BOOLEAN −이 데이터 유형은 값 0을 "false"에 연결하고 값 1을 "true"에 연결합니다.
SMALLINT −이 데이터 유형은 부호있는 -32768 ~ 32768 범위와 부호없는 0 ~ 65535 범위 내의 정수를 나타냅니다.
MEDIUMINT −이 데이터 유형은 부호있는 범위 -8388608 ~ 8388607 및 부호없는 범위 0 ~ 16777215에있는 정수를 나타냅니다.
INT(also INTEGER)−이 데이터 유형은 일반 크기의 정수를 나타냅니다. 부호 없음으로 표시되면 범위는 0 ~ 4294967295입니다. 부호있는 경우 (기본 설정) 범위는 -2147483648 ~ 2147483647입니다. 열이 ZEROFILL (부호없는 상태)로 설정되면 모든 값 앞에 0이 추가되어 배치됩니다. INT 값의 M 자리.
BIGINT −이 데이터 유형은 부호있는 9223372036854775808 ~ 9223372036854775807 범위와 부호없는 0 ~ 18446744073709551615 범위 내의 정수를 나타냅니다.
DECIMAL(또한 DEC, NUMERIC, FIXED)-이 데이터 유형은 정확한 고정 소수점 숫자를 나타내며, M은 숫자를 지정하고 D는 소수점 뒤의 숫자를 지정합니다. M 값은 "-"또는 소수점을 추가하지 않습니다. D가 0으로 설정되면 소수 또는 분수 부분이 나타나지 않고 값은 INSERT에서 가장 가까운 DECIMAL로 반올림됩니다. 허용되는 최대 자릿수는 65이고 소수의 최대 값은 30입니다. 생략시 M의 기본값은 10, 생략시 D의 경우 0입니다.
FLOAT −이 데이터 유형은 값 0의 작은 부동 소수점 숫자 또는 다음 범위 내의 숫자를 나타냅니다.
-3.402823466E + 38에서 -1.175494351E-38
1.175494351E-38에서 3.402823466E + 38
DOUBLE (또한 REAL 과 DOUBLE PRECISION) −이 데이터 유형은 값 0 또는 다음 범위 내의 일반 크기, 부동 소수점 숫자를 나타냅니다.
-1.7976931348623157E + 308에서 -2.2250738585072014E-308
2.2250738585072014E-308에서 1.7976931348623157E + 308
BIT−이 데이터 유형은 M이 값당 비트 수를 지정하는 비트 필드를 나타냅니다. M 생략시 기본값은 1입니다. 비트 값은 0과 1의 비트 값을 나타내는“b '[value]'”로 적용 할 수 있습니다. 제로 패딩은 전체 길이에 대해 왼쪽에서 자동으로 발생합니다. 예를 들어 "10"은 "0010"이됩니다.
날짜 및 시간 데이터 유형
MariaDB에서 지원하는 날짜 및 시간 데이터 유형은 다음과 같습니다.
DATE −이 데이터 유형은 "1000-01-01"에서 "9999-12-31"까지의 날짜 범위를 나타내며 "YYYY-MM-DD"날짜 형식을 사용합니다.
TIME −이 데이터 유형은 "-838 : 59 : 59.999999"에서 "838 : 59 : 59.999999"까지의 시간 범위를 나타냅니다.
DATETIME−이 데이터 유형은 "1000-01-01 00 : 00 : 00.000000"~ "9999-12-31 23 : 59 : 59.999999"범위를 나타냅니다. "YYYY-MM-DD HH : MM : SS"형식을 사용합니다.
TIMESTAMP−이 데이터 유형은 "YYYY-MM-DD HH : MM : DD"형식의 타임 스탬프를 나타냅니다. 주로 삽입 또는 업데이트와 같은 데이터베이스 수정 시간을 자세히 설명하는 데 사용됩니다.
YEAR−이 데이터 유형은 4 자리 형식의 연도를 나타냅니다. 4 자리 형식은 1901 ~ 2155 및 0000 범위의 값을 허용합니다.
문자열 데이터 유형
MariaDB에서 지원하는 문자열 유형 값은 다음과 같습니다.
String literals −이 데이터 유형은 따옴표로 묶인 문자 시퀀스를 나타냅니다.
CHAR−이 데이터 유형은 지정된 길이의 공백을 포함하는 오른쪽 패딩 고정 길이 문자열을 나타냅니다. M은 0에서 255 사이의 문자 열 길이를 나타내며 기본값은 1입니다.
VARCHAR −이 데이터 유형은 M 범위 (최대 열 길이)가 0에서 65535 사이 인 가변 길이 문자열을 나타냅니다.
BINARY −이 데이터 유형은 이진 바이트 문자열을 나타내며 M은 열 길이 (바이트)입니다.
VARBINARY −이 데이터 유형은 열 길이가 M 인 가변 길이의 이진 바이트 문자열을 나타냅니다.
TINYBLOB−이 데이터 유형은 최대 길이가 255 (28-1) 바이트 인 Blob 열을 나타냅니다. 스토리지에서 각각은 값의 바이트 수량을 나타내는 1 바이트 길이 접두사를 사용합니다.
BLOB−이 데이터 유형은 최대 길이가 65,535 (216-1) 바이트 인 blob 열을 나타냅니다. 스토리지에서 각각은 값의 바이트 수량을 나타내는 2 바이트 길이 접두사를 사용합니다.
MEDIUMBLOB-이 데이터 형식은 16,777,215 (2 최대 길이 블롭 열에 나타내는 24 바이트 - 1). 스토리지에서 각각은 값의 바이트 수량을 나타내는 3 바이트 길이 접두사를 사용합니다.
LONGBLOB-이 데이터 유형 4,294,967,295 (2 최대 길이 블롭 열에 나타내는 32 바이트 - 1). 스토리지에서 각각은 값의 바이트 수량을 나타내는 4 바이트 길이 접두사를 사용합니다.
TINYTEXT-이 데이터 형식은 255 (2의 최대 길이를 갖는 텍스트 열 나타내는 8 자 - 1). 스토리지에서 각각은 값의 바이트 수량을 나타내는 1 바이트 길이 접두사를 사용합니다.
TEXT-이 데이터 형식은 65,535 (2의 최대 길이를 갖는 텍스트 열 나타내는 16 문자 - 1). 스토리지에서 각각은 값의 바이트 수량을 나타내는 2 바이트 길이 접두사를 사용합니다.
MEDIUMTEXT-이 데이터 형식은 16,777,215 ((2)의 최대 길이를 갖는 텍스트 열 나타내는 24 문자 - 1). 스토리지에서 각각은 값의 바이트 수량을 나타내는 3 바이트 길이 접두사를 사용합니다.
LONGTEXT-이 데이터 유형 또는 4,294,967,295 4기가바이트 ((2)의 최대 길이를 갖는 텍스트 열 나타내는 32 문자 - 1). 스토리지에서 각각은 값의 바이트 수량을 나타내는 4 바이트 길이 접두사를 사용합니다.
ENUM −이 데이터 유형은 목록에서 하나의 값만 갖는 문자열 객체를 나타냅니다.
SET−이 데이터 유형은 목록에서 0 개 이상의 값을 갖는 문자열 객체를 나타내며 최대 64 개의 구성원이 있습니다. SET 값은 내부적으로 정수 값으로 표시됩니다.
이 장에서는 테이블을 만드는 방법을 배웁니다. 테이블을 만들기 전에 먼저 이름, 필드 이름 및 필드 정의를 결정하십시오.
다음은 테이블 생성을위한 일반적인 구문입니다.
CREATE TABLE table_name (column_name column_type);
PRODUCTS 데이터베이스에서 테이블 생성에 적용된 명령 검토-
databaseproducts_ tbl(
product_id INT NOT NULL AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
product_manufacturer VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY ( product_id )
);
위의 예에서는 null 값으로 인한 오류를 방지하기 위해 필드 속성으로 "NOT NULL"을 사용합니다. "AUTO_INCREMENT"속성은 MariaDB에 다음 사용 가능한 값을 ID 필드에 추가하도록 지시합니다. 키워드 기본 키는 열을 다음과 같이 정의합니다.primary key. 쉼표로 구분 된 여러 열은 기본 키를 정의 할 수 있습니다.
테이블을 만드는 두 가지 주요 방법은 명령 프롬프트와 PHP 스크립트를 사용하는 것입니다.
명령 프롬프트
CREATE TABLE 명령을 사용하여 아래와 같이 작업을 수행하십시오.
root@host# mysql -u root -p
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> CREATE TABLE products_tbl(
-> product_id INT NOT NULL AUTO_INCREMENT,
-> product_name VARCHAR(100) NOT NULL,
-> product_manufacturer VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( product_id )
-> );
mysql> SHOW TABLES;
+------------------------+
| PRODUCTS |
+------------------------+
| products_tbl |
+------------------------+
모든 명령이 세미콜론으로 끝나는 지 확인하십시오.
PHP 테이블 생성 스크립트
PHP는 mysql_query()테이블 생성을 위해. 두 번째 인수는 필요한 SQL 명령을 포함합니다-
<html>
<head>
<title>Create a MariaDB Table</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root'; $dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){ die('Could not connect: ' . mysql_error()); } echo 'Connected successfully<br />'; $sql = "CREATE TABLE products_tbl( ".
"product_id INT NOT NULL AUTO_INCREMENT, ".
"product_name VARCHAR(100) NOT NULL, ".
"product_manufacturer VARCHAR(40) NOT NULL, ".
"submission_date DATE, ".
"PRIMARY KEY ( product_id )); ";
mysql_select_db( 'PRODUCTS' );
$retval = mysql_query( $sql, $conn ); if(! $retval ) {
die('Could not create table: ' . mysql_error());
}
echo "Table created successfully\n";
mysql_close($conn);
?>
</body>
</html>
성공적으로 테이블을 생성하면 다음 출력이 표시됩니다.
mysql> Table created successfully
이 장에서는 테이블을 삭제하는 방법을 배웁니다.
테이블 삭제는 매우 쉽지만 삭제 된 모든 테이블은 복구 할 수 없습니다. 테이블 삭제의 일반적인 구문은 다음과 같습니다.
DROP TABLE table_name ;
테이블 드롭을 수행하기위한 두 가지 옵션이 있습니다. 명령 프롬프트 또는 PHP 스크립트를 사용하십시오.
명령 프롬프트
명령 프롬프트에서 간단히 DROP TABLE SQL 명령-
root@host# mysql -u root -p
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> DROP TABLE products_tbl
mysql> SELECT * from products_tbl
ERROR 1146 (42S02): Table 'products_tbl' doesn't exist
PHP 드롭 테이블 스크립트
PHP는 mysql_query()테이블 삭제를 위해. 두 번째 인수에 적절한 SQL 명령을 전달하기 만하면됩니다.
<html>
<head>
<title>Create a MariaDB Table</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root'; $dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully<br />'; $sql = "DROP TABLE products_tbl";
mysql_select_db( 'PRODUCTS' );
$retval = mysql_query( $sql, $conn ); if(! $retval ) {
die('Could not delete table: ' . mysql_error());
}
echo "Table deleted successfully\n";
mysql_close($conn);
?>
</body>
</html>
테이블 삭제에 성공하면 다음 출력이 표시됩니다.
mysql> Table deleted successfully
이 장에서는 테이블에 데이터를 삽입하는 방법을 배웁니다.
테이블에 데이터를 삽입하려면 INSERT 명령이 필요합니다. 명령의 일반 구문은 INSERT 뒤에 테이블 이름, 필드 및 값이옵니다.
아래에 주어진 일반적인 구문을 검토하십시오-
INSERT INTO tablename (field,field2,...) VALUES (value, value2,...);
명령문은 문자열 값에 작은 따옴표 또는 큰 따옴표를 사용해야합니다. 문에 대한 다른 옵션에는 "INSERT ... SET"문, "INSERT ... SELECT"문 및 기타 여러 옵션이 포함됩니다.
Note − 문 내에 나타나는 VALUES () 함수는 INSERT 문에만 적용되며 다른 곳에서 사용하면 NULL을 반환합니다.
작업을 수행하기위한 두 가지 옵션이 있습니다. 명령 줄을 사용하거나 PHP 스크립트를 사용합니다.
명령 프롬프트
프롬프트에서 선택 작업을 수행하는 여러 가지 방법이 있습니다. 표준 성명은 다음과 같습니다.
belowmysql>
INSERT INTO products_tbl (ID_number, Nomenclature) VALUES (12345,“Orbitron 4000”);
mysql> SHOW COLUMNS FROM products_tbl;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| ID_number | int(5) | | | | |
| Nomenclature| char(13) | | | | |
+-------------+-------------+------+-----+---------+-------+
여러 행을 삽입 할 수 있습니다-
INSERT INTO products VALUES (1, “first row”), (2, “second row”);
SET 절을 사용할 수도 있습니다.
INSERT INTO products SELECT * FROM inventory WHERE status = 'available';
PHP 삽입 스크립트
PHP 함수 내에 동일한 "INSERT INTO ..."문을 사용하여 작업을 수행합니다. 당신은mysql_query() 다시 한 번 기능합니다.
아래 주어진 예를 검토하십시오-
<?php
if(isset($_POST['add'])) {
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
if(! get_magic_quotes_gpc() ) {
$product_name = addslashes ($_POST['product_name']);
$product_manufacturer = addslashes ($_POST['product_name']);
} else {
$product_name = $_POST['product_name'];
$product_manufacturer = $_POST['product_manufacturer'];
}
$ship_date = $_POST['ship_date'];
$sql = "INSERT INTO products_tbl ". "(product_name,product_manufacturer, ship_date) ". "VALUES"."('$product_name','$product_manufacturer','$ship_date')";
mysql_select_db('PRODUCTS');
$retval = mysql_query( $sql, $conn ); if(! $retval ) {
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
mysql_close($conn);
}
?>
성공적으로 데이터를 삽입하면 다음 출력이 표시됩니다.
mysql> Entered data successfully
또한 올바른 데이터 입력을 확인하는 것과 같은 삽입 문과 함께 유효성 검사 문을 공동 작업합니다. MariaDB에는 이러한 목적을위한 여러 옵션이 포함되어 있으며 그중 일부는 자동입니다.
이 장에서는 테이블에서 데이터를 선택하는 방법을 배웁니다.
SELECT 문은 선택한 행을 검색합니다. UNION 문, 순서 지정 절, LIMIT 절, WHERE 절, GROUP BY ... HAVING 절 및 하위 쿼리를 포함 할 수 있습니다.
다음 일반 구문을 검토하십시오.
SELECT field, field2,... FROM table_name, table_name2,... WHERE...
SELECT 문은 사용 된 테이블을 지정하는 여러 옵션을 제공합니다-
database_name.table_name
table_name.column_name
database_name.table_name.column_name
모든 선택 문에는 하나 이상의 select expressions. 선택 표현식은 다음 옵션 중 하나로 구성됩니다.
열 이름.
연산자와 함수를 사용하는 표현식입니다.
지정된 테이블 내의 모든 열을 선택하기위한 "table_name. *"사양.
FROM 절에 지정된 모든 테이블에서 모든 열을 선택하는 문자 "*".
명령 프롬프트 또는 PHP 스크립트를 사용하여 select 문을 실행할 수 있습니다.
명령 프롬프트
명령 프롬프트에서 다음과 같이 명령문을 실행하십시오.
root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl
+-------------+---------------+
| ID_number | Nomenclature |
+-------------+---------------+
| 12345 | Orbitron 4000 |
+-------------+---------------+
PHP 선택 스크립트
작업을 수행하려면 PHP 함수 내에서 동일한 SELECT 문을 사용합니다. 당신은mysql_query()다시 한 번 기능합니다. 아래 주어진 예를 검토하십시오-
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root'; $dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT product_id, product_name,product_manufacturer, ship_date FROM products_tbl';
mysql_select_db('PRODUCTS');
$retval = mysql_query( $sql, $conn ); if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
echo "Product ID :{$row['product_id']} <br> ". "Name: {$row['product_name']} <br> ".
"Manufacturer: {$row['product_manufacturer']} <br> ". "Ship Date : {$row['ship_date']} <br>".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
성공적인 데이터 검색시 다음 출력이 표시됩니다.
Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully
모범 사례에서는 모든 SELECT 문 후에 커서 메모리를 해제하는 것이 좋습니다. PHP는mysql_free_result()이 목적을 위해 기능. 아래와 같이 사용을 검토하십시오-
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root'; $dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl';
mysql_select_db('PRODUCTS');
$retval = mysql_query( $sql, $conn ); if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
echo "Product ID :{$row[0]} <br> ". "Name: {$row[1]} <br> ".
"Manufacturer: {$row[2]} <br> ". "Ship Date : {$row[3]} <br> ".
"--------------------------------<br>";
}
mysql_free_result($retval); echo "Fetched data successfully\n"; mysql_close($conn);
?>
WHERE절은 SELECT, UPDATE, DELETE 및 INSERT와 같은 다양한 문을 필터링합니다. 조치를 지정하는 데 사용되는 기준을 제시합니다. 일반적으로 명령문에서 테이블 이름 뒤에 나타나며 해당 조건은 다음과 같습니다. WHERE 절은 기본적으로 if 문처럼 작동합니다.
아래에 주어진 WHERE 절의 일반 구문을 검토하십시오.
[COMMAND] field,field2,... FROM table_name,table_name2,... WHERE [CONDITION]
WHERE 절의 다음 특성에 유의하십시오.
선택 사항입니다.
모든 조건을 지정할 수 있습니다.
AND 또는 OR 연산자를 사용하여 여러 조건을 지정할 수 있습니다.
대소 문자 구분은 LIKE 비교를 사용하는 문에만 적용됩니다.
WHERE 절은 다음 연산자의 사용을 허용합니다-
운영자 |
---|
=! = |
> < |
> = <= |
WHERE 절은 명령 프롬프트 또는 PHP 스크립트에서 사용할 수 있습니다.
명령 프롬프트
명령 프롬프트에서 단순히 표준 명령을 사용하십시오-
root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl WHERE product_manufacturer = 'XYZ Corp';
+-------------+----------------+----------------------+
| ID_number | Nomenclature | product_manufacturer |
+-------------+----------------+----------------------+
| 12345 | Orbitron 4000 | XYZ Corp |
+-------------+----------------+----------------------+
| 12346 | Orbitron 3000 | XYZ Corp |
+-------------+----------------+----------------------+
| 12347 | Orbitron 1000 | XYZ Corp |
+-------------+----------------+----------------------+
다음을 사용하여 예제 검토 AND 조건-
SELECT *
FROM products_tbl
WHERE product_name = 'Bun Janshu 3000';
AND product_id <= 344;
이 예는 AND 및 OR 조건을 결합합니다.
SELECT *
FROM products_tbl
WHERE (product_name = 'Bun Janshu 3000' AND product_id < 344)
OR (product_name = 'Bun Janshu 3000');
Where 절을 사용하는 PHP 스크립트
고용 mysql_query() WHERE 절을 사용하는 작업에서 함수-
<?php
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl WHERE product_manufacturer = "XYZ Corp"'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );
if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Product ID :{$row['product_id']} <br> ".
"Name: {$row['product_name']} <br> ". "Manufacturer: {$row['product_manufacturer']} <br> ".
"Ship Date: {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>
성공적인 데이터 검색시 다음 출력이 표시됩니다.
Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully
그만큼 UPDATE명령은 값을 변경하여 기존 필드를 수정합니다. SET 절을 사용하여 수정할 열을 지정하고 할당 된 새 값을 지정합니다. 이러한 값은 표현식이거나 필드의 기본값 일 수 있습니다. 기본값을 설정하려면 DEFAULT 키워드를 사용해야합니다. 이 명령은 또한 WHERE 절을 사용하여 업데이트 조건을 지정하고 /하거나 특정 순서로 업데이트 할 ORDER BY 절을 지정할 수 있습니다.
다음 일반 구문을 검토하십시오.
UPDATE table_name SET field=new_value, field2=new_value2,...
[WHERE ...]
명령 프롬프트 또는 PHP 스크립트를 사용하여 UPDATE 명령을 실행합니다.
명령 프롬프트
명령 프롬프트에서 단순히 표준 commandroot를 사용하십시오.
root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> UPDATE products_tbl
SET nomenclature = 'Fiber Blaster 300Z' WHERE ID_number = 112;
mysql> SELECT * from products_tbl WHERE ID_number='112';
+-------------+---------------------+----------------------+
| ID_number | Nomenclature | product_manufacturer |
+-------------+---------------------+----------------------+
| 112 | Fiber Blaster 300Z | XYZ Corp |
+-------------+---------------------+----------------------+
PHP 업데이트 쿼리 스크립트
고용 mysql_query() UPDATE 명령문의 기능-
<?php
$dbhost = ‘localhost:3036’; $dbuser = ‘root’;
$dbpass = ‘rootpassword’; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die(‘Could not connect: ‘ . mysql_error());
}
$sql = ‘UPDATE products_tbl SET product_name = ”Fiber Blaster 300z” WHERE product_id = 112’; mysql_select_db(‘PRODUCTS’); $retval = mysql_query( $sql, $conn );
if(! $retval ) { die(‘Could not update data: ‘ . mysql_error()); } echo “Updated data successfully\n”; mysql_close($conn);
?>
성공적인 데이터 업데이트시 다음과 같은 출력이 표시됩니다.
mysql> Updated data successfully
DELETE 명령은 지정된 테이블에서 테이블 행을 삭제하고 삭제 된 수량을 반환합니다. ROW_COUNT () 함수로 삭제 된 수량에 액세스합니다. WHERE 절은 행을 지정하며,없는 경우 모든 행이 삭제됩니다. LIMIT 절은 삭제 된 행 수를 제어합니다.
여러 행에 대한 DELETE 문에서는 조건을 충족하는 행만 삭제합니다. 및 LIMIT 및 WHERE 절은 허용되지 않습니다. DELETE 문은 다른 데이터베이스의 테이블에서 행을 삭제할 수 있지만 테이블에서 삭제 한 다음 하위 쿼리 내의 동일한 테이블에서 선택하는 것은 허용하지 않습니다.
다음 DELETE 구문 검토-
DELETE FROM table_name [WHERE …]
명령 프롬프트 또는 PHP 스크립트를 사용하여 DELETE 명령을 실행합니다.
명령 프롬프트
명령 프롬프트에서 단순히 표준 명령을 사용하십시오-
root@host# mysql –u root –p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> DELETE FROM products_tbl WHERE product_id=133;
mysql> SELECT * from products_tbl WHERE ID_number='133';
ERROR 1032 (HY000): Can't find record in 'products_tbl'
PHP 삭제 쿼리 스크립트
사용 mysql_query() DELETE 명령문의 기능-
<?php
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'DELETE FROM products_tbl WHERE product_id = 261'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );
if(! $retval ) { die('Could not delete data: ' . mysql_error()); } echo "Deleted data successfully\n"; mysql_close($conn);
?>
성공적인 데이터 삭제시 다음과 같은 출력이 표시됩니다.
mysql> Deleted data successfully
mysql> SELECT * from products_tbl WHERE ID_number='261';
ERROR 1032 (HY000): Can't find record in 'products_tbl'
WHERE 절은 작업에서 정확한 일치를 사용할 때 데이터를 검색하는 방법을 제공합니다. 공유 된 특성을 가진 여러 결과가 필요한 상황에서LIKE 절은 광범위한 패턴 일치를 수용합니다.
LIKE 절은 패턴 일치를 테스트하여 true 또는 false를 반환합니다. 비교에 사용되는 패턴은 다음 와일드 카드 문자를 허용합니다. "%", 문자 수 (0 개 이상)와 일치합니다. 및 단일 문자와 일치하는 "_". "_"와일드 카드 문자는 세트 내의 문자 만 일치합니다. 즉, 다른 세트를 사용할 때 라틴 문자를 무시합니다. 일치 항목은 기본적으로 대소 문자를 구분하지 않으며 대소 문자 구분에 대한 추가 설정이 필요합니다.
NOT LIKE 절을 사용하면 반대 조건을 테스트 할 수 있습니다. not 운영자.
명령문 표현식 또는 패턴이 NULL로 평가되면 결과는 NULL입니다.
아래에 주어진 일반적인 LIKE 절 구문을 검토하십시오.
SELECT field, field2,... FROM table_name, table_name2,...
WHERE field LIKE condition
명령 프롬프트 또는 PHP 스크립트 내에서 LIKE 절을 사용하십시오.
명령 프롬프트
명령 프롬프트에서 단순히 표준 명령을 사용하십시오-
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from products_tbl
WHERE product_manufacturer LIKE 'XYZ%';
+-------------+----------------+----------------------+
| ID_number | Nomenclature | product_manufacturer |
+-------------+----------------+----------------------+
| 12345 | Orbitron 4000 | XYZ Corp |
+-------------+----------------+----------------------+
| 12346 | Orbitron 3000 | XYZ Corp |
+-------------+----------------+----------------------+
| 12347 | Orbitron 1000 | XYZ Corp |
+-------------+----------------+----------------------+
Like 절을 사용하는 PHP 스크립트
사용 mysql_query() LIKE 절을 사용하는 명령문의 함수
<?php
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl WHERE product_manufacturer LIKE "xyz%"'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );
if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Product ID:{$row['product_id']} <br> ".
"Name: {$row['product_name']} <br> ". "Manufacturer: {$row['product_manufacturer']} <br> ".
"Ship Date: {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>
성공적인 데이터 검색시 다음 출력이 표시됩니다.
Product ID: 12345
Nomenclature: Orbitron 4000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 12346
Nomenclature: Orbitron 3000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/02/17
----------------------------------------------
mysql> Fetched data successfully
그만큼 ORDER BY절은 이전 논의에서 언급했듯이 명령문의 결과를 정렬합니다. 작동되는 데이터의 순서를 지정하고 오름차순 (ASC) 또는 내림차순 (DESC)으로 정렬하는 옵션을 포함합니다. 주문 사양을 생략하면 기본 순서는 오름차순입니다.
ORDER BY 절은 DELETE 및 UPDATE와 같은 다양한 문에 나타납니다. 최종 결과 테이블에서 작동하기 때문에 항상 하위 쿼리 나 집합 함수 앞이 아니라 명령문의 끝에 나타납니다. 또한 정수를 사용하여 열을 식별 할 수 없습니다.
아래에 주어진 ORDER BY 절의 일반 구문을 검토하십시오.
SELECT field, field2,... [or column] FROM table_name, table_name2,...
ORDER BY field, field2,... ASC[or DESC]
명령 프롬프트 또는 PHP 스크립트 내에서 ORDER BY 절을 사용하십시오.
명령 프롬프트
명령 프롬프트에서 단순히 표준 명령을 사용하십시오-
root@ host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT * from products_tbl ORDER BY product_manufacturer ASC
+-------------+----------------+----------------------+
| ID_number | Nomenclature | product_manufacturer |
+-------------+----------------+----------------------+
| 56789 | SuperBlast 400 | LMN Corp |
+-------------+----------------+----------------------+
| 67891 | Zoomzoom 5000 | QFT Corp |
+-------------+----------------+----------------------+
| 12347 | Orbitron 1000 | XYZ Corp |
+-------------+----------------+----------------------+
Order By 절을 사용하는 PHP 스크립트
활용 mysql_query() 다시 한 번, ORDER BY 절을 사용하는 명령문에서-
<?php
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT product_id, product_name, product_manufacturer, ship_date FROM products_tbl ORDER BY product_manufacturer DESC'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );
if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Product ID :{$row['product_id']} <br> ".
"Name: {$row['product_name']} <br> ". "Manufacturer: {$row['product_manufacturer']} <br> ".
"Ship Date : {$row['ship_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn);
?>
성공적인 데이터 검색시 다음 출력이 표시됩니다.
Product ID: 12347
Nomenclature: Orbitron 1000
Manufacturer: XYZ Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 67891
Nomenclature: Zoomzoom 5000
Manufacturer: QFT Corp
Ship Date: 01/01/17
----------------------------------------------
Product ID: 56789
Nomenclature: SuperBlast 400
Manufacturer: LMN Corp
Ship Date: 01/04/17
----------------------------------------------
mysql> Fetched data successfully
이전 논의와 예에서 단일 테이블에서 검색하거나 여러 소스에서 여러 값을 검색하는 방법을 살펴 보았습니다. 대부분의 실제 데이터 작업은 훨씬 더 복잡하여 여러 테이블에서 집계, 비교 및 검색이 필요합니다.
JOINs두 개 이상의 테이블을 단일 개체로 병합 할 수 있습니다. SELECT, UPDATE 및 DELETE 문을 통해 사용됩니다.
아래와 같이 JOIN을 사용하는 구문의 일반적인 구문을 검토하십시오.
SELECT column
FROM table_name1
INNER JOIN table_name2
ON table_name1.column = table_name2.column;
JOINS의 이전 구문은 암시 적 조인을 사용하고 키워드는 사용하지 않았습니다. WHERE 절을 사용하여 조인을 달성 할 수 있지만 키워드는 가독성, 유지 관리 및 모범 사례에 가장 적합합니다.
JOIN은 왼쪽 조인, 오른쪽 조인 또는 내부 조인과 같은 다양한 형태로 제공됩니다. 다양한 조인 유형은 공유 값 또는 특성을 기반으로 다양한 유형의 집계를 제공합니다.
명령 프롬프트 또는 PHP 스크립트에서 JOIN을 사용하십시오.
명령 프롬프트
명령 프롬프트에서 단순히 표준 명령문을 사용하십시오.
root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT products.ID_number, products.Nomenclature, inventory.inventory_ct
FROM products
INNER JOIN inventory
ON products.ID_numbeer = inventory.ID_number;
+-------------+----------------+-----------------+
| ID_number | Nomenclature | Inventory Count |
+-------------+----------------+-----------------+
| 12345 | Orbitron 4000 | 150 |
+-------------+----------------+-----------------+
| 12346 | Orbitron 3000 | 200 |
+-------------+----------------+-----------------+
| 12347 | Orbitron 1000 | 0 |
+-------------+----------------+-----------------+
JOIN을 사용하는 PHP 스크립트
사용 mysql_query() 조인 연산을 수행하는 기능-
<?php
$dbhost = 'localhost:3036'; $dbuser = 'root';
$dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT a.product_id, a.product_manufacturer, b.product_count FROM products_tbl a, pcount_tbl b WHERE a.product_manufacturer = b.product_manufacturer'; mysql_select_db('PRODUCTS'); $retval = mysql_query( $sql, $conn );
if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Manufacturer:{$row['product_manufacturer']} <br> ".
"Count: {$row['product_count']} <br> ". "Product ID: {$row['product_id']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
성공적인 데이터 검색시 다음 출력이 표시됩니다.
ID Number: 12345
Nomenclature: Orbitron 4000
Inventory Count: 150
--------------------------------------
ID Number: 12346
Nomenclature: Orbitron 3000
Inventory Count: 200
--------------------------------------
ID Number: 12347
Nomenclature: Orbitron 1000
Inventory Count: 0
--------------------------------------
mysql> Fetched data successfully
NULL 값으로 작업 할 때는 알 수없는 값임을 기억하십시오. 유효한 값인 빈 문자열이나 0이 아닙니다. 테이블 생성에서 열 사양은 null 값을 허용하거나 거부하도록 설정할 수 있습니다. NULL 또는 NOT NULL 절을 사용하기 만하면됩니다. ID 번호와 같은 기록 정보가 누락 된 경우에 적용됩니다.
사용자 정의 변수는 명시 적으로 할당 될 때까지 NULL 값을 갖습니다. 저장된 루틴 매개 변수 및 로컬 변수를 사용하면 NULL 값을 설정할 수 있습니다. 지역 변수에 기본값이 없으면 NULL 값을 갖습니다.
NULL은 대소 문자를 구분하지 않으며 다음과 같은 별칭이 있습니다.
- UNKNOWN (부울 값)
- \N
NULL 연산자
표준 비교 연산자는 NULL (예 : =,>,> =, <=, <또는! =)과 함께 사용할 수 없습니다. NULL 값이있는 모든 비교는 true 또는 false가 아닌 NULL을 반환하기 때문입니다. NULL과 비교하거나 포함 할 수있는 경우에는 "<=>"(NULL-SAFE) 연산자를 사용해야합니다.
사용 가능한 다른 연산자는-
IS NULL-NULL 값을 테스트합니다.
IS NOT NULL-NULL 값이 없음을 확인합니다.
ISNULL-NULL 값을 발견하면 1 값을 반환하고 부재시 0을 반환합니다.
COALESCE-목록의 NULL이 아닌 첫 번째 값을 반환하거나 하나가 없으면 NULL 값을 반환합니다.
NULL 값 정렬
정렬 작업에서 NULL 값은 가장 낮은 값을 가지므로 DESC 순서는 맨 아래에 NULL 값이됩니다. MariaDB에서는 NULL 값에 대해 더 높은 값을 설정할 수 있습니다.
아래와 같이 두 가지 방법이 있습니다.
SELECT column1 FROM product_tbl ORDER BY ISNULL(column1), column1;
다른 방법은-
SELECT column1 FROM product_tbl ORDER BY IF(column1 IS NULL, 0, 1), column1 DESC;
NULL 함수
매개 변수가 NULL 인 경우 함수는 일반적으로 NULL을 출력합니다. 그러나 NULL 값을 관리하기 위해 특별히 설계된 함수가 있습니다. 그들은-
IFNULL()− 첫 번째 표현식이 NULL이 아니면 반환합니다. NULL로 평가되면 두 번째 식을 반환합니다.
NULLIF() − 비교 된 표현식이 같으면 NULL을 반환하고, 같지 않으면 첫 번째 표현식을 반환합니다.
SUM 및 AVG와 같은 함수는 NULL 값을 무시합니다.
NULL 값 삽입
NOT NULL로 선언 된 열에 NULL 값을 삽입하면 오류가 발생합니다. 기본 SQL 모드에서 NOT NULL 열은 대신 데이터 유형에 따라 기본값을 삽입합니다.
필드가 TIMESTAMP, AUTO_INCREMENT 또는 가상 열인 경우 MariaDB는 NULL 값을 다르게 관리합니다. AUTO_INCREMENT 열에 삽입하면 시퀀스의 다음 번호가 그 자리에 삽입됩니다. TIMESTAMP 필드에서 MariaDB는 대신 현재 타임 스탬프를 할당합니다. 이 자습서의 뒷부분에서 설명하는 항목 인 가상 열에는 기본값이 할당됩니다.
UNIQUE 인덱스는 많은 NULL 값을 보유 할 수 있지만 기본 키는 NULL이 될 수 없습니다.
NULL 값 및 변경 명령
ALTER 명령을 사용하여 열을 수정할 때 NULL 사양이없는 경우 MariaDB는 자동으로 값을 할당합니다.
LIKE 절에서 사용할 수있는 패턴 일치 외에도 MariaDB는 REGEXP 연산자를 통해 정규식 기반 일치를 제공합니다. 연산자는 주어진 패턴을 기반으로 문자열 표현식에 대한 패턴 일치를 수행합니다.
MariaDB 10.0.5는 PCRE 정규식을 도입하여 재귀 패턴, 미리보기 어설 션 등과 같은 영역으로 일치 범위를 크게 늘 렸습니다.
아래에 주어진 표준 REGEXP 연산자 구문의 사용을 검토하십시오.
SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';
REGEXP는 패턴 일치의 경우 1을 반환하고 하나가 없으면 0을 반환합니다.
반대 옵션은 NOT REGEXP 형태로 존재합니다. MariaDB는 호환성을 위해 생성 된 REGEXP 및 NOT REGEXP, RLIKE 및 NOT RLIKE에 대한 동의어도 제공합니다.
비교되는 패턴은 리터럴 문자열이거나 테이블 열과 같은 다른 것일 수 있습니다. 문자열에서는 C 이스케이프 구문을 사용하므로 "\"문자를 두 배로 늘립니다. REGEXP는 이진 문자열을 제외하고 대소 문자를 구분하지 않습니다.
사용할 수있는 가능한 패턴의 표는 다음과 같습니다.
Sr. 아니요 | 패턴 및 설명 |
---|---|
1 | ^ 문자열의 시작과 일치합니다. |
2 | $ 문자열의 끝과 일치합니다. |
삼 | . 단일 문자와 일치합니다. |
4 | [...] 대괄호 안의 모든 문자와 일치합니다. |
5 | [^...] 괄호 안에 나열되지 않은 모든 문자와 일치합니다. |
6 | p1|p2|p3 어떤 패턴과도 일치합니다. |
7 | * 0 개 이상의 이전 요소 인스턴스와 일치합니다. |
8 | + 이전 요소의 1 개 이상의 인스턴스와 일치합니다. |
9 | {n} 이전 요소의 n 인스턴스와 일치합니다. |
10 | {m,n} 이전 요소의 m에서 n 개의 인스턴스와 일치합니다. |
아래 주어진 패턴 매칭 예제를 검토하십시오-
"pr"로 시작하는 제품 −
SELECT name FROM product_tbl WHERE name REGEXP '^pr';
"na"로 끝나는 제품 −
SELECT name FROM product_tbl WHERE name REGEXP 'na$';
모음으로 시작하는 제품 −
SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';
트랜잭션은 순차적 인 그룹 작업입니다. 단일 단위로 작동하며 그룹 내의 모든 작업이 성공적으로 실행될 때까지 종료되지 않습니다. 그룹의 단일 실패로 인해 전체 트랜잭션이 실패하고 데이터베이스에 영향을주지 않습니다.
트랜잭션은 ACID (원 자성, 일관성, 격리 및 내구성)를 준수합니다.
Atomicity − 실패시 중단하고 변경 사항을 롤백하여 모든 작업의 성공을 보장합니다.
Consistency − 데이터베이스가 성공적인 트랜잭션에 변경 사항을 적용하도록합니다.
Isolation − 거래의 독립적 인 거래 운영이 가능합니다.
Durability − 시스템 오류 발생시 성공적인 트랜잭션의 지속성을 보장합니다.
트랜잭션 문의 맨 앞에는 START TRANSACTION 문과 COMMIT 및 ROLLBACK 문이 있습니다.
START TRANSACTION은 거래를 시작합니다.
COMMIT는 데이터 변경 사항을 저장합니다.
ROLLBACK은 트랜잭션을 종료하고 변경 사항을 삭제합니다.
성공적인 트랜잭션에서 COMMIT가 작동합니다. 실패시 ROLLBACK이 작동합니다.
Note− 일부 문은 암시 적 커밋을 유발하고 트랜잭션 내에서 사용될 때 오류를 발생시킵니다. 이러한 명령문의 예에는 CREATE, ALTER 및 DROP이 포함되지만 이에 국한되지는 않습니다.
MariaDB 트랜잭션에는 SAVEPOINT 및 LOCK TABLES와 같은 옵션도 포함됩니다. SAVEPOINT는 ROLLBACK과 함께 사용할 복원 지점을 설정합니다. LOCK TABLES를 사용하면 세션 중에 테이블에 대한 액세스를 제어하여 특정 기간 동안 수정을 방지 할 수 있습니다.
AUTOCOMMIT 변수는 트랜잭션에 대한 제어를 제공합니다. 1로 설정하면 모든 작업이 성공적인 트랜잭션으로 간주되고 0으로 설정하면 명시 적 COMMIT 문에서만 변경 사항이 지속됩니다.
거래 구조
트랜잭션 문의 일반 구조는 START TRANSACTION으로 시작하는 것으로 구성됩니다. 다음 단계는 하나 이상의 명령 / 작업을 삽입하고, 오류를 확인하는 문을 삽입하고, ROLLBACK 문을 삽입하여 발견 된 오류를 관리하고, 마지막으로 COMMIT 문을 삽입하여 성공적인 작업에 변경 사항을 적용합니다.
아래 주어진 예를 검토하십시오-
START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;
ALTER 명령은 기존 테이블의 구조를 변경하는 방법을 제공합니다. 즉, 열 제거 또는 추가, 인덱스 수정, 데이터 유형 변경 또는 이름 변경과 같은 수정을 의미합니다. ALTER는 또한 메타 데이터 잠금이 활성화 될 때 변경 사항을 적용하기 위해 대기합니다.
ALTER를 사용하여 열 수정
DROP과 쌍을 이루는 ALTER는 기존 열을 제거합니다. 그러나 해당 열이 유일한 나머지 열이면 실패합니다.
아래 주어진 예를 검토하십시오-
mysql> ALTER TABLE products_tbl DROP version_num;
ALTER ... ADD 문을 사용하여 열 추가-
mysql> ALTER TABLE products_tbl ADD discontinued CHAR(1);
열의 위치를 지정하려면 키워드 FIRST 및 AFTER를 사용하십시오-
ALTER TABLE products_tbl ADD discontinued CHAR(1) FIRST;
ALTER TABLE products_tbl ADD discontinued CHAR(1) AFTER quantity;
FIRST 및 AFTER 키워드는 ALTER ... ADD 문에만 적용됩니다. 또한 테이블 위치를 변경하려면 테이블을 삭제 한 다음 추가해야합니다.
ALTER 문에서 MODIFY 또는 CHANGE 절을 사용하여 컬럼 정의 또는 이름을 변경하십시오. 이 절은 비슷한 효과가 있지만 실질적으로 다른 구문을 사용합니다.
아래 주어진 변경 예를 검토하십시오-
mysql> ALTER TABLE products_tbl CHANGE discontinued status CHAR(4);
CHANGE를 사용하는 명령문에서 원래 열을 지정한 다음이를 대체 할 새 열을 지정합니다. 아래의 수정 예를 검토하십시오-
mysql> ALTER TABLE products_tbl MODIFY discontinued CHAR(4);
ALTER 명령을 사용하면 기본값을 변경할 수도 있습니다. 예 검토-
mysql> ALTER TABLE products_tbl ALTER discontinued SET DEFAULT N;
DROP 절과 쌍을 이루어 기본 제약 조건을 제거하는 데 사용할 수도 있습니다.
mysql> ALTER TABLE products_tbl ALTER discontinued DROP DEFAULT;
ALTER를 사용하여 테이블 수정
TYPE 절로 테이블 유형 변경-
mysql> ALTER TABLE products_tbl TYPE = INNODB;
RENAME 키워드로 테이블 이름 바꾸기-
mysql> ALTER TABLE products_tbl RENAME TO products2016_tbl;
인덱스는 레코드 검색을 가속화하기위한 도구입니다. 인덱스는 인덱싱 된 열 내의 각 값에 대한 항목을 생성합니다.
네 가지 유형의 인덱스가 있습니다-
Primary (하나의 레코드는 모든 레코드를 나타냄)
Unique (하나의 레코드는 여러 레코드를 나타냄)
Plain
Full-Text (텍스트 검색에서 많은 옵션을 허용합니다).
"키"와 "인덱스"라는 용어는이 사용법에서 동일합니다.
인덱스는 하나 이상의 열과 연결되며 빠른 검색과 효율적인 레코드 구성을 지원합니다. 인덱스를 생성 할 때 쿼리에서 자주 사용되는 열을 고려하십시오. 그런 다음 하나 이상의 인덱스를 만듭니다. 또한 인덱스를 기본 키의 테이블로 봅니다.
인덱스는 검색 또는 SELECT 문을 가속화하지만 테이블과 인덱스 모두에서 작업을 수행하기 때문에 삽입 및 업데이트를 끌어옵니다.
인덱스 생성
CREATE TABLE ... INDEX 문 또는 CREATE INDEX 문을 통해 인덱스를 만들 수 있습니다. 가독성, 유지 관리 및 모범 사례를 지원하는 최상의 옵션은 CREATE INDEX입니다.
아래에 주어진 Index의 일반적인 구문을 검토하십시오-
CREATE [UNIQUE or FULLTEXT or...] INDEX index_name ON table_name column;
사용 예 검토-
CREATE UNIQUE INDEX top_sellers ON products_tbl product;
인덱스 삭제
DROP INDEX 또는 ALTER TABLE ... DROP을 사용하여 인덱스를 삭제할 수 있습니다. 가독성, 유지 관리 및 모범 사례를 지원하는 최상의 옵션은 DROP INDEX입니다.
아래 주어진 Drop Index의 일반적인 구문을 검토하십시오.
DROP INDEX index_name ON table_name;
사용 예 검토-
DROP INDEX top_sellers ON product_tbl;
색인 이름 바꾸기
ALTER TABLE 문으로 인덱스 이름을 바꿉니다. 아래에 주어진 일반적인 구문을 검토하십시오-
ALTER TABLE table_name DROP INDEX index_name, ADD INDEX new_index_name;
사용 예 검토-
ALTER TABLE products_tbl DROP INDEX top_sellers, ADD INDEX top_2016sellers;
인덱스 관리
모든 인덱스를 검사하고 추적해야합니다. SHOW INDEX를 사용하여 주어진 테이블과 관련된 모든 기존 인덱스를 나열합니다. 세로 형식을 지정하는 "\ G"와 같은 옵션을 사용하여 표시되는 콘텐츠의 형식을 설정할 수 있습니다.
다음 예를 검토하십시오-
mysql > SHOW INDEX FROM products_tbl\G
테이블 통계
인덱스는 레코드에 대한 빠른 액세스와 제공된 통계를 고려하여 쿼리를 최적화하는 데 많이 사용됩니다. 그러나 많은 사용자는 인덱스 유지 관리가 번거 롭다고 생각합니다. MariaDB 10.0은 모든 스토리지 엔진의 모든 테이블에 대한 데이터 통계를 계산하고 인덱싱되지 않은 열에 대한 통계까지도 계산하는 스토리지 엔진 독립적 인 통계 테이블을 제공했습니다.
일부 작업은 속도 또는 삭제 가능한 데이터로 인해 임시 테이블의 이점을 누릴 수 있습니다. 임시 테이블의 수명은 명령 프롬프트에서 사용하든, PHP 스크립트를 사용하든, 클라이언트 프로그램을 통해 사용하든 세션이 종료되면 끝납니다. 또한 일반적인 방식으로 시스템에 나타나지 않습니다. SHOW TABLES 명령은 임시 테이블이 포함 된 목록을 표시하지 않습니다.
임시 테이블 만들기
CREATE TABLE 문 내의 TEMPORARY 키워드는 임시 테이블을 생성합니다. 아래 주어진 예를 검토하십시오-
mysql>CREATE TEMPORARY TABLE order (
item_name VARCHAR(50) NOT NULL
, price DECIMAL(7,2) NOT NULL DEFAULT 0.00
, quantity INT UNSIGNED NOT NULL DEFAULT 0
);
임시 테이블을 생성 할 때 LIKE 절을 사용하여 기존 테이블 (모든 일반 특성을 의미)을 복제 할 수 있습니다. 임시 테이블을 생성하는 데 사용되는 CREATE TABLE 문은 TEMPORARY 키워드의 결과로 트랜잭션을 커밋하지 않습니다.
임시 테이블은 비 임시 테이블과 구별되어 세션 종료시 삭제되지만 특정 충돌이있을 수 있습니다.
만료 된 세션의 고스트 임시 테이블과 충돌하는 경우가 있습니다.
때때로 임시 테이블이 아닌 섀도우 이름과 충돌합니다.
Note − 임시 테이블은 MariaDB가이를 차이점 참조로 간주하므로 기존 비 임시 테이블과 동일한 이름을 가질 수 있습니다.
관리
MariaDB는 임시 테이블을 생성하기 위해 사용자에게 권한을 부여해야합니다. 관리자가 아닌 사용자에게이 권한을 부여하려면 GRANT 문을 사용하십시오.
GRANT CREATE TEMPORARY TABLES ON orders TO 'machine122'@'localhost';
임시 테이블 삭제
임시 테이블은 기본적으로 세션이 끝날 때 제거되지만 삭제할 수있는 옵션이 있습니다. 임시 테이블을 삭제하려면 TEMPORARY 키워드를 사용해야하며 우수 사례는 임시 테이블을 삭제하기 전에 임시 테이블을 삭제하는 것이 좋습니다.
mysql> DROP TABLE order;
일부 상황에서는 기존 테이블의 정확한 사본을 생성해야합니다. CREATE ... SELECT 문은 인덱스 및 기본값과 같은 것을 무시하므로이 출력을 생성 할 수 없습니다.
테이블을 복제하는 절차는 다음과 같습니다.
SHOW CREATE TABLE을 사용하여 소스 테이블의 전체 구조를 자세히 설명하는 CREATE TABLE 문을 생성합니다.
문을 편집하여 테이블에 새 이름을 부여하고 실행합니다.
테이블 데이터도 복사해야하는 경우 INSERT INTO ... SELECT 문을 사용합니다.
mysql> INSERT INTO inventory_copy_tbl (
product_id,product_name,product_manufacturer,ship_date)
SELECT product_id,product_name,product_manufacturer,ship_date,
FROM inventory_tbl;
복제를 만드는 또 다른 방법은 CREATE TABLE AS 문을 사용합니다. 이 문은 모든 열, 열 정의를 복사하고 원본 테이블의 데이터로 복사본을 채 웁니다.
아래 주어진 구문을 검토하십시오-
CREATE TABLE clone_tbl AS
SELECT columns
FROM original_tbl
WHERE conditions];
아래에서 사용 예를 검토하십시오.
CREATE TABLE products_copy_tbl AS
SELECT *
FROM products_tbl;
버전 10.0.3에서 MariaDB는 시퀀스라는 스토리지 엔진을 도입했습니다. ad hoc은 작업에 대한 정수 시퀀스를 생성 한 다음 종료됩니다. 시퀀스는 내림차순 또는 오름차순으로 양의 정수를 포함하며 시작, 종료 및 증분 값을 사용합니다.
가상 (디스크에 기록되지 않음) 특성으로 인해 원래 쿼리에서만 여러 쿼리에서 사용할 수 없습니다. 그러나 시퀀스 테이블은 ALTER 명령을 통해 표준 테이블로 변환 할 수 있습니다. 변환 된 테이블이 삭제 되어도 시퀀스 테이블은 여전히 존재합니다. 시퀀스는 또한 음수를 생성하거나 최소 / 최대로 회전 할 수 없습니다.
시퀀스 엔진 설치
시퀀스를 사용하려면 MariaDB가 바이너리가 아닌 플러그인으로 배포하는 시퀀스 엔진을 설치해야합니다. 다음 명령으로 설치하십시오-
INSTALL SONAME "ha_sequence";
설치 후 확인-
SHOW ENGINES\G
엔진 설치 후에는 시퀀스 구문을 사용하는 이름으로 표준 테이블을 만들 수 없지만 시퀀스 구문 이름으로 임시 테이블을 만들 수 있습니다.
시퀀스 생성
시퀀스 생성에는 두 가지 방법이 있습니다.
테이블을 만들고 AUTO_INCREMENT 속성을 사용하여 열을 자동 증가로 정의합니다.
기존 데이터베이스를 사용하고 시퀀스 SELECT 쿼리를 사용하여 시퀀스를 생성합니다. 쿼리는 seq_ [FROM] _to_ [TO] 또는 seq_ [FROM] _to_ [TO] _step_STEP 구문을 사용합니다.
모범 사례는 두 번째 방법을 사용하는 것을 선호합니다. 아래에 주어진 시퀀스 생성의 예를 검토하십시오-
SELECT * FROM seq_77_to_99;
시퀀스는 많은 용도가 있습니다-
열 내에서 누락 된 값을 찾아 운영 관련 문제로부터 보호-
SELECT myseq.seq FROM seq_22_to_28 myseq LEFT JOIN table1 t ON myseq.seq
= x.y WHERE x.y IS NULL;
값의 조합 구성-
SELECT x1.seq, x2.seq FROM seq_5_to_9 x1 JOIN seq_5_to_9 x2 ORDER BY 5, 6;
숫자의 배수 찾기 −
SELECT seq FROM seq_3_to_100_step_4;
- 예약 시스템과 같은 애플리케이션에서 사용할 날짜 순서를 구성합니다.
- 시간 순서를 구성하십시오.
이전 단원에서 설명한대로 MariaDB는 일부 상황에서 중복 레코드와 테이블을 허용합니다. 이러한 중복 항목 중 일부는 고유 한 데이터 또는 개체 유형으로 인해 또는 작업 개체의 고유 한 수명 또는 저장으로 인해 실제로 중복되지 않습니다. 이러한 중복은 일반적으로 문제가되지 않습니다.
일부 상황에서 중복은 문제를 일으키며 암시 적 작업이나 MariaDB 명령의 관대 한 정책으로 인해 종종 나타납니다. 이 문제를 제어하고, 중복을 찾고, 중복을 삭제하고, 중복 생성을 방지하는 방법이 있습니다.
전략 및 도구
중복을 관리하는 네 가지 주요 방법이 있습니다.
JOIN으로 그들을 찾고 임시 테이블로 삭제하십시오.
중복 발견시 업데이트하려면 INSERT ... ON DUPLICATE KEY UPDATE를 사용하십시오.
DISTINCT를 사용하여 SELECT 문의 결과를 정리하고 중복을 제거합니다.
중복 삽입을 중지하려면 INSERT IGNORE를 사용하십시오.
임시 테이블과 결합 사용
내부 조인과 같은 세미 조인을 수행 한 다음 임시 테이블에서 찾은 중복을 제거하기 만하면됩니다.
INSERT 사용
INSERT ... ON DUPLICATE KEY UPDATE가 중복 된 고유 키 또는 기본 키를 발견하면 업데이트를 수행합니다. 여러 고유 키를 발견하면 첫 번째 키만 업데이트합니다. 따라서 고유 인덱스가 여러 개인 테이블에는 사용하지 마십시오.
채워진 필드에 삽입 할 때 인덱싱 된 값을 포함하는 테이블에서 일어나는 일을 보여주는 다음 예제를 검토하십시오.
INSERT INTO add_dupl VALUES (1,'Apple');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
Note − 키를 찾지 못하면 INSERT ... ON DUPLICATE KEY UPDATE 문은 일반 삽입 문처럼 실행됩니다.
DISTINCT 사용
DISTINCT 절은 결과에서 중복을 제거합니다. DISTINCT 절의 일반적인 구문은 다음과 같습니다.
SELECT DISTINCT fields
FROM table
[WHERE conditions];
Note − DISTINCT 절이있는 문장의 결과 −
하나의 표현식을 사용하면 고유 한 값을 반환합니다.
여러 표현식을 사용하는 경우 고유 한 조합을 반환합니다.
NULL 값을 무시하지 않습니다. 따라서 결과에는 고유 값으로 NULL도 포함됩니다.
단일 표현식에 대해 DISTINCT 절을 사용하여 다음 문을 검토하십시오.
SELECT DISTINCT product_id
FROM products
WHERE product_name = 'DustBlaster 5000';
여러 표현식을 사용하여 다음 예제를 검토하십시오.
SELECT DISTINCT product_name, product_id
FROM products
WHERE product_id < 30
INSERT IGNORE 사용
INSERT IGNORE 문은 중복 레코드 발견시 삽입을 취소하도록 MariaDB에 지시합니다. 아래에 주어진 사용 예를 검토하십시오.
mysql> INSERT IGNORE INTO customer_tbl (LN, FN)
VALUES( 'Lex', 'Luther');
또한 중복의 논리에 유의하십시오. 일부 테이블은 해당 테이블 데이터의 특성에 따라 중복이 필요합니다. 중복 기록을 관리하기위한 전략에서 이러한 요구를 수용하십시오.
사용자 입력을 받아들이는 간단한 동작은 악용의 문을 엽니 다. 문제는 주로 데이터의 논리적 관리에서 비롯되지만 다행히도 이러한 주요 결함을 피하는 것은 매우 쉽습니다.
SQL 주입 기회는 일반적으로 사용자가 이름과 같은 데이터를 입력하고 코드 로직이이 입력을 분석하지 못하는 경우 발생합니다. 대신 코드를 통해 공격자가 데이터베이스에서 실행되는 MariaDB 문을 삽입 할 수 있습니다.
항상 사용자가 입력 한 데이터를 고려하고 처리하기 전에 강력한 유효성 검사가 필요합니다. 패턴 일치를 통해이 검증을 수행하십시오. 예를 들어, 예상 입력이 사용자 이름 인 경우 입력 된 문자를 영숫자 문자와 밑줄 및 특정 길이로 제한하십시오. 아래 주어진 예를 검토하십시오-
if(check_match("/^\w{8,20}$/", $_GET['user_name'], $matches)) {
$result = mysql_query("SELECT * FROM system_users WHERE user_name = $matches[0]");
} else {
echo "Invalid username";
}
또한 입력 제약 조건을 만들 때 REGEXP 연산자와 LIKE 절을 사용합니다.
다음과 같은 모든 유형의 필요한 명시 적 입력 제어를 고려하십시오.
사용되는 이스케이프 문자를 제어합니다.
입력에 적합한 특정 데이터 유형을 제어하십시오. 입력을 필요한 데이터 유형 및 크기로 제한하십시오.
입력 된 데이터의 구문을 제어합니다. 필요한 패턴을 벗어난 것은 허용하지 마십시오.
허용되는 조건을 제어합니다. 블랙리스트 SQL 키워드.
인젝션 공격의 위험성을 알지 못하거나 중요하지 않다고 생각할 수 있지만 보안 문제 목록의 최상위에 있습니다. 또한,이 두 항목의 효과를 고려하십시오.
1=1
-or-
*
이들 중 하나를 올바른 명령과 함께 입력 할 수 있도록 허용하는 코드는 데이터베이스의 모든 사용자 데이터를 표시하거나 데이터베이스의 모든 데이터를 삭제하는 결과를 초래할 수 있으며 주입은 특히 영리하지 않습니다. 어떤 경우에는 공격자가 구멍을 조사하는 데 시간을 소비하지도 않습니다. 간단한 입력으로 맹목적인 공격을 수행합니다.
또한 MariaDB와 쌍을 이루는 프로그래밍 / 스크립팅 언어에서 제공하는 패턴 일치 및 정규식 도구를 고려하여 더 많은 제어를 제공하고 때로는 더 나은 제어를 제공합니다.
데이터는 비즈니스 및 운영의 토대 역할을하며 다양한 위협 (예 : 공격자, 시스템 장애, 불량 업그레이드 및 유지 관리 오류)과 함께 백업이 여전히 중요합니다. 이러한 백업은 다양한 형태를 취하며 해당 프로세스 내에서 훨씬 더 광범위한 옵션 세트를 사용하여 생성 할 수있는 많은 옵션이 있습니다. 기억해야 할 중요한 사항은 데이터베이스 유형, 중요한 정보 및 관련된 구조입니다. 이 정보는 최선의 선택을 결정합니다.
옵션
백업의 기본 옵션에는 논리적 백업과 물리적 백업이 포함됩니다. 논리 백업은 데이터 복원을위한 SQL 문을 보유합니다. 물리적 백업에는 데이터 사본이 포함됩니다.
Logical backups동일한 머신 및 데이터베이스 유형으로 제한되는 물리적 백업과 달리 구성이 다른 다른 머신에서 데이터를 복원 할 수있는 유연성을 제공합니다. 논리적 백업은 데이터베이스 및 테이블 수준에서 발생하고 물리적 백업은 디렉터리 및 파일 수준에서 발생합니다.
Physical backups논리보다 크기가 작으며 수행 및 복원에 시간이 덜 걸립니다. 물리적 백업에는 로그 및 구성 파일도 포함되지만 논리적 백업에는 포함되지 않습니다.
백업 도구
MariaDB 백업에 사용되는 주요 도구는 다음과 같습니다. mysqldump. 논리적 백업과 유연성을 제공합니다. 또한 소규모 데이터베이스를위한 훌륭한 옵션임을 입증합니다.Mysqldump데이터를 SQL, CSV, XML 및 기타 여러 형식으로 덤프합니다. 출력은 명시 적 지시없이 저장 프로 시저, 뷰 및 이벤트를 유지하지 않습니다.
세 가지 옵션이 있습니다. mysqldump 백업-
Raw data − 파일의 대상을 지정하는 --tab 옵션을 통해 테이블을 원시 데이터 파일로 덤프 −
$ mysqldump -u root -p --no-create-info \
--tab=/tmp PRODUCTS products_tbl
Data/Definitions export−이 옵션을 사용하면 단일 또는 여러 테이블을 파일로 내보낼 수 있으며 호스트 머신에있는 모든 기존 데이터베이스 백업을 지원합니다. 내용 또는 정의를 파일로 내보내는 예를 검토합니다.
$ mysqldump -u root -p PRODUCTS products_tbl > export_file.txt
Transfer − 데이터베이스와 테이블을 다른 호스트에 출력 할 수도 있습니다.
$ mysqldump -u root -p database_name \
| mysql -h other-host.com database_name
SELECT ... INTO OUTFILE 문 사용
데이터 내보내기를위한 또 다른 옵션은 SELECT ... INTO OUTFILE 문을 사용합니다. 이 간단한 옵션은 표를 간단한 형식의 텍스트 파일로 출력합니다.
mysql> SELECT * FROM products_tbl
-> INTO OUTFILE '/tmp/products.txt';
해당 속성을 사용하면 파일을 원하는 사양으로 포맷 할 수 있습니다.
이 진술의 다음 특성에 유의하십시오-
파일 이름은 원하는 출력 위치를 지정해야합니다.
명령문을 실행하려면 MariaDB 파일 권한이 필요합니다.
출력 파일 이름은 고유해야합니다.
호스트에 대한 로그인 자격 증명이 필요합니다.
UNIX 환경에서 출력 파일은 누구나 읽을 수 있지만 서버 소유권은 파일 삭제 기능에 영향을줍니다. 권한이 있는지 확인하십시오.
백업에서 CONNECT 사용
CONNECT 핸들러는 데이터 내보내기를 허용합니다. 이것은 SELECT ... INTO OUTFILE 작업이 파일 형식을 지원하지 않는 상황에서 주로 유용합니다.
다음 예를 검토하십시오-
create table products
engine = CONNECT table_type = XML file_name = 'products.htm' header = yes
option_list = 'name = TABLE,coltype = HTML,attribute = border = 1;cellpadding = 5'
select plugin_name handler, plugin_version version, plugin_author
author, plugin_description description, plugin_maturity maturity
from information_schema.plugins where plugin_type = 'STORAGE ENGINE';
기타 도구
백업을위한 다른 옵션은 다음과 같습니다.
XtraBackup−이 옵션은 XtraDB / InnoDB 데이터베이스를 대상으로하며 모든 스토리지 엔진에서 작동합니다. Percona의 공식 사이트에서이 도구에 대해 자세히 알아보십시오.
Snapshots− 일부 파일 시스템은 스냅 샷을 허용합니다. 이 프로세스는 읽기 잠금으로 테이블 플러시, 스냅 샷 마운트, 테이블 잠금 해제, 스냅 샷 복사 및 스냅 샷 마운트 해제로 구성됩니다.
LVM−이 인기있는 방법은 Perl 스크립트를 사용합니다. 모든 테이블에서 읽기 잠금을 얻고 캐시를 디스크로 플러시합니다. 그런 다음 스냅 샷을 얻고 테이블의 잠금을 해제합니다. 공식 상담mylvmbackup 자세한 내용은 웹 사이트를 참조하십시오.
TokuBackup− Percona에서 제공하는이 솔루션은 InnoDB 백업 옵션의 문제점과 한계를 고려하여 핫 백업을 제공합니다. 응용 프로그램이 파일을 계속 조작하는 동안 파일의 트랜잭션 사운드 복사본을 생성합니다. 자세한 내용은 Percona 웹 사이트를 참조하십시오.
INNODB 고려 사항
InnoDB는 성능 향상을 위해 버퍼 풀을 사용합니다. 백업에서 논리적 백업은 일반적으로 전체 테이블 스캔을 수행하므로 전체 테이블이 버퍼 풀에 복사되지 않도록 InnoDB를 구성하십시오.
이 장에서는 다양한 백업로드 방법에 대해 알아 봅니다. 백업에서 데이터베이스를 복원하는 것은 간단하고 때로는 매우 긴 프로세스입니다.
데이터로드에는 LOAD DATA 문, mysqlimport 및 간단한 mysqldump 복원의 세 가지 옵션이 있습니다.
LOAD DATA 사용
LOAD DATA 문은 벌크 로더로 작동합니다. 텍스트 파일을로드하는 사용 예 검토-
mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl;
LOAD DATA 문의 다음 특성에 유의하십시오-
LOCAL 키워드를 사용하여 MariaDB가 호스트에 대한 심층 검색을 수행하는 것을 방지하고 매우 구체적인 경로를 사용합니다.
이 명령문은 줄 바꿈 (줄 바꿈)으로 끝나는 줄과 탭으로 구분 된 데이터 값으로 구성된 형식을 가정합니다.
FIELDS 절을 사용하여 행에서 필드의 형식을 명시 적으로 지정하십시오. LINES 절을 사용하여 줄 끝을 지정합니다. 아래 예를 검토하십시오.
mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n';
이 명령문은 데이터 파일 내의 열이 테이블의 동일한 순서를 사용한다고 가정합니다. 다른 순서를 설정해야하는 경우 다음과 같이 파일을로드 할 수 있습니다.
mysql> LOAD DATA LOCAL INFILE 'products_copy.txt' INTO TABLE empty_tbl (c, b, a);
MYSQLIMPORT 사용
mysqlimport 도구는 명령 줄에서 동일한 작업을 허용하는 LOAD DATA 래퍼 역할을합니다.
다음과 같이 데이터로드-
$ mysqlimport -u root -p --local database_name source_file.txt
다음과 같이 형식을 지정하십시오-
$ mysqlimport -u root -p --local --fields-terminated-by="|" \
--lines-terminated-by="\n" database_name source_file.txt
사용 --columns 열 순서를 지정하는 옵션-
$ mysqlimport -u root -p --local --columns=c,b,a \
database_name source_file.txt
MYSQLDUMP 사용
복원 mysqldump 덤프 파일을 호스트로 다시로드하려면이 간단한 명령문이 필요합니다.
shell> mysql database_name < source_file.sql
특별한 캐릭터와 인용문
LOAD DATA 문에서 따옴표와 특수 문자가 올바르게 해석되지 않을 수 있습니다. 이 명령문은 인용되지 않은 값을 가정하고 백 슬래시를 이스케이프 문자로 처리합니다. FIELDS 절을 사용하여 형식을 지정하십시오. "ENCLOSED BY"가있는 따옴표를 가리키면 데이터 값에서 따옴표가 제거됩니다. 'ESCAPED BY'로 이스케이프를 변경합니다.
이 장에는 가장 자주 사용되는 기능 목록, 제공되는 정의, 설명 및 예가 포함되어 있습니다.
MariaDB 집계 함수
가장 자주 사용되는 집계 함수는 다음과 같습니다.
Sr. 아니요 | 이름 및 설명 |
---|---|
1 | COUNT 레코드 수를 계산합니다. Example − SELECT COUNT (*) FROM customer_table; |
2 | MIN 레코드 세트의 최소값을 나타냅니다. Example − SELECT 조직, MIN (계정) 계약에서 GROUP BY 조직; |
삼 | MAX 레코드 세트의 최대 값을 표시합니다. Example − SELECT organization, MAX (account_size) FROM contracts GROUP BY organization; |
4 | AVG 레코드 세트의 평균 값을 계산합니다. Example − SELECT AVG (account_size) FROM 계약; |
5 | SUM 레코드 세트의 합계를 계산합니다. Example − SELECT SUM (account_size) FROM 계약; |
MariaDB 나이 계산
그만큼 TIMESTAMPDIFF 함수는 나이를 계산하는 방법을 제공합니다-
SELECT CURDATE() AS today;
SELECT ID, DOB, TIMESTAMPDIFF(YEAR,DOB,'2015-07-01') AS age FROM officer_info;
MariaDB 문자열 연결
그만큼 CONCAT함수는 연결 작업 후 결과 문자열을 반환합니다. 하나 이상의 인수를 사용할 수 있습니다. 아래 주어진 구문을 검토하십시오-
SELECT CONCAT(item, item,...);
다음 예를 검토하십시오-
SELECT CONCAT('Ram', 'bu', 'tan');
Output:Rambutan
MariaDB 날짜 / 시간 함수
다음은 중요한 날짜 함수입니다.
Sr. 아니요 | 이름 및 설명 |
---|---|
1 | CURDATE() 날짜를 yyyy-mm-dd 또는 yyyymmdd 형식으로 반환합니다. Example − SELECT CURDATE (); |
2 | DATE() 여러 형식으로 날짜를 반환합니다. Example −CREATE TABLE product_release_tbl (x DATE); |
삼 | CURTIME() HH : MM : SS 또는 HHMMSS.uuuuuu 형식으로 시간을 반환합니다. Example − SELECT CURTIME (); |
4 | DATE_SUB() 지정된 날짜에서 일 수를 더하거나 뺍니다. Example − SELECT DATE_SUB ( '2016-02-08', 간격 60 일); |
5 | DATEDIFF() 두 날짜 사이의 날짜를 결정합니다. Example − DATEDIFF 선택 ( '2016-01-01 23:59:59', '2016-01-03'); |
6 | DATE ADD() 날짜 및 시간에 시간 단위를 더하거나 뺍니다. Example − SELECT DATE_ADD ( '2016-01-04 23:59:59', INTERVAL 22 SECOND); |
7 | EXTRACT() 날짜에서 단위를 추출합니다. Example − EXTRACT 선택 ( '2016-01-08'에서 연도); |
8 | NOW() 현재 날짜와 시간을 yyyy-mm-dd hh : mm : ss 또는 yyyymmddhhmmss.uuuuuu 형식으로 반환합니다. Example − 지금 선택 (); |
9 | DATE FORMAT() 지정된 형식 문자열에 따라 날짜를 형식화합니다. Example − SELECT DATE_FORMAT ( '2016-01-09 20:20:00', '% W % M % Y'); |
다음은 몇 가지 중요한 시간 함수입니다.
Sr. 아니요 | 이름 및 설명 |
---|---|
1 | HOUR() 시간 또는 경과 시간을 반환합니다. Example − SELECT HOUR ('19 : 17 : 09 '); |
2 | LOCALTIME() NOW ()와 똑같이 작동합니다. |
삼 | MICROSECOND() 시간의 마이크로 초를 반환합니다. Example − SELECT MICROSECOND ('16 : 30 : 00.543876 '); |
4 | MINUTE() 시간의 분을 반환합니다. Example − SELECT MINUTE ( '2016-05-22 17:22:01'); |
5 | SECOND() 날짜의 초를 반환합니다. Example − SELECT SECOND ( '2016-03-12 16 : 30 : 04.000001'); |
6 | TIME_FORMAT() 지정된 형식 문자열에 따라 시간을 형식화합니다. Example − SELECT TIME_FORMAT ('22 : 02 : 20 ','% H % k % h % I % l '); |
7 | TIMESTAMP() yyyy-mm-dd hh : mm : dd 형식으로 활동에 대한 타임 스탬프를 제공합니다. Example − CREATE TABLE orders_ (ID INT, tmst TIMESTAMP); |
MariaDB 숫자 함수
다음은 MariaDB의 몇 가지 중요한 숫자 함수입니다.
Sr. 아니요 | 이름 및 설명 |
---|---|
1 | TRUNCATE() 잘린 숫자를 소수점 이하 자릿수 사양으로 반환합니다. Example − SELECT TRUNCATE (101.222, 1); |
2 | COS() x 라디안의 코사인을 반환합니다. Example − SELECT COS (PI ()); |
삼 | CEILING() x보다 작지 않은 가장 작은 정수를 반환합니다. Example − CEILING (2.11); |
4 | DEGREES() 라디안을 각도로 변환합니다. Example − SELECT DEGREES (PI ()); |
5 | DIV() 정수 나누기를 수행합니다. Example − 100 DIV 4 선택; |
6 | EXP() e를 x의 거듭 제곱으로 반환합니다. Example − SELECT EXP (2); |
7 | FLOOR() x보다 크지 않은 가장 큰 정수를 반환합니다. Example − SELECT FLOOR (2.01); |
8 | LN() x의 자연 로그를 반환합니다. Example − SELECT LN (3); |
9 | LOG() 주어진 밑수에 대한 자연 로그 또는 로그를 반환합니다. Example − SELECT LOG (3); |
10 | SQRT() 제곱근을 반환합니다. Example − SELECT SQRT (16); |
MariaDB 문자열 함수
중요한 문자열 함수는 다음과 같습니다.
Sr. 아니요 | 이름 및 설명 |
---|---|
1 | INSTR() 하위 문자열의 첫 번째 인스턴스 위치를 반환합니다. Example − SELECT INSTR ( 'rambutan', 'tan'); |
2 | RIGHT() 가장 오른쪽 문자열 문자를 반환합니다. Example − SELECT RIGHT ( 'rambutan', 3); |
삼 | LENGTH() 문자열의 바이트 길이를 반환합니다. Example − SELECT LENGTH ( 'rambutan'); |
4 | LOCATE() 하위 문자열의 첫 번째 인스턴스 위치를 반환합니다. Example − SELECT LOCATE ( 'tan', 'rambutan'); |
5 | INSERT() 수정 된 특정 위치에 지정된 하위 문자열이있는 문자열을 반환합니다. Example − SELECT INSERT ( 'ramputan', 4, 1, 'b'); |
6 | LEFT() 가장 왼쪽 문자를 반환합니다. Example − SELECT LEFT ( 'rambutan', 3); |
7 | UPPER() 문자를 대문자로 변경합니다. Example − SELECT UPPER (성); |
8 | LOWER() 문자를 소문자로 변경합니다. Example − SELECT LOWER (성); |
9 | STRCMP() 문자열을 비교하고 같으면 0을 반환합니다. Example − SELECT STRCMP ( '계란', '치즈'); |
10 | REPLACE() 문자를 바꾼 후 문자열을 반환합니다. Example − SELECT REPLACE ( 'sully', 'l', 'n'); |
11 | REVERSE() 문자열의 문자를 반대로합니다. Example − SELECT REVERSE ( 'racecar'); |
12 | REPEAT() 주어진 문자를 x 번 반복하는 문자열을 반환합니다. Example − SELECT REPEAT ( 'ha', 10); |
13 | SUBSTRING() 위치 x에서 시작하는 문자열에서 하위 문자열을 반환합니다. Example − SELECT SUBSTRING ( 'rambutan', 3); |
14 | TRIM() 문자열에서 후행 / 선행 문자를 제거합니다. Example − SELECT TRIM (LEADING '_'FROM '_rambutan'); |