MariaDB/Mysql的用法

要使用MariaDB/Mysql,先要利用yum安裝mysql

[root@localhost ~]# yum install -y mariadb-*    //利用這條命令能把全部關於MariaDB的軟件工具安裝上

若原本Linux(CentOS)已經安裝,可用sql

[root@localhost ~]# ss -tnl        //查看3306是否被監聽,有就已開啓服務

若沒有開啓則啓動服務數據庫

[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server

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

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

MariaDB [(none)]>  //已經進入mysql/MariaDB的交互界面


在Mysql/MariaDB的交互界面就能夠用MariaDB/Mysql的語句來進行數據庫的操做。安全

也能夠在Bash界面有條件對應使用:bash

    mysql [options] [db_name]來進入Mysql界面;服務器

        -p[password]
                用於指定鏈接mysql服務器時,爲對應用戶指定身份驗證所需密碼;若是密碼部分省略不寫,執行命令後須要在新行中給出密碼,這種方式相對更安全;ide

        -D db_name
                用於指定使用mysql客戶端程序鏈接到mysql服務器以後,默認使用哪一個數據庫;若是不給定該選項,默認爲NULL;函數

        -e statement
                鏈接至mysql服務器並將後面的SQL語句交給服務器運行以後返回執行結果並直接退出交互式登陸模式,返回bash命令提示符;工具

        -h host_name
                用於指定這次mysql程序所鏈接的mysql服務器的主機名稱或主機IP地址;默認是localhost(127.0.0.1);ui

        -u user_name
                用於指定鏈接mysql服務器時使用的用戶名;默認的用戶名爲:'root'@'localhost'

                    mysql的用戶名:USERNAME@HOSTNAME
                    USERNAME表示登陸的用戶名稱;
                    HOSTNAME表示用戶經過哪一個特定的客戶端主機鏈接到mysql服務器;
                    如:'root'@'172.16.0.1'用戶
                        表示只有172.16.0.1主機能夠經過root用戶鏈接至myslq服務器;
                        HOSTNAME中可使用通配符:
                            _:任意單個字符;
                            %:任意長度的任意字符;
                    如:'root'@'172.16.%.%'
                        表示172.16.0.0/16網段中的全部主機均可以使用root用戶鏈接至mysql服務器;
                    如:'root'@'172.16._.%'
                        表示172.16.0.0~172.16.9.255地址的主機均可以使用root用戶鏈接至mysql服務器;

                    注意:默認狀況下,全部用戶均爲空密碼,而且還有匿名用戶存在,所以,爲了加強安全性,可使用mysql_secure_installation命令完成帳戶安全初始化;是的mysql服務器僅能讓root用戶在本地登陸,而且移除匿名用                                    戶和test數據庫;


進入mysql/MariaDB的交互界面後,能夠用mysql命令了;

    Mysql命令分爲:客戶端命令和服務器端命令

        客戶端命令:mysql程序自身完成或執行的命令,在客戶端所在地運行

                clear     (\c)
                    中止發送當前正在鍵入的命令或語句並直接返回提示符;
                delimiter (\d)
                    設置語句結束標記;默認的語句結束標記爲";";
                ego       (\G)
                    將其前面的語句送往mysql服務器運行,並將返回的結果縱線顯示;
                go        (\g)
                    無需輸入語句結束標記,直接將其前面的語句送往服務器執行;
                exit,quit (\q)
                    退出mysql程序的交互式模式;
                status    (\s)
                    獲取mysql服務器的狀態信息;
                use       (\u)
                    將指定的數據庫做爲當前正在使用的數據庫;
                source    (\.)
                    能夠在mysql交互式模式中執行SQL腳本文件;
                ?或help    (\?)
                    獲取客戶端命令的幫助信息;


        服務端命令:mysql客戶端程序經過mysql協議向mysql服務器端發送的SQL語句;每一個SQL語句都必須以指定的結束標記結尾,默認是";"

            服務器端命令表明的SQL語句,能夠分爲三類:DDL,DML,DCL



DDL:數據定義語言,主要用於管理數據庫及數據庫的各組件;
                例如:數據庫,表,視圖,索引,用戶,存儲過程,存儲函數,觸發器,事件等;
    經常使用的SQL語句:CREATE,DROP,ALTER,SHOW


DML:數據操縱語言,主要用於管理表中的數據,實現數據的增,刪,改,查等操做;
    經常使用的SQL語句:INSERT,DELETE,UPDATE,SELECT

DCL:數據控制語言,主要用於管理數據訪問的受權;
    經常使用的SQL語句:GRANT,REVOKE


獲取指定的SQL語句的幫助信息;

    mysql> help SQL_STATEMENT_KEYWORK
    MariaDB [(none)]> help SQL_STATEMENT_KEYWORK

         全部的SQL語句自己,不區分字符大小寫;建議使用小寫字母書寫SQL語句;


DDL中的數據庫

    建立數據庫、修改數據庫的屬性、刪除數據庫


建立數據庫:

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

            DATABASE | SCHEMA:
                表示要建立的對象的類型爲"數據庫"或"方案";
            IF NOT EXISTS:
                若是指定要建立的數據庫已經存在,則不報錯也不執行建立操做;
            db_name:
                要建立的數據庫的名稱;
            CHARACTER SET [=] charset_name:
                爲新建立的數據庫指定其默認的字符集;
                
                mysql> show character set
                    查看mysql服務器所支持的全部字符集及默認排序規則;
            COLLATE [=] collation_name:
                爲新建立的數據庫指定字符集的排序規則;

            mysql> show collation
                查看mysql服務器上每種字符集所支持的全部的排序規則;


修改數據庫的屬性:

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

            注意:若是數據庫中已經有表,且表中已經插入數據時,更改數據庫的字符集和排序規則可能會致使已存數據的亂碼;


刪除數據庫:

    DROP {DATABASE | SCHEMA} [IF EXISTS] db_name            


DDL中的表:

    數據類型、建立表、修改表、刪除表


數據類型:
    定義數據類型的意義:
        1.決定數據的存儲格式;
        2.決定數據所能參與的運算;
        3.決定數據能夠表示的有效範圍;

    對於mysql來講,支持的數據類型:
        數值型:
            精確數值型:
                TINYINT(3):8bits,0~255,-128~+127
                SMALLINT(5):16bits,0~65535,-32768~+32767
                MEDIUMINT(8):24bits,0~16777735
                INT(10):32bits,
                INTEGER:48bits,
                BIGINT:64bits

            近似數值型:
                REAL
                DOUBLE
                FLOAT

        字符串型:
            變長字符型:
                VARCHAR(length):字符不區分大小寫;65536個字符;
                    VARCHAR(30)
                        qhdlink$ -- 8字節存儲空間;
                VARBINARY(length):字符區分大小寫;65536個字符;

            定長字符型
                CHAR(length):字符不區分大小寫;256個字符;
                    CHAR(30)
                        qhdlink -- 30字節空間;
                BINARY(length):字符區分大小寫;256個字符;

        對象存儲類型:
            TEXT:存儲大量的純文本信息;
                TINYTEXT
                TEXT
                MEDIUMTEXT
                LONGTEXT

            BLOB:存儲非純文本信息通過流式化處理以後的二進制數據;
                TINYBLOB
                BLOB
                MEDIUMBLOB
                LONGBLOB

        日期時間型:
            DATE:日期型,3字節;
            TIME:時間型,3字節;
            TIMESTAMP:時間戳類型,4字節;
            DATETIME:日期時間型,8字節;
            YEAR:年份,YEAR(2),YEAR(4)

        內置特殊類型:
            集合類型:
                SET:集合,插入的數據能夠是集合中各個元素的任意組合;
                    SET('a','b','c','d')
                        a
                        aa
                        aab
                        abdc

            枚舉類型:
                ENUM:枚舉,只能存放列舉出來的固定的字符或字符串;
                    ENUM('F','M')
                        F
                        M

    數據類型相關的修飾符:
        與整數類型相關的:
            UNSIGNED,無符號整數;
                注意:UNSIGNED修飾符必須緊跟在精確數值類型標識符以後;
            AUTO_INCREMENT [=] Value:
                整型數據的遞增或遞減;

        通用修飾符:
            NOT NULL:非空約束;通常是爲主鍵作約束;
            DEFAULT Value:爲字段設置默認值;

   

建立表:
            CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options]
                create_definition:
                    col_name  data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']

                table_options:
                    ENGINE [=] engine_name | AUTO_INCREMENT [=] value

            顯示錶的結構:
                mysql> desc stu_info;

            顯示建立表的SQL語句:
                mysql> show create table stu_info;


修改表:

    ALTER TABLE tbl_name [alter_specification [, alter_specification] ...]

    增長表的字段:
        ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]

        示例:
            mysql> alter table stu_info add Stel_num varchar(20) not null after SAge;

    修改表的字段屬性
        CHANGE [COLUMN] old_col_name new_col_name column_definition  [FIRST|AFTER col_name]
        MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]

        示例:
            mysql> alter table stu_info change column Stel_num SMobile char(11) not null after Gender;
            mysql> alter table stu_info modify SAge tinyint unsigned after Gender;

    刪除表的字段:
        DROP [COLUMN] col_name


刪除表:

    DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...




DDL中的視圖:

    建立視圖、刪除視圖

    

    建立視圖:
        CREATE VIEW view_name [(column_list)] AS SELECT clause;

    刪除視圖:
        DROP VIEW [IF EXISTS] view_name [, view_name] ... [RESTRICT | CASCADE]

DDL中的索引

    索引類型、建立索引、查看索引、刪除索引、


索引的類型:
    彙集索引、非彙集索引:
        彙集索引:索引和數據存放在一塊兒,找到索引即找到數據;
        非彙集索引:索引和數據不存放在一塊兒,索引經過索引指針指向數據所在位置;

    稠密索引、稀疏索引:是否索引了每一條數據記錄;
        稠密索引:每條數據記錄都有一條索引與之對應;
        稀疏索引:並非每條數據記錄都有一條索引與之對應,而是一條索引對應某個或某些數據塊;

    主鍵索引、輔助索引:
        BTree:Balance Tree,B- Tree,BTree,B+Tree
            左前綴索引:

            注意:在使用BTree索引進行檢索時,給出的PATTERN的最左側字符不要出現通配符,不然,沒法使用索引進行檢索;只能全文遍歷;

            Hash索引:

        R Tree:Spacial,空間索引;
        FULLTEXT:全文索引;

    覆蓋索引:索引中的內容就是要檢索的內容,經過檢索索引內容便可當即找到數據,並直接返回檢索結果;


建立索引:
    1.在建立表時,經過指定主鍵或惟一鍵,能夠自動建立索引;
    2.若是在建立表時,沒有指定主鍵或惟一鍵,則能夠在表成功建立以後添加索引;

    CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) [index_option] ...

    示例:
        MariaDB [hellodb]> create index name_index on students(Name);

查看索引:
    SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr]


刪除索引:
    DROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name







DML中的INSERT/REPLACE、

DML中的DELETE

DML中的UPDATE

DML中的SELECE

相關文章
相關標籤/搜索