MySQL手冊

来源:http://www.cnblogs.com/gaofei-1/archive/2017/07/11/7152875.html
-Advertisement-
Play Games

MySQL配置文件 MySQL軟體使用的配置文件名為my.ini,在安裝目錄下。 MySQL常用配置參數: 1.default-character-set:客戶端預設字元集。 2.character-set-server:伺服器端預設字元集。 3.port:客戶端和伺服器端的埠號。 4.defau ...


MySQL配置文件

  MySQL軟體使用的配置文件名為my.ini,在安裝目錄下。

  MySQL常用配置參數:

    1.default-character-set:客戶端預設字元集。

    2.character-set-server:伺服器端預設字元集。

    3.port:客戶端和伺服器端的埠號。

    4.default-storage-engine:MySQL預設存儲引擎。

MySQL附帶系統資料庫

  1.information_schema:主要存儲系統中的一些資料庫對象信息,如用戶表信息、欄位信息、許可權信息、字元集信息和分區信息等。

  2.performance_schema:主要存儲資料庫伺服器性能參數。

  3.mysql:主要存儲系統的用戶許可權信息。

  4.test:MySQL資料庫管理系統自動創建的測試資料庫,任何用戶都可以使用。

結構化查詢語言(概念)

  1.DML(數據操作語言):用來插入、修改和刪除表中的數據,如insert、update、delete語句。

  2.DDL(數據定義語言):在資料庫中創建或刪除資料庫對象等操作,如create、drop、alter等語句。

  3.DQL(數據查詢語言):用來對資料庫中的數據進行查詢,如select語句。

  4.DCL(數據控制語言):用來控住資料庫組件的存取許可、存取許可權等,如grant、revoke等。

MySQL常用數據類型

常用數值類型
數據類型 位元組數
tinyint[(M)] 1位元組
smallint[(M)] 2位元組
mediumint[(M)] 3位元組
int[(M)] 4位元組
float[(M,D)] 4位元組
double[(M,D)] 8位元組
decimal[(M,d)] M+2位元組

 

 

 

 

 

 

 

 

 

字元串類型
數據類型 位元組 說明
char[(M)] M位元組

固定長度字元串

M為0~255的整數

varchar[(M)] 可變長度

可變長度

M為0~65535的整數

tinytext 0~255 微型文本串
text 0~65535 文本串

 

 

 

 

 

 

  

 

 

日期類型
數據類型 格式 取值範圍
date yyyy-mm-dd 1000-01-01~9999-12-31
datetime yy-mm-dd hh:mm:ss 1000-01-01 00:00:00~9999-12-31 23:59:59
time hh:mm:ss -835:59:59~838:59:59
timestamp yyyymmddhhmmss 1970年某時刻至2038年某時刻,精度為1秒
year yyyy格式的年份 1901-2155

 

 

 

 

 

 

 

MySQL欄位常用屬性約束

常用的屬性約束
欄位屬性、約束名 關鍵字 說明
非空約束 not null 欄位非空
預設約束 default 設置預設值
唯一約束 unique key 設置欄位值唯一,允許但只能有一個空值
主鍵約束 primary key 設置主鍵
外鍵約束 foreign key 設置外鍵
自動增長 auto_increment 設置欄位為自增長,可以設定初始值和步長

 

 

 

 

 

 

 

 

MySQL存儲引擎

  MySQL支持的存儲引擎有InnoDB、MylSAM、Memory、MRG_MylSAM、Acrchive、Federated、CSV、BLACKHOLE等九種,可以使用

  show engines語句查看系統所支持的引擎類型。

  以下列舉兩個常用的引擎

InnoDB和MylSAM存儲引擎比較
功能 InnoDB MylSAM
支持事物 支持 不支持
支持全文索引 不支持 支持
外鍵約束 支持 不支持
表空間大小 較大 較小
數據行鎖定 支持 不支持

 

 

 

 

 

 

  

  InnoDB存儲引擎主要在事務處理上由優勢,如果需要頻繁的更新、刪除操作,同時還對事務的完整性要求比較高,需要實現併發控制,則適合

  使用該引擎。

  MylSAM存儲引擎主要是訪問速度比較快,適合以訪問為主的應用。

  查看當前預設的存儲引擎

      show variables like 'storage_engine%';

 

MySQL數據文件

  1.存儲位置

      預設在data文件夾下。

  2.MylSAM類型的表文件

      .frm文件:表結構定義文件。主要存放表的元數據,寶庫喲表結構定義信息等。該文件與存儲引擎無關,任何存儲類型的表都會有這個文件。

      .MYI文件:索引文件。主要存放MylSAM類型表的索引信息,每個MylSAM類型的表會有一個.MYI文件,存放的位置與.frm文件相同。

      .MYD文件:數據文件。存放表中數據的文件。

  3.InnoDB類型的表文件

      .frm文件:表結構定義文件。主要存放表的元數據,寶庫喲表結構定義信息等。該文件與存儲引擎無關,任何存儲類型的表都會有這個文件。

      ibd文件:數據文件。保存所有InnoDB類型表的數據。這個文件的保存位置可以通過my.ini文件中的參數查詢或修改。例:

          innodb_data_home_dir:"文件存放路徑";

 

