Mysql的命令總結

来源:https://www.cnblogs.com/wadmwz/archive/2019/03/22/10577179.html
-Advertisement-
Play Games

Mysql常用命令 啟動 net start mysql 關閉 net stop mysql 連接mysql mysql uroot ppssword mysql uroot P3307 ppssword 修改密碼 mysqladmin uroot p123456 password 123 增加用戶 ...


Mysql常用命令

啟動

net start mysql

關閉

net stop mysql

連接mysql

mysql -uroot -ppssword
mysql -uroot -P3307 -ppssword

修改密碼

mysqladmin -uroot - p123456 password 123

增加用戶

create user 'lisi'@'%' IDENTIFIED By '123456'

用戶授權

grant select,insert on test.user to 'lisi'@'%'

授予李四查詢和插入的許可權,生效範圍是test資料庫下的user表。需要註意的是如果不對用戶授權,用戶都可能無法登陸。

設置用戶密碼

set password for 'lisi'@'%' = password('lisi')

設置lisi的用戶密碼為lisi

刪除用戶

DROP USER 'lisi'@'%'

新建資料庫

create database db_name

顯示資料庫

show databases

刪除資料庫

drop database db_name

使用資料庫

use db_name

查詢mysql的版本好

select version()

查詢系統時間

select now()

新建表

create table table_name(
    id int primary key auto_increment,
    name varchar(50) not null
);

插入表

insert into table_name values (value1,value2),(value1,value2);

可以一次性插入多個值,需要註意的是值必須與屬性列一一對應

查詢表

select *  from table_name

刪除數據

delete from table_name where 列名=value;

修改數據

update table_name set  列名1=value1 where 列名2=value2;

增加欄位

alter table table_name add 屬性列 類型 約束

刪除欄位

alter table table_name drop column_name

新建主鍵索引

alter table table_name add primary key(id)

新建普通索引

alter table table_name add index 索引的名字 (屬性列)

索引的名字一般是  表名_屬性名

新建唯一索引

alter table table_name add unique 索引的名字 (屬性列)

刪除索引

alter table table_name drop index 索引名

導出資料庫

mysqldump -uroot -ppassword 資料庫的名字 > 導出路徑\表名.sql

導出表

mysqldump -uroot -ppassword 資料庫的名字 表名 > 導出路徑\表名.sql

資料庫還原

mysql -uroot -ppassword 庫名 < sql所在的路徑

查看引擎

show engines;
show variables like '%storage_engine%';

必知必會

1. show相關
    1. show databases : 返回可用的資料庫列表
    2. show tables : 返回當前選擇的數據內可用表的列表
    3. show columns from tab_name : 返回表的所有欄位
    4. describe tab_name : 同上
    5. show status : 顯示廣泛的伺服器狀態信息
    6. show create database/table : 顯示創建特定資料庫或表的MYSQL語句
    7. show errors/warnings : 顯示伺服器錯誤或警告信息
    8. help show : 顯示允許的show語句
2. 查詢相關
    1. SELECT DISTINCT col_name FROM tab_name : 查詢不同的值,也就是去重
    2. SELECT col_name FROM tab_name LIMIT start_index, rows : 限制查詢結果(一般用於分頁查詢),後面的參數代表開始索引和查詢的行數
    3. SELECT col_names FROM tab_name ORDER BY col_names : 預設是升序排序,可以使用DESC來改變排序規則,也可以指定多個列來進行排序(可以使用非查詢列來進行排序)
    4. SELECT col_names FROM tab_name WHERE 條件 : 過濾查詢
        1. WHERE子句的操作符
            1. = : 等於
            2. <> : 不等於
            3. != : 不等於
            4. < : 小於
            5. <= : 小於等於
            6. > : 大於
            7. >= : 大於等於
            8. BETWEEN 1 AND 2 : 在指定的兩個值之間
    5. NULL的判斷 : 使用 IS NULL進行判斷(註意NULL與0,空字元串,僅僅包含空格是不相同的)
    6. 多個條件同時匹配中間用AND連接,匹配任一條件中間用OR連接,二者並存的時候需要考慮次序問題,一定要加上括弧,避免產生歧義
    7. SELECT col_names FROM tab_name WHERE col_name IN (1,2) : 表示或1或2都可以,也就是OR的簡單寫法  
    8. NOT的使用,NOT IN找出與條件列表不匹配的行
    9. LIKE,%,_的使用,LIKE表示模糊查詢,%表示匹配任意字元出現任意次數(包括0個字元),_匹配任意的單個字元
        1. 不要過度使用通配符,通配符會消耗很大的記憶體,花費時間更長.

