0065 使用SQL語言查詢和增刪改MySQL數(shù)據(jù)庫表數(shù)據(jù)

上節(jié)課介紹了關系數(shù)據(jù)庫的基本概念以及如何通過客戶端軟件訪問數(shù)據(jù)庫。

這節(jié)課來介紹通過SQL語句來查詢和更新數(shù)據(jù)。

什么是SQL語言

SQL是結構化查詢語言(Structured Query Language)剪芥,是一種特殊目的的編程語言羔飞,是一種數(shù)據(jù)庫查詢和程序設計語言拓瞪,用于存取數(shù)據(jù)以及查詢溶锭、更新和管理關系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴展名乘综。

常用的SQL語句如下:

創(chuàng)建表憎账、刪除表、查詢語句瘾带、插入記錄鼠哥、更新記錄熟菲、刪除記錄。

下面分別介紹這幾種SQL語句的語法和例子朴恳。

SQL語言是大小寫不敏感的抄罕。

注意SQL語句的數(shù)值數(shù)據(jù)類型不同,字符串需要加引號于颖,數(shù)值型不需要加引號呆贿。

創(chuàng)建表

上節(jié)課通過數(shù)據(jù)庫客戶端軟件可以在圖形化界面中創(chuàng)建了一個表,它背后的實質(zhì)還是生成一個SQL語句提交到數(shù)據(jù)庫執(zhí)行森渐。

也可以直接編寫好一個SQL語句提交執(zhí)行來創(chuàng)建一個表做入,無需通過圖形化界面的方式。

語法:

CREATE TABLE <表名>(<列名> <數(shù)據(jù)類型>[列級完整性約束條件]

[,<列名> <數(shù)據(jù)類型>[列級完整性約束條件]]…);

例子:

創(chuàng)建學生信息表:

create table studentscore (id int(11), name varchar(30),sex varchar(10),subject varchar(30),score int(11));

創(chuàng)建新聞信息表:

create table news (id int(11),title varchar(100),content varchar(300));

創(chuàng)建新聞信息表帶主鍵:

create table news(id int(11),title varchar(100),content varchar(300),primary key (id));

實驗:

打開數(shù)據(jù)庫客戶端軟件Navicat for MySQL:

image

雙擊數(shù)據(jù)庫連接“l(fā)ocaldb”同衣,雙擊數(shù)據(jù)庫“student”:

image

可以看到有一個表“studentscore”竟块,來執(zhí)行一句SQL創(chuàng)建一個表news。

點擊工具欄按鈕圖標“查詢”:

image

再點擊“查詢”按鈕下方的按鈕“創(chuàng)建查詢(N)”:

4-11-4.jpg

彈出一個“創(chuàng)建查詢”窗口耐齐,光標停留在“查詢編輯器”Tab窗口中浪秘,將創(chuàng)建SQL語句復制粘貼到這個窗口中:

image

點擊工具欄按鈕“運行”:

image

可以看到Tab窗口切換到了“信息”窗口,顯示了SQL語句運行的結果埠况,花費的時間是0.016ms耸携,說明SQL語句正確,執(zhí)行完成了辕翰。

關閉“創(chuàng)建查詢”窗口夺衍,回到主窗口,點擊左側菜單“表”喜命,此時發(fā)現(xiàn)右側并沒有出現(xiàn)新的表news沟沙。

在右側空白窗口中點擊鼠標右鍵,出現(xiàn)右鍵菜單:

image

點擊菜單“刷新”:

image

可以看到新出現(xiàn)了一個表“news”壁榕,表明剛才的SQL語句運行成功了尝胆,通過SQL語句創(chuàng)建了一個表。

SQL語句調(diào)試

有時候編寫的SQL語句不一定正確护桦,那么可以通過數(shù)據(jù)庫客戶端軟件來嘗試執(zhí)行這句SQL,發(fā)現(xiàn)錯誤或者提示之后進行修改煎娇,直到SQL語句編寫正確二庵。

來實驗一下:

打開“創(chuàng)建查詢”窗口,光標停留在“查詢編輯器”Tab窗口中缓呛,將下面這句SQL語句復制粘貼到這個窗口中:

create table studentscore (id int(11), name varchar(30),sex varchar(10),subject varchar(30),score int(11));

image

點擊“執(zhí)行”催享,由于表studentscore已經(jīng)存在,創(chuàng)建同名的表會出錯:

4-11-10.jpg

可以看到提示表已經(jīng)存在哟绊,將Tab窗口切換到“查詢編輯器”Tab窗口因妙,編輯SQL語句,修改表名為studentscore2:

image

再此“運行”:

4-11-12.jpg

可以看到運行成功了,去“刷新”:

image

可以看到新的表studentscore2創(chuàng)建好了攀涵。

刪除表

將剛才創(chuàng)建的studentscore2這個表刪除铣耘,可以使用刪除表SQL語句執(zhí)行。

語法:

DROP TABLE <表名>;

例子:

drop table studentscore2;

實驗:

打開“創(chuàng)建查詢”窗口以故,光標停留在“查詢編輯器”Tab窗口中蜗细,將下面這句SQL語句復制粘貼到這個窗口中:

4-11-14.jpg

點擊“運行”:

4-11-15.jpg

然后去表查看“刷新”:

image

可以看到表被刪除了。

查詢語句

要從表中查詢指定條件的數(shù)據(jù)記錄怒详,可以使用SQL查詢語句炉媒。

語法:

SELECT [ALL|DISTINCT] <目標列表達式>[,<目標列表達式>]…

FROM <表名或視圖名>[,<表名或視圖名>]…

[WHERE <條件表達式>]

[GROUP BY <列名> [HAVING <條件表達式>]]

[ORDER BY <列名> [ASC|DESC]…]

SQL查詢語句的順序:SELECT、FROM昆烁、WHERE吊骤、GROUP BY、HAVING静尼、ORDER BY白粉。SELECT、FROM是必須的茅郎,HAVING子句只能與GROUP BY搭配使用蜗元。

這里只介紹最簡單的WHERE語法,其它的語法請大家自己去網(wǎng)上搜索相關知識自學系冗。

例子:

檢索出表studentscore的所有記錄:

select * from studentscore;

檢索出表studentscore的所有記錄的字段name:

select name from studentscore;

檢索出表studentscore的所有記錄的字段name奕扣,sex,subject掌敬,score:

select name,sex,subject,score from studentscore;

檢索出表studentscore的記錄惯豆,條件是姓名為喬峰的:

select * from studentscore where name='喬峰';

檢索出表studentscore的記錄,條件是姓名里面包含“張”字的:

select * from studentscore where name like '%張%';

檢索出表studentscore的記錄奔害,條件是性別等于“男”的:

select * from studentscore where sex='男';

檢索出表studentscore的記錄楷兽,條件是分數(shù)范圍75-90:

select * from studentscore where score>=75 and score<=90;

檢索出表studentscore的記錄,條件是科目等于“語文”或“數(shù)學”或“英語”的:

select * from studentscore where subject in ('語文','數(shù)學','英語');

檢索出表studentscore的記錄华临,條件是姓名里面包含“張”字芯杀,并且性別等于“男”的:

select * from studentscore where name='喬峰' and sex='男';

條件表達式類似于php的條件表達式,當然一些具體細節(jié)規(guī)定不一樣雅潭。

WHERE條件表達式語法:

條件表達式一 [ and/or 條件表達式二 ] 揭厚,還可以使用括號。

等于:字段=數(shù)據(jù)

字符串模糊等于:字段 like %數(shù)據(jù)%

其它%是通配符扶供,相當于任意字符串筛圆。

大于等于:字段>=數(shù)值

其它數(shù)值比較條件判斷

等于某組值的一個:字段 in (值1,值2......)

實驗:

雙擊表studentscore椿浓,可以看到已經(jīng)存在一條記錄:

image

