mysql總結思維導圖


WEB06-MYSQL
    MYSQL的數據庫的概述
        什么是數據庫:就是一個文件系統,通過SQL訪問
        常見關系型數據庫:mysql,Oracle,SQLServer...
    SQL對數據庫和表操作
        對數據庫進行CRUD的操作
        對表進行CRUD的操作
        day07-mysql回顧
            SQL的概述
                SQL:結構化的查詢語言.
                分類:
                    DDL:數據定義語言
                        create,alter,drop...
                    DML:數據操縱語言
                        update,insert,delete
                    DCL:數據控制語言
                        grant,if..
                    DQL:數據查詢語言
                        select
                特點:
                    非過程性語言: 一條語句就會有一個運行的結果
            SQL對數據庫和表操作
                對數據庫進行CRUD的操作
                    創建數據庫
                        create database 數據庫名稱 [character set 字符集 collate 字符集校對];
                    查看數據庫
                        查看數據庫服務器中所有的數據庫:
                            show databases;
                        查看某個數據庫的定義信息.
                            show create database 數據庫名;
                        查看當前正在使用的數據庫信息.
                            select database();
                    刪除數據庫
                        刪除數據庫:
                            drop database 數據庫名;
                    修改數據庫
                        修改數據庫修改的是的數據庫的字符集和校對規則.
                            alter database 數據庫名 character set 新字符集 collate 校對規則;
                    切換數據庫
                        use 數據庫名稱;
                
                對表進行CRUD的操作
                    創建表
                        語法:
                            create table 表名 (
    字段名 類型(長度) 約束,
    字段名 類型(長度) 約束,
    字段名 類型(長度) 約束
);
                        數據類型:
                            Java類型
                                MySQL
                             byte/short/int/long
                                tinyint/smallint/int/bigint
                            String
                                char/varchar
                                    區別?  char是固定長度的字符串,varchar可變長度的字符串.
                                        char(8) 和 varchar(8)
                                        如果插入一個字符串hello 插入到char 那么 插入hello   .
插入到varchar中 插入hello
                            float
                                float
                            double
                                double
                            boolean
                                bit
                            Date
                                date/time/datetime/timestamp
                                    datetime和timestamp都是既有日期又有時間的日期類型
                                    區別? datetime需要使用外部傳入的日期.如果沒傳這個值就是Null. timestamp會使用系統當前的時間作為這個值的默認值.
                            ***** MYSQL中除了字符串類型需要設置長度其他的類型都有默認長度.
                            文件
                                文本文件
                                    Text
                                二級制文件
                                    BLOB
                                ***** Oralce使用CLOB/BLOB 對應文本文件/二進制文件
                        約束:
                            單表約束:
                                主鍵約束:primary key (默認就是唯一非空的)
                                唯一約束:unique
                                非空約束:not null
                    
                    表的查看
                        查看數據庫中有哪些表:
                            show tables;
                        查看表結構:
                            desc 表名;
                    表的刪除
                        drop table 表名;
                    
                    表的修改
                        修改表添加列:
                            alter table 表名 add 列名 類型(長度) 約束;
                                alter table employee add image varchar(50);
                        修改表刪除列:
                            alter table 表名 drop 列名;
                                alter table employee drop job;
                        修改表的列的類型長度及約束:
                            alter table 表名 modify 列名 類型(長度) 約束;
                                alter table employee modify image varchar(80) not null;
                        修改表的列名:
                            alter table 表名 change 舊列名 新列名 類型(長度) 約束;
                                alter table employee change image eimage varchar(60);
                        修改表名:
                            rename table 舊表名 to 新表名;
                                rename table employee to user;
                        修改表的字符集:
                            alter table 表名character set 字符集;
                                alter table user character set gbk;
            MYSQL的數據庫的概述
                什么是數據庫:就是一個文件系統,這個文件必須通過標准的SQL訪問
                關系型的數據庫存放的都是實體之間的關系.
                常見關系型數據庫
                    MySQL        :免費的小型的數據庫,現在被Oracle收購.
                    Oracle        :Oracle公司收費的大型的數據庫.
                    SQLServer    :微軟公司收費中型的數據庫.
                    DB2            :IBM公司收費的大型的數據庫.
                    SyBase        :SyBase公司收費的數據庫.已經被淘汰.PowerDesigner數據建模的工具.
                    SQLite        :小型的嵌入式的數據庫.
                    ***** Java程序中經常使用的數據庫
                        MySQL
                        Oracle
    SQL對單表記錄操作
        day08-mysql表
