Go語(yǔ)言與MySql數(shù)據(jù)庫(kù)(上)——MySql基礎(chǔ)

一放案、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;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末介牙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子澳厢,更是在濱河造成了極大的恐慌环础,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剩拢,死亡現(xiàn)場(chǎng)離奇詭異线得,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)徐伐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)贯钩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人办素,你說(shuō)我怎么就攤上這事角雷。” “怎么了性穿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵勺三,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我需曾,道長(zhǎng)吗坚,這世上最難降的妖魔是什么祈远? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮商源,結(jié)果婚禮上绊含,老公的妹妹穿的比我還像新娘。我一直安慰自己炊汹,他們只是感情好躬充,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著讨便,像睡著了一般充甚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霸褒,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天伴找,我揣著相機(jī)與錄音,去河邊找鬼废菱。 笑死技矮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的殊轴。 我是一名探鬼主播衰倦,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼旁理!你這毒婦竟也來(lái)了樊零?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤孽文,失蹤者是張志新(化名)和其女友劉穎驻襟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芋哭,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沉衣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了减牺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豌习。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖烹植,靈堂內(nèi)的尸體忽然破棺而出斑鸦,到底是詐尸還是另有隱情,我是刑警寧澤草雕,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站固以,受9級(jí)特大地震影響墩虹,放射性物質(zhì)發(fā)生泄漏嘱巾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一诫钓、第九天 我趴在偏房一處隱蔽的房頂上張望旬昭。 院中可真熱鬧,春花似錦菌湃、人聲如沸问拘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)骤坐。三九已至,卻和暖如春下愈,著一層夾襖步出監(jiān)牢的瞬間纽绍,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工势似, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拌夏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓履因,卻偏偏與公主長(zhǎng)得像障簿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子栅迄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容