最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL入門(一)
第一部分:MySQL基礎(chǔ)概念
Mariadb的基礎(chǔ):
    設(shè)計范式:
        第一范式:字段是原子性的
        第二范式:非主屬性完全依賴于主屬性    
                存在可用主鍵
        第三范式:非主屬性對主屬性不存在傳遞函數(shù)依賴關(guān)系。
                任何都不應(yīng)該依賴于其他表的非主屬性
    約束:主鍵、唯一鍵、外鍵、檢查性約束
    SQL組件
        數(shù)據(jù)庫、表、索引、視圖、存儲過程、存儲函數(shù)、觸發(fā)器、事件調(diào)度器、用戶和權(quán)限
        元數(shù)據(jù)數(shù)據(jù)庫:mysql
    Mariadb安裝方式:
        rpm包
        通用二進(jìn)制
        編譯安裝
第二部分:SQL語句
    DDL,DML
        DDL:create,alter,drop
        DML:insert,delete,update,select
        DCL:grant,revoke,
    MySQL圖形化管理工具


第一部分:MySQL基礎(chǔ)概念       
一、基礎(chǔ)架構(gòu)
1.數(shù)據(jù)庫系統(tǒng):(通用模型)    
 MySQL入門(一)  
分析器:分析sql語句,命令,語法,庫名,字段名,表名等
操作求解器:操作過程應(yīng)該怎樣執(zhí)行,可能會提供多條執(zhí)行路徑
計劃執(zhí)行器:選擇最優(yōu)執(zhí)行路徑,
鎖管理器是事務(wù)管理器的一個基本組件
    
文件存取方法    //r或w
緩沖區(qū)管理方法  //
磁盤空間管理器     //限定表或者庫占用空間大小
事務(wù)管理器        //
恢復(fù)管理器        //恢復(fù)此前未執(zhí)行完成的事務(wù)
    
2.事務(wù)概念    
事務(wù)(transaction):組織多個操作為一個整體,要么全部執(zhí)行,要么全部都不執(zhí)行
    回滾:rollback,假如未執(zhí)行完成,所有的都要回滾
    
    Bos:8000-1000
    Alice:5000,5000+1000
    一個存儲系統(tǒng)是否支持事務(wù):測試標(biāo)準(zhǔn)
    ACID:
        A:原子性,不可分割的一個整體
        C:一致性,前后的總和是一致的,變化前后是一致的
        I:隔離性,事務(wù)彼此之間是隔離的,我在取錢的時候,其他人不能操作該賬戶
        D:持久性,事務(wù)執(zhí)行成功,則保存在disk中,則不能修改
    原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)      
    
二、數(shù)據(jù)庫范式
數(shù)據(jù)庫設(shè)計具有一定的規(guī)范性        
員工信息:
    約束:外鍵約束,A表依賴于B表的某個字段
    表達(dá)式約束:限定age范圍為1-100
    主鍵:唯一的標(biāo)識身份
    
RDBMS: //一般滿足第三范式即可,范式是遞進(jìn)關(guān)系
    1.第一范式1NF //列不可再分,列唯一
        每一列都是不可分割的原子數(shù)據(jù),而不能是集合,屬組等非原子數(shù)據(jù)項
        實體中有多個值時,必須拆分為不同的屬性,即無重復(fù)的域
        關(guān)系模式中,每個屬性不可再分。屬性原子性
        
        職工號,姓名,電話號碼組成一個表(一個人可能有多個電話號碼)
        方案1:重復(fù)存儲職工號和姓名。這樣,關(guān)鍵字只能是電話號碼。//不滿足
        方案2:二是職工號為關(guān)鍵字,電話號碼分為單位電話和住宅電話兩個屬性             
    2.第二范式2NF//
        在一范式的基礎(chǔ)上,非主屬性完全依賴于主屬性,即消除非主屬性對主屬性的部分函數(shù)依賴關(guān)系。
        sc(sid,cid,grade,credit)其中sid為學(xué)號, cid為課程號,grade為成績,credit為學(xué)分。 由以上條件,關(guān)鍵字為組合關(guān)鍵字(sid,cid)
        sc(sid,cid,grade,credit)//非關(guān)鍵字屬性credit僅函數(shù)依賴于cid,也就是credit部分依賴組合關(guān)鍵字(sid,cid)而不是完全依賴。
        必須拆分為:sc(sid,cid,grade),c(cid,credit)    
        
    3.第三范式3NF //
        二的基礎(chǔ)上,非主屬性對主屬性不存在傳遞函數(shù)依賴關(guān)系。
        s(sid,sname,did,dname,location) 各屬性分別代表學(xué)號,姓名,所在系,系名稱,系地址。
        問題:did,dname,location將重復(fù)存儲
        原因:關(guān)系中存在傳遞依賴造成的。即sid -> did。而did ->sid卻不存在,did -> location, 因此關(guān)鍵字sid對location函數(shù)決定是通過傳遞依賴did->location 實現(xiàn)的。也就是說,sid不直接決定非主屬性location。
        方法:分為兩個關(guān)系 s(sid,sname,did),d(dno,dname,location)
        注意:關(guān)系s中必須有外關(guān)鍵字did。否則兩個關(guān)系之間失去聯(lián)系。
        
    4.第五范式,巴斯特科范式
        http://www.cnblogs.com/hi-bazinga/archive/2012/06/05/2536806.html
    
