mariadb基礎應用

mariadb基礎應用

一、 前言

MariaDB is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, WordPress.com and Google.

mariadb是mysql的一個分支,由同一個作者開發,mysql是作者大女兒的名字,mariadb是作者三女兒的名字。mysql是甲骨文(oracle)公司的眼中釘,故將其收購。mysql作者擔心其會遭遇閉源危機,故有開發了mariadb,知名用戶有谷歌,wordpress等等。

二、基本概念

1、mysql主要有兩種存儲引擎

MyISAM:mysql 5.5之前的默認數據庫引擎,擁有較高的插入、查詢速度,但不支持事務。

InnoDB:事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定,mysql5.5之后成為默認的數據庫引擎。

事務(Transaction):組織多個操作為一個整體,要么全部都執行,要么全部都不執行。就是轉賬,自己這邊扣掉錢了,對方還沒有到賬,就要全部回滾。要不就自己掉錢了  對方也沒拿到。

2、設計范式基礎概念

1、第一范式:無重復的域(列不重復)

2、第二范式:在第一范式的基礎上屬性完全依賴于主鍵(行不重復,重復的放在另一張表上,形成一對多,例如統計XX部門的N的人的信息,都是XX部門,在第一張表寫一次即可,映射到另外一張表。)

3、第三范式:在第二范式的基礎上要求,一個關系不能包含已在其他關系已包含的非主關鍵字信息。一個關系中的A表現出年齡,B表不能存在。

三、mysql基礎應用

常用mysql實用程序

mysqlshow

mysqladmin

mysql

1、mysqlshow 簡單應用

(1)顯示mysql服務器中的所有數據庫:mysqlshow

mariadb基礎應用

(2)顯示mysql服務器中的表:mysqlshow mysql

mariadb基礎應用

2、mysqladmin 簡單應用

(1)設置mysql用戶root的密碼,密碼為passwd

mysqladmin -u root password 'passwd'

mariadb基礎應用

(2)顯示mysql服務器的基本狀態信息

mysqladmin  status  或
mysqladmin  -u root  -p  status

3、mysql詳解

mysql是mysql命令行工具,相當于一個簡單的SQL shell。

客戶端命令:本地執行,常用如下

mysql> help
\u db_name:設定哪個庫為默認數據庫
\q:退出;
\d CHAR:設定新的語句結束符;
\g:語句結束標記;

服務端命令:通過 mysql 連接發往服務器執行并取回結果;

DDL, DML, DCL

注意:每個語句必須有語句結束符,默認為分號(;)

DDL :CREATE ALTER DROP

1、數據庫管理:增刪查改

創建:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name;
[DEFAULT] CHARACTER SET [=] charset_name
[DEFAULT] COLLATE [=] collation_name

查看支持的所有字符集:SHOW CHARACTER SET
查看支持的所有排序規則:SHOW COLLATION

修改:
ALTER {DATABASE | SCHEMA} [db_name]
[DEFAULT] CHARACTER SET [=] charset_name
[DEFAULT] COLLATE [=] collation_name

mariadb基礎應用

2、表管理:增刪查改

創建:
    CREATE TABLE [IF NOT EXISTS] tbl_name (create_defination)
    [table_options]
create_defination:
    字段:col_name data_type
    鍵:
    PRIMARY KEY (col1, col2, ...)
    UNIQUE KEY (col1, col2,...)
    FOREIGN KEY (column)
    索引:
    KEY|INDEX [index_name] (col1, col2,...)
table_options:
    ENGINE [=] engine_name
查看數據庫支持的所有存儲引擎類型:
    mysql> SHOW ENGINES;
查看某表的存儲引擎類型:
    mysql> SHOW TABLES STATUS [LIKE 'tbl_name']

CREATE TABLE students(id INT UNSIGNED NOT NULL PRIMARYKEY,name CHAR(30) NOT NULL,age TINYINT UNSIGNED,gender ENUM('f','m'));

DESC students ;

mariadb基礎應用

DROP TABLE students; 刪除表格

修改表格:ALTER TABLE students ADD class VARCHAR(100) NOT NULL AFTER name;

mariadb基礎應用

ALTER TABLE students MODIFY class VARCHAR(100) NOT NULL AFTER age;

mariadb基礎應用

ALTER TABLE students DROP class; 刪除表格中的class

3、索引管理:索引是特殊的數據結構

創建:
    CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [BTREE|HASH] ON tbl_name (col1, col2,,...)
刪除:
DROP INDEX index_name ON tbl_name

mariadb基礎應用

DML :INSERT SELECT DELETE UPDATE

1、INSERT

INSERT INTO:
    INSERT [INTO] tbl_name [(col1,...)] {VALUES|VALUE}
    (val1, ...),(...),...
注意:
字符型:引號;
數值型:不能用引號;

INSERT students(id,name) VALUES(2,'HuangYaoshi'),(3,'ZhouBotong');

SELECT * FROM students;

mariadb基礎應用

2、SELECT

(1) SELECT * FROM tbl_name;
(2) SELECT col1, col2, ... FROM tbl_name;
    顯示時,字段可以顯示為別名;
    col_name AS col_alias
(3) SELECT col1, ... FROM tbl_name WHERE clause;
    WHERE clause:用于指明挑選條件;
    col_name 操作符 value:
    age > 30;


    操作符(1) :
        >, <, >=, <=, ==, !=
        組合條件:
        and
        or
        not
    操作符(2) :
        BETWEEN ... AND ...
        LIKE 'PATTERN'
        通配符:
            %:任意長度的任意字符;
            _:任意單個字符;
        RLIKE 'PATTERN'
            正則表達式對字符串做模式匹配;
        IS NULL
        IS NOT NULL
