Mariadb의 기본 응용 프로그램

Mariadb 개요:
MariaDB 데이터베이스 관리 시스템은 MySQL의 한 지점으로 주로 개원 지역사회가 유지하고 GPL 권한 수여 허가를 채택한다.이 지점을 개발한 원인 중 하나는 갑골문회사가 MySQL을 인수한 후 MySQL을 폐쇄하는 잠재적인 위험이 있기 때문에 지역사회는 지점의 방식으로 이 위험을 피한다.
MariaDB의 목적은 API와 명령행을 포함하여 MySQL의 대체품이 될 수 있도록 MySQL을 완전히 호환하는 것이다.메모리 엔진의 경우 10.0.9 버전부터 마이SQL의 이노DB를 대체하기 위해 XtradB(명칭 대명사 아리아)를 사용한다.
MySQL의 창업자인 마이클 비드뉴스가 개발을 주도한 마리아 DB는 일찌감치 자신이 만든 회사인 MySQL AB를 SUN에게 10억 달러에 팔았고, 이후 SUN이 오라클에 인수되면서 MySQL의 소유권도 Oracle의 손에 넘어갔다.MariaDB 이름은 마이클 비드뉴스의 딸 마리아(영어:Maria)의 이름에서 왔다.
Mariadb의 기본 개념:
◆데이터 유형: 역할: 저장 형식, 데이터 범위, 참여할 수 있는 연산, 정렬 방식 문자형: 정장 문자형: CHAR(#), BIARNY(#)가 긴 문자형: VARCHAR(#), VARBINARY(#) 대상 저장소: TEXT BLOB 내장 유형: ENUM,SET 수치형: 정확한 수치형: INT:TINYINT, SMALLINT, MEDIUMINT, INT,BIGINT 근사 수치형: FLOAT DOUBLE 날짜 시간형: DATE TIME DATETIMESTAMP YEAR 수식자: NOT NULL, DEFAULT, 유형자: UNSIGNED
◆ 데이터베이스 디자인 모델: 첫 번째 모델: 필드는 원자적이다.두 번째 모드: 사용 가능한 메인 키가 존재합니다.세 번째 모델: 어떤 필드도 다른 테이블의 비키 필드에 의존해서는 안 된다.◆데이터 제약: 데이터 테이블에 데이터를 삽입할 때 지켜야 할 제한 규칙의 키:primary 키, 테이블의 한 개 또는 여러 필드의 조합, 키 필드에 입력한 데이터는 이미 존재하는 다른 줄의 같은 필드와 다르고 비워둘 수 없다.한 테이블에 메인 키 하나만 저장할 수 있음;유일한 키: unique 키, 테이블의 한 개 또는 여러 개의 필드의 조합으로 그 필드에 입력된 데이터는 이미 존재하는 다른 줄의 같은 필드와 다르지만 비어 있을 수 있습니다.한 시계에 여러 개의 키가 있을 수 있다.외부 키:foreign 키, 한 테이블의 외부 키 필드에 삽입할 수 있는 데이터 값 범위는 인용된 다른 테이블의 메인 키 필드에 이미 존재하는 데이터 집합에 달려 있다.검사 조건 제약: check, 사용자 정의 논리 표현식;
명령줄 클라이언트 mysql:
mysql [OPTIONS] [database] 일반 옵션: -uUSERNAME -hHOST -pPASSWORD -ddbname                -S sock_file_path        -P port                -e 'STATEMENT' 
[root@localhost ~]# mysql -uroot -h127.0.0.1    #  root       
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

명령:클라이언트 명령:클라이언트에서 실행;        mysql> help             \?:사용 가능한 명령 도움말 가져오기;\q: 클라이언트 프로그램을 종료합니다.\d CHAR: 문 끝 문자를 사용자화합니다.\g: 문 끝 태그;\G: 문장 끝 표시, 결과를 세로로 표시;            \! SHELL_CMD: 셸 명령 실행하기;\s: 현재 접속 및 서버 관련 상태 정보,            \.             
MariaDB [(none)]> help

General information about MariaDB can be found at
http://mariadb.org

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (
) Disable pager, print to stdout. notee     (\t) Don't write into outfile. pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER. print     (\p) Print current command. prompt    (\R) Change your mysql prompt. quit      (\q) Quit mysql. rehash    (\#) Rebuild completion hash. source    (\.) Execute an SQL script file. Takes a file name as an argument. status    (\s) Get status information from the server. system    (\!) Execute a system shell command. tee       (\T) Set outfile [to_outfile]. Append everything into given outfile. use       (\u) Use another database. Takes database name as argument. charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings  (\W) Show warnings after every statement. nowarning (\w) Don't show warnings after every statement. For server side help, type 'help contents'

서버 명령: SQL 문구, 서버에 보내서 실행하고 결과를 가져옵니다.현식의 문장 끝부호 필요;DDL: 데이터 정의 언어는 주로 데이터베이스 구성 요소, 예를 들어 데이터베이스, 테이블, 인덱스, 보기, 트리거, 이벤트 스케줄러, 저장 과정, 저장 함수에 사용된다.CREATE,ALTER,DROP DML: 데이터 조종 언어,CRUD 조작으로 주로 조작표의 데이터에 사용된다.INSERT, DELETE, UPDATE, SELECT DCL: 데이터 제어 언어 GRANT, REVOKE
Mariadb의 SQL 문:
◆도움말 보기: mysql> help KEYWORD mysql> help contents
◆ 데이터베이스 관리: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS]dbname  [DEFAULT] CHARACTER SET [=] charset_name         ALTER {DATABASE | SCHEMA} [db_name] CHARACTER SET [=] charset_name        DROP {DATABASE | SCHEMA} [IF EXISTS] db_name 관련 명령: SHOW CHARACTER SET SHOW COLLATION SHOW CREATE DATABASE dbname
MariaDB [(none)]> SHOW CREATE DATABASE xiaoshui;
+----------+---------------------------------------------------------------------+
| Database | Create Database                                                     |
+----------+---------------------------------------------------------------------+
| xiaoshui | CREATE DATABASE `xiaoshui` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+---------------------------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> ALTER DATABASE xiaoshui CHARACTER SET 'utf8'
    -> ;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> SHOW CREATE DATABASE xiaoshui;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| xiaoshui | CREATE DATABASE `xiaoshui` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)