3. 正則相關
    1. 正則與like的區別
        1. LIKE匹配整個列,如果被匹配的文本在列值中出現,LIKE將不會找到它,相應的行也不會返回
        2. REGEXP在列值內匹配,如果被匹配的文本在列值中出現,REGEXP將會找到它,相應的行被返回
        3. 例子:
            1. SELECT prod_name FROM products WHERE prod_name LIKE '1000';
            2. SELECT prod_name FROM products WHERE prod_name REGEXP '1000'
            3. 上面兩個sql語句查詢結果是不相同,如果資料庫中在prod_name為1000的行
    2. 點的使用,Mysql中的.是一個特殊字元,表示匹配任意一個字元.
        1. SELECT prod_name FROM products WHERE prod_name REGEXP '.000';
        2. SELECT prod_name FROM products WHERE prod_name LIKE '%000%'; 
        3. 上面兩個sql的查詢結果是相同的.
    3. 正則表達式OR的匹配的多種寫法
        1. SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000';  /*匹配其中之一*/
        2. ELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton';  /*匹配幾個字元之一*/
        3. SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] ton';  /*匹配範圍,匹配1到5之間的任意數字 + ton*/
    4. 匹配特殊字元,也就是匹配.等等
        1. 使用轉義字元,一般正則表達式的轉義字元是 \,但是在Mysql中要求兩個,也就是\\,一個是Mysql解釋,一個是正則表達式解釋
            1. SELECT prod_name FROM products WHERE prod_name REGEXP '\\.';/*匹配特殊字元需要使用轉義字元,比如說:\\.匹配.     \\-匹配-    \\\匹配\  */ 
    5. 字元類(使用過程中註意的是要使用[]進行包裹,也就是使用兩個中括弧才可以正確匹配,即[[:digit:]]):
    <table>
        <tr>
            <th>類</th>
            <th>說明</th>
        </tr>
        <tr>
            <td>[:alnum:]</td>
            <td>任意子母和數字(同[a-zA-Z0-9])</td>
        </tr>
        <tr>
            <td>[:alpha:]</td>
            <td>任意字元(同[a-zA-Z])</td>
        </tr>
        <tr>
            <td>[:blank:]</td>
            <td>空格和製表符(同[\\t])</td>
        </tr><tr>
            <td>[:cntrl:]</td>
            <td>ASCII控制字元(ASCII0到31和127)</td>
        </tr><tr>
            <td>[:digit:]</td>
            <td>任意數字(同[0-9])</td>
        </tr><tr>
            <td>[:graph:]</td>
            <td>與[:print:]相同,但不包括空格</td>
        </tr><tr>
            <td>[:lower:]</td>
            <td>任意小寫子母(同[a-z])</td>
        </tr><tr>
            <td>[:print:]</td>
            <td>任意可列印字元</td>
        </tr><tr>
            <td>[:punct:]</td>
            <td>既不在[:alnum:]又不在[:cntrl:]中的任意字元</td>
        </tr><tr>
            <td>[:space:]</td>
            <td>包括空格在內的任意空白字元(同[\\f\\n\\r\\t\\v])</td>
        </tr><tr>
            <td>[:upper:]</td>
            <td>任意大寫子母(同[A-Z])</td>
        </tr>
        <tr>
            <td>[:xdigit:]</td>
            <td>任意十六進位數字(同[a-fA-F0-9])</td>
        </tr>
    </table>    
    5. 重覆元字元
     <table>
        <tr>
            <th>元字元</th>
            <th>說明</th>
        </tr>
        <tr>
            <td>*</td>
            <td>0個或多個匹配</td>
        </tr>
        <tr>
            <td>+</td>
            <td>一個或多個匹配(等於{1,})</td>
        </tr>
        <tr>
            <td>?</td>
            <td>0個或一個匹配(等於{0,1})</td>
        </tr><tr>
            <td>{n}</td>
            <td>指定數目的匹配</td>
        </tr><tr>
            <td>{n,}</td>
            <td>不少於指定數目的匹配</td>
        </tr><tr>
            <td>{n,m}</td>
            <td>匹配數目的範圍(m不找過255)</td>
        </tr>
    </table>    
    6. 定位符
    <table>
        <tr>
            <th>元字元</th>
            <th>說明</th>
        </tr>
        <tr>
            <td>^</td>
            <td>文本的開始</td>
        </tr>
        <tr>
            <td>$</td>
            <td>文本的結束</td>
        </tr>
        <tr>
            <td>[[:<:]]</td>
            <td>詞的開始</td>
        </tr><tr>
            <td>[[:>:]]</td>
            <td>詞的結尾</td>
        </tr>
    </table>    
    7. 上面三種的舉例:
        1. SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{2}';/*數字連續出現兩次*/
        2. SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]';/*以0-9 .開始*/
        3. SELECT prod_name FROM products WHERE prod_name REGEXP '[0-9\\.]$'; /*以0-9 .結束*/
        4. SELECT prod_name FROM products WHERE prod_name REGEXP '[[:<:]]Jet';/*以Jet開始*/
        5. SELECT prod_name FROM products WHERE prod_name REGEXP '0[[:>:]]';/*以0結尾*/

