初識mysql:基本原理和使用

一、 數據庫的出現 

    1. 數據庫是什么: 數據庫簡單來說,就是存儲數據的地方(廢話),對于用戶認證這個過程來說,當用戶登錄服務器時, 系統需要把用戶的輸入的用戶認證信息和存儲的用戶認證信息進行比對,這一過程就需要事先把所有用戶的信息存儲在一個數據庫中,然后逐條進行比對。早起最傳統的數據庫當然就是文本文檔了,每個用戶認證時,需要把整個文本文檔湊頭到尾比對一邊,效率極其低下。隨著數據爆炸式的增長,以及用戶并發訪問量的增加,這樣的文本數據庫逐漸不能滿足互聯網時代的需要。于是產生了各種各樣的其他專門的數據庫程序來管理數據。

     另外文本數據庫擁有幾個嚴重的缺陷: 

     1) 數據冗余和不一致: 同一個數據可能存放多次 

     2) 數據訪問困難

     3) 數據孤立性:大文件拆分后,很難建立聯系 

     4) 數據完整性問題

     5) 原子性問題:保證數據庫間交互式,能夠同步

     6) 并發訪問 

     7) 安全性問題:不能只設置部分內容的權限 , 因此來說,把所有數據類操作交給前端程序,太過于粗糙。

    2. 數據庫軟件: 

      為了更加精細的操作數據的存取,在應用程序和數據之間建立一個中間層,專門用來負載數據存取和管理,就產生了數據庫管理系統(DBMS)。

                                                                                      DBMS.png  

    數據庫管理系統,包含前端API接口與前端應用程序交互,也包含shell命令行接口與程序員直接交互。同時負責完成數據存取。這時,前端程序將不再直接面對數據,而有數據庫管理系統代理完成更加精細管理工作。包括權限,以及如何按照比較高效的方式分配數據。

    3. 數據庫模型 

         1)層次模型

         2)網狀模型

         3)關系模型:1975年又IBM研究院E.F.Coded提出并發表了最開始論述關系型數據庫的模型論文,有拉里.克瑞森和其程序員朋友將其實現,后來承接了美國軍方一個名叫oracle的項目創建了oracle公司 

         4)NoSQL:No only SQL , 很多產品,各有側重點。 由于海量數據是由分布式存貯, 所以需要CAP測試,NoSQL 產品通常只能滿足兩個。 

                                    CAP測試: Consistent Avilable Partition tolerence 一致性, 可用性,容錯性 

    4. 開源數據庫:sqliteMySQL, PostgreSQL (EnterpriseDB),MariaDB,MySQL

二、 關系型數據庫管理器模型 

                                                                         mysql.png                   

    1. 存儲的文件: 

        1) 數據:保存的數據

        2) 索引:保存數據的索引文件

        3) 事物文件:操作事物文件 

    2. 磁盤空間管理器: 用于管理磁盤上數據的存取,建立索引等工作 

    3. 緩沖區管理器: 為了解決頻繁I/O的低效,一部分檢索結果會存在緩沖區中內存中,緩沖區管理器用于管理存于內存中

    4. 存取方法接口管理數據的存取方法,于sql語句作用

    5. 事物管理器:當以個存取操作完成后,并不是直接寫入數據文件,而且寫入事物日志中,如果此時數據庫崩潰,數據庫存取數據將會存入事務日志中。寫入數據庫文件為隨機I/O,寫入日志文件為順序I/O 所以后者比較快。 

      事物:滿足ACID測試

        A:原子性

        C: 一致性

        I:隔離性

        D:持久性

    6. 鎖管理器:當某一數據在被用戶訪問時,它將不能再被其他用戶訪問,會被鎖管理器鎖住。 

    7. 恢復管理器:存取操作寫入事務日志但沒寫入數據中時,數據庫崩潰,在第二次重新啟時候,事務日志中內容將通過恢復管理器寫入到數據文件中 

    8. SQL查詢引擎: 

        1). SQL Struct Query Language : 結構化查詢語言, 包含以下三類命令

            (1) DCL: Data Control Language: 數據控制語言,主要是授予或取消某些訪問權限 

                GRANT/REVORK 

            (2) DDL: Data Definition Language:數據定義語言,建立表,創建索引 

                CTREAT/ALTER/DROP 

            (3) DML : Data Manipulation Language:數據需改語言

                SELECT/INSERT/DELETE/UPDATE

        2). SQL查詢引擎包含四個部分 

            (1) 分析器,進行SQL語言的語法分析 

            (2) 查詢計劃,對查詢對象路徑進行優化,有可能統一對象存在多條索引 

            (3) 優化器, 對于SQL語言查詢方式進行優化

            (4) 求解器, 管理返回結果等

            (5) 線程池, 當mysql服務器接收多個并發請求時,分配線程響應多用戶 

    9.    SQL命令行接口: SQL的客戶端程序,使用SQL命令查詢SQL服務器 

    10. 應用程序命令API:不同編程語言有不同的SQL命令輸出接口,可以通過API驅動把SQL語句輸送給SQL服務器,本質上也是SQL客戶端

    11. ODBC: 底層關系型數據庫查詢標準 

    12. SQL索語言的標準 ANSI: SQL-86, SQL-89, SQL-92, SQL-99, SQL-2003

    