◆표 관리: 표 작성: CREATE TABLE [IF NOT EXISTS] tblname  (create_definition,...)  [table_options]    create_definition: 쉼표로 구분된 목록 필드 정의:columnname column_defination 구속조건 정의: PRIMARY KEY(col1[,col2,....))UNIQUE KEY FOREIGN KEY CHECK(expr) 인덱스 정의: {INDEX|KEY} {FULLLTEXT|SPATIAL}columndefinition:                data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']      
MariaDB [xiaoshui]> CREATE TABLE tbl1 (id SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMgender ENUM('F','M') DEFAULT 'M',UNIQUE KEY(name,gender),INDEX(name));
Query OK, 0 rows affected (0.06 sec)

MariaDB [xiaoshui]> DESC tbl;
ERROR 1146 (42S02): Table 'xiaoshui.tbl' doesn't exist
MariaDB [xiaoshui]> DESC tbl1;
+--------+----------------------+------+-----+---------+----------------+
| Field  | Type                 | Null | Key | Default | Extra          |
+--------+----------------------+------+-----+---------+----------------+
| id     | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
| name   | char(30)             | NO   | MUL | NULL    |                |
| age    | tinyint(3) unsigned  | YES  |     | NULL    |                |
| gender | enum('F','M')        | YES  |     | M       |                |
+--------+----------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

     table_option:        ENGINE [=] engine_name 데이터베이스에서 지원하는 스토리지 엔진 종류 보기: SHOW ENGINES,테이블 상태 정보 보기: SHOW TABLE STATUS [WHERE CLAUSE] [LIKE CLAUSE]
MariaDB [xiaoshui]>  show TABLE STATUS\G
*************************** 1. row ***************************
           Name: tbl1
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 32768
      Data_free: 0
 Auto_increment: 1
    Create_time: 2016-10-15 14:27:05
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)