(4) SELECT col1, ... FROM tbl_name [WHERE clause] ORDER BY col_name, col_name2, ... [ASC|DESC];
    ASC: 升序;
    DESC: 降序;

mariadb基礎應用

mariadb基礎應用

3、DELETE:刪除一整行,很危險,不加條件,整張表就沒了,每一個回合都要確認N遍

DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...][LIMIT row_count]
(1) DELETE FROM tbl_name WHERE where_condition
(2) DELETE FROM tbl_name [ORDER BY ...] [LIMIT row_count]

4、UPDATE:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET
col_name1=value1 [, col_name2=value2] ... [WHERE where_condition] [ORDER BY ...]
[LIMIT row_count]

UPDATA students SET age=age-5 ORDER BY id DESC;

UPDATA students SET age=age-15 WHERE name NOT LIKE 'stu%';

用戶賬戶及權限管理:

1、創建用戶賬號

CREATE USER 'testuser'@'192.168.%.%' IDENTIFIED BY 'testpass'; 只有查看的權限,沒有寫權限

mariadb基礎應用

禁止檢查主機名:my.cnf

[mysqld]

skipnameresolve = ON

2、刪除用戶賬號

DROP USER ’user‘@’host' [, user@host] …

3、授權

GRANT priv_type,... ON [object_type] db_name.tbl_name TO 'user'@'host' [IDENTIFIED BY 'password'];

CREATE USER 'testuser'@'192.168.%.%' IDENTIFIED BY 'testpass';

GRANT SELECT ON mydb.students TO 'testuser'@'192.168.%.%';

FLUSH PRIVILEGES;

mysql -utestuser -h192.168.1.120 -ptestpass

mariadb基礎應用

查看指定用戶所獲得的授權:
SHOW GRANTS FOR 'user'@'host'
SHOW GRANTS FOR CURRENT_USER;

4、回收權限

REVOKE priv_type, ... ON db_name.tbl_name FROM
'user'@'host';
注意:MariaDB 服務進程啟動時,會讀取 mysql 庫的所有授權表至內存中;
(1) GRANT 或 REVOKE 命令等執行的權限操作會保存于表中,MariaDB 此時一
般會自動重讀授權表,權限修改會立即生效;
(2) 其它方式實現的權限修改,要想生效,必須手動運行 FLUSH PRIVILEGES
命令方可;

5、加固mysql服務器

加固 mysql 服務器,在安裝完成后,運行 mysqlsecureinstallation 命令;

6、圖形管理組件phpMyAdmin見上一個博客。

原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/63876

(0)
N24_yeziN24_yezi
上一篇 2016-12-16 12:29
下一篇 2016-12-16 15:02

相關推薦

  • linux基礎學習-第九天(shell基礎)

    2016-08-10 授課內容: shell腳本基礎: 變量 運算 bash測試(數字測試、字符測試、文件測試、組合測試) read命令 變量作用: 1、數據存儲格式 2、參與的運算 3、表示的數據范圍 變量類型: 1、本地變量 2、環境(全局)變量 3、特殊變量     駝峰命名變量:每個單詞一個字母大寫 本地變量:…

    Linux干貨 2016-08-11
  • DNS服務器類型及查詢過程

    什么是DNS   DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。 DNS域名稱   域名系統作為一個層次結構和分布式數據庫,包含各種類型的數據,…

    Linux干貨 2017-02-08
  • Nginx配置與應用詳解

    前言 Nginx是由俄羅斯軟件工程師Igor Sysoev開發的一個高性能的HTTP和反向代理服務器,具備IMAP/POP3和SMTP服務器功能。Nginx最大的特點是對高并發的支持和高效的負載均衡,在高并發的需求場景下,是Apache服務器不錯的替代品。目前,包括新浪、騰訊等知名網站都已使用Nginx作為Web應用服務器。本文帶來的是Nginx配置與應用詳…

    Linux干貨 2015-06-15
  • Week9’s homework

    Week9's homework 1、寫一個腳本(1)判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin)(2)分別統計兩類用戶的個數;通過字符串比較來實現。 #!/bin/bash # for i in $(cat /etc/passwd |…

    Linux干貨 2016-12-24
  • IoC/DIP其實是一種管理思想

    關于IoC的的概念提出來已經很多年了,其被用于一種面象對像的設計。我在這里再簡單的回顧一下這個概念。我先談技術,再說管理。 話說,我們有一個開關要控制一個燈的開和關這兩個動作,最常見也是最沒有技術含量的實現會是這個樣子: 然后,有一天,我們發現需要對燈泡擴展一下,于是我們做了個抽象類: 但是,如果有一天,我們發現這個開關可能還要控制別的不單單是燈泡的東西,我…

    Linux干貨 2016-08-15
  • 網絡基本概念介紹

    Linux網絡屬性管理 網絡節點分布:廣域網、城域網、局域網 按交換方式:線路交換、報文交換、分組交換 按網絡拓撲結構:以太網,令牌環網、星型網絡、樹型網絡、總線型網絡、網狀網絡 Ethernet: CSMA/CD 載波偵探/多路訪問/沖突檢測機制 1.想發送信息的接點首先“監聽”信道,看是否有信號在傳輸。如果信道空閑,就立即發送。2.如果信道忙,則繼續監聽…

    Linux干貨 2016-07-29

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-23 12:19

    贊~詳細描述mysql一些常用的操作~~建議補充下備份、恢復相關的內容,會更好點~~繼續加油~

欧美性久久久久