命令行登錄MySQL資料庫

  mysql -u root -proot

  或

  mysql -u root -p

  enter password:root

 

MySQL操作資料庫語法

  1.創建資料庫

      create database [if not exists] 資料庫名;

  2.刪除資料庫

      drop database [if exists] 資料庫名;

  3.切換資料庫

      use 資料庫名;

  4.查看所有資料庫

      show databases;

 

MySQL操作表語法

  1.創建表

      create table [if not exists] 表名 (

        欄位1 數據類型 [欄位屬性|約束] [索引] [註釋],

        欄位2 數據類型 [欄位屬性|約束] [索引] [註釋],

        ......

        欄位n 數據類型 [欄位屬性|約束] [索引] [註釋]

      ) [表類型] [表字元集] [註釋];

  2.刪除表

      drop table [if exists] 表名;

  3.查看當前資料庫所有表

      show tables;

  4.查看表定義

      describe 表名;

      或

      desc 表名;

  5.在dos視窗設置MySQL預設字元集編碼

      set names gbk;

      或

      set character_set_client=gbk;

      set character_set_results=gbk;

      set character_set_connection=gbk;

  6.修改表名

      alter table 舊表名 rename [to] 新表名;

  7.添加欄位

      alter table 表名 add 欄位名 數據類型 [屬性];

  8.修改欄位

      alter table 表名 change 原欄位名 新欄位名 數據類型 [屬性];

  9.刪除欄位

      alter table 表名 drop 欄位名;

  10.添加主鍵

      alter table 表名 add constraint 主鍵名 primary key 表名(主鍵欄位);

      如果在創建表時添加則只需primary key

  11.添加外鍵

      alter table 表名 add constraint 外鍵名 foreign key(外鍵欄位) references 關聯表名(關聯欄位);

      如果在創建表時添加則只需references 關聯表名(關聯欄位)

 

MySQL數據操作

  1.添加數據

      和SQL一樣,只是可以一條語句添加多條記錄。insert into 表名 values(),values(),values(),...;

  2.將查詢結果添加到新表

      insert into 新表(欄位) select 欄位 from 原表;         (註:新表需按插入欄位的類型、順序、個數提前創建好)

      或

      create table 新表名(select 欄位 from 原表);          (註:新表無需提前創建)

  3.刪除數據

      delete from 表名;    (註:不會刪除自增列信息)

      或

      truncate table 表名;     (註:會刪除自增列信息,執行速度比delete塊)

  4.分頁查詢

      select * from 表名 limit 起始行,查詢行數;    (註:起始行從0開始)

      或

      select * from 表名 limit 查詢行數;

 

MySQL常用函數

  

常用聚合函數
函數名 作用
  • AVG([DISTINCT] expr)

返回expr 的平均值。 DISTINCT 選項可用於返回 expr的不同值的平均值。

