Mysql快速入門

MySQL簡介:MySQL是開源免費的數據庫,小型的數據庫.已經被Oracle收購了.MySQL5.5版本以後都是由Oracle發佈的版本,MySQL以前被SUN公司收購,而SUN公司如今又被Oracle公司收購,因此如今MySQL也是屬於Oracle旗下的一款產品。mysql

1.什麼是MySQL?linux

維基百科上這麼解釋:sql

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?centos

主要有如下幾點:服務器

(1).mysql性能卓越,服務穩定,不多出現異常宕機。網絡

(2).mysql開放源代碼且無版權制約,自主性及使用成本低。架構

(3).mysql歷史悠久,社區及用戶很是活躍,遇到問題,能夠尋求幫助。ide

(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,要使用mysqlyum倉庫,先從官網下載適合你係統的倉庫

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.安裝倉庫列表:

注意:在上傳的mysqlrpm包當前目錄下,執行如下命令:

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:將鏈設置爲政策 ACCEPTfilter                      [肯定]

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 外鍵約束名稱

使用外鍵目的:

保證數據完整性(數據保存在多張表中的時候)

在互聯網項目中通常狀況下不建議創建外鍵關係

一對多關係

一個分類對應多個商品

 

 

 總結:有外鍵的就是多的一方

 

注意事項:

一對多關係和一對一關係的建立很相似,惟一區別就是外鍵不惟一。

一對多關係建立:

添加外鍵列

添加外鍵約束

多對多關係

同一個商品對應多個訂單,一個訂單對應多個商品

 

 

 注意事項:

須要中間表去完成多對多關係的建立

多對多關係其實就是兩個一對多關係的組合

多對多關係建立:

建立中間表,並在其中建立多對多關係中兩張表的外鍵列

在中間表中添加外鍵約束

在中間表中添加聯合主鍵約束

多表關聯查詢

JOIN 按照功能大體分爲以下類:

   CROSS JOIN(交叉鏈接)

   INNER JOIN(內鏈接或等值鏈接)。

   OUTER JOIN(外鏈接)

交叉鏈接

交叉鏈接的關鍵字CROSS JOIN

隱式交叉鏈接

SELECT * FROM A,B

顯示交叉鏈接

SELECT * FROM A CROSS JOIN B

 

內鏈接

內鏈接的關鍵字INNER JOIN

隱式內鏈接

SELECT * FROM A,B WHERE A.id = B.id

顯示內鏈接

SELECT * FROM A INNER JOIN B ON A.id = B.id

 

分頁查詢

MySQL的分頁關鍵字是LIMIT

格式:

SELECT * FROM TABLE LIMIT [offset,] rows

MySQL事務處理

事務概述:

MySQL 事務主要用於處理操做量大,複雜度高的數據。好比說,在人員管理系統中,你刪除一我的員,

你即須要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操做語句就構成一個事務!

通常來講,事務是必須知足4個條件(ACID):

Atomicity(原子性)

Consistency(穩定性)

Isolation(隔離性)

Durability(可靠性)

對於ACID的解釋以下:

原子性:構成事務的的全部操做必須是一個邏輯單元,要麼所有執行,要麼所有不執行

穩定性(一致性)數據庫在事務執行先後狀態都必須是穩定的

隔離性:事務之間不會相互影響

可靠性(持久性)事務執行成功後必須所有寫入磁盤

相關文章
相關標籤/搜索