三、 mysql 服務器安裝和基本使用 

    1. mysql程序來源: 官方網站 mysql.com 

        1) vendor 系統自帶的rpm包 

        2) MySQL官方rpm包 : 不建議使用,可能會打破依賴關系 

        3) 通用二進制格式 : 建議 

        4) 源碼編譯 : 建議 

    2. 使用通用二進制文件安裝 

    1. 下載官方二進制文件tar包,解壓縮,并且復制其到/usr/local/  
    # wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.44-linux2.6-x86_64.tar.gz
    # tar -xf mysql-5.5.44-linux2.6-x86_64.tar.gz 
    # cp -r mysql-5.5.44-linux2.6-x86_64 /usr/local/
    # cd /usr/local/ 
    # ln -sv  mysql-5.5.44-linux2.6-x86_64 mysql 
    
    2. 創建mysql系統用戶用戶組 -r 選項創建系統用戶用戶組
    # groupadd -r mysql 
    # useradd -g mysql -r -s /sbin/nologin mysql 
    # id mysql 
    uid=498(mysql) gid=498(mysql) groups=498(mysql)
    
    3. 修改文件的屬主屬組 
    # cd /local/usr/mysql 
    # chown -R root:mysql *
    
    4. 數據庫服務器初始化, 運行./script/mysql_install_db 創建系統庫 
    創建額外的LVM來存儲數據庫文件 
    # fdisk /dev/sdb 
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-13054, default 1): 
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): +10G
    Command (m for help): t
    Hex code (type L to list codes): 8e
    Command (m for help): w
    The partition table has been altered!
    
    # pvcreate /etc/sdb1
    Physical volume "/dev/sdb1" successfully created 
    # vgcreate mydata /dev/sdb1 
    Physical volume "/dev/sdb1" successfully created
    # lvcreate -L 6G -n mysqlData mydata 
    Logical volume "mysqlData" created
    # mke2fs -t ext4 /dev/mydata/mysqlData 
    
    # vim /etc/fstabl 中添加一行,設置開機自動掛
    /dev/mydata/mysqlData 	/data			ext4	defaults,noatime	0 0
    # mkdir /data
    # mount -a  
    # mkdir /data/mydata 
    # chown -R mysql:mysql /data/mydata 由于數據庫操作是由mysql用戶執行的,所以要修改這個目錄權限
    
    5. 運行數據庫初始化腳本 
    # ./mysql_install_db --basedir=/usr/local/mysql  --datadir=/data/mydata --user=mysql
    Installing MySQL system tables...
    150602 19:08:09 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.5.44) starting as process 3913 ...
    OK
    Filling help tables...
    150602 19:08:10 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.5.44) starting as process 3920 ...
    OK
    
    數據庫初始化腳本的幾個選項
    --basedir=/usr/local/mysql  設置mysql頂層目錄位置 
    --datadir=/data/mydata      數據庫數據存放位置 
    --user=mysql                負責運行mysql數據庫的用戶 
    
    # ls /data/mydata  每一個數據庫為一個文件夾
    mysql  performance_schema  test
    
    5. 預備服務腳本和配置文件  
    # cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld 
    # chkconfig --add mysqld 
    # chkconfig --list | grep mysql
    chkconfig --list | grep mysql
    
    # cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf 
    
    修改配置文的個別選項,在[mysqld]項下面加上 
    datadir = /data/mydata
    
    # service mysqld start  
    Starting MySQL..                                           [  OK  ]
    
    # 添加PATH換機變量
    # vim /etc/profile.d/mysql.sh 添加 
    export PATH=/usr/local/mysql/bin:$PATH 
    # chmod +x /etc/profile.d/mysql.sh 
    # source /etc/profile.d/mysql.sh 
    
    # mysql 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 1
    Server version: 5.5.44-log MySQL Community Server (GPL)

    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

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

    mysql>

     3. 啟動后產生的文件 

    # cd /data/mydata/ && ls
    ibdata1  ib_logfile0  ib_logfile1  mysql  mysql-bin.000001  mysql-bin.index  performance_schema  test  www.playground.com.err  www.playground.com.pid 
    
          錯誤日志
     www.playground.com.pid     pid文件
    ibdata1                     inodb存儲引擎的表空間文件 
    ib_logfle0                  inodb事物日志 
    mysql-bin.*                 二進制日志 
    每個目錄相當于一個數據庫 
 
    插件式的存儲引擎,表類型,    底層的存儲引擎可以按需自行修改
    MyISAM
    InoDB 
    XtraDB(percona開源組織)    InoDB的改良版

        4. 需改管理員密碼

    # mysql 
    mysql> SET PASSWORD FOR 'root'@'localhost' =  PASSWORD('root'); 
    Query OK, 0 rows affected (0.00 sec)
    mysql> SET PASSWORD FOR 'root'@'127.0.0.1' =  PASSWORD('root'); 
    Query OK, 0 rows affected (0.00 sec)
    
    演示效果 
    [root@www ~]# mysql -u root -h localhost -proot
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 12
    Server version: 5.5.44-log MySQL Community Server (GPL)

    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

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

    mysql>

        5. 刪除匿名用戶 

    # mysql -uroot -hlocalhost -proot 
    mysql> use mysql    ## 系統內建有mysql系統庫, 里面user表,mysql服務器的用戶名和密碼都存放在里面 
    Database changed
    mysql> DESC user
    +------------------------+-----------------------------------+------+-----+---------+-------+
    | Field                  | Type                              | Null | Key | Default | Extra |
    +------------------------+-----------------------------------+------+-----+---------+-------+
    | Host                   | char(60)                          | NO   | PRI |         |       |
    | User                   | char(16)                          | NO   | PRI |         |       |
    | Password               | char(41)                          | NO   |     |         |       |
    | Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
    | Insert_priv            | enum('N','Y')                     | NO   |     | N       |       |
    | Update_priv            | enum('N','Y')                     | NO   |     | N       |       |
    
    mysql> SELECT User,Host,Password FROM user; 
    +------+--------------------+-------------------------------------------+
    | User | Host               | Password                                  |
    +------+--------------------+-------------------------------------------+
    | root | localhost          | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
    | root | www.playground.com |                                           |
    | root | 127.0.0.1          | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
    | root | ::1                |                                           |
    |      | localhost          |                                           |
    |      | www.playground.com |                                           |
    +------+--------------------+-------------------------------------------+
    6 rows in set (0.01 sec) 
    
    ## 此時我們看見有兩個匿名用戶
    mysql> DROP USER 'root'@'::1';                  ## 刪除ipv6地址的root用戶
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> DROP USER ''@'localhost';                ## 刪除匿名用戶
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> DROP USER ''@'www.playground.com';       ## 刪除另一個匿名用戶 
    Query OK, 0 rows affected (0.00 sec) 
    
    mysql> SET PASSWORD FOR 'root'@'www.playground.com' = PASSWORD('root');  ## 為另一個空密碼root用戶設置密碼 
    Query OK, 0 rows affected (0.00 sec)
    mysql> SELECT User,Host,Password FROM user; 
    +------+--------------------+-------------------------------------------+
    | User | Host               | Password                                  |
    +------+--------------------+-------------------------------------------+
    | root | localhost          | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
    | root | www.playground.com | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
    | root | 127.0.0.1          | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
    +------+--------------------+-------------------------------------------+
    3 rows in set (0.00 sec)

       7. 導出頭文件,庫文件和man文檔 

    # ln -sv /usr/local/mysql/include/ /usr/include/mysql 
    `/usr/include/mysql' -> `/usr/local/mysql/include/'
    # vim /etc/ld.so.conf.d/mysql.conf 添加 
    /usr/local/mysql/lib/
    # ldconfig -p | grep mysql 
    libmysqlclient.so.18 (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so.18
    # vim /etc/man.config 中添加 
    /usr/local/mysql/man
    # man mysqld 
    AUTHOR
       Oracle Corporation (http://dev.mysql.com/).

    MySQL 5.5                         05/02/2015                         MYSQLD(8)
    (END) 
    說明已經是新版本了

            

四、 mysql客戶端以及命令的基本使用 

    1. 配置文件基本個是/etc/my.cnf,服務器配置文件和客戶端配置文件寫在一起,通常包含三個部分

        1) [mysql] :mysql客戶端配置部分,只是用來配置mysql自己的客戶端 

        2) [mysqld]:mysql客戶端服務器配置段

        3) [client]:mysql的所有客戶端,包括其他的客戶端

     2. mysql客戶端用戶登錄

   mysql 
       -u 用戶名,不指定默認為root用戶 
       -h 主機名或IP,不指定為localhost 
       -p 密碼, 不指定為空密碼

      3. mysql的命令 :

          命令不去分大小寫,命令參數區分大小寫,與文件相關的區分大小寫

          1) 客戶端命令 : 在客戶端可以自動執行的命令 

                例如: help, status, quit,不需要語句終止符默認為“;”

                使用help可以獲取命令幫助符, help KEYWORD

       \g : 把命令送去服務器端,如果結束符被改了的情況下可以在sql命令后面加這個
           mysql> SELECT User,host,Password FROM user\g
           +------+--------------------+-------------------------------------------+
           | User | host               | Password                                  |
           +------+--------------------+-------------------------------------------+
           | root | localhost          | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
           | root | www.playground.com | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
           | root | 127.0.0.1          | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |  
           +------+--------------------+-------------------------------------------+
       \G : 把命令送去服務器, 顯示時候一行一行顯示 
           mysql> SELECT User,host,Password FROM user\G
                *************************** 1. row ***************************
                User: root
                host: localhost
                Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
                *************************** 2. row ***************************
                User: root
                host: www.playground.com
                Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
                *************************** 3. row ***************************
                User: root
                host: 127.0.0.1
                Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
                3 rows in set (0.00 sec)

          2) 服務器端命令      

        SELECT 
            SELECT col1, col2, ... FROM tb1, tb2, ... WHERE clause;
                WHERE clause: 
                WHERE col1 > 30 ; 同城這里為判斷語句
        SHOW DATABASES;  顯示所所有庫
        USE database_name;  顯示數據庫
        SHOW TABLES; 顯示某庫所有表 
        CREATE DATABASE database_name; 創建數據庫 
        DROP DATABASE database_name;  刪除數據庫

           3) mysql 命令接收的兩種模式 

                 交互式模式: 直接在mysql shell中輸入命令 

                 批處理模式: 使用輸入重定向,mysql < test.sql 實現 

                 非登錄執行命令:mysql -e "sql_command"

