MySQL的介紹以及使用

什麼是 MySQL?


MySQL 是一種數據庫。數據庫定義了存儲信息的結構。以表的方式存儲信息,設置有索引能夠快速定位到須要的內容,避免查找數據時要遍歷整個庫,耗費資源速度也太慢。mysql

  • 索引:將表中的某一個或某些字段抽取出來,單獨將其組織一個獨特的數據結構中,相似一本書的目錄;

爲何MySQL是最流行的數據庫?

簡單:MySQL的使用簡單,任何稍微有IT背景的技術人員均可以無師自通地參照文檔安裝運行和使用MySQL,這幾乎沒有什麼門檻。正則表達式

開源:開源意味着安全和免費,代碼就擺在那裏,無數的技術愛好者一塊兒來審覈程序,一塊兒修補問題,這讓使用者很是的放心。同時,開源帶來了免費。sql

複製:MySQL從3.23.15這個版本開始,支持了replication,能夠幫助MySQL使用者搭建Master-Slave的架構。把數據準實時的從一個實例同步到另外一個實例。shell

引擎:MySQL不一樣於其餘多數數據庫之處是它對插件式存儲引擎的支持,這是一個開放的設計,有點兼容幷包,海納百川的感受。數據庫

MySQL對數據的管理


MySQL的事務

請求<-->響應 的處理過程安全

多個操做被當作一個總體對待,要想看一個關係型管理數據庫系統是否支持事務就要看關係型數據庫系統是否知足ACID測試服務器

  • ACID 事務的一個基本標準
    • A:原子性
    • C:一致性
    • I:隔離性
    • D:持久性

舉個例子:好比去銀行存錢1000元,存錢是一個過程,服務器這個時候應該響應修改你的銀行卡信息加1000元。這個時候就構成了一個事物數據結構

可是若是剛存過錢服務器還沒來的及響應,這個時候忽然停電了(好比沒有應急供電措施),這個時候錢是存過仍是沒存?這個時候須要利用事物的「回滾」功能,由於沒有構成一個事物,恢復到尚未存錢以前的狀態。架構

要麼所有都成功執行,要麼所有都失敗「回滾」app

MySQL(RDMBS)設計範式基礎概念

MySQL屬於關係型數據庫,關係型數據庫以行和列的形式存儲數據,以便於用戶理解。這一系列的行和列被稱爲表,一組表組成了數據庫。用戶用查詢(Query)來檢索數據庫中的數據。一個Query是一個用於指定數據庫中行和列的SELECT語句。

設計關係數據庫時,聽從不一樣的規範要求,設計出合理的關係型數據庫,這些不一樣的規範要求被稱爲不一樣的範式,各類範式呈遞次規範,越高的範式數據庫冗餘越小。目前關係型數據庫有六種範式,經常使用的只有三種。

第一範式:全部的域都應該是原子性的,即數據庫表的每一列都是不可分割的原子數據項;

第二範式:在第一範式基礎上創建起來的,知足第一範式以後增長了主鍵,要求數據表裏的全部數據都要和該數據表的主鍵有徹底依賴關係;

第三範式:一樣基於第二範式基礎上創建起來的,要求一個關係中不能包含,已在其它關係已包含的非主關鍵字信息;

主鍵:一個或多個字段的組合,填入主鍵中的數據,必須不一樣於已存在的數據;不能爲空; 外鍵:一個表中某字段中能插入的數據,取決於另一張表的主鍵中的數據; 唯一鍵:一個或多個字段的組合,填入唯一鍵中的數據,必須不一樣於已存在的數據;能夠爲空;一個表能夠存在多個惟一鍵; 檢查性約束:取決於表達式的要求;自定義表達式約束,好比一我的正常年齡在一百五十歲一下(這裏排除之後科技發展迅速,人的年齡能夠更高);

MySQL與MariaDB

MariaDB屬於插件式存儲引擎(存儲引擎也稱爲「表類型」;):存儲管理器有多種實現版本,彼此間的功能和特性可能略有區別;用戶可根據須要靈活選擇;

值得說的是在CentOS7中MariaDB已經徹底把MySQL替代了,而且徹底兼容MySQL。

經常使用存儲引擎介紹;

  • MyISAM :不支持事務;表級鎖,崩潰後不保證安全恢復
  • MyISAM :Aria:加強版,崩潰後能夠修復
  • InnoDB :XtraDB 支持 行級鎖,外鍵,熱備
MariaDB [(none)]> SHOW ENGINES; ##顯示MariaDB支持的存儲引擎 +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | CSV | YES | CSV storage engine | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | FEDERATED | YES | FederatedX pluggable storage engine | YES | NO | YES | | Aria | YES | Crash-safe tables with MyISAM heritage | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ 10 rows in set (0.00 sec)

MySQL的使用


  • 命令行交互式客戶端程序

查看指定用戶所得到的受權:

SHOW GRANTS FOR 'user'@'host'

SHOW GRANTS FOR CURRENT_USER;

回收權限:

REVOKE priv_type, ... ON db_name.tbl_name FROM 'user'@'host';

注意:MariaDB服務進程啓動時,會讀取mysql庫的全部受權表至內存中;

(1) GRANT或REVOKE命令等執行的權限操做會保存於表中,MariaDB此時通常會自動重讀受權表,權限修改會當即生效;

(2) 其它方式實現的權限修改,要想生效,必須手動運行FLUSH PRIVILEGES命令方可;

經常使用選項

-u:後面跟用戶名 -u和用戶名中間必定不要有空格;

-h:後面跟遠程主機地址,默認爲localhost,-h和HOST中間必定不要有空格;

-p[PASSWORD]:USERNAME所表示的用戶的密碼,-p直接回車靜默交互式輸入密碼;