테이블 수정: Alter TABLE tblname [alter_specification [, alter_specification] ...]                alter_specification: (1) 테이블 옵션 ENGINE=enginename                ...(2) 테이블 정의(a) 필드 ADD DROP CHANGE MODIFY(b) 키와 인덱스 ADD {PRIMARY | UNIQUE | FOREIGN} 키(col1, col2, ...)                    ADD INDEX(col1, col2, ...)                                        DROP {PRIMARY|UNIQUE|FOREIGN} KEY key_name;                    DROP INDEX index_name;테이블의 색인 정보 보기: SHOW INDEXES FROM tblname;
인스턴스:
#    
MariaDB [xiaoshui]> ALTER TABLE tbl1 DROP INDEX name_2;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
#    ClassID  (       )
MariaDB [xiaoshui]> ALTER TABLE tbl1 ADD classID TINYINT UNSIGNED NOT NULL;
Query OK, 0 rows affected (0.11 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [xiaoshui]> DESC tbl1;
+---------+----------------------+------+-----+---------+----------------+
| Field   | Type                 | Null | Key | Default | Extra          |
+---------+----------------------+------+-----+---------+----------------+
| id      | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
| name    | char(30)             | NO   | MUL | NULL    |                |
| age     | tinyint(3) unsigned  | YES  |     | NULL    |                |
| gender  | enum('F','M')        | YES  |     | M       |                |
| classID | tinyint(3) unsigned  | NO   |     | NULL    |                |
+---------+----------------------+------+-----+---------+----------------+
#  ClassID age    
MariaDB [xiaoshui]> ALTER TABLE tbl1 MODIFY ClassID TINYINT UNSIGNED NOT NULL after age;
Query OK, 0 rows affected (0.07 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [xiaoshui]> DESC tbl1;
+---------+----------------------+------+-----+---------+----------------+
| Field   | Type                 | Null | Key | Default | Extra          |
+---------+----------------------+------+-----+---------+----------------+
| id      | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment |
| name    | char(30)             | NO   | MUL | NULL    |                |
| age     | tinyint(3) unsigned  | YES  |     | NULL    |                |
| ClassID | tinyint(3) unsigned  | NO   |     | NULL    |                |
| gender  | enum('F','M')        | YES  |     | M       |                |
+---------+----------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

표 삭제: DROP TABLE [IF EXISTS] tblname [, tbl_name] ...테이블 생성 문 보기: SHOW CREATE TABLE tblname
색인 관리: 작성: CREATE [UNIQUE|FULLLTEXT|SPATIAL] INDEX indexname ON tbl_name (index_col_name,...)                            index_col_name:         col_name [(length)] [ASC | DESC] 삭제: DROP INDEX indexname ON tbl_name 보기: SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tblname  [{FROM | IN} db_name]  [WHERE expr]                  
인스턴스:
#  tbl1  name     
MariaDB [xiaoshui]> DROP INDEX name ON tbl1;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
# tbl1  name gender      
MariaDB [xiaoshui]> CREATE INDEX name_and_gender ON tbl1(name(5),gender);
Query OK, 0 rows affected (0.51 sec)
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [xiaoshui]> SHOW INDEXES FROM tbl1;
+-------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name        | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| tbl1  |          0 | PRIMARY         |            1 | id          | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| tbl1  |          1 | name_and_gender |            1 | name        | A         |           0 |        5 | NULL   |      | BTREE      |         |               |
| tbl1  |          1 | name_and_gender |            2 | gender      | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
+-------+------------+-----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (0.00 sec)

DML 문:
    INSERT,SELECT,DELETE,UPDATE
INSERT:    INSERT  [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
SELECT:    (1) SELECT * FROM tbl_name;    (2) SELECT col1, col2, ... FROM tbl_name;필드 별칭: col1 AS ALIAS(3) ELECT col1, col2,...FROM tbl_name WHERE CLUASE;WHERE expr:부울 표현식,            col_name OPERATOR value|col_name;조작부호:>,=,=,!=                    BETWEEN ... AND ...LIKE'PATTERN':와일드카드::임의의 단일 문자 일치;%: 임의의 길이의 문자;RLIKE'PATTERN': IN (list) 조합 조건: and, or, not (4) SELECT col1,...FROM tbl1_name [WEHRE CLAUSE] ORDER BY col1, col2, ... [ASC|DESC]   
DELETE:    DELETE FROM tbl_name        [WHERE where_condition]        UPDATE:    UPDATE table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...        [WHERE where_condition]
인스턴스:
# tbl1    ,name ClassID,  gender     M
MariaDB [xiaoshui]> INSERT INTO tbl1 (name,ClassID) VALUE ('tom',1);
Query OK, 1 row affected (0.05 sec)

MariaDB [xiaoshui]> SELECT * FROM tbl1;
+----+------+------+---------+--------+
| id | name | age  | ClassID | gender |
+----+------+------+---------+--------+
|  1 | tom  | NULL |       1 | M      |
+----+------+------+---------+--------+
1 row in set (0.00 sec)
#      
MariaDB [xiaoshui]> INSERT INTO tbl1 (name,ClassID) VALUES ('xiaoshui',2),('zhao',1);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [xiaoshui]> SELECT * FROM tbl1;
+----+----------+------+---------+--------+
| id | name     | age  | ClassID | gender |
+----+----------+------+---------+--------+
|  1 | tom      | NULL |       1 | M      |
|  2 | xiaoshui | NULL |       2 | M      |
|  3 | zhao     | NULL |       1 | M      |
+----+----------+------+---------+--------+
3 rows in set (0.00 sec)
#       ,            
MariaDB [xiaoshui]> SELECT * FROM tbl1;
+----+----------+------+---------+--------+
| id | name     | age  | ClassID | gender |
+----+----------+------+---------+--------+
|  1 | tom      | NULL |       1 | M      |
|  2 | xiaoshui | NULL |       2 | M      |
|  3 | zhao     | NULL |       1 | M      |
|  4 | bla      |   22 |       1 | F      |
+----+----------+------+---------+--------+
4 rows in set (0.00 sec)
#         
MariaDB [xiaoshui]> SELECT * FROM tbl1;
+----+----------+------+---------+--------+
| id | name     | age  | ClassID | gender |
+----+----------+------+---------+--------+
|  1 | tom      | NULL |       1 | M      |
|  2 | xiaoshui | NULL |       2 | M      |
|  3 | zhao     | NULL |       1 | M      |
|  4 | bla      |   22 |       1 | F      |
+----+----------+------+---------+--------+
#        
MariaDB [xiaoshui]> SELECT name,gender FROM tbl1;
+----------+--------+
| name     | gender |
+----------+--------+
| tom      | M      |
| xiaoshui | M      |
| zhao     | M      |
| bla      | F      |
+----------+--------+
4 rows in set (0.00 sec)
#  where       
MariaDB [xiaoshui]>  SELECT name FROM tbl1 WHERE name LIKE '%o%';
+----------+
| name     |
+----------+
| tom      |
| xiaoshui |
| zhao     |
+----------+
3 rows in set (0.00 sec)
#  RLIKE          
MariaDB [xiaoshui]> SELECT name FROM tbl1 WHERE name RLIKE '^.*o.*$';
+----------+
| name     |
+----------+
| tom      |
| xiaoshui |
| zhao     |
+----------+
3 rows in set (0.00 sec)
#  IN          
MariaDB [xiaoshui]> SELECT name,ClassID FROM tbl1 WHERE ClassID IN (1,2);
+----------+---------+
| name     | ClassID |
+----------+---------+
| tom      |       1 |
| xiaoshui |       2 |
| zhao     |       1 |
| bla      |       1 |
+----------+---------+
4 rows in set (0.00 sec)
#  id    
MariaDB [xiaoshui]> SELECT * FROM tbl1 ORDER BY id DESC;
+----+----------+------+---------+--------+
| id | name     | age  | ClassID | gender |
+----+----------+------+---------+--------+
|  4 | bla      |   22 |       1 | F      |
|  3 | zhao     | NULL |       1 | M      |
|  2 | xiaoshui | NULL |       2 | M      |
|  1 | tom      | NULL |       1 | M      |
+----+----------+------+---------+--------+
4 rows in set (0.00 sec)
#   ClassID  ,  ClassID  ,   name  
MariaDB [xiaoshui]> SELECT * FROM tbl1 ORDER BY ClassID,name;
+----+----------+------+---------+--------+
| id | name     | age  | ClassID | gender |
+----+----------+------+---------+--------+
|  4 | bla      |   22 |       1 | F      |
|  1 | tom      | NULL |       1 | M      |
|  3 | zhao     | NULL |       1 | M      |
|  2 | xiaoshui | NULL |       2 | M      |
+----+----------+------+---------+--------+
4 rows in set (0.00 sec)

DELETE:     DELETE FROM tbl_name        [WHERE where_condition]
#  id=4  
MariaDB [xiaoshui]> DELETE FROM tbl1 WHERE id=4;
Query OK, 1 row affected (0.01 sec)

MariaDB [xiaoshui]> SELECT * FROM tbl;
ERROR 1146 (42S02): Table 'xiaoshui.tbl' doesn't exist
MariaDB [xiaoshui]> SELECT * FROM tbl1;
+----+----------+------+---------+--------+
| id | name     | age  | ClassID | gender |
+----+----------+------+---------+--------+
|  1 | tom      | NULL |       1 | M      |
|  2 | xiaoshui | NULL |       2 | M      |
|  3 | zhao     | NULL |       1 | M      |
+----+----------+------+---------+--------+
3 rows in set (0.00 sec)

UPDATE:    UPDATE table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...        [WHERE where_condition]
#  id 2  age=17
MariaDB [xiaoshui]> UPDATE tbl1 SET age=17 WHERE id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [xiaoshui]> SELECT * FROM tbl1
    -> ;
+----+----------+------+---------+--------+
| id | name     | age  | ClassID | gender |
+----+----------+------+---------+--------+
|  1 | tom      | NULL |       1 | M      |
|  2 | xiaoshui |   17 |       2 | M      |
|  3 | zhao     | NULL |       1 | M      |
+----+----------+------+---------+--------+
3 rows in set (0.00 sec)

MariaDB [xiaoshui]>

감사합니다.

좋은 웹페이지 즐겨찾기