打開“創(chuàng)建查詢”窗口太援,光標停留在“查詢編輯器”Tab窗口中闽晦,將下面這句SQL語句復制粘貼到這個窗口中:

select * from studentscore where name='喬峰';

4-11-18.jpg

點擊“運行”:

image

可以看到運行結果出現(xiàn)在“結果1”Tab窗口,查詢出來了一條記錄提岔。

切換Tab窗口到“查詢編輯器”仙蛉,修改SQL語句如下:

select * from studentscore where name like '%張%';

4-11-20.jpg

點擊“運行”:

image

可以看到查詢結果沒有找到符合條件的記錄肮之。

切換最上方的窗口解虱,回到表studentscore記錄查看窗口,然后點擊向下方向鍵:

4-11-22.jpg

然后手工插入一條記錄铐达,姓名為張三豐:

image

然后振亮,點擊最下方的工具小按鈕巧还,提交,將數(shù)據(jù)保存進入數(shù)據(jù)庫坊秸。

4-11-24.jpg

確濒锏唬看到右下角的狀態(tài)顯示“記錄2/2”,這樣確保數(shù)據(jù)提交到數(shù)據(jù)庫了褒搔。

然后點擊最上方的窗口切換到“查詢編輯器”窗口阶牍,重新運行下列SQL語句:

select * from studentscore where name like '%張%';

image

點擊“運行”:

4-11-26.jpg

可以看到查詢結果找到了符合條件的1條記錄。

雖然表里面總共2條記錄星瘾,但是通過where條件匹配走孽,找到了1條記錄,這就是查詢語句的作用琳状。

大家可以自己手工增加更多的記錄數(shù)據(jù)磕瓷,然后實驗各種各樣的查詢SQL語句進行練習。

插入記錄

語法:

INSERT INTO <表名> [(字段名[,字段名]…)] VALUES (常量[,常量]…);

例子:

insert into studentscore (id,name,sex,subject,score) values (3,'段譽','男','英語',73);

或者

insert into studentscore (id,name,sex,subject,score) values (4,'王語嫣','女','音樂',68);

實驗:

打開“創(chuàng)建查詢”窗口念逞,光標停留在“查詢編輯器”Tab窗口中困食,將下面這句SQL語句復制粘貼到這個窗口中:

insert into studentscore (id,name,sex,subject,score) values (3,'段譽','男','英語',73);

image

點擊“運行”:

image

切換Tab窗口到表數(shù)據(jù)查看窗口:

4-11-29.jpg

點擊最下方的工具欄按鈕“刷新”:

image

可以看到多了一條記錄出來了。

主鍵不能重復

主鍵的作用就是定義一個表里面的代表唯一性記錄的字段翎承。

例如硕盹,一個身份信息表里面的身份證號字段可以作為主鍵,因為身份證號是唯一性的叨咖,2條記錄中不可能出現(xiàn)同一個身份證號瘩例。

例如,學生分數(shù)信息表里面的ID作為主鍵甸各,也就是不會出現(xiàn)2條記錄的ID的值是一樣的仰剿。

如果插入記錄的時候,插入的ID的值已經(jīng)在表里面某條記錄存在了痴晦,則插入會提示不成功。

打開“創(chuàng)建查詢”窗口琳彩,光標停留在“查詢編輯器”Tab窗口中誊酌,將下面這句SQL語句復制粘貼到這個窗口中:

insert into studentscore (id,name,sex,subject,score) values (3,'王語嫣','女','音樂',68);

image

點擊“運行”:

4-11-32.jpg

可以看到提示插入出錯了部凑。

更新記錄

如果一條記錄已經(jīng)存在于表當中了,則可以使用SQL語句去修改數(shù)據(jù)碧浊。

語法:

UPDATE <表名> SET 列名=值表達式[,列名=值表達式…]

[WHERE 條件表達式]

例子:

將姓名等于喬峰的所有記錄的分數(shù)全部改為100:

update studentscore set score=100 where name='喬峰';

將ID等于3的記錄的分數(shù)改為88:

update studentscore set score=88 where id=3;