注意:mysql的用戶帳號由兩部分組成:'USERNAME'@'HOST'; 其中HOST用於限制此用戶可經過哪些遠程主機鏈接當前的mysql服務,HOST支持通配符,這裏%表明任意長度的任意字符;

 
 
root用戶建立用戶名和密碼

mysqladmin -u root -p password 111111   ##-u 指明用戶 -p password 指明密碼

建立用戶
CREATE USER 'name'@'localhost' IDENTIFIED BY '111111';  ##建立用戶指定用戶名字,登陸方式以及密碼。 查看全部的用戶帳號及密碼 SELECT user,host,password FROM user; [root@www ~]# mysql -uroot -hlocalhost -p  ##登陸root帳戶 Enter password: ##靜默輸入密碼 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 117 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)]> use mysql ##切換到MySQL庫  Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [mysql]> SELECT user,host,password FROM user; ##顯示全部的用戶,登陸主機,以及密碼,密碼加密存放 +--------+-----------------+-------------------------------------------+ | user | host | password | +--------+-----------------+-------------------------------------------+ | root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | root | 127.0.0.1 | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | root | ::1 | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | MySQL | 192.168.217.140 | *FD571203974BA9AFE270FE62151AE967ECA5E0AA | | ming | % | *FD571203974BA9AFE270FE62151AE967ECA5E0AA | | MySQLL | 192.168.217.138 | *FD571203974BA9AFE270FE62151AE967ECA5E0AA | | tom | 192.168.217.139 | *FD571203974BA9AFE270FE62151AE967ECA5E0AA | +--------+-----------------+-------------------------------------------+ 7 rows in set (0.00 sec)

SQL語句對數據庫管理經常使用的兩種方式:

  • DDL:數據定義語言-主要是用在定義或改變表(TABLE)的結構,數據類型,表之間的連接和約束等初始化工做上,他們大多在創建表時使用,建立表的時候有問題看這裏
    • CREATE: 建立
    • ALTER:改變
    • DROP: 刪除
    • SHOW: 顯示
  • DML:數據操縱語言-這4條命令是用來對數據庫裏的數據進行操做的語言,修改表的時候有問題看這裏
    • INSERT: 添加
    • DELETE: 刪除
    • SELECT: 選擇
    • UPDATE: 修改

切換數據庫;

鏈接到MySQL服務器後,則須要選擇特定的數據庫的來工做。這是由於在MySQL數據庫上可能有多個庫存在。注意每一個庫的權限不同。

use命令格式:use <數據庫名>;

MariaDB [(none)]> use hidb ##切換名字爲hidb的庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [hidb]> ##[hidb]>這裏名字已經改爲hidb說明切換成功

獲取命令幫助;

mysql> help KEYWORD(命令自己);

建立: 表建立必定要指定屬於哪一個庫!!;
HELP查看幫助 MariaDB [data]> HELP CREATE DATABASE ##HELP 命令 查看幫助 Name: 'CREATE DATABASE' ##查詢的是哪一個命令 Description: ##命令描述,這裏爲空 Syntax: ##描述 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... ##語法 create_specification: ##建立規範 [DEFAULT] CHARACTER SET [=] charset_name ##設置字符集 | [DEFAULT] COLLATE [=] collation_name ##設置排序規則 ENGINE [=] engine_naem ##設置支持哪些存儲引擎  SHOW ENGINES; ##顯示總共有哪些存儲引擎 MariaDB [data]> CREATE DATABASE XiaoHua; ##建立一個爲XiaoHua的庫 Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> select version();  ##查看當前MySQL版本號
+----------------+
| version() |
+----------------+
| 5.5.52-MariaDB |
+----------------+
1 row in set (0.00 sec)

MariaDB [(none)]> select 1+1;  ##作算術運算
+-----+
| 1+1 |
+-----+
| 2 |
+-----+
1 row in set (0.00 sec)

 

客戶端命令:本地執行

  • \u db_name:設定哪一個庫爲默認數據庫
  • \q:退出;
  • \d CHAR:設定新的語句結束符,默認爲「;」;
  • \g:語句結束標記,若是加\g 「;」能夠省略;
  • \G:語句結束標記,結果豎排方式顯式;
  • \s:顯示服務器狀態
  • \!:執行shell命令
  • \.:裝載並運行sql腳本

數據類型:

字符型:

  • 定長字符型:CHAR, BINARY
  • 變長字符型:VARCHAR, VARBINARY
  • TEXT, BLOB
  • SET, ENUM

數值型:

  • 精確數值型:INT
  • 近似數值型:FLOAT, DOUBLE

日期時間型:

  • DATE,TIME,DATETIME,TIMESTAMP

WHERE語句;

用來指明篩選條件

SELECT col1, ... FROM tbl_name WHERE clause;

查看 col1 來自 tbl_name 這個表 只看 clause 內容

 

WHERE clause:用於指明挑選條件,例如:age > 30;

col_name 操做符 value:

這裏通配符有兩個須要注意:

  • %:任意長度的任意字符;
  • _:任意單個字符;

RLIKE 'PATTERN'正則表達式對字符串作模式匹配;

操做符(1) :

  • >, <, >=, <=, ==, !=
  • 組合條件:and | or | not

操做符(2) :

  • BETWEEN ... AND ...
  • LIKE 'PATTERN' 例如WHERE name LIKE 'Z%' 找到name這一行中Z開頭的行
MariaDB [hidb]> SELECT * FROM studentss WHERE sid BETWEEN 3 AND 5; ##只顯示3~5行 +-----+-----------+--------+ | sid | name | gender | +-----+-----------+--------+ | 3 | Sun Li | F | | 4 | Deng Chao | M | | 5 | Jiang Xin | F |+-----+-----------+--------+ 3 rows in set (0.00 sec)
相關文章
相關標籤/搜索