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存儲引擎主要是訪問速度比較快,適合以訪問為主的應用。
查看當前預設的存儲引擎
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常用函數
函數名 | 作用 |
|
返回expr 的平均值。 DISTINCT 選項可用於返回 expr的不同值的平均值。 若找不到匹配的行,則AVG()返回 NULL 。 |
|
返回SELECT語句檢索到的行中非NULL值的數目。 若找不到匹配的行,則COUNT() 返回 0 。 |
|
返回expr 的最小值和最大值。 MIN() 和 MAX() 的取值可以是一個字元串參數;在這些情況下, 它們返回最小或最大字元串值。DISTINCT關鍵詞可以被用來查找expr 的不同值的最小或最大值,然而,這產生的結果與省略DISTINCT 的結果相同。
若找不到匹配的行,MIN()和MAX()返回 NULL 。 |
|
返回expr 的總數。 若返回集合中無任何行,則 SUM() 返回NULL。DISTINCT 關鍵詞可用於 MySQL 5.1 中,求得expr 不同值的總和。 若找不到匹配的行,則SUM()返回 NULL。 |
函數名 | 作用 |
|
返回結果為連接參數產生的字元串。如有任何一個參數為NULL ,則返回值為 NULL。或許有一個或多個參數。 如果所有參數均為非二進位字元串,則結果為非二進位字元串。 如果自變數中含有任一二進位字元串,則結果為一個二進位字元串。一個數字參數被轉化為與之相等的二進位字元串格式;若要避免這種情況,可使用顯式類型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) |
|
返回字元串 str, 其子字元串起始於 pos 位置和長期被字元串 newstr取代的len 字元。 如果pos 超過字元串長度,則返回值為原始字元串。 假如len的長度大於其它字元串的長度,則從位置pos開始替換。若任何一個參數為null,則返回值為NULL。 |
|
返回字元串 str 以及所有根據最新的字元集映射表變為小寫字母的字元 (預設為 cp1252 Latin1)。 |
|
返回字元串str, 以及根據最新字元集映射轉化為大寫字母的字元 (預設為cp1252 Latin1). |
|
不帶有len 參數的格式從字元串str返回一個子字元串,起始於位置 pos。帶有len參數的格式從字元串str返回一個長度同len字元相同的子字元串,起始於位置 pos。 使用 FROM的格式為標準 SQL 語法。也可能對pos使用一個負值。假若這樣,則子字元串的位置起始於字元串結尾的pos 字元,而不是字元串的開頭位置。在以下格式的函數中可以對pos 使用一個負值。 |
函數名 | 作用 |
|
將當前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具體格式根據函數用在字元串或是數字語境中而定。 |
|
將當前時間以'HH:MM:SS'或 HHMMSS 的格式返回, 具體格式根據函數用在字元串或是數字語境中而定。 |
|
返回當前日期和時間值,其格式為 'YYYY-MM-DD HH:MM:SS' 或YYYYMMDDHHMMSS , 具體格式取決於該函數是否用在字元串中或數字語境中。 |
|
該函數返回date 對應的星期數。WEEK() 的雙參數形式允許你指定該星期是否起始於周日或周一, 以及返回值的範圍是否為從0 到53 或從1 到53。若 mode參數被省略,則使用default_week_format系統自變數的值。 |
|
返回date 對應的年份,範圍是從1000到9999。 |
|
返回time 對應的小時數。對於日時值的返回值範圍是從 0 到 23 |
|
返回 time 對應的分鐘數,範圍是從 0 到 59。 |
|
DATEDIFF() 返回起始時間 expr和結束時間expr2之間的天數。Expr和expr2 為日期或 date-and-time 表達式。計算中只用到這些值的日期部分。 |
|
計算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 表名