MySQL簡介:MySQL是開源免費的資料庫,小型的資料庫.已經被Oracle收購了.MySQL5.5版本之後都是由Oracle發佈的版本,MySQL之前被SUN公司收購,而SUN公司現在又被Oracle公司收購,所以現在MySQL也是屬於Oracle旗下的一款產品。 1.什麼是MySQL? 維基百 ...
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);