MySQL手冊


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 關聯表名(關聯字段);

      如果在創建表時添加則只需再最后一列之后添加constraint 外鍵名 foreign key(外鍵字段) 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 表名

 


免責聲明!

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



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