五、 mysql 服務器的幾個重要概念

    1. 約束,constraint : 某一個字段取值的范圍 

        1) 主鍵約束 : 只要某些字段被定為主鍵,則填入數據時不能重復,另外不能為NULL 值

        2) 外鍵約束:通過另一張表的取值范圍來約束當前表

        3) 唯一鍵約束:與主鍵相同,但是可以為空 ,主鍵只能有一個,唯一鍵只能多個

        4) 檢查式約束: 用戶自定義的取值范圍,通常為布爾表達式,符合條件才能填 

        5) 非空約束 : 不能為空

    2. 鍵(key)

        1)主鍵:能惟一標識表中每一個記錄的字段或字段的組合;

        2)候選鍵 : 可以作為主鍵使用的字段或字段組合,不一定只有一種

        3) 唯一鍵 : 唯一標示,但可以為空,數據不能重復出現

        4) 外鍵 
    3. 表創建需要定義

        1)需要定義的內容:字段名, 約束,字段類型 

        2)字符類型: 

                    char(#): 不區分大小寫

                    varchar(#):區分大小寫

                    binary(#):不區分大小寫

                    varbinary(#):區分大小寫, 

                    text(不區分大小寫):存儲指針,指向對象 

                    blob(區分大小寫): 二進制大對象,只存儲指針,指向對象

        3)數值型:

                精確數值 :

                        int:tinyint(1byt), smallint(2byt),mediumint(4byt),int(4byt),bigint(8byt)

                        decimal :十進制小樹   

                近似值: float, double 

                日期時間型:date, time, datatime, timestamp 

                布爾型: 

                內置類型: ENUM 限定特定的取值范圍, SET 

六、 mysql服務器的基本使用 

    1. 創建表刪除表: 

    CREATE TABLE tb_name (col1_name col1_type,...);
    DROP TABLE tb_name;
    
    可以使用的字段修飾符,重建時寫在col_name 后面 
    NOT NULL
    NULL
    UNSIGNED
    DEFAULT 
    AUTO_INCREMENT:自動增長類型的字段必須為主鍵或惟一鍵;
    
    定義鍵類型的修飾符 
    PRIMARY KEY
    UNIQUE KEY
    
    舉例: 創建一個名單 
    mysql> CREATE DATABASE mydata ; 
    mysql> CREATE TABLE students (StuID int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20) NOT NULL, Age tinyint UNSIGNED NOT NULL, Gender ENUM('F','M'));
    mysql> DESC students; 
    +--------+---------------------+------+-----+---------+----------------+
    | Field  | Type                | Null | Key | Default | Extra          |
    +--------+---------------------+------+-----+---------+----------------+
    | StuID  | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | Name   | varchar(20)         | NO   |     | NULL    |                |
    | Age    | tinyint(3) unsigned | NO   |     | NULL    |                |
    | Gender | enum('F','M')       | YES  |     | NULL    |                |
    +--------+---------------------+------+-----+---------+----------------+
    4 rows in set (0.00 sec)

    2. 插入數據

    INSERT INTO tb_name (col1, col2, ...) VALUE|VALUES (val1, val2, ...);
    INSERT INTO tb_name VALUES ()
    
    例子;插入多個記錄時,可以用逗號隔開
    mysql> INSERT INTO students(Name,Age, Gender) VALUES ('john',35,'M'),('mark',28,'M'),('luke',20,'M'),('mathew',29,'M');
    mysql> SELECT * FROM students ; 
    +-------+--------+-----+--------+
    | StuID | Name   | Age | Gender |
    +-------+--------+-----+--------+
    |     3 | john   |  35 | M      |
    |     4 | mark   |  28 | M      |
    |     5 | luke   |  20 | M      |
    |     6 | mathew |  29 | M      |
    +-------+--------+-----+--------+
    6 rows in set (0.00 sec)

    3. 查詢 

    SELECT col1, col2 FROM tb_name WHERE
        = > < >= <=
    LIKE : 加通配符, 
           %: 任意長度的任意字符
	   _: 任意單個字符;  
    RLIKE : 正則表達式 
    
    組合條件: and or not
     
    例子: 
    mysql> SELECT * FROM students WHERE Name  LIKE 'm%';
    +-------+--------+-----+--------+
    | StuID | Name   | Age | Gender |
    +-------+--------+-----+--------+
    |     4 | mark   |  28 | M      |
    |     6 | mathew |  29 | M      |
    +-------+--------+-----+--------+
    2 rows in set (0.00 sec
    
    mysql> SELECT * FROM students WHERE Name  RLIKE '^m';
    +-------+--------+-----+--------+
    | StuID | Name   | Age | Gender |
    +-------+--------+-----+--------+
    |     4 | mark   |  28 | M      |
    |     6 | mathew |  29 | M      |
    +-------+--------+-----+--------+
    2 rows in set (0.00 sec)
    
    mysql> SELECT * FROM students WHERE Age < 28;
    +-------+------+-----+--------+
    | StuID | Name | Age | Gender |
    +-------+------+-----+--------+
    |     5 | luke |  20 | M      |
    +-------+------+-----+--------+
    1 row in set (0.00 sec)

    4. 刪除;使用方式與SELECT類似, 如果不加限定條件會清空整張表  

   DELETE FROM tb_name;
   DELETE FROM tb_name WHERE clause;

    5. 更新數據 

    UPDATE tb_name SET col1 = value WHERE clause;
    例子:把所有的所有年齡小于20的Gender 改成F 
    mysql> UPDATE students SET Gender = 'F'  WHERE Age < 28;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> SELECT * FROM students ;
    +-------+--------+-----+--------+
    | StuID | Name   | Age | Gender |
    +-------+--------+-----+--------+
    |     1 | john   |  35 | M      |
    |     2 | john   |  35 | M      |
    |     3 | john   |  35 | M      |
    |     4 | mark   |  28 | M      |
    |     5 | luke   |  20 | F      |
    |     6 | mathew |  29 | M      |
    +-------+--------+-----+--------+
    6 rows in set (0.00 sec)

    6. 字符集以及其他狀態命令: 字符集決定了字符的編碼格式和排列順序

    SHOW CHARACTER SET : 顯示支持的字符集
        常用的字符集: 
            GBK
	    GB2312
	    GB18030
	    UTF-8	
	    
    SHOW COLLATION :排序規則, 相同的字符集有可能有不同的排序規則
            GB2312_chinese_ci 
            GB2312_bin 
            
    SHOW ENGINES : 顯示存儲引擎
            mysql> SHOW ENGINES ; 
            +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
            | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
            +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
            | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
            | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
            | CSV                | YES     | CSV storage engine                                             | 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         |
            | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
            | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
            | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
            | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
            +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
            9 rows in set (0.00 sec)
             
    SHOW TABLE STATUS [LIKE clause]
            mysql> SHOW TABLE STATUS  LIKE 'students' \G
            *************************** 1. row ***************************
                           Name: students
                         Engine: InnoDB
                        Version: 10
                     Row_format: Compact
                           Rows: 6
                 Avg_row_length: 2730
                    Data_length: 16384
                Max_data_length: 0
                   Index_length: 0
                      Data_free: 10485760
                 Auto_increment: 7
                    Create_time: 2015-06-03 23:44:13
                    Update_time: NULL
                     Check_time: NULL
                      Collation: latin1_swedish_ci
                       Checksum: NULL
                 Create_options: 
                        Comment: 
                1 row in set (0.00 sec)

        7. 用戶授權; 

	GRANT ALL PRIVILEGES ON db_name.tb_name TO 'username'@'hostname' IDENTIFIED BY 'your_password';
	FLUSH PRIVILEGES;

        8. 服務器工作特性以及服務器特性變量 

    SHOW {GLOBAL|SESSION} VARIABLES [LIKE clause];
    例子: 
    mysql> SHOW GLOBAL VARIABLES LIKE 'v%'; 
    +-------------------------+------------------------------+
    | Variable_name           | Value                        |
    +-------------------------+------------------------------+
    | version                 | 5.5.44-log                   |
    | version_comment         | MySQL Community Server (GPL) |
    | version_compile_machine | x86_64                       |
    | version_compile_os      | linux2.6                     |
    +-------------------------+------------------------------+
    4 rows in set (0.00 sec)

        9. 服務器運行中的狀態變量輸出值查詢

    SHOW {GLOBAL|SESSION} STATUS [LIKE clause];
    例子; 
    mysql> SHOW GLOBAL STATUS LIKE 't%'; 
    +-----------------------+-------+
    | Variable_name         | Value |
    +-----------------------+-------+
    | Table_locks_immediate | 70    |
    | Table_locks_waited    | 0     |
    | Tc_log_max_pages_used | 0     |
    | Tc_log_page_size      | 0     |
    | Tc_log_page_waits     | 0     |
    | Threads_cached        | 0     |
    | Threads_connected     | 1     |
    | Threads_created       | 1     |
    | Threads_running       | 1     |
    +-----------------------+-------+
    9 rows in set (0.00 sec)

原創文章,作者:以馬內利,如若轉載,請注明出處:http://www.www58058.com/4885

(0)
以馬內利以馬內利
上一篇 2015-06-03
下一篇 2015-06-04

相關推薦

  • shell腳本之函數相關

       本節主要是作業和select 與case的相關 一、作業 1、斐波那契數列又稱黃金分割數列,因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……,斐波納契數列以如下被以遞歸的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-…

    Linux干貨 2016-08-22
  • LVM基礎

    邏輯卷的原理 邏輯卷的組成上包括物理卷,邏輯組,邏輯卷 物理卷即是磁盤分區或者塊設備經過轉換以后形成的抽象的邏輯設備 邏輯組即是將物理卷進行統一打包,合成一個更大的邏輯上的分區 邏輯卷是在邏輯組的基礎上細分的課動態調節的虛擬磁盤分 其工作原理是通過某種機制將物理上的塊設備或者分區抽象的進行封裝,然后以邏輯卷的方式統一呈現給 上層的應用 邏輯卷的操作 一:創建…

    2017-05-01
  • 第十周:Linux系統啟動流程及shell腳本練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 一張圖足以說明一切: 2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;   (1) 為硬盤新建兩個主分區;并為其安裝grub;   (2) 為硬盤的第一個主分區提供內核和ramdisk文件;為第二個分區提供rootfs;   (3)…

    Linux干貨 2016-11-30
  • Centos7下安裝httpd源碼包

    今天小編來跟大家做個練習,就是如何在Centos7下安裝httpd源碼包. 一:下載httpd最新版本的源碼包 [root@localhost ~]# rpm -qa |grep httpd //查詢系統上是否已安裝httpd包 httpd-tools-2.4.6-45.el7.centos.4.x86_64 httpd-2.4.6-45.el7.cento…

    2017-08-19
  • 馬哥教育第20期-第二周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 cp:復制命令 用法: cp [源文件] [目標地址]           cp  vimrc /tmp/         cp [源文件1] [源文件2] ……

    Linux干貨 2016-06-27
  • 馬哥教育網絡班20期+第二周課程練習

    Table of Contents 1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 目錄管理 文件管理 2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。 腳本返回值 命令或路徑補全和展開 3、請使用命令行展開功能來完成以下練習: (1)、創建/tmp目錄下的:a_c, a_d, b_c, b (2…

    Linux干貨 2016-06-23

評論列表(4條)

  • 黑白子
    黑白子 2015-06-06 18:43

    大神,你寫一篇博客需要多久???

    • 以馬內利
      以馬內利 2015-06-09 09:39

      @黑白子一兩天吧, 主要是做實驗和畫圖費時間。工作起來沒那么多時間一個星期弄一篇就不錯了

  • 北京-清虛
    北京-清虛 2015-06-09 17:24

    哥你這文章錯別字真心太多了。。。。

    • 以馬內利
      以馬內利 2015-06-15 09:00

      @北京-清虛這不能怪我,搜狗拼音就這么給力,好吧多謝建議,下次敲慢點

欧美性久久久久