MySQL簡介:MySQL是開源免費的資料庫,小型的資料庫.已經被Oracle收購了.MySQL5.5版本之后都是由Oracle發布的版本,MySQL之前被SUN公司收購,而SUN公司現在又被Oracle公司收購,所以現在MySQL也是屬于Oracle旗下的一款產品,
1.什么是MySQL?
維基百科上這么解釋:
MySQL原本是一個開放原始碼的關系資料庫管理系統,原開發者為瑞典的MySQL AB公司,該公司于2008年被昇陽微系統(Sun Microsystems)收購,2009年,甲骨文公司(Oracle)收購昇陽微系統公司,MySQL成為Oracle旗下產品,
MySQL在過去由于 性能高、成本低、可靠性好,已經成為最流行的開源資料庫,因此被廣泛地應用在Internet上的中小型網站中,隨著MySQL的不斷成熟,它也逐漸用于更多大規模網站和應用
但被甲骨文公司收購后,Oracle大幅調漲MySQL商業版的售價,且甲骨文公司不再支持另一個自由軟體專案OpenSolaris的發展,因此導致自由軟體社群們對于Oracle是否還會持續支持 MySQL社群版(MySQL之中唯一的免費版本 有所隱憂,MySQL的創始人麥克爾·維德紐斯以MySQL為基礎,成立分支計劃MariaDB,而原先一些使用MySQL的開源軟體逐漸轉向MariaDB或其它的資料庫
2.為什么要使用MySQL?
主要有以下幾點:
(1).mysql性能卓越,服務穩定,很少出現例外宕機,
(2).mysql開放源代碼且無著作權制約,自主性及使用成本低,
(3).mysql歷史悠久,社區及用戶非常活躍,遇到問題,可以尋求幫助,
(4).mysql軟體體積小,安裝使用簡單,并且易于維護,安裝及維護成本低,
(5).mysql品牌口碑效應,使得企業無需考慮就直接用之,lamp,lnmp流行架構,
(6).mysql支持多種作業系統,提供多種API介面,支持多種開發語言,特別對流行的PHP語言有很好的支持,
3.MySQL安裝
首先在這里我們來教大家用linux來安裝我們的MySQL,在linux里有兩種方式一:rpm軟體包管理,rpm相當于我們的本地安裝,二:yum安裝,yum安裝就相當于在線安裝,好了現在來進入我們的安裝教程:
在線安裝方式
1.打開虛擬機:
查看是否有MySQL軟體:rpm -qa|grep mysql
有的話我們可以使用卸載方式:
yum remove mysql mysql-server mysql-libs mysql-common
rm -rf /var/lib/mysql
rm /etc/my.cnf
查看是否還有mysql軟體,有的話繼續洗掉,
軟體卸載完畢后如果需要可以洗掉mysql的資料庫:/var/lib/mysql
2.下載rpm包:
要使用yum 安裝mysql,要使用mysql的yum倉庫,先從官網下載適合你系統的倉庫
http://dev.mysql.com/downloads/repo/yum/
我們是centos6.4對應的rpm包為:mysql-community-release-el6-5.noarch.rpm

然后將mysql-community-release-el6-5.noarch.rpm上傳到linux系統,
3.安裝倉庫串列:
注意:在上傳的mysql的rpm包當前目錄下,執行以下命令:
yum localinstall mysql-community-release-el6-5.noarch.rpm
4.安裝mysql
yum install mysql-community-server
Rpm本地安裝方式
如果沒有網路環境可以使用參考資料中的mysql-rpm檔案夾下的mysql安裝包來安裝,
第一步:將以下檔案上傳到linux系統

第二步:使用rpm命令進行安裝
[root@bogon mysql-rpm]# rpm -ivh mysql-community-*
安裝后,啟動服務、設定密碼、遠程授權后既可以使用
啟動mysql
service mysqld start
設定root用戶密碼
mysql資料庫安裝完以后只會有一個root管理員賬號,但是此時的root賬號還并沒有為其設定密碼,在第一次啟動mysql服務時,會進行資料庫的一些初始化作業,在輸出的一大串資訊中,我們看到有這樣一行資訊 :
/usr/bin/mysqladmin -u root password 'new-password' // 為root賬號設定密碼
mysql遠程連接授權
mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
注意:'myuser'、'mypassword' 需要替換成實際的用戶名和密碼,
關閉linux的防火墻
[root@bogon linux]# service iptables stop
iptables:清除防火墻規則: [確定]
iptables:將鏈設定為政策 ACCEPT:filter [確定]
iptables:正在卸載模塊: [確定]
SQL陳述句使用
1.資料庫操作:database
創建資料庫
語法:
* create database 資料庫名;
* create database 資料庫名 character set 字符集;

查看資料庫
查看資料庫服務器中所有的資料庫:show database;
查看某個資料庫定義的資訊:show create database 資料庫名;
洗掉資料庫
drop database 資料庫名稱;
其他的資料庫操作命令
切換資料庫: use 資料庫名;
查看正在使用的資料庫:select database();
表操作: table
欄位型別
常用的型別有:
數字型:int
浮點型:double
字符型:varchar(可變長字串)
日期型別:date(只有年月日,沒有時分秒)
datetime(年月日,時分秒)
boolean型別:不支持
|
分類 |
型別名稱 |
說明 |
|
整數型別 |
tinyInt |
很小的整數 |
|
smallint |
小的整數 |
|
|
mediumint |
中等大小的整數 |
|
|
int(integer) |
普通大小的整數 |
|
|
小數型別 |
float |
單精度浮點數 |
|
double |
雙精度浮點數 |
|
|
decimal(m,d) |
壓縮嚴格的定點數------開發時用 |
|
|
日期型別 |
year |
YYYY 1901~2155 |
|
time |
HH:MM:SS -838:59:59~838:59:59 |
|
|
date |
YYYY-MM-DD 1000-01-01~9999-12-3 |
|
|
datetime-開發用 |
YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59 |
|
|
timestamp |
YYYY-MM-DD HH:MM:SS 1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC |
|
|
文本、二進制型別 |
CHAR(M) |
M為0~255之間的整數 |
|
VARCHAR(M) |
M為0~65535之間的整數 |
|
|
TINYBLOB |
允許長度0~255位元組 |
|
|
BLOB |
允許長度0~65535位元組 |
|
|
MEDIUMBLOB |
允許長度0~167772150位元組 |
|
|
LONGBLOB |
允許長度0~4294967295位元組 |
|
|
TINYTEXT |
允許長度0~255位元組 |
|
|
TEXT |
允許長度0~65535位元組 |
|
|
MEDIUMTEXT |
允許長度0~167772150位元組 |
|
|
LONGTEXT |
允許長度0~4294967295位元組 |
|
|
VARBINARY(M) |
允許長度0~M個位元組的變長位元組字串 |
|
|
BINARY(M) |
允許長度0~M個位元組的定長位元組字串 |
創建表
create table 表名(
欄位名 型別(長度) 約束,
欄位名 型別(長度) 約束
);
查看表
查看資料庫中的所有表: show tables;
查看表結構: desc 表名;
洗掉表
drop table 表名;
修改表
alter table 表名 add 列名 型別(長度) 約束; --修改表添加列.
alter table 表名 modify 列名 型別(長度) 約束; --修改表修改列的型別長度及約束.
alter table 表名 change 舊列名 新列名 型別(長度) 約束; --修改表修改列名.
alter table 表名 drop 列名; --修改表洗掉列
rename table 表名 to 新表名; --修改表名
alter table 表名 character set 字符集; --修改表的字符集
插入記錄
語法:
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 表
注意:
1. 列名數與values后面的值的個數相等
2. 列的順序與插入的值得順序一致
3. 列名的型別與插入的值要一致.
4. 插入值得時候不能超過最大長度.
5. 值如果是字串或者日期需要加引號’’ (一般是單引號)
更新記錄
語法:
update 表名 set 欄位名=值,欄位名=值;
update 表名 set 欄位名=值,欄位名=值 where 條件;
注意:
1. 列名的型別與修改的值要一致.
2. 修改值得時候不能超過最大長度.
3.值如果是字串或者日期需要加’’.
洗掉記錄
delete from 表名 [where 條件];
sql查詢
1.查詢商品名稱為十三香的商品所有資訊:
* select * from product where pname = '十三香';
2.查詢商品價格>60元的所有的商品資訊:
* select * from product where price > 60;
where后的條件寫法:
* > ,<,=,>=,<=,<>
* like 使用占位符 _ 和 % _代表一個字符 %代表任意個字符.
* select * from product where pname like '%新%';
* in在某個范圍中獲得值(exists).
* select * from product where pid in (2,5,8);
|
比較運算子 |
> < <= >= = <> |
大于、小于、大于(小于)等于、不等于 |
|
BETWEEN ...AND... |
顯示在某一區間的值(含頭含尾) |
|
|
IN(set) |
顯示在in串列中的值,例:in(100,200) |
|
|
LIKE ‘張_’ |
模糊查詢,Like陳述句中,% 代表零個或多個任意字符,_ 代表一個字符,例first_name like ‘_a%’; |
|
|
IS NULL |
判斷是否為空 |
|
|
邏輯運算子 |
and |
多個條件同時成立 |
|
or |
多個條件任一成立 |
|
|
not |
不成立,例:where not(salary>100); |
排序
SQL語法關鍵字:
ORDER BY
ASC(升序) DESC(降序)
聚合函式(組函式)
特點:只對單列進行操作
常用的聚合函式:
sum():求某一列的和
avg():求某一列的平均值
max():求某一列的最大值
min():求某一列的最小值
count():求某一列的元素個數
分組
SQL語法關鍵字:
GROUP BY
HAVING
注意事項:
1. select陳述句中的列(非聚合函式列),必須出現在group by子句中
2. group by子句中的列,不一定要出現在select陳述句中
3.聚合函式只能出現select陳述句中或者having陳述句中,一定不能出現在where陳述句中,
語法順序和執行順序(重要) ***
MySQL查詢語法順序
1. SELECT
2. FROM
3. LEFT JOIN
4. ON
5. WHERE
6. GROUP BY
7. HAVING
8. ORDER BY
9. LIMIT
執行順序
1. FROM(將最近的兩張表,進行笛卡爾積)---VT1
2. ON(將VT1按照它的條件進行過濾)---VT2
3. LEFT JOIN(保留左表的記錄)---VT3
4. WHERE(過濾VT3中的記錄)--VT4…VTn
5. GROUP BY(對VT4的記錄進行分組)---VT5
6. HAVING(對VT5中的記錄進行過濾)---VT6
7. SELECT(對VT6中的記錄,選取指定的列)--VT7
8. ORDER BY(對VT7的記錄進行排序)--游標
9.LIMIT(對排序之后的值進行分頁)
WHERE條件執行順序(影響性能)
1. MYSQL:從左往右去執行WHERE條件的,
2. Oracle:從右往左去執行WHERE條件的,
結論:寫WHERE條件的時候,優先級高的部分要去撰寫過濾力度最大的條件陳述句,
表與表之間的關系
一對一關系
常見實體:一夫一妻
一對多關系
常見實體:會員和訂單
多對多關系(需要中間表實作)
常見實體:商品和訂單
外鍵
如何操作外鍵
主表添加外鍵的格式:
alter table 表名 add [constraint][約束名稱] foreign key (主表外鍵欄位) references 從表(從表主鍵)
主表洗掉外鍵的格式:
alter table 表名 drop foreign key 外鍵約束名稱
使用外鍵目的:
保證資料完整性(資料保存在多張表中的時候)
在互聯網專案中,一般情況下,不建議建立外鍵關系,
一對多關系
一個分類對應多個商品

總結:有外鍵的就是多的一方,
注意事項:
一對多關系和一對一關系的創建很類似,唯一區別就是外鍵不唯一,
一對多關系創建:
添加外鍵列
添加外鍵約束
多對多關系
同一個商品對應多個訂單,一個訂單對應多個商品

注意事項:
需要中間表去完成多對多關系的創建
多對多關系其實就是兩個一對多關系的組合
多對多關系創建:
創建中間表,并在其中創建多對多關系中兩張表的外鍵列
在中間表中添加外鍵約束
在中間表中添加聯合主鍵約束
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/92753.html
標籤:MySQL
上一篇:JDBC學習筆記
