一放案、Mysql數(shù)據(jù)庫(kù)介紹
1姚建、簡(jiǎn)述
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)矫俺,由瑞典MySQL AB 公司開(kāi)發(fā),目前屬于Oracle 旗下產(chǎn)品掸冤。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一厘托,在 WEB 應(yīng)用方面,MySQL是最好的RDBMS (Relational Database Management System稿湿,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件铅匹。
語(yǔ)言為SQL結(jié)構(gòu)化查詢語(yǔ)句
2、什么是關(guān)系型數(shù)據(jù)庫(kù)
通過(guò)SQL結(jié)構(gòu)化查詢語(yǔ)句存儲(chǔ)數(shù)據(jù)饺藤,保持?jǐn)?shù)據(jù)一致性方面很強(qiáng)包斑。
常用的關(guān)系型數(shù)據(jù)庫(kù):Mysql和Oracle數(shù)據(jù)庫(kù),互聯(lián)網(wǎng)運(yùn)維最常用的是MySQL涕俗。
關(guān)系型數(shù)據(jù)庫(kù)的特點(diǎn)是將數(shù)據(jù)保存在不同的表中罗丰,在將這些表放入不同的數(shù)據(jù)庫(kù)中,而不是將所有數(shù)據(jù)統(tǒng)一放在一個(gè)大倉(cāng)庫(kù)里再姑,這樣的設(shè)計(jì)增加了MySQL的讀取速度萌抵,靈活性和可管理型也得到了很大提高,訪問(wèn)以及管理MySQL數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化。
3绍填、MySQL數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)
(1) MySQL性能卓越霎桅、服務(wù)穩(wěn)定,很少出現(xiàn)異常宕機(jī)
(2) MySQL開(kāi)放源代碼且無(wú)版權(quán)制約讨永,自主性及使用成本低
(3) MySQL歷史悠久滔驶,社區(qū)及用戶活躍,遇到問(wèn)題可以解決
(4) MySQL軟件體積小卿闹,安裝使用簡(jiǎn)單瓜浸,并且易于文虎,安裝及維護(hù)成本低
(5) MySQL品牌口碑效應(yīng)比原,使得企業(yè)無(wú)需考慮就直接用插佛,LAMP、LEMP流行架構(gòu)
(6) MySQL支持多用操作系統(tǒng)量窘,提供多種API接口雇寇,支持多用開(kāi)發(fā)語(yǔ)言,特別對(duì)流行的PHP語(yǔ)言有很好的支持
二蚌铜、Mac配置MySql
1锨侯、下載MySQL
在MySQL 的官網(wǎng)可以下載 MySQL,一般個(gè)人用戶者選擇是 Community 版本冬殃,因?yàn)榇税姹久赓M(fèi)囚痴,而商業(yè)版需要收費(fèi)。使用此.dmg 格式進(jìn)行下載审葬。
2深滚、安裝
安裝過(guò)程比較簡(jiǎn)單,一路Next即可涣觉,設(shè)置root密碼痴荐。安裝完成之后,在系統(tǒng)便好設(shè)置里面官册,可以啟動(dòng)或者關(guān)閉MySql服務(wù)
3生兆、此時(shí)設(shè)置環(huán)境變量
在 terminal(終端) 里面執(zhí)行 vim ~/.bash_profile 語(yǔ)句此時(shí)可以看到.bash_profile的文本內(nèi)容,在最后面部分添加PATH=$PATH:/usr/local/mysql/bin膝宁,然后保存退出鸦难。
最后在命令行輸入source ~/.bash_profile使得環(huán)境變量可以使文件立即生效,當(dāng)然你可以關(guān)閉terminal 再重新打開(kāi)也是可以的员淫。
4合蔽、登錄MySql
最后,你就可以通過(guò)mysql -u root -p這段命令登錄 MySql了满粗,輸入你之前設(shè)置的密碼即可登錄成功辈末。
三、數(shù)據(jù)庫(kù)的基礎(chǔ)操作
1、數(shù)據(jù)庫(kù)的基本操作
查看所有數(shù)據(jù)庫(kù):show databases;
創(chuàng)建數(shù)據(jù)庫(kù):create database database_name;
創(chuàng)建完成之后挤聘,可以使用聲明查看數(shù)據(jù)庫(kù)的定義:show create database;
刪除數(shù)據(jù)庫(kù): drop database database_name;
切換數(shù)據(jù)庫(kù): use database_name;
查看數(shù)據(jù)庫(kù)使用的引擎: show engines;
查看當(dāng)前登錄用戶,當(dāng)前數(shù)據(jù)庫(kù):MySql;
2轰枝、數(shù)據(jù)表的基礎(chǔ)操作
2.1創(chuàng)建數(shù)據(jù)表
CREATE TABLE table_name(
字段名1 數(shù)據(jù)類型 [列級(jí)別約束條件] [默認(rèn)值],
字段名1 數(shù)據(jù)類型 [列級(jí)別約束條件] [默認(rèn)值],
…
[表級(jí)別約束條件]
);
代碼示例:
CREATE TABLE tab_Test(id INT(11),name VARCHAR(25),deptId INT(11),salary
FLOAT);
注意:表的名稱不能為關(guān)鍵字等信息,創(chuàng)建語(yǔ)句盡量使用大寫(xiě)组去,名稱無(wú)所謂鞍陨。
選擇數(shù)據(jù)庫(kù)test:USE test;
查看數(shù)據(jù)庫(kù)下的數(shù)據(jù)表:SHOW TABLES;
查看test中的表tab_Test:DESCRIBE tab_Test;
查看表結(jié)構(gòu)更詳細(xì)的定義:SHOW CREATE TABLE;
刪除表:DROP TABLE table_name
2.2使用主鍵約束
主鍵的作用在于用某個(gè)字段唯一地標(biāo)識(shí)所有記錄,以便在數(shù)據(jù)庫(kù)中快速地查找數(shù)據(jù)从隆。比如我們一般用索引號(hào)來(lái)唯一標(biāo)識(shí)每一條數(shù)據(jù)記錄诚撵。主鍵可以是單一字段,也可以是多個(gè)字段键闺。
主鍵在任何時(shí)候都不能為空寿烟。
單字段主鍵:用關(guān)鍵字PRIMARY KEY設(shè)置主鍵。
CREATE TABLE tab_Test(
ID VARCHAR(20) PRIMARY KEY, //方式一:設(shè)置學(xué)?ID為主鍵
Score FLOAT,
AGE INT //注意這里的逗號(hào)不要加辛燥,否則會(huì)報(bào)錯(cuò)
//PRIMARY KEY(ID) //方式二:定義完所有列之后筛武,指定主鍵也可以
);
多字段聯(lián)合主鍵:
CREATE TABLE tab_Test(
ID VARCHAR(20),
NAME VARCHAR(20),
AGE INT,
PRIMARY KEY(ID,Score)
);
多字段聯(lián)合主鍵允許ID=1,NAMe=‘za’;ID=2,NAME=’za’
切忌使用以下方法:
CREATE TABLE tab_Test(
ID VARCHAR(20) PRIMARY KEY,
Score FLOAT PRIMARY KEY,
AGE INT
);
2.3設(shè)置外鍵約束
外鍵約束則是保證多個(gè)表之間的參照完整性。設(shè)置外鍵約束的兩個(gè)表之間具備父子關(guān)系挎塌,即子表中某個(gè)字段的取值依賴于父表徘六。
外鍵設(shè)置時(shí)有以下幾點(diǎn)要求:
? 外鍵所代表的字段必須依賴于已經(jīng)存在的父表的主鍵;
? 外鍵與相應(yīng)的父表的主鍵可以不同名榴都;
? 外鍵可以為空(null)
下面創(chuàng)建一個(gè)實(shí)例幫助理解外鍵的使用
創(chuàng)建一個(gè)父表:
CREATE TABLE Tab1(
Id INT(10) PRIMARY KEY,
……
)
創(chuàng)建一個(gè)子表讓他的鍵deptId做為外鍵關(guān)聯(lián)到父表Tab1的主鍵Id:
CREATE TABLE Tab2(
……,
deptId INT(10),
……
)
版面問(wèn)題外鍵相關(guān)知識(shí)不能全部展開(kāi)想繼續(xù)深入了解的可以訪問(wèn)MySql教程(https://www.yiibai.com/mysql/foreign-key.html)
2.4設(shè)置字段值自動(dòng)增加
往表中插入記錄時(shí)待锈,往往會(huì)遇到需要遞增的字段。例如學(xué)號(hào)ID等等嘴高。Mysql支持對(duì)這類字段設(shè)置字段值自動(dòng)增加的約束懒浮。默認(rèn)情況下辟躏,設(shè)置了自動(dòng)增加的字段值為整數(shù)端铛,從1開(kāi)始豪治,每次加1坪它。又因?yàn)檫@種自動(dòng)增加的字段肯定是唯一的朴沿,所以一般我們也把它設(shè)置為主鍵夫晌。
設(shè)置自動(dòng)增加的關(guān)鍵字為AUTO_INCREMENT
CREATE TABLE tab_Test(
ID INT PRIMARY KEY AUTO_INCREMENT, //將ID設(shè)置為整數(shù)類型读第,并且設(shè)置字段值?動(dòng)增加
Name VARCHAR(20),
Score FLOAT
);
注意颠印,如果要將某個(gè)字段設(shè)置為自動(dòng)增加纲岭,那么必須將這個(gè)字段設(shè)置“唯一”的屬性,即設(shè)置為主鍵或者唯一約束线罕,否則會(huì)報(bào)錯(cuò)止潮。
讓混亂的ID有序化
原理:刪除原有的自增ID,重新建立新的自增ID
1钞楼、刪除原有主鍵
ALTER TABLE tab_Stu5 DROP ID;
2喇闸、添加新主鍵字段
ALTER TABLE tab_Stu5 ADD ID INT(8) NOT NULL FIRST;
3、設(shè)置新主鍵
ALTER TABLE tab_Stu5 MODIFY COLUMN ID INT(8) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id);
2.5使用非空約束
關(guān)鍵字NOT NULL用來(lái)約束某字段不能為空.
2.6設(shè)置字段的默認(rèn)值
關(guān)鍵字DEFAULT用來(lái)設(shè)置字段的默認(rèn)值。如果在插入數(shù)據(jù)時(shí)燃乍,沒(méi)有為某個(gè)字段賦值唆樊,則Mysql會(huì)自動(dòng)為這個(gè)字段賦值為默認(rèn)值。設(shè)置不為空刻蟹、默認(rèn)值逗旁,可以放在一起,但沒(méi)有意義舆瘪。
2.7設(shè)置唯一約束
關(guān)鍵字UNIQUE用來(lái)設(shè)置對(duì)某個(gè)字段的唯一約束片效,唯一約束表示,插入的數(shù)據(jù)在這個(gè)字段上的值是唯一的英古,不能重復(fù)淀衣。
Unique和Primary Key的區(qū)別在于:一個(gè)表中可以有多個(gè)字段聲明為UNIQUE,但只能有一個(gè)主鍵聲明召调;主鍵不允許為空舌缤,但是聲明為UNIQUE的字段允許空值的存在,只能有一個(gè)某残。
下面只是一個(gè)簡(jiǎn)單的例子
CREATE TABLE tab_Test(
ID INT UNIQUE,
NAME VARCHAR(20) NOT NULL,
GRADE INT DEFAULT 2
//CONSTRAINT STH UNIQUE(NAME) //在定義完所有列之后指定唯一約束
)
2.8修改數(shù)據(jù)表
修改表名:ALTER TABLE <舊表名> RENAME <新表名>
ALTER TABLE tab_Test RENAME NewTAb;
修改字段數(shù)據(jù)類型:ALTER TABLE <表名> MODIFY <字段名> <數(shù)據(jù)類型>
ALTER TABLE tab_Test MODIFY NAME VARCHAR(30);
修改字段名:ALTER TABLE <表名> CHANGE <舊字段名> <新字段名> <數(shù)據(jù)類型>
ALTER TABLE tab_Test CHANGE NAME NewName varchar(30);
刪除字段:ALTER TABLE <表名> DROP <字段名>
添加字段:ALTER TABLE <表名> ADD <新字段名> <新數(shù)據(jù)類型>
2.9還有一些數(shù)據(jù)庫(kù)的操作指令国撵,下面用一個(gè)例子簡(jiǎn)單介紹
創(chuàng)建表:
CREATE TABLE User(
Id INT AUTO_INCREMENT,
Name VARCHAR(30),
Sex VARCHAR(25),
Age INT,
PRIMARY KEY(ID,Score)
)
插入數(shù)據(jù):
INSERT INTO User(Id,Name,Sex,Age) VALUES(1,’qwe’,’boy’,20);
//注意使用單引號(hào)
查詢數(shù)據(jù):
SELECT * FROM User;//查詢User表的所有信息
SELECT * FROM User WHERE Age<30;//查詢年齡小于30歲User的所有信息
SELECT Id,Name FROM User WHERE Id=1;//查詢Id為1的UserId,Name
SELECT Id,Name FROM User WHERE Id LIKE 1;//LIKE:’=’
AND的用法:SELECT * FROM User WHERE Age>20 and Age<40;
OR的用法:SELECT * FROM User WHERE Age<20 OR Age<40;
BETWEEN的用法:SELECT * FROM User WHERE Age BETWEEN 20 AND 40;
IN查詢指定集合內(nèi)的數(shù)據(jù):SELECT * FROM User WHERE Age IN (10,29,39);
將數(shù)據(jù)按升序(ASC)玻墅、降序(DESC)排列:SELECT * FROM User ORDER BY Age DESC;
更新數(shù)據(jù):
UPDATE User SET Age=20 WHERE Id=1;
UPDATE User SET Name=‘wer’,Age=20,Sex=‘girl’ WHERE Id=2;
刪除數(shù)據(jù):
DELETE FROM User WHERE Id=1;
將Sex字段移動(dòng)到Age之后:
ALTER TABLE User MODIFY Sex CHAR(25) AFTER Age;