4. 計算欄位相關:
    1. 函數的使用
        1. Concat()函數來拼接兩個或多個列(其他的DBMS使用+或者||來實現拼接)
            1. SELECT CONCAT(vend_name, ' (', vend_country ,') ') FROM vendors; /*各個串之間使用逗號隔開*/
        2. Trim()函數:
            1. RTrim() : 去掉串右邊空格
            2. LTrim() : 去掉串左邊空格
            3. Trim()  : 去電串兩邊空格
    2. 使用別名
        1. AS的使用,別名用在計算欄位或者不規則欄位等的重命名
    3. 算數計算:
        1. mysql的算數運算符有加減乘除(+-*/)

5. 數據處理函數
    1. 文本處理函數
        1. Trim() : 去掉兩邊空格
        2. Upper() : 將文本轉化為大寫
        3. Left() : 返回串左邊的字元
        4. Length() : 返回串的長度
        5. Locate() : 找出串的一個子串
        6. Lower() : 將串轉化為小寫
        7. LTrim() : 去掉串左邊空格
        8. Right() : 返回串右邊字元
        9. RTrim() : 去掉串右邊空格
        10. Soundex() : 返回串的Soundex值,描述其語音表示的字母數字模式的演算法
            1. 簡單的來說就是匹配發音相似的內容
        11. SubString() : 返回子串的字元
        12. Upper() : 將串轉化為大寫
    2. 常用日期和時間處理函數(Mysql中的日期格式為yyyy-mm-dd)
        1. AddDate() : 增加一個日期(天,周等)
        2. AddTime() : 增加一個時間(時,分等)
        3. CurDate() : 返回當前日期
        4. CurTime() : 返回當前時間
        5. Date() : 返回日期時間的日期部分(僅僅想要日期比較,就用Date()函數)
        6. DateDiff() : 計算兩個日期之差
        7. Date_Add() : 高度靈活的日期運算函數
        8. Date_Format() : 返回一個格式化的日期和時間串
        9. Day() : 返回一個日期的天數部分
        10. DayOfWeek() : 對於一個日期,返回對應的星期幾
        11. Hour() : 返回一個時間的小時部分
        12. Minute() : 返回一個時間的分鐘部分
        13. Month() : 返回一個日期的月份部分
        14. Now() : 放回當前日期和時間
        15. Second() : 返回一個時間的秒部分
        16. Time() : 返回一個日期時間的時間部分
        17. Year() : 返回一個日期的年份部分
    3. 數值處理函數
        1. Abs() : 返回一個數的絕對值
        2. Cos() : 返回一個角度的餘弦
        3. Exp() : 返回一個數的指數值
        4. Mod() : 返回除操作的餘數
        5. Pi() : 返回圓周率
        6. Rand() : 返回一個隨機數
        7. Sin() : 返回一個角度的正弦
        8. Sqrt() : 返回一個數的平方根
        9. Tan() : 返回一個角度的正切
    4. 日期例子:
        1. 日期的等值比較 : SELECT cust_id, order_num FROM orders WHERE DATE(order_date) = '2005-09-01';
        2. 日期的區間比較 : SELECT cust_id, order_num FROM orders WHERE DATE(order_date) BETWEEN '2005-09-01' AND '2005-09-30';
        3. 日期的區間比較優化 : SELECT cust_id, order_num FROM orders WHERE YEAR(order_date) = 2005 AND MONTH(order_date) = 9;

