MySQL是一個小型的關係型數據庫管理系統,開發者爲瑞典MySQL AB 公司,在2008年1月16號被sun公司收購,以後又在2009年4月被Oracle公司收購,現屬於 Oracle 旗下產品。mysql
MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件之一。MySQL被普遍的應用在Internet上的中小型網站中。MySQL 軟件採用了雙受權政策,分爲社區版和商業版,因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,通常中小型網站的開發都選擇 MySQL 做爲網站數據庫。sql
在實際項目開發中,數據庫一共分爲兩大類:數據庫
關係型數據庫,是指採用了關係模型來組織數據的數據庫,其以行和列的形式存儲數據,以便於用戶理解,關係型數據庫這一系列的行和列被稱爲表,一組表組成了數據庫。用戶經過查詢來檢索數據庫中的數據,而查詢是一個用於限定數據庫中某些區域的執行代碼。關係模型能夠簡單理解爲二維表格模型,而一個關係型數據庫就是由二維表及其之間的關係組成的一個數據組織。安全
小型數據庫:微軟Access服務器
中型數據庫:編輯器
DB2:IBM公司的數據庫產品,收費的。常應用在銀行系統中. 在中國的互聯網公司,要求去IOE 網站
MySQL:開源免費的數據庫,小型的數據庫.已經被Oracle收購了.MySQL5.5版本以後都是由Oracle發佈的版本。ui
SQL Server:MicroSoft 公司收費的中型的數據庫。C#、.net等語言常使用。spa
大型數據庫:.net
Oracle:收費的大型數據庫,Oracle公司的產品。Oracle收購SUN公司,收購MYSQL。
非關係型數據庫有:Redis、MongoDB
1. 鏈接mysql
格式: mysql -h主機地址 -u用戶名-p用戶密碼
A. 鏈接到本地MYSQL
首先打開DOS窗口,而後進入目錄mysql\bin,再鍵入命令mysql -u root -p,
回車後提示你輸密碼。 MYSQL的提示符是: mysql> 。(默認root用戶沒有密碼)
B. 鏈接到遠程主機上的MYSQL
假設遠程主機的IP爲:218.105.110.116,用戶名爲root,密碼爲abcd123456。
則鍵入如下命令:mysql -h218.105.110.116 -u root -p abcd123456;(注:u與root之間能夠不用加空格,其它也同樣)。
2. 啓動mysql服務
net start mysql
3. 中止mysql服務
net stop mysql
4. 查詢端口是否衝突
netstat –na | findstr 8080 查看被監聽的端口 , findstr用於查找後面的端口是否存在。
5. 退出mysql
quit或者exit退出
6. 修改密碼:
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
例如給root修改密碼:
mysqladmin -u root -p ab12 password djg345
SQL,全稱Structured Query Language,簡稱SQL,中文叫結構化查詢語言。
Ø 數據定義語言:簡稱DDL(Data Definition Language),用來定義數據庫對象:數據庫,表,列等。關鍵字:create,alter,drop等
Ø 數據操做語言:簡稱DML(Data Manipulation Language),用來對數據庫中表的記錄進行更新。關鍵字:insert,delete,update等
Ø 數據控制語言:簡稱DCL(Data Control Language),用來定義數據庫的訪問權限和安全級別,及建立用戶;關鍵字:grant等
Ø 數據查詢語言:簡稱DQL(Data Query Language),用來查詢數據庫中表的記錄。關鍵字:select,from,where等
1. 建立MySQL數據庫:
create database 數據庫名稱;
示例代碼:
① 選中localhost,而後切換到SQL編輯器
② 在SQL編輯器中輸入create database db_20171227;以下圖所示:
2. 刪除數據庫
基本語法:
刪除就是不想要了,不想要了就是丟掉,丟掉的單詞:drop
drop database 數據庫名稱;
示例代碼:
特別注意:刪除數據庫是不可逆的,刪除以前必定要慎重。
3. 查看數據庫
①查看全部數據庫
查看的單詞:show
查看全部數據庫:show databases;
示例代碼:
②顯示指定的某類數據庫
show databases like ‘db%’; //查詢全部以db開頭的全部數據庫
普及like模糊查詢,有兩個關鍵字須要記住:
_(下劃線):表明任一一個字符,可能表明a也可能表明b...
%(百分號):表明任意的n個字符,可能表明ab也可能表明abcd...
4. 建立表
建立數據表的基本語法:
create table 數據表名稱(
列名稱(英文) 列類型 列約束(not null)
);
示例代碼:
5. 刪除數據表
丟掉:drop
表:table
刪除數據表:drop table 數據表名稱;
6. 修改數據表(數據表的名稱)
重命名:rename
rename table 原來的名字 to 新名稱;
7. 查看數據表
①查看全部的數據表或某類的數據
show tables like ‘_或%’;
②查看數據表的結構
desc 數據表名稱;
8. 插入記錄:insert
語法:
insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
insert into 表 values (值1,值2,值3..); --向表中插入全部列
insert into 表 (列名1,列名2,列名3..) values select (列名1,列名2,列名3..) from 表
insert into 表 values select * from 表
9. 更新數據表中的記錄
基本語法:
更新:update
update 數據表名稱 set 字段(列) = 更新後的值,字段(列) = 更新後的值 where 條件;
10. 從數據表中查詢數據
①查詢全部數據
查詢:select
select * from 數據表名稱;
或
select 字段(某一列) from 數據表名稱;
②根據條件查詢數據(多了一個where)
11. 從數據表中刪除數據(重點)
基本語法:
刪除:delete
delete from 數據表名稱 where 條件;
delete from 數據表名稱;
truncate 數據表名稱;
二者的功能都是刪除全部數據,可是truncate刪除的數據,其主鍵(primary key)會從新編號。而delete from刪除後的數據,會繼續上一次編號。
修改my.ini文件,而後重啓mysql服務器
表與表之間的關係,說的就是表與表之間數據的關係。
在實際工做中,一對一在開發中應用很少,由於一對一徹底能夠建立成一張表
案例:一個丈夫只能有一個妻子
案例:一個分類對應多個商品
總結:有外鍵的就是多的一方。
1. 注意事項:
一對多關係和一對一關係的建立很相似,惟一區別就是外鍵不惟一。
2. 一對多關係建立:
添加外鍵列
添加外鍵約束
3. 注意事項:
Ø 須要中間表去完成多對多關係的建立
Ø 多對多關係其實就是兩個一對多關係的組合
Ø 建立中間表,並在其中建立多對多關係中兩張表的外鍵列
Ø 在中間表中添加外鍵約束
Ø 在中間表中添加聯合主鍵約束
交叉鏈接的關鍵字:CROSS JOIN
1. 隱式交叉鏈接
SELECT * FROM A, B
2. 顯式交叉鏈接
SELECT * FROM A CROSS JOIN B
內鏈接的關鍵字:INNER JOIN
內鏈接也叫等值鏈接,內聯接使用比較運算符根據每一個表共有的列的值匹配兩個表中的行。
1. 隱式內鏈接
SELECT * FROM A,B WHERE A.id = B.id
2. 顯式內鏈接
SELECT * FROM A INNER JOIN B ON A.id = B.id
外聯接能夠是左向外聯接、右向外聯接或完整外部聯接。也就是說外鏈接又分爲:左外鏈接、右外鏈接、全外鏈接
外鏈接須要有主表或者保留表的概念。
在 FROM子句中指定外聯接時,能夠由下列幾組關鍵字中的一組指定:
1. 左外鏈接:LEFT JOIN 或者 LEFT OUTER JOIN
SELECT * FROM A LEFT JOIN B ON A.id = B.id
2. 右外鏈接::RIGHT JOIN 或者 RIGHT OUTER JOIN
SELECT * FROM A RIGHT JOIN B ON A.id = B.id
3. 全外鏈接(MySQL不支持):FULL JOIN 或 FULL OUTER JOIN
SELECT * FROM A FULL JOIN B ON A.id = B.id
外鏈接總結:
l 經過業務需求,分析主從表
l 若是使用LEFT JOIN,則主表在它左邊
l 若是使用RIGHT JOIN,則主表在它右邊
查詢結果以主表爲主,從表記錄匹配不到,則補null
MySQL的分頁關鍵字是:LIMIT
格式:
SELECT * FROM table LIMIT [offset,] rows
定義:
子查詢容許把一個查詢嵌套在另外一個查詢當中。
子查詢,又叫內部查詢,相對於內部查詢,包含內部查詢的就稱爲外部查詢。
子查詢能夠包含普通select能夠包括的任何子句,好比:distinct、 group by、order by、limit、join和union等;
可是對應的外部查詢必須是如下語句之一:select、insert、update、delete。
位置:
select 中、from 後、where 中.
group by 和order by 中無實用意義。
MySQL 事務主要用於處理操做量大,複雜度高的數據。
Ø 在 MySQL 中只有使用了 Innodb 數據庫引擎的數據庫或表才支持事務。
Ø 事務處理能夠用來維護數據庫的完整性,保證成批的 SQL 語句要麼所有執行,要麼所有不執行。
Ø 事務用來管理DML操做,好比 insert,update,delete 語句
通常來講,事務是必須知足4個條件(ACID):
Ø Atomicity(原子性)
構成事務的的全部操做必須是一個邏輯單元,要麼所有執行,要麼所有不執行。
Ø Consistency(穩定性)
數據庫在事務執行先後狀態都必須是穩定的。
Ø Isolation(隔離性)
事務之間不會相互影響。
Ø Durability(可靠性)
事務執行成功後必須所有寫入磁盤。