mysql學習小結

來源:互聯網
上載者:User

標籤:mysql   基礎知識   

一,基於資料庫的PHP項目    目前的動態網站都是基於資料庫的,將網站內容使用資料庫管理系統去系統管理使用者,欄目,圖片,文章,評論都儲存在資料庫中    比如        XSCMS庫            users            clumn            pic            articles            commention二,為什麼使用MySQL?    Oracle,DB2,SQL Server,……    MySQL-----開源        表結構    中小型項目三,MySQL架構    C/S結構    3306  MySQL的預設連接埠    MySQL DBMS        用戶端        伺服器端----資料庫----資料表----(記錄,欄位)四,PHP程式員主要學習哪些操作    ·為你的項目設計表    ·如何使用SQL語句增刪改查    程式中用不到的都可以使用工具完成五,MySQL的安裝和啟動    和PHP整合    Linux下的啟動        service mysqld stop        service mysqld start        service mysqld restart六,MySQL的目錄結構    設定檔----my.ini    檔案夾bin----命令    檔案夾data-----儲存資料庫        在data檔案夾下建立一個檔案夾就是建立一個資料庫七,瞭解資料庫的MySQL語句操作    DDL        定義和管理資料對象(庫,表,視圖,索引)        CREATE DROP ALTER        建立庫            create database if not exists test        刪除庫             drop database if exists test        建立表            create table databaseName.tableName        刪除表            drop table databaseName.tableName    DML        對資料操縱,和表中的資料記錄有關        INSERT UPDATE DELETE        insert into users(colName,...) values(colValue,...);        插入表資料            insert into tableName([欄位列表]) values(值列表1),(值列表2),(值列表3);                 特點:                      如果在表名後沒有給出欄位列表,則值列表要列出所有欄位的值,必須按預設的順序                      所有需要寫欄位名的地方,都不要加單引號或雙引號,但所有的值都要使用單引號或雙引號(建議,MySQL可以自動轉換)                      再插入資料時,最好給出欄位列表,則值要和欄位列表對象即可,可以不按表中的欄位的順序        修改表資料               update 表名 set 欄位=‘值’[,欄位2=‘值‘,...][條件] 條件是確定要更改的記錄,可以通過條件指定一條,也可以指定多條            update cats set id=id-1 where id >= 8;            delete from 表名 [條件]            注意:沒有條件,會更改/刪除整個表                           delete from tableName;//刪除表                  truncate tableName;//刪除表,效率更高                  只要你想更新,刪除,尋找,只要寫對條件就能準確找到要管理的一條或多條語句    DQL        SELECT        查詢            select [all|distinct]{*|table.*|[table.]field1[as alias1][ 其他欄位]}             from    表名            [where ]                [group by]            [order by]            [having]            [limit count]            使用select語句,目的就是可以按照你的想法將資料查出來,將結果返回給你             1,欄位要列出要查詢的欄位            2,可以為每一個欄位用as起一個別名,(關鍵字衝突,多表查詢時)            3,DISTINCT針對整個查詢列表取消相同的記錄            4,在SQL語句中,使用運算式的列(算數運算子號,邏輯運算子號,條件)            5,where 可以在select,update,delete中                邏輯運算子(多個條件組合)                    &&  ||  !                     AND OR not                比較子                    =(<=>)   和程式中不一樣 ,<=> 可以比較空值,而=不可以比較空值,如name=null,這個將查不出來,而name<=>null 則可以查出來                     !=(<>)                     <                     >                     >=                     <=                    is NULL                    is not null                    SQL中所用: between…and 連續的取值區間                                 not between and                            like    模糊查詢 _和%兩個萬用字元   _ 任意一個字元  % 0個或多個字元                            not like                            in  單個檢索    select * from products where id in(5,10,20,25,30);                            regexp   rlike   模糊查詢  Regex            6,多表查詢(串連查詢)            7,巢狀查詢                select … where(select ……)            8,order by 欄位[desc|sac] 排序                    desc 倒序                    多個欄位查詢必排序            9,limit num                限制查詢數量                limit num1,num2//從num1取,取num2個            10,group by ziduanNanme                  count()   sum()    avg()  max()  min()            11,Having 給出分組的條件                每一個組的條件,having avg(price) > 50;                having 要在group by 後使用     DCL        資料控制,系統管理權限和資料更改        GRANT,REVOKE,COMMIT,ROLLBACK    use tes1;//轉到一個資料庫中    desc tableName; //查看錶結構    MySQL示弱類型,建立時使用字串操縱,進入資料庫時會自動轉換成相對應的類型    \s 看資料庫狀態    show databases 看所有庫    show tables 看所有表    show variables 設定檔的變數    desc tableName 看錶結構    協助的使用        ?contents       1,執行SQL語句,串連資料庫伺服器        mysql -h localhost -u root -ppassword //-p是不可少的,不是密碼的部分        show variables;查詢所有的變數        show variables like ‘part‘;        show databases;//查看庫        create database test; 建立庫        drop database test;//刪除庫    2 建立資料庫    3 選擇預設資料庫           use databaseName建立資料表    1,什麼是資料表        記錄+欄位    2,建立資料表的SQL        DDL語句            CAREATE TABLE [IF NOT EXISTS]tableName(                欄位名1 列類型[屬性][索引]                欄位名2 列類型[屬性][索引]                ...                欄位名n 列類型[屬性][索引]            )[表類型][表字元集];            中括弧中的都是可選類型    3,資料值和類型        ·數值型            整型                  1位元組 TINYINT                2位元組 SMALLINT                3位元組 MEDIUMINT                4位元組 INT                8位元組 BIGINT            浮點型                4位元組 float(M,D)   M 總共佔據的位元 D 保留的小數位位元                8位元組 double(M,D)                M+2位元組   定點數decimal(M,D)         ·字串            聲音,映像,圖片等位元據            char(M)     255字元       固定長度            vchar(M)    255字元       可變長度            char固定長度,處理速度塊,缺點會浪費空間,char在串連時會去掉末尾的空格            vchar  值變化大            text    文本資料(文章)   2e16-1位元組                MEDIUMTEXT      2E24-1                LONGTEXT            注意:varchar的文本不支援換行,而text類型支援換行            blob    儲存二進位,照片,壓縮資料                MEDIUMBLOB                LONGBLOB            enum    枚舉類型   1-2位元組 ----65535個成員                   一次只能用enum中的一個值                例:儲存enum(‘男’,‘女’)            set 集合類型   1,2,3,4,8位元組-----64個成員                    一次可以使用集合中的多個值        ·日期型            DATE                YYYY-MM-DD            TIME                hh:mm:ss            DATETIME                YYYY-MM-DD hh:mm:ss            TIMESTAMP                YYYYMMDDhhmmss            YEAR                YYYY            時間的儲存形式如上所示            儲存的時間一定要注意格式            建立表時最好不要使用這些中的時間格式(PHP時間戳記 1970-1-1 0:0:0)            用整數儲存時間 (PHP中的time())        ·NULLphpMyAdmin    4,資料欄位屬性        ·unsigned   設定無符號的類型,可以使空間增加一倍                只能用在數值型欄位        ·zerofill   只能用在數值型欄位,在數值資料前加入前置,該欄位會自動加上無符號        ·AUTO_INCREMENT                只能是整數,資料每增加一條就值自動增加1                 欄位值不允許重複                此欄位留空,null,0,都會使此欄位自動增加1                如果自己手動增長,要>=最大值        ·NULL 和 NOT NULL            預設是空,時間戳記除外            將來將這個錶轉為PHP程式的資料時,整數列有NULL  能轉為0嗎?字串中有NULL 能轉成0嗎--------------------不一定            建議:在建立表時每一個欄位都不要插入null        ·default            預設值         例:建立一個使用者表            create table users(                id int unsigned not nullauto_increment primary key,                name varchar(30) not null default ‘‘,                height double(10,2) not null default 0.00,                age int not null default 0,                sex char(4) not null default ‘男‘            );          5,建立索引        通常是為了查詢,確保資料的唯一性        1,主鍵索引            主要是確定一條特定記錄的位置,            最好為每一張表定義一個主鍵            一個表只能只能指定一個主鍵            主鍵的值不可為空                可以有多個候選索引            primary key 指定主鍵        2,唯一索引            都可以防止建立重複的值            每一個表都可以有多個唯一索引            unique            作用,為了防止資料的重複1111111111111111111        3,常規索引            最重要的技術            提升資料庫的效能            索引最佳化要優先考慮常規索引            1111111111111111111            22222222222            3333333333333            ............            999999999999999999            共幾百萬條資料            缺點:佔用磁碟空間            可以提高尋找速度,但會減慢資料列上的插入,刪除,修改            不要試圖為每一列建立索引            技巧: Alter table tableName add columnName 類型 屬性                分表,建立索引的為一個表,不建立索引的為一個表                需要條件搜尋的,需要條件分組的,需要條件排序的,這樣的列可以使用常規索引,但不要太多,要適可而止            可以單獨使用,也可以在建立表時建立,索引是一個獨立的對象            create index indexname on tableName(欄位);            drop index  indexname on tableName            index key 是同義字            單列多列都可以        4,全文索引            fulltext類型索引,MyISAM表類型上使用,只有在varchar char text文本字串上使用,也可以在多個資料列上使用            把某個資料表中的某個資料列中出現的所有單詞產生一個清單    6,表類型及儲存位置        MySQL與大多數資料庫不同,MySQL有一個儲存引擎的概念          MySQL可以針對不同的資料引擎需求可以選擇最優的儲存引擎        引擎 資料表類型(查詢 show engines)        我們只學12個中的MyISAM和InnoDB兩個        create table () type InnoDB;        create table () engine InnoDB;            MyISAM是預設的        根據不同的需求選擇不同的儲存引擎        注意:在一個MySQL庫中可以(建立表時)指定不同的表類型        MyISAM                  成熟穩定,易於管理,            OPTIMIZE TABLE 表名            強調快速讀取操作            有一些功能不支援        InnoDB             恢複復原            支援外鍵            空間佔用量比MyISAM大得多            支援MyISAM不支援的功能            不支援全文索引        功能        MyISAM        InnoDB        交易處理          不支援            支援        資料行鎖定     不支援        支援        外鍵約束      不支援        支援        資料表空間       相對小       相對大,最大2倍        全文索引      支援             不支援        7,預設字元集        對於漢字:            GBK 2個位元組            UTF-8 3個位元組        MySQL伺服器,資料庫,資料表,欄位都可以指定字元集,相對於其他的資料庫顯得靈活        show character set//查看資料庫支援的字元集        資料庫中的UTF-8是沒有中間的-的,即資料庫的UTF-8是utf8        MySQL的字元集包括            字元集,是用來定義MySQL儲存的方式            校對規則:對規則定義了比較字串的方式            1個字元集可以對應多個校對規則    8,修改表        沒有改不了的地方        Alter table tableName add columnName 類型 屬性//添加欄位到表末尾        Alter table tableName add columnName 類型 屬性 after 已存在的列名//加大已存在列之後        Alter table tableName add columnName 類型 屬性 first//加到第一列        alter table tableName modify sex char(3);//修改列的屬性  modify 修改類型        alter table tableName change oldname newname varchar(30);//可以改變欄位名,modify不能更改欄位名        alter table tableName rename as newtableName;//更改表名        alter table tableName drop columnName        drop table  函數    字串函數        1 concat(s1,...,sn);            串連        2 insert(des,start,len,insert);            將des的start位置開始,len個字串長度替換為insert        3 lower(str) upper(str)            將字串轉換為小寫或大寫        4 Left(str,x) right(str,x)            返回字串的左邊或右邊的x個字元,若x為空白,則什麼也不返回

mysql學習小結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.