若找不到匹配的行,則AVG()返回 NULL 。

  • COUNT(expr

返回SELECT語句檢索到的行中非NULL值的數目。  

若找不到匹配的行,則COUNT() 返回 0 。

  • MIN([DISTINCT] expr), MAX([DISTINCT] expr
返回expr 的最小值和最大值。 MIN() 和 MAX() 的取值可以是一個字元串參數;在這些情況下, 它們返回最小或最大字元串值。DISTINCT關鍵詞可以被用來查找expr 的不同值的最小或最大值,然而,這產生的結果與省略DISTINCT 的結果相同。

若找不到匹配的行,MIN()和MAX()返回 NULL 。

  • SUM([DISTINCT] expr

返回expr 的總數。 若返回集合中無任何行,則 SUM() 返回NULL。DISTINCT 關鍵詞可用於 MySQL 5.1 中,求得expr 不同值的總和。

若找不到匹配的行,則SUM()返回 NULL。

      

 

 

 

 

 

 

 

 

 

 

 

常用字元串函數
函數名 作用
  • CONCAT(str1,str2,...)

返回結果為連接參數產生的字元串。如有任何一個參數為NULL ,則返回值為 NULL。或許有一個或多個參數。 如果所有參數均為非二進位字元串,則結果為非二進位字元串。 如果自變數中含有任一二進位字元串,則結果為一個二進位字元串。一個數字參數被轉化為與之相等的二進位字元串格式;若要避免這種情況,可使用顯式類型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)  

  • INSERT(str,pos,len,newstr

返回字元串 str, 其子字元串起始於 pos 位置和長期被字元串 newstr取代的len 字元。  如果pos 超過字元串長度,則返回值為原始字元串。 假如len的長度大於其它字元串的長度,則從位置pos開始替換。若任何一個參數為null,則返回值為NULL。  

  • LOWER(str

返回字元串 str 以及所有根據最新的字元集映射表變為小寫字母的字元 (預設為  cp1252 Latin1)。

  • UPPER(str

返回字元串str, 以及根據最新字元集映射轉化為大寫字母的字元 (預設為cp1252 Latin1). 

  • SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len

不帶有len 參數的格式從字元串str返回一個子字元串,起始於位置 pos。帶有len參數的格式從字元串str返回一個長度同len字元相同的子字元串,起始於位置 pos。 使用 FROM的格式為標準 SQL 語法。也可能對pos使用一個負值。假若這樣,則子字元串的位置起始於字元串結尾的pos 字元,而不是字元串的開頭位置。在以下格式的函數中可以對pos 使用一個負值。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

常用日期函數
函數名 作用
  • CURDATE() 
將當前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具體格式根據函數用在字元串或是數字語境中而定。
  • CURTIME() 

將當前時間以'HH:MM:SS'或 HHMMSS 的格式返回, 具體格式根據函數用在字元串或是數字語境中而定。  

  • NOW() 

返回當前日期和時間值,其格式為 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS , 具體格式取決於該函數是否用在字元串中或數字語境中。

  • WEEK(date[,mode]) 
該函數返回date 對應的星期數。WEEK() 的雙參數形式允許你指定該星期是否起始於周日或周一, 以及返回值的範圍是否為從0 到53 或從1 到53。若 mode參數被省略,則使用default_week_format系統自變數的值。
  • YEAR(date

返回date 對應的年份,範圍是從1000到9999。

  • HOUR(time

返回time 對應的小時數。對於日時值的返回值範圍是從 0 到 23

  • MINUTE(time

返回 time 對應的分鐘數,範圍是從 0 到 59。

  • DATEDIFF(expr,expr2

DATEDIFF() 返回起始時間 expr和結束時間expr2之間的天數。Exprexpr2 為日期或 date-and-time 表達式。計算中只用到這些值的日期部分。

  • ADDDATE(expr,days
計算date日期+days天後的日期

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

常用數學函數
函數名 作用
ceil(x) 返回大於等於x的最小整數
floor(x) 返回小於等於x的最大整數
rand() 返回0~1之間的隨機數

 

 

 

 

 

 

 

 

MySQL事務、視圖、索引、備份和恢復

  事務

      begin;(開始)

      commit;(提交)

      rollback;(回滾)

      set autocommit=0;(關閉自動提交)

      set autocommit=1;(開啟自動提交)

  視圖

      創建

        create view 視圖名

        as

        select * from 表

      刪除

        drop view 視圖名

      註意:對視圖中的數據進行操作將直接引用表中的數據,但如果視圖來自多個表則不允許操作數據。

  索引

      創建

        create index 索引名 on 表名(欄位)

      刪除

        drop index 表名.索引名

      查看

        show index from 表名

  備份資料庫

      mysqldump -u root -proot 資料庫名 > 保存路徑

      或

      mysqldump -u root -p 資料庫名 > 保存路徑

      enter password root

  恢複數據庫

      mysql -u root -p 資料庫名 < 路徑

      或

      source filename(需登錄MySQL伺服器)

  導出表數據

      select * from 表 into outfile '路徑'      (註:此操作路徑需和my.ini配置文件中的secure-file-priv路徑一致)

  導入表數據

      load data infile 路徑 into table 表名

 


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

-Advertisement-
Play Games
更多相關文章
  • 1. drawRect: UIView子類重寫 2. drawLayer: inContext: CALayer設置代理 (這是個代理方法) 3. drawInContext: CALayer子類重寫 4. 使用圖形上下文生成圖片: imageContext 儘量避免混用 實現 drawRect : ...
  • 下載更新apk,基本上每個app都需要的功能,來看看吧,肯定有你想要的,以前都是自己寫,近期想藉助第三方的一個庫來做,功能齊全,感覺不錯,記錄使用過程,雖然官方也有使用教程,不過畢竟粗略,網上也能搜到,不過基本都是複製的 首先下載庫,地址改成我們自己的,檢查地址就讓它了,這個根據自己的業務調整,也能 ...
  • Error:FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:externalNativeBuildDebug'. > Build command failed. E ...
  • 使用Intent在活動間穿梭(Intent不僅可以指明當前組件想要執行的動作,還可以在不同組件之間傳遞數據) 1、使用顯式Intent 基於安卓入門1的內容,繼續在ActivityTest項目中再創建一個活動。右擊com.example.administrator.activitytest包->Ne ...
  • 1、設置導航欄標題的字體顏色和大小 方法一:(自定義視圖的方法,一般人也會採用這樣的方式) 就是在導航向上添加一個titleView,可以使用一個label,再設置label的背景顏色透明,字體什麼的設置就很簡單了。 //自定義標題視圖 UILabel *titleLabel = [[UILabel ...
  • setContenView(R.id.activity)實現原理 1.底層框架根據佈局ID找到佈局文件。 2.底層框架解析此佈局文件(pull解析)。 3.底層框架通過反射構建佈局文件中的元素對象(EditText,TextView等)。 4.底層框架會將元素對象(view)放到Activity中。 ...
  • 一,代碼。 二,輸出。 ...
  • 1 概述 1 概述 1.1 已發佈【SqlServer系列】文章 【SqlServer系列】SQLSERVER安裝教程 【SqlServer系列】資料庫三大範式 【SqlServer系列】表單查詢 1.2 本篇文章內容概要 1.3 本篇文章內容概括 在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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...