將姓名包含張字并且科目為語文的分數(shù)改為68性別改為男:

update studentscore set score=68,sex='男' where name like '%張%' and subject='語文';

注意update語句可以針對復數(shù)條記錄進行更新涂邀,需要注意where條件。

滿足where條件的記錄的相應字段都會更新箱锐。

實驗:

打開“創(chuàng)建查詢”窗口比勉,光標停留在“查詢編輯器”Tab窗口中,將下面這句SQL語句復制粘貼到這個窗口中:

update studentscore set score=100 where name='喬峰';

image

點擊“運行”:

4-11-34.jpg

切換到表數(shù)據(jù)查看窗口驹止,刷新:

image

可以看到數(shù)據(jù)更新了浩聋。

刪除記錄

如果一條記錄已經(jīng)存在于表當中了,則可以使用SQL語句去刪除這條記錄臊恋。

語法:

DELETE FROM <表名> [WHERE 條件表達式]

例子:

將姓名等于喬峰的所有記錄刪除:

delete from studentscore where name='喬峰';

將ID等于3的記錄刪除:

delete from studentscore where id=3;

將姓名包含張字并且科目為語文的記錄刪除:

delete from studentscore where name like '%張%' and subject='語文';

注意update語句可以針對復數(shù)條記錄進行更新衣洁,需要注意where條件。

滿足where條件的記錄的相應字段都會更新抖仅。

實驗:

打開“創(chuàng)建查詢”窗口坊夫,光標停留在“查詢編輯器”Tab窗口中,將下面這句SQL語句復制粘貼到這個窗口中:

delete from studentscore where id=3;

4-11-36.jpg

點擊“運行”:

image

切換到表數(shù)據(jù)查看窗口撤卢,刷新:

4-11-38.jpg

可以看到記錄被刪除了环凿。

更多SQL語言知識

SQL語言是一門非常復雜的語言,有各種各樣的語法和規(guī)范和用法放吩,能夠?qū)崿F(xiàn)非常復雜的功能智听。

作為初學者,可以暫時不要太深入的學習屎慢,掌握好以上常用的一些語法即可瞭稼。

隨著后續(xù)課程的深入,跟隨更多的練習腻惠,可以自己去自學更多的語法規(guī)則环肘,不斷的進行實驗,就能逐漸的掌握這門語言了集灌。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悔雹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子欣喧,更是在濱河造成了極大的恐慌腌零,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唆阿,死亡現(xiàn)場離奇詭異益涧,居然都是意外死亡,警方通過查閱死者的電腦和手機驯鳖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門闲询,熙熙樓的掌柜王于貴愁眉苦臉地迎上來久免,“玉大人,你說我怎么就攤上這事扭弧⊙掷眩” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵鸽捻,是天一觀的道長呼巴。 經(jīng)常有香客問我,道長御蒲,這世上最難降的妖魔是什么衣赶? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮删咱,結果婚禮上屑埋,老公的妹妹穿的比我還像新娘。我一直安慰自己痰滋,他們只是感情好摘能,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著敲街,像睡著了一般团搞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上多艇,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天逻恐,我揣著相機與錄音,去河邊找鬼峻黍。 笑死复隆,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的姆涩。 我是一名探鬼主播挽拂,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骨饿!你這毒婦竟也來了亏栈?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤宏赘,失蹤者是張志新(化名)和其女友劉穎绒北,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體察署,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡闷游,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脐往。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡俱济,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钙勃,到底是詐尸還是另有隱情,我是刑警寧澤聂喇,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布辖源,位于F島的核電站,受9級特大地震影響希太,放射性物質(zhì)發(fā)生泄漏克饶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一誊辉、第九天 我趴在偏房一處隱蔽的房頂上張望矾湃。 院中可真熱鬧,春花似錦堕澄、人聲如沸邀跃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拍屑。三九已至,卻和暖如春坑傅,著一層夾襖步出監(jiān)牢的瞬間僵驰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工唁毒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蒜茴,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓浆西,卻偏偏與公主長得像粉私,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子室谚,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

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