6. 彙總數據:
    1. 聚集函數 
        1. AVG() : 返回某列的平均值(忽略值為NULL的行)
        2. COUNT() : 返回某列的行數
        3. MAX() : 返回某列的最大值(忽略值為NULL的行)
        4. MIN() : 返回某列的最小值(忽略值為NULL的行)
        5. SUM() : 返回某列值之和(忽略值為NULL的行)
    2. 例子 : 
        1. 返回商品的平均價格,排除相同價格:SELECT AVG(DISTINCT proD_price) AS avg_price FROM products WHERE vend_id = 1003;
        2. 返回商品的總數,商品的最大值,商品的最小值,商品的平均值:SELECT COUNT(*),MIN(prod_price) AS min_price,MAX(prod_price) AS max_price,AVG(prod_price) AS avg_price FROM products;

7. 分組數據
    1. group by 和 having
        1. group by子句不能是聚集函數和別名
        2. having是用來過濾分組的
    2. 查詢子句的順序
        1. SELECT * FROM TAB_NAME WHERE GROUP BY .. HAVING .. ORDER BY.. LIMIT

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [20190322]測試相同語句遇到導致cursor pin S的疑問.txt--//昨天測試遇到的情況,鏈接:http://blog.itpub.net/267265/viewspace-2638857/--//我一直認為打散sql語句,避開cursor: pin S等待事件,能夠提高執行效率.而 ...
  • 一.select高級用法 1.傳統連接(只能內連接,取交集,效率最慢) 1.根據兩張表查詢張三成績 2.世界上小於100人的人口城市是哪個國家的 2.NATURAL JOIN(自連接的表要有共同的列名字) 1.查詢,人口在100以上的城市名字,和所說的語言 3.企業中多表連接查詢(內連接) 1.都到 ...
  • 在1年前,我用學生價租了一個阿裡雲伺服器(是真的便宜啊),自己在CentOS系統上用命令行搭了個WordPress的環境,開始了為期一個月使用自建博客的歷程。 事實證明,博客在類似博客園這樣的平臺上寫還是非常方便的! + 不用自己優化後臺,雖然WordPress已經足夠傻瓜了,但是我還是太菜了 + ...
  • Insert,delete,update對btre索引的影響 對需要跟蹤的索引進行監控 Alter index 索引名 monitoring usage; 對需要跟蹤的索引取消監控 Alter index 索引名 nomonitoring usage; 通過觀察v$object_usage進行跟蹤 ...
  • 一、大數據存儲和計算的各種框架即工具 1.存儲:HDFS:分散式文件系統 Hbase:分散式資料庫系統 Kafka:分散式消息緩存系統 2.計算:Mapreduce:離線計算框架 storm:實時流式計算 spark:離線批處理/實時流處理計算框架(MR的二次封裝) 3.輔助類工具:hive:數據倉 ...
  • 一.客戶端與服務端模型 1.mysql是一個典型的c/s服務結構 1.mysql自帶的客戶端程式(/application/mysql/bin) mysql mysqladmin mysqldump 2.市面上大部分的開發語言都需要一個客戶端連接程式連接mysql的服務端 2.mysql是一個守護進 ...
  • 一.Mysql安裝方式 1.安裝方式 1.rpm,yum安裝 安裝方便,安裝速度快,但無法定製 2.二進位安裝 不需要安裝,解壓即用,不能定製功能 3.編譯安裝 可定製,安裝很慢,安裝分為四個步驟 1.1 解壓(tar) 1.2 生成(./configure)或者cmake 1.3 編譯(make) ...
  • 應用程式慢如牛,原因多多,可能是網路的原因、可能是系統架構的原因,還有可能是資料庫的原因。 那麼如何提高資料庫SQL語句執行速度呢?有人會說性能調優是資料庫管理員(DBA)的事,然而性能調優跟程式員們也有莫大的關係 程式中嵌入的一行行的SQL語句,如果使用了一些優化小技巧,定能達到事半功倍的效果... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...