操作回顧
            SQL對單表記錄操作
                插入記錄:insert
                    insert into 表名 (列名,列名,...) values (值1,值2,...);
                        ---插入指定列的值
                    insert into 表名 (列名,列名,...) values
 (值1,值2,...),
 (值1,值2,...),
 (值1,值2,...);
                        -- 批量插入
                    insert into 表名 values (值1,值2,...);
                        ---插入所有列的值
                    插入中文報錯
                        修改MYSQL的安裝路徑/my.ini文件 client 編碼為gbk
                            重新啟動mysql服務
                        注意事項:
                        * 列名的個數與值的個數對應.
                        * 列的類型與值的類型對應.位置也要對應.
                        * 列的類型如果是字符串或者日期,寫值的時候使用單引號將值引起來.
                        * 插入的值的最大長度不能超過列的最大長度.
                
                修改記錄:update
                     update 表 set 列名=值,列名=值 [ where 條件];
                        注意事項:
                            * 列名和值類型也要一致.
                            * 值不能超過列的最大長度.
                            * 值是字符串或日期,需要使用單引號.
                
                刪除記錄:delete
                    delete from 表 [ where 條件];
                        注意事項:
                            * 刪除表中的一行記錄,不能刪除某列值
                            * 如果沒有條件刪除表中的所有列.
                    刪除表中的所有記錄 truncate 表名 和 delete from 表名區別?
                        truncate table 刪除表的記錄:將整個表刪除掉,重新創建一個新的表. truncate 屬於DDL.
                        delete from 刪除表的記錄:一條一條進行刪除. delete屬於DML。
                        事務管理 只能作用在DML語句上.如果在一個事務中使用delete刪除所有記錄,可以找回 rollback.
                
                查詢記錄:select
                    基本查詢
                        select [distinct] *|列名 from 表 [where 條件];
                    別名查詢
                        使用 as 起別名, as 可以省略.
                    條件查詢
                        =  >  <  >=  <=  <>
                            between 值1 and 值2
                        like
                            可以使用占位符: _ 和 %  :下划線匹配一個字符, %:可以匹配任意多個字符
                         in
                            后跟着一組值
                                id in (1,2,3)
                        and or not
                        is not null ; is null
                        limit
                            數據分頁,是MySQL所特有的關鍵字 (orcale: rownum sqlserver : top)
                                兩種
                                    limit  值
                                        查詢前 幾(值) 條
                                    limit 從哪開始, 向后獲取幾條
                                        分頁顯示數據
                                            limit 0,10
                                                第一頁顯示10條數據
                                            limit 10,10
                                                第二頁顯示10條數據
                    排序:order by
                        asc 升序(默認)
                        desc 降序
                    聚合函數:
                        sum()
                            ifnull(english,0)
                                如果english是null的話,就把它改為0
                                    任何值+null = null
                        count(*)
                        max()
                        min()
                        avg()
                    where 和 having的區別?
                        where 用於分組前 后不能跟聚合函數
                        having 用於分組后 可以跟聚合函數
                    分組:group by
                        分組條件過濾:having
                    SQL的查詢語句的總結
                        順序:    s...f...w...g...h...o...;
            SQL對多表記錄操作
                多表設計:
                    正確分析表關系:
                        一對多:在多的一方創建一個字段,這個字段作為外鍵指向一的一方的主鍵
                            客戶和訂單:一個客戶可以產生多個訂單,一個訂單只能屬於是某一個客戶.
                            部門和員工:一個部門下可以有多個員工,一個員工只能屬於某一個部門.
                        
                        多對多: 創建一個中間表,中間表中至少需要兩個字段分別作為外鍵指向多對多雙方的各自的主鍵
                            學生和課程:一個學生可以選擇多門課程,一門課程可以被多個學生選擇.
                            訂單和商品:一個訂單中包含多個商品,一個商品也可以出現多個訂單中.
                        
                        一對一:(很少)
                            唯一外鍵對應:
                                假設一對一的雙方是一對多的關系.在多的一方創建外鍵指向一的一方的主鍵.需要在外鍵上添加一個unique約束
                            主鍵對應:
                                將一對一的雙方的主鍵建立映射
                        案例
                            實現權限
                                1. 通過五張表設計
                                    user, role(角色), resources(資源), 還有兩張中間表
                                2. 權限框架  shiro
                                    跟着開濤學shiro
                    
                    ***** 約束:用來保證數據的完整性.
                        * 多表約束:外鍵約束!!!
                
                多表查詢:
                    連接查詢
                        笛卡爾積連接(交叉連接)
                            select * from A , B ;
                        內連接 :
                            inner join -- inner 可以省略
                                顯式內連接
                                    select * from A inner join B on 條件;
                                        SELECT * FROM customer c INNER JOIN orders o ON c.cid = o.cid;
                                隱式內連接
                                    select * from A,B where 條件;
                                        SELECT * FROM customer c ,orders o WHERE c.cid = o.cid;
                                查詢的結果都是兩個表的交集
                        
                        外連接
                            outer join -- outer 可以省略
                                左外連接:
                                    left outer join  -- select * from A left outer join B on 條件;
                                        SELECT * FROM customer c LEFT OUTER JOIN orders o ON c.cid = o.cid;
                                    查詢的是左邊表的全部和兩個表的交集
                                右外連接:
                                    right outer join -- select * from A right outer join B on 條件;
                                        SELECT * FROM customer c RIGHT OUTER JOIN orders o ON c.cid = o.cid;
                                    查詢的是右邊表的全部和兩個表的交集
                                查詢的是主表中的所有以及從表中符合條件的數據,如果從表中沒有數據的話,用 null 填充
                        子連接
                            一個SQL需要依賴另一個SQL語句的查詢結果
        插入記錄:insert
        刪除記錄:delete
        修改記錄:update
        查詢記錄:select
            基本查詢
            別名查詢
            帶條件查詢
                = > < >= <= <>
                like , in
                and or not
            排序:order by
            聚合函數:sum,count,max,min,avg
            分組:group by
            分組條件過濾:having
    SQL對多表記錄操作
        多表設計:
            正確分析表關系:
                一對多:在多的一方創建外鍵指向一的一方的主鍵
                多對多:創建中級表,中級表至少兩個字段,分別指向雙方主鍵
                一對一:(很少)
        多表查詢:
            連接查詢
                交叉連接
                內連接
                    隱式內連接:where
                    顯式內連接:inner join  ... on
                外連接
                    左外連接:
                    右外連接:
            子查詢
                一個SQL需要依賴另一個SQL語句的查詢結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM