<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                總結一下MySQL常用命令。適用于Windows。 \[括號內是可選內容\] 本篇博客按照菜鳥教程MySQL篇進行整理,主要是按照基礎操作進行劃分。要想完整學習SQL語句,建議看SQL篇:*[SQL 教程 | 菜鳥教程 (runoob.com)](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.runoob.com%2Fsql%2Fsql-tutorial.html)* (菜鳥教程MySQL篇害人不淺 但是SQL篇還行 不建議直接看這上面的MySQL) 如果你致力于JavaWeb的開發并需要用到Java操作數據庫,能看懂SQL語句就行了,JPA都不需要你親自手寫SQL語句(來自某花了一周時間才會寫SQL的作者)。 # 零、數據庫管理 **1.連接數據庫**:(在cmd窗口下)`mysql -u <用戶名> -p <密碼>` **2.創建用戶**:`CREATE USER '<用戶名>'@'<主機名>' IDENTIFIED BY '<密碼>'` **3.用戶授權**:`GRANT <權限> ON <數據庫名>.<表名> TO ‘<用戶名>’@‘<主機名>’` 注:要授予所有權限,可以用ALL # 一、操作數據庫 **1.查看所有數據庫**:`SHOW DATABASES` **查看創建數據庫時詳細信息**:`SHOW CREATE DATABASE <數據庫名>` **2.創建數據庫**:`CREATE DATABASE <數據庫名>` **3.刪除數據庫**:`DROP DATABASE <數據庫名>` **4.選擇數據庫**:`USE <數據庫名>` # 二、操作表 ## (一)表的基本操作 **1.查看某個數據庫下的所有表**:`SHOW TABLES` **查看表的詳細細節/結構**:`DESC <表名>` **2.創建數據表**:`CREATE TABLE <表名> (<列名1> <數據類型1> [AUTO_INCREMENT] [NOT NULL] [DEFAULT <默認值>] [PRIMARY KEY], <列名2> <數據類型2>, ...)` **注**:CREATE TABLE時后面加的參數(AUTO\_INCREMENT, NOT NULL, DEFAULT等等均可以在MODIFY/CHANGE添加),這些參數稱為**約束**。 (1) AUTO\_INCREMENT表示自增。 (2)NOT NULL表示添加數據時,該字段不能為空。 (3)PRIMARY KEY用于定義主鍵,用于索引。如果有聯合主鍵,也可以寫成該形式: `CREATE TABLE <表名> (<列名1> <數據類型1>, <列名2> <數據類型2>, ..., PRIMARY KEY(列名1, 列名2, ...))`。 主鍵不能為空,不能重復。主鍵索引是唯一索引的特殊類型。 設置主鍵后,用`INSERT INTO`語句插入重復數據將報錯。用`INSERT IGNORE INTO`插入重復數據將自動跳過重復數據,不報錯,但會提示Warning。 (4)DEFAULT用于設定默認值。 **3.刪除數據表**:`DROP TABLE <表名>` **4.復制表的結構到新表**:`CREATE TABLE <新表> LIKE <舊表>` **復制表的數據與結構**:`CREATE TABLE <新表> SELECT * FROM <舊表>` **復制表的所有結構,包括索引**:可以用`SHOW CREATE TABLE <表名>`查看創建數據表語句,然后創建一相同結構、索引的表,最后用`INSERT INTO ... SELECT * FROM ...`語句復制表內容。 **5.對重復數據操作**:占個坑,可見鏈接*[MySQL 處理重復數據 | 菜鳥教程 (runoob.com)](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.runoob.com%2Fmysql%2Fmysql-handling-duplicates.html)*。 ## (二)臨時表 臨時表只在當前連接可用。關閉連接,MySQL將自動刪除臨時表。 要創建臨時表,只需將TABLE替換為TEMPORARY TABLE。 刪除臨時表不需要加TEMPORARY。 # 三、操作表內數據 **1.插入數據**:`INSERT INTO <表名> (<字段1>, <字段2>, ...) VALUES (<值1>, <值2>,...)` **2.查詢數據**:`SELECT <字段1>, <字段2>,... FROM <表1> <表2> [WHERE Clause] [LIMIT N] [OFFSET M]` **注**:(1) 可用星號\*代替字段,表示查找表的所有字段數據 (2) LIMIT表示返回的記錄數,OFFSET表示查詢數據記錄的偏移量。 **3.修改/更新表內數據**:`UPDATE <表名> SET <字段1> = <數據1>, <字段2> = <數據2>,... [WHERE Clause]` **4.刪除表內某個數據**:`DELETE FROM <表名> [WHERE Clause]` **刪除整個表,然后重新構建表**:`TRUNCATE <表名>` # 四、修飾用子句 這些子句/符號可以用于查詢數據SELECT、刪除數據DELETE和修改數據UPDATE。包含的子句及其優先級關系如下圖: ![](https://img.kancloud.cn/3f/12/3f12f532b56d3671501b457949ade398_669x576.jpg) 子句執行順序,摘自菜鳥教程 這里只列寫其中幾種。 ## (一)WHERE子句 WHERE用于過濾記錄。可用于WHERE的操作符如下圖: ![](https://img.kancloud.cn/12/0c/120c36403b2c63e36080129a9a017ae1_575x407.jpg) WHERE中操作符,摘自菜鳥教程 同時,可以用AND和OR指定一個或多個條件。如:`WHERE ID = 10000 AND NAME = ‘TOM’`。 查詢多個表的字段,要在字段前加上表名,即表名.字段。 **注意**:想要判斷數據是否為空,用`IS NULL`或`IS NOT NULL`。 ## (二)LIKE子句 LIKE子句使得WHERE可以設定模糊條件。 語法格式:`WHERE <字段1> LIKE <條件1> AND <字段2> = <條件2>`。 LIKE常用符號: **1.%**,表示任意個字符。 **2.\_**,表示單個字符。 樣例如下圖: ![](https://img.kancloud.cn/99/01/9901d504ace73edca38e191cbf0b4ac1_363x370.jpg) LIKE子句樣例,摘自菜鳥教程筆記 常用的就是&和\_,也有其他符號(MySQL支持正則表達式的匹配),這里占個坑,以后弄明白了來填。 ## (三)UNION組合 UNION用于將多個SELECT語句的結果組合到一個結果中,其中的重復數據將不顯示。 語法格式:`SELECT <字段1> <字段2> FROM <表1> [WHERE Clause] UNION [ALL] SELECT <字段1> <字段2> FROM <表2> [WHERE Clause]`,其中`[ALL]`表示返回所有結果,包括重復數據。 UNION前后查詢的字段不一定要相同,但兩側列數一致。 ## (四)ORDER BY排序 ORDER BY用于設定字段的查詢結果按某種方式排序輸出。 語法格式:`SELECT <字段1> <字段2> FROM <表1> <表2> ORDER BY <字段a> [ASC/DESC], <字段b> [ASC/DESC]`,其中ASC(升序)為默認值,DESC(降序)可選。 ## (五)GROUP BY分組 1.GROUP BY語句可根據一個或多個列對查詢結果分組。在被分組的列上用函數修飾。 語法格式:`SELECT <字段1>, fucktion(<字段2>) [AS <字符>] FROM <表名> GROUP BY <字段1>`,運行后將按照字段1對function 運算后的結果進行分組并輸出。AS后的字符是分組輸出后列的別名,用于重命名。 具體使用可以見鏈接:[SQL中GROUP BY用法示例 - 簡書 (jianshu.com)](https://www.jianshu.com/p/8b135d373df1) 2.在GROUP BY后可加HAVING,對GROUP BY分組后的對象進行篩選過濾。 ## (六) JOIN連接多個表 JOIN分為四類:INNER JOIN,LEFT JOIN,RIGHT JOIN,CROSS JOIN。 首先談談內連接與外連接。 **內連接**:連接結果僅包含符合連接條件(WHERE/INNER JOIN中ON后面的內容)的行。參與連接的兩表都應符合連接條件。查詢結果列出被連接表符合連接條件要求列出的所有列。 **外連接**:外連接就是在內連接的基礎上,加上基準表沒有顯示的對應項進行顯示,即使沒顯示的對應項不符合連接條件。 接下來說一說這四個JOIN。 0.MySQL沒有FULL JOIN,取而代之的是UNION。 1.INNER JOIN:獲取兩表中字段匹配關系的記錄。語法格式:`SELECT <字段a1> <字段a2> <字段b1> <字段b2> FROM <表a> INNER JOIN <表b> ON <表a>.<字段a1> = <表b>.字段<b1>` INNER JOIN也可以用WHERE實現,即`SELECT <字段a1> <字段a2> <字段b1> <字段b2> FROM <表a>, <表b> WHERE <表a>.<字段a1> = <表b>.字段<b1>`但使用WHERE會在某些時候會損失查詢性能。 2.LEFT JOIN:從左表讀取全部數據,即使右表沒有對應數據。即以左表為基準表。 3.RIGHT JOIN:從右表讀取全部數據,即使左表沒有對應數據。即以右表為基準表。 4.CROSS JOIN:返回左表的所有行,每行與右表的所有行進行全組合。與不加WHERE修飾的SELECT語句等價。 (好混亂555) # 五、事務 事務用于執行成批的SQL語句,如INSERT,UPDATE,DELETE等。在MySQL中,只有使用Innodb引擎的數據庫才支持事務。 **1.開啟事務**:`BEGIN` **2.確認事務**:`COMMIT` **3.事務回滾**:`ROLLBACK`,結束事務并撤銷未COMMIT的所有語句。 **回滾至某保存點**:`ROLLBACK TO <保存點名>` **4.在事務中建立保存點**:`SAVEPOINT [<保存點名>]` **刪除保存點**:`RELEASE SAVEPOINT <保存點名>`(一定要加保存點!) # 六、ALTER命令 **1.刪除字段**:`ALTER TABLE <表名> DROP <字段>` **2.添加字段**:`ALTER TABLE <表名> ADD <字段> <數據類型> [FIRST/AFTER <字段>]` **3.僅修改字段數據類型**:`ALTER TABLE <表名> MODIFY <字段名> <新數據類型> []` **修改字段名和數據類型**:`ALTER TABLE <表名> CHANGE <舊字段名> <新字段名> <新數據類型>` **注**:此處也可以添加CREATE TABLE時用的約束。 **4.修改字段默認值**:`ALTER TABLE <表名> ALTER <字段> SET DEFAULT <默認值>` **刪除字段默認值**:`ALTER TABLE <表名> ALTER DROP <字段> DEFAULT` **5.修改表名**:`ALTER TABLE <舊表名> RENAME <新表名>` # 七、索引 索引是對表內某列數據建立索引文件,以便提高查詢效率。 **索引長度**:當數據類型為CHAR/VARCHAR時,可以聲明索引長度,將針對前length個字符建立索引;當數據類型為BLOB或TEXT時,必須聲明索引長度length。 **聲明索引長度的方法**:`<列名>(length)` 如:`CREATE INDEX name_index ON test(name(5))` ## (一)普通索引 **1.在某表上創建索引**:`CREATE INDEX <索引名> ON <表名>(<列名>)` **2.修改表結構時添加索引**:`ALTER TABLE <表名> ADD INDEX <索引名>(<列名>)` **3.創建表時直接指定索引**:類似建表時加在最后的PRIMARY KEY,在括號內的最后加`INDEX <索引名> (<列名>)` 例如:`INDEX index_username (username(5))`:在CREATE TABLE test中,對test表中的username列建立索引,長度為5. **4.刪除索引**:`DROP INDEX <索引名> ON <表名>` 如:`DROP INDEX index_username ON test` ## (二)唯一索引 唯一索引要求索引列的值唯一。允許有多個空值。 聲明唯一索引,只需將所有INDEX替換為UNIQUE INDEX。 # 八、函數與運算符 函數:*[MySQL 函數 | 菜鳥教程 (runoob.com)](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.runoob.com%2Fmysql%2Fmysql-functions.html)* 運算符:*[MySQL 運算符 | 菜鳥教程 (runoob.com)](https://links.jianshu.com/go?to=https%3A%2F%2Fwww.runoob.com%2Fmysql%2Fmysql-operator.html)*
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看