三、數(shù)據(jù)庫其他概念
數(shù)據(jù)庫:數(shù)據(jù)的集合

績溪網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

    表:為了滿足范式設(shè)計要求,將一個數(shù)據(jù)集拆分為多個
    約束:constraint,向數(shù)據(jù)表插入要遵循的限制規(guī)則
        主鍵:一個或多個字段的組合,主鍵的數(shù)據(jù)必須唯一,不能重復(fù)
        外鍵:A表某字段能插入的數(shù)據(jù)依賴于B表的主鍵中的數(shù)據(jù)
        唯一鍵:一個或多個字段的組合,填入唯一鍵中的約束,必須不同于已存在的數(shù)據(jù),可以為空
        檢查性約束:取決于表達(dá)式的請求
    索引:將表中的某一個或某些字段抽取出來,單獨存儲為一個獨特的數(shù)據(jù)結(jié)構(gòu);
        索引是一個數(shù)據(jù)結(jié)構(gòu):
        常見的索引類型:
            樹狀:
            hash:
        目的:加快查找速度,但不利于w請求
    關(guān)系運算:
        選擇:選擇符合條件的行
        投影:選擇符合條件的列
        連接:將多張表關(guān)聯(lián)起來
            左連接,右鏈接,笛卡爾積,內(nèi)連接
    數(shù)據(jù)抽象:    
        物理層:決定數(shù)據(jù)的存儲格式,即如何將數(shù)據(jù)組織為物理文件
        邏輯層:描述DB存儲什么數(shù)據(jù),以及數(shù)據(jù)間存在什么關(guān)系
        視圖層:描述DB中的部分?jǐn)?shù)據(jù);
    關(guān)系模型的分類:
        一般關(guān)系模型:
        實體關(guān)系模型:
        基于對象的關(guān)系模型:
        半結(jié)構(gòu)化關(guān)系模型:  xml

Mariadb(Mysql)
    Unireg:
    MySQL AB--->公司,早期是針對Unireg做的應(yīng)用接口,
    賣給了Sun公司,早期是運行在Solaris:二進(jìn)制版本,后來才在linux上
    Sun被oracle收購了
    My:作者的大女兒
    Maria:作者的三女兒
mysql:www.mysql.com
Mariadb:wwww.mariadb.org
    
四、安裝MariaDB
Mariadb的特性:
    插件式存儲引擎,存儲管理器有多種實現(xiàn)版本,用戶可根據(jù)需要靈活選擇        
    存儲引擎也稱為“表類型"
    1.更多的存儲引擎 //show engines
        MyISAM        //5.1默認(rèn)使用
        MyISAM-->Aria //
        InnoDB-->XtraDB //支持事務(wù)5.5以后
    2.諸多擴展新特性:
    3.提供了較多的測試組件
    4.truly open source;真的開源
MySQl的發(fā)行機制
    Enterprise:提供了更豐富的功能
    Community:

安裝方式:
    1.rpm包
        1.由OS的發(fā)行商提供
        2.程序官方提供
    2.源碼包
    3.通用二進(jìn)制格式//解壓后,簡單配置即可
通用二進(jìn)制格式安裝mariadb: //先卸載之前安裝的版本

    1.卸載原有版本解壓新版本

        systemctl stop mariadb
        cp /usr/lib/systemd/system/mariadb.service /root  備份unit文件
        yum remove mariadb-server
        https://downloads.mariadb.org/  
            mariadb-5.5.46-linux-x86_64.tar.gz    //文件名
        tar xvf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/
        cd /usr/local
        ln -sv mariadb-5.5.46-linux-x86_64/ mysql

    2. 屬組,目錄及權(quán)限,配置文件

        id mysql || group add -r -g 306 mysql //沒有的話,就創(chuàng)建該系統(tǒng)用戶
        cd /usr/local/mysql/
        chown -R root:mysql ./*
        mkdir /mydata/data -pv
        chown -R mysql.mysql /mydata/data/
            注:/etc/my.cnf 是以前的包,需要刪除,或者移動到其他地方
            /usr/local/mysql/support-files :提供有配置文件
        mkdir /etc/mysql
        cp support-files/my-large.cnf /etc/mysql/my.cnf //這個目錄也會被讀取配置
        vim /etc/mysql/my.cnf
            [mysqld]
            ...
            datadir = /mydata/data
            skip_name_resolve = ON
            innodb_file_per_table = ON
            ...

    3.初始化元數(shù)據(jù):

        scripts/mysql_install_db --help
        scripts/mysql_install_db  --user=mysql --datadir=/mydata/data --skip-name-resolve
        啟動:
            1.cp support-files/mysql.server /etc/init.d/mysqld //使用centos6的方式
                chmod +x 
                chkconfig --add mysqld
                service mysqld start
            2.vim /root/mairadb.service //使用unit文件啟動
                unit文件修改添加

    
小結(jié):
    1.添加系統(tǒng)用戶,修改屬組
    2.創(chuàng)建目標(biāo)目錄,修改屬主屬組
    3.復(fù)制并修改配置文件
    4.初始化數(shù)據(jù)庫(指定user,datadir,--skip-name-resolve)
        
后續(xù)步驟:    
    1.添加lib
        vim /etc/ld.so.conf.d/mariadb2.conf
         /usr/local/mysql/httpd
        ldconfig -p |grep mysqld
    2.path
        vim /etc/profile.d/mysql.sh
            export PATH=$PATH:/usr/local/mysql/bin
        source /etc/profile
    3.man //在/usr/local目錄下能自己找到    
    4.頭文件include    
        ln -sv /usr/local/mysql/include/mysql/ /usr/include/    
        
步驟:cat INSTALL-BINARY //這個文件有具體的安裝步驟

1.準(zhǔn)備/mydata/datda
2.useradd -r mysql
    cd /usr/local
    ln -sv mari-server mysql
    cd /usr/local/mysql/
    chown -R root:mysql ./*
    scripts/mysql_install_db --user=mysql --datadir=/mydata/data
    cp support-files/mysql.server /etc/init.d/mysqld
    chconfig --add mysqld
3.配置文件
    ini格式的配置文件,各程序均可通過此配置文件獲取配置信息;
        [program_name]
    配置文件查找次序:mysql --help //可以看到次序
        1.RPM包的
            /etc/mysql/my.cnf-->/etc/my.cnf---> ~/.my.cnf 
            假如沖突:越靠后,起作用
        2.通用二進(jìn)制
            /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 
            假如沖突:越靠后,起作用
    cp support-files/my-large.cnf /etc/my.cnf
    添加:
        datadir = /mydata/data
        innodb_file_per_table = ON
        skip_name_resolve = ON
4.啟動服務(wù)
    service mairadb start

        
注:數(shù)據(jù)庫系統(tǒng)非常浪費內(nèi)存和硬件
    原有的/etc/my.cnf會影響,需要處理
注意:    
    1. 5.x就是為了兼容MySQL5.x的,接口幾乎一致,把支持開源自由軟件的用戶從社區(qū)版MySQL拿到MariaDB上
    2.10.x說過會大量使用新技術(shù),接口會與mysql徹底分道揚鑣了。目標(biāo)就是以后想MariaDB新接口過渡。
          
問題:unit文件
    1.受systemd控制
        安裝后生成的文件:/usr/lib/systemd/system/dhcpd.service
        [root@MT ~]# systemctl enable dhcpd
        Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
    2.cp mariadb55.service /usr/lib/systemd/system/
        vim /usr/lib/systemd/system/mariadb55.service
        ExecStart=/usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql //修改,pre和post都刪除即可
        配置文件,扔為原有的
    

第二部分:SQL語句
DDL,DML
    DDL:create,alter,drop
    DML:insert,delete,update,select
    DCL:grant,revoke,
MySQL圖形化管理工具
    
一、Mariadb程序的組成:
C:client
    mysql:CLI交互式客戶端程序
    mysqldump:備份
    mysqladmin:管理工具
    mysqlbinlog:查看二進(jìn)制日志
    ...
S:server
    三類套接字地址:
        IPv4,3306/tcp
        Unix Sock:/var/lib/mysql/mysql.lock ,/tmp/mysql.lock //服務(wù)啟動生成,關(guān)閉刪除
            本機:C===S:127.0.0.1
    mysqld
    mysqld_safe //建議運行使用的服務(wù)端程序,默認(rèn)使用
    mysqld_multi:多實例;
    mysqld_upgrade:升級工具
    ...
獲取其讀取次序的方法
    mysqld --verbose --help | less
    mysql --help | less
mysql命令
    常用選項
    -u 用戶名,默認(rèn)為root
    -h 遠(yuǎn)程主機,默認(rèn)為localhost
    -p 密碼,默認(rèn)為空
    -D --database=name,直接選擇數(shù)據(jù)庫 //在6上默認(rèn)顯示當(dāng)前所處的庫,select database();查看,use db_name 使用該庫
    -e --excute=name ,直接運行該命令,并不進(jìn)入交互式
        
注意:mysql的用戶賬號由兩部分組成:'usernmae'@'host';其中host用于限制此用戶可通過哪些遠(yuǎn)程主機連接當(dāng)前的mysql服務(wù)
    host的表示方式,支持使用通配符;
        %:任意長度的任意字符;
            172.16.%.%
        _:匹配單個字符:
二、c/s相關(guān)命令
客戶端命令;
服務(wù)器命令;通過mysql連接發(fā)往服務(wù)器執(zhí)行并取回結(jié)果
    
客戶端:

    mysql> help
    \u db_name
    \q 退出
    \d CHAR:設(shè)定新的語句結(jié)束符
    \g 發(fā)送給服務(wù)器,通用結(jié)束符
    \G 語句結(jié)束標(biāo)記,結(jié)果豎排方式顯示
    \s 連接狀態(tài),

        
服務(wù)端命令:
    DDL,DML,DCL
    注意:每個語句必須有語句結(jié)束符,默認(rèn)為分號(;)
    
三、數(shù)據(jù)類型://目的,確定數(shù)據(jù)格式,能夠參與的運算,可用有效范圍
表:行和列
    創(chuàng)建表:定義表中的字段
定義字段時:確定數(shù)據(jù)類型非常關(guān)鍵
    用于確定:數(shù)據(jù)存儲格式、能參與運算種類、可表示的有效的數(shù)據(jù)范圍
字符型:字符集
    碼表:在字符和二進(jìn)制數(shù)字之間建立映射關(guān)系
    Db、client、server、Conn可以有不同的字符集
    show characet set
類型:

    字符型
        定長字符型:// 0-255個字符
            char(#):不區(qū)分字符大小寫
            binary(#):區(qū)分大小寫 0-255
            varbinary(#):0-65535
        變長字符型:// 0-65535多個
            varchar(#):需要一個結(jié)束符
            varbinary(#):需要結(jié)束符,占用一個字符
        對象存儲://表中存放的是指針,真實的數(shù)據(jù)存儲在其他地方
            text:存儲大量文本,2^32次方個字符
                tinytext    0-255 //字節(jié)
                text        0-65535
                mediumtext    0-2^24
                longtext    0-2^32
            blob:二進(jìn)制大對象,區(qū)分大小寫
                tinyblob,blob,mediumblob,longblob 與text類似
        內(nèi)置類型:
            set:集合
                SET (‘a(chǎn)’,’b’,’c’)表示插入的值可以是a,b,c三個字符的任意組合,即插入‘a(chǎn)',‘a(chǎn)c',‘a(chǎn)bc'都是合法的
            enum:枚舉
                ENUM (‘a(chǎn)’, ‘b’,‘c’)表示插入的值只能在a,b,c中進(jìn)行選擇

                         
    數(shù)值型
        精確數(shù)值型
            int(tinyint,smallint,mediumint,int,bigint) 1,2,3,4,8
                int:2^32-1 或者-(2^32/2)-(2^32/2-1) //有無符號
             bit Bit類型只有1和0兩個值
        近似數(shù)值型
            float 4字節(jié)
            dobule 8字節(jié)
                DECIMAL占用(m+2)個字節(jié)
                DECIMAL(m,d)中,m表示數(shù)字的總長度,小數(shù)點不占位;
                    d表示小數(shù)點后面的數(shù)字長度
                                        
    日期時間型
        日期型:date
        時間型:time
        日期時間型:datetime
        時間戳:timestamp //1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現(xiàn)在的總秒數(shù)
        年份:year(2),year(4)
    數(shù)據(jù)類型修飾符:
        unsigned:無符號數(shù)值型
        not null:非空 //        
            default value:默認(rèn)值

字符型:

MySQL入門(一)

數(shù)值型:

MySQL入門(一)

字符修飾符:

    not null/null/default 'string'/collation ''/ 排序的規(guī)則

    show character set;

    show collation ;

DML:數(shù)據(jù)操作語言,主要用于管理表中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)的增,刪,改,查
        insert,delete,update,select

數(shù)值類型修飾符:

    not null/null/default numer/

    auto_increment/select last_insert_id() //查看增長到了哪個   

float和double修飾符:
    auto_increment,default,not null,null,unsigned,zerofile
bit:二級制類型
booltype:
    tinyint(1) //mysql的bool型是只顯示tinyint(1),1或者0
    boolean
    bool
日期修飾符:

    null/not null/default

enum和set類型
    enum //從1-65535個字符串,任意一個元素,但是不能組合
    set //1-64 bit個字符串的集合,元素可任意組合
    
    存儲時:enum('a','1') //在存儲數(shù)據(jù)的時候,存儲的是,enmu中的索引
        例如insert .. value('a') //存儲的是 0 ,也就是enum('a')的索引,而不是a字串
    set存儲:
        set('a','b','c') //insert 數(shù)據(jù)'a' ,存儲的是100 /因為a出現(xiàn),其他沒有出現(xiàn)
    //因此一般enum和set不拿來排序和比較    
    修飾符:
        not null/null/default

四、服務(wù)器端命令
    DDL:數(shù)據(jù)定義語言,主要用于定義數(shù)據(jù)庫組件,例如表,索引,視圖,用戶,存儲過程
        create,alter,drop
    DML:數(shù)據(jù)操作語言,主要用于管理表中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)的增,刪,改,查
        insert,delete,update,select
    
    獲取命令的幫助
        mysql>help COMMAND
    
數(shù)據(jù)庫管理:
    1.創(chuàng)建:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ...
        create_specification:
        [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name
        字符集查看:show character set
        查看排序規(guī)則:show collation;
            
    2.修改ALTER {DATABASE | SCHEMA} [db_name]  alter_specification ...
        alter_specification:
            [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name
    3.刪除DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
    注:可以通過在data目錄中創(chuàng)建子目錄,來建立數(shù)據(jù)庫,但是不建議這么做
        
表管理:

    創(chuàng)建:create table if not exists tb_name (create_defination) 
        create_defination
            字段:col_name data_type
            鍵:primary key(col1,col2,...)
                unique key (col1,col2,...)
                foreign key(clo)
            索引:
                key|index [index_name} (col1,col2,..)
        create table student(id int unsigned not null,name char(30) not null,age tinyint unsigned,gender enum('f','m'));
        create table student(id int unsigned not null,name char(30) not null,age tinyint unsigned,gender enum('f','m'),primary key(id,name));
        注:unsigned 應(yīng)該放在not null之前,緊挨著int之后,否則會出錯
        
        engine = 存儲引擎
        show tables status \G;查看默認(rèn)引擎
        show tables status like student \G;查看指定表
        show engines:查看所有支持的引擎
        show table status like 'student' \G;

注:數(shù)據(jù)庫有專門的設(shè)計工具            
        
修改:alter table table_name alter_specification
alter_specification
    字段:

        add: ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]
            alter table student add class varchar(100) not null first;
        drop:DROP [COLUMN] col_name|PRIMARY KEY|FOREIGN KEY fk_symbol
            alter table student drop column class;
        modifty:MODIFY [COLUMN] col_name column_definition
            只修改定義
            lter table student modify class varchar(100) not null after id;
        change:CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

    鍵:
        添加:add {primary key|unique key|unique key} index_name
        刪除:
            drop primary key
            drop froeign key fk_symbol
            drop key|index index_name //鍵在一定程度上也是索引
    索引:
        添加:add {index|key} [index_name} {col1,col2,...}
            刪除:drop primary key
                alter table student drop primary key;
                alter table student add unique key (name);
            查看:show indexes from student
            
        表選項:
            engine = engine_name //不建議,創(chuàng)建時直接指定即可
        表的引用方式:
            tbl_name
            create mydb.class //絕對路徑,庫名.表明
                

五、DDL和DML語句
第二種創(chuàng)建方式:復(fù)制表結(jié)構(gòu)
第三種創(chuàng)建方式; 復(fù)制表數(shù)據(jù)

1.索引:加速查詢,但是不利于查詢操作
    索引是特殊的數(shù)據(jù)結(jié)構(gòu):
    索引要有名稱:
        創(chuàng)建:crete [索引選項] index index_name [index_type] on tbl_name (col1,col2,...)
            索引選項:unique,fulltext,spatial
            index_type: btree/hash
            mysql中只有memory才支持hash,而memroy表很少手動創(chuàng)建
            create index named_class on student (name,class);
            
            ALTER TABLE table_name ADD INDEX index_name (column_list)
            ALTER TABLE table_name ADD UNIQUE (column_list)
            ALTER TABLE table_name ADD PRIMARY KEY (column_list)            
        
        刪除
            DROP INDEX index_name ON talbe_name
            
            ALTER TABLE table_name DROP INDEX index_name
            ALTER TABLE table_name DROP PRIMARY KEY
            //沒有修改,因為索引是及時創(chuàng)建的
        查看索引:
            SHOW INDEX FROM mytable FROM mydb;
            SHOW INDEX FROM mydb.mytable;
            
            mysql> show index from tblname;
            mysql> show keys from tblname;                
    
2.DML語句:
insert [into] tbl_name {col1,clo2,,,} {values|value} (va1,va2,va3...),(va1,va2,va3,,,),...
    注意:
        字符型:引號
        數(shù)值型:前萬不要引號
    insert into student values (1,'xiyu','ou yang feng',78,'f');
    insert into student (id,name) values (2,'huang yao shi'),(3,'zhou botong');
    select * from student;
select
    1.select * from tbl_name
    2.select col1,col2,col3,..  from tbl_name
        顯示時,字段可以顯示為別名
        select id as stuid,name from student; //投影
    3.select col1,col2,...  from tbl_name where claues
        where clause:用于指明挑選條件
                age>30
            操作符:
                >,>=,=,小于,小于等于
            組合測試:
                and
                or
                not
            操作符:
                between // age between 30 and 80
                like 'pattern' //
                    like支持的通配符
                        %:任意長度的任意字符
                        _:單個字符
                rlike //正則表達(dá)式
                    ^ 行首
                    $ 結(jié)尾
                is
                    is null//為空的
                    is not null //非空的
    4.select col1,col2,... tbl_name [where clause] order by col_name,col_name2  [asc|desc]
        desc 將序排序
                    
        select id,name,age from student where age>30;
        elect id,name,age from student where name='OU yANG FENG' and age>30;
        select name from students where name like '%ang%'
        select name from student where name rlike '^z.*bo*';
        select id,name from student order by id desc;

delete
    delete from tbl_name [where where_conditon] [order by ...] [limit row_count]
    刪除是按行刪除的,不能只刪除一行的一個字段
    delete from student where age is null //假如不給where,會刪除整個表
    生成隨機數(shù)據(jù):    
        for i in {1..100} ; do AGE=$RANDOM%100;mysql -e "insert into testdb.student (id,name,age) values ($i,'stu$i',$AGE);"; done
        stu$i,%ARG //使用“” 也可以
    
    delete from student  order by age desc limit 20;    
    select * from student order by age desc;

update:
    update  //id最大的人的年齡減去10歲
    update student set age=age-5 order by id desc limit 10;
    select id,name,age from student order by id desc;
    update student set age=age-15 where name not like 'stu%';

六、用戶賬號及權(quán)限管理        
用戶賬號: 'username'@'host'
    host:此用戶訪問當(dāng)前服務(wù)器時,允許其通過哪些主機遠(yuǎn)程創(chuàng)建鏈接
        表示方式:IP,網(wǎng)絡(luò),主機名,通配符{%和_}
    禁止檢查主機名:my.cnf
        [mysqld]
            skip_name_resolve = ON
            
create user 'wolf'@'host' identified by 'password' //只有查看test庫權(quán)限
刪除用戶:
    drop user test;
查看用戶信息:
    select host,user,password from user;
授權(quán)級別:
    權(quán)限級別:管理權(quán)限、數(shù)據(jù)庫、表、字段、存儲過程;
    grant priv_type,... on [object_type]  db_name.tbl_name  to 'user'@'host'  [identified by 'password']
        db_name.tb_name
        db_name.* //庫內(nèi)的所有表
        *.* 所有的庫和表
        db_name.routine_name: 指定庫上的存儲過程或存儲函數(shù)
    [object_type]
        TABLE
        FUNCTION
        PROCEDURE
    grant select on testdb.* to 'testdb'@'192.168.4.%';     //假如沒有改用戶的話,會自動創(chuàng)建該用戶
    grant select on testdb.student to 'wolf'@'192.168.4.%';
    flush privileges;
    show grants for 'wolf'@'192.168.4.%';
    show grants for current_user; //查看當(dāng)前用戶授權(quán)
收回權(quán)限:
    revoke select on testdb.student from 'wolf'@'192.168.4.%';
    revoke ...  from
    grant  ...  on  ....  to ..A@B
        
注意:MariaDB服務(wù)進(jìn)程啟動時,會讀取mysql庫的所有授權(quán)表至內(nèi)存中;
    1.grant或revoke命令等執(zhí)行的權(quán)限操作,會保存于表中,MariaDB此時一般會自動重新    讀取授權(quán)表,權(quán)限修改會立即生效
    2.其他方式實現(xiàn)的權(quán)限,要想生效,必須flush privileges
        
注意;安全選項
    /usr/local/mysql/bin/mysql_secure_installation 設(shè)置初始化密碼
后期添加密碼:
    grant all privileges on MT.* to 'mt'@'192.168.4.%';  //假如忘了加 identified by "password"
    select user,host,password from user; //是沒有密碼的
    update user set password=password('mingtian') where user='mt'; //只能使用這種
    insert 是插入一個新行,在這里不能使用

七、phpMyAdmin //mysql圖形化管理工具
解壓到網(wǎng)頁目錄
    ln -sv phpMyAdmin-3.4.10.1-all-languages MyAdmin
    cp config.sample.inc.php config.php
    openssl rand -base64 15
        FSJJJFVLvfiQeoepws88

    vim config.php //加密cookie
        $cfg['blowfish_secret'] = 'FSJJJFVLvfiQeoepws88'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
    systemctl restart httpd    

    yum install php-mbstring -y //多種語言支持
    
    問題:缺少mcrypt擴展
        yum  install php-mcrypt
    問題:必須啟用cookie才能使用
        1.vim config.inc.php
            $cfg['blowfish_secret'] = 'cookie';
            $cfg['Servers'][$i]['connect_type'] = 'socket'; //如果 MySQL 使用 socket 方式連接
        2.vim libraries/config.default.php
            $cfg['blowfish_secret'] = 'cookie'; 文件中默認(rèn)為空,這里需要填寫和 config.inc.php 一樣的值。
            $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock'; 這個需要根據(jù)自己 mysql 配置內(nèi)容填寫,如果不知道置空
圖形管理工具:
    phpMyAdmin
    Navicat
    Mysql-Front
    ToadForMySQL
    SQLyog
        
存儲引擎的概念:   myisam,innodb,
    Myisam:不支持事務(wù)
    innodb:支持事務(wù),不支持fulltext索引

后面的文章會詳細(xì)解釋


分享題目:MySQL入門(一)
標(biāo)題鏈接:http://fisionsoft.com.cn/article/pjecpe.html