重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
【正文】
創(chuàng)新互聯(lián)專注于陸良網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供陸良營(yíng)銷型網(wǎng)站建設(shè),陸良網(wǎng)站制作、陸良網(wǎng)頁(yè)設(shè)計(jì)、陸良網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造陸良網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供陸良網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
主要內(nèi)容:
一、cmd命令行的常用命令
二、數(shù)據(jù)定義語(yǔ)言(DDL)
三、數(shù)據(jù)操縱語(yǔ)言(DML)
四、數(shù)據(jù)查詢語(yǔ)言(DRL)
五、事務(wù)控制語(yǔ)言(TCL)
一、cmd命令行的常用命令:
當(dāng)我們使用MySQL 5.5 Command Line Client這個(gè)客戶端登陸時(shí),只能登陸root用戶。如果今后創(chuàng)建了別的用戶,就很麻煩了,所以我們不用MySQL 5.5 Command Line Client這個(gè)客戶端,而是直接使用cmd。
登錄MySQL數(shù)據(jù)庫(kù):
因?yàn)樵谶@之前安裝MySQL的時(shí)候,已經(jīng)將環(huán)境變量配置好了,所以可以直接在cmd中輸入如下命令進(jìn)行登陸:
mysql -u root -p
緊接著輸入密碼就行了。
上方代碼中,-u表示username,即用戶名。-p表示password,即密碼。
查看數(shù)據(jù)庫(kù):
show databases;
使用數(shù)據(jù)庫(kù):(此命令后面可以不加分號(hào))
use 數(shù)據(jù)庫(kù)名;
查看當(dāng)前數(shù)據(jù)庫(kù)表:
show tables;
注:命令后面的分號(hào)表示結(jié)束。
注:上圖中,先輸入show databases;顯示出了四個(gè)庫(kù),前三個(gè)表示系統(tǒng)的庫(kù),第四個(gè)test是系統(tǒng)自帶的測(cè)試庫(kù)。然后我們使用test這個(gè)數(shù)據(jù)庫(kù),顯示:Database changed,表示當(dāng)前的數(shù)據(jù)庫(kù)處于激活狀態(tài)。緊接著可以對(duì)其進(jìn)行其他相關(guān)的命令了。這里我們輸入show tables,可以看到test這個(gè)數(shù)據(jù)庫(kù)的表里面是空的。
所以要開(kāi)始建表了,于是就涉及到了SQL語(yǔ)句。
SQL全稱是:結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)。既然是語(yǔ)言,就涉及到了語(yǔ)法。下面來(lái)看一下常見(jiàn)的語(yǔ)法。
二、數(shù)據(jù)定義語(yǔ)言(DDL)
數(shù)據(jù)定義語(yǔ)言:Data Definition Language。如CREATE, DROP,ALTER等語(yǔ)句。需要注意的是,數(shù)據(jù)庫(kù)中的命令不區(qū)分大小寫(xiě)。
創(chuàng)建數(shù)據(jù)庫(kù)(CREATE DATABASE語(yǔ)句):
【舉例】新建數(shù)據(jù)庫(kù),命名為mydb:
CREATE DATABASE mydb;
注:如若要?jiǎng)h除數(shù)據(jù)庫(kù),將“create”改為“drop”即可。
創(chuàng)建表(CREATE TABLE語(yǔ)句):
【舉例】創(chuàng)建一個(gè)名為teacher的表:
(((
上面所有的代碼其實(shí)是同一行。
定義字段的格式:字段的名字+字段的類型+屬性
注:每個(gè)字段定義完后,要用逗號(hào)隔開(kāi),最后一個(gè)字段沒(méi)有逗號(hào)。
一般情況下,每個(gè)表都要有一個(gè)主鍵。
命令運(yùn)行的效果如下:
查看表結(jié)構(gòu):
desc teacher;
效果如下:
需要注意的是:主鍵是用來(lái)唯一代表一條記錄的字段(主鍵值必須是唯一)
刪除表(DROP TABLE語(yǔ)句):
DROP TABLE teacher;
注:drop table 語(yǔ)句會(huì)刪除該的所有記錄及表結(jié)構(gòu)
修改表結(jié)構(gòu)(ALTER TABLE語(yǔ)句):(假設(shè)表名為test)
alter table test add column job varchar(10); --添加表列
alter table test rename test1; --修改表名
alter table test drop column name; --刪除表列
alter table test modify address char(10) --修改表列類型(改類型)
alter table test change address address1 char(40) --修改表列類型(改名字和類型,和下面的一行效果一樣)
alter table test change column address address1 varchar(30)--修改表列名(改名字和類型)
舉例:將主鍵修改為自動(dòng)增長(zhǎng):alter table tab_teacher change id id int auto_increment;
三、數(shù)據(jù)操縱語(yǔ)言(DML):
數(shù)據(jù)操縱語(yǔ)言:Data Manipulation Language。如:INSERT(增), UPDATE(改), DELETE(刪)語(yǔ)句
添加數(shù)據(jù)(INSERT INTO…語(yǔ)句):(即添加表的記錄)
INSERT INTO 表名(字段1,字段2,字段3) values(值,值,值);
舉例:
insert into tab_teacher(name,gender,age,createDate) values('smyh','b',22,now());
注:上方的now()函數(shù)可以調(diào)出當(dāng)前系統(tǒng)的時(shí)間。
然后通過(guò)如下命令進(jìn)行查詢表的所有記錄:
select * from tab_teacher;
其中,通配符“*”表示所有字段,即從tab_teacher這個(gè)表中查所有字段的記錄。
顯示效果如下:
修改數(shù)據(jù)(UPDATE … SET語(yǔ)句):
UPDATE 表名 SET 字段1名=值,字段2名=值,字段3名=值 where 字段名=值;
注:where后面的部分表示修改的條件。修改時(shí),按照字段1、字段2、字段3的先后順序修改。
刪除數(shù)據(jù):(DELETE FROM…語(yǔ)句)
刪除所有記錄:
DELETE FROM 表名;
刪除ID為1的記錄:
DELETE FROM 表名 where id=1;
四、數(shù)據(jù)查詢語(yǔ)言(DRL):
數(shù)據(jù)查詢語(yǔ)言(Data Retrieval Language --DRL):SELECT語(yǔ)句。
在實(shí)際開(kāi)發(fā)中,數(shù)據(jù)查詢語(yǔ)言用的是最多的。我們現(xiàn)在以下面的這張表格為例:
注:實(shí)際開(kāi)發(fā)中,要避免使用通配符"*"(通配符代表所有字段),因?yàn)橄到y(tǒng)要先解析出所有的字段名,將其還原為真實(shí)的名字,然后再進(jìn)行操作。如果記錄數(shù)據(jù)庫(kù)內(nèi)容特別多,會(huì)影響效率。
查詢所有老師的信息:
select * from tab_teacher;
或者:(推薦)
select id,name,gender,age,job,createDate from tab_teacher;
在沒(méi)有表被引用的情況下,允許指定DUAL作為一個(gè)假的表名:
DUAL是虛擬表。也就是說(shuō),表中沒(méi)有這個(gè)數(shù)據(jù),但是要執(zhí)意使用sql語(yǔ)句,系統(tǒng)就會(huì)用這個(gè)虛擬表來(lái)滿足你。舉例效果如下:
查詢ID為2的老師信息:
select * from tab_teacher where id=2;
查詢職業(yè)為空的老師信息:
select * from tab_teacher where job is null;
注意,上方代碼中,字段為空用“job is null”來(lái)表示,而不是“job=null”。
查詢ID為2的老師的姓名和性別:
select name,gender from tab_teacher where id=2;
查詢性別為女和指定日期的老師信息:
select $ from tab_teacher where gender='w' and ceateDate='2014-10-14';
注:并且用“and”,或用“or”。
查詢性別為男或者ID小于2的老師:
select * from tab_teacher where gender='m' or id<2;
查詢姓名的最后一個(gè)字符為“e”的老師:(關(guān)鍵字:like '%+指定字符')
select * from tab_teacher where name like '%e';
查詢姓名以指定字符開(kāi)頭的老師:
select * from tab_teacher where name like 's%';
查詢姓名中包含“m”的老師:
select * from tab_teacher where name like '%m%';
查詢所有老師信息,并按日期降序或者升序排列:(ORDER BY 字段,+默認(rèn)為升序:ASC/降序:DESC)
升序:
select * from tab_teacher order by createDate;
注:最后一個(gè)單詞ASC可寫(xiě)可不寫(xiě),因?yàn)槟J(rèn)為升序。
降序:
select * from tab_teacher order by createDate desc;
多個(gè)排序條件:(當(dāng)?shù)谝粋€(gè)條件相同時(shí),按照第二個(gè)條件排序)
例如:上面圖片的排序中,是按照日期降序排序的,但是id為2和id為3的日期相同,這兩條記錄按照默認(rèn)順序排序。
舉例:現(xiàn)在排序的第一條件為:日期降序,第二條件為:年齡降序。多個(gè)排序條件用逗號(hào)隔開(kāi)。命令為:
tab_teacher createDate ,age ;
按性別分組查詢男女老師的人數(shù)(GROUP BY ):
gender,(gender) tab_teacher gender;
上面的命令表示,查找gender這個(gè)字段;并計(jì)算gender有多少個(gè)(count(gender));然后按照gender里的內(nèi)容將個(gè)數(shù)進(jìn)行分組(group by gender)。
問(wèn)題:我覺(jué)得應(yīng)該是先分組,再查詢性別,再數(shù)性別的個(gè)數(shù)。
注:這里面用到了count()這個(gè)內(nèi)置的函數(shù)。關(guān)于count()這個(gè)聚合函數(shù),將在下一篇文章中講到。
正確的效果和錯(cuò)誤的效果如下:
按性別分組,查詢出女老師人數(shù)的總數(shù):
gender,(gender) tab_teacher gender gender;
這里在上一個(gè)命令的基礎(chǔ)上,增加了一個(gè)關(guān)鍵字:having。having關(guān)鍵字專門用來(lái)在分組之后添加的條件。意思是:先求總數(shù),然后進(jìn)行分組,然后再?gòu)姆纸M里找到字段等于“m”的個(gè)數(shù)。注:不能用where作為關(guān)鍵字,因?yàn)閣here是加在分組之前的條件。
顯示效果如下:
注:這種寫(xiě)法操作繁瑣,效率較低,having語(yǔ)句盡量少用,可以用其他語(yǔ)句代替,例如:
gender,(gender) tab_teacher gender;
效果是一樣的。
查詢表的總記錄數(shù):
方式一:(不推薦)
() tab_teacher;
方式二:(使用主鍵的方式查詢)
(id) tab_teacher;
方式一將空記錄也包含進(jìn)來(lái)了。所以采用方式二,因?yàn)橹麈I唯一,且不能為空,此時(shí)id總數(shù)則代表總記錄數(shù)。
別名的用法:
使用別名查詢表的總記錄數(shù):
select count(id) as counts from tab_teacher;
不用別名和用別名的效果對(duì)比如下:(命令中的"as"可以省略)
使用別名來(lái)代替表的名字:
舉例:將表的名字起為t。
t.name,t.age tab_teacher t;
當(dāng)表名比較長(zhǎng),或者同時(shí)有多個(gè)表存在時(shí),用別名就顯得非常方便了。
查詢老師記錄的前三條(從0位置開(kāi)始找出3條):(非常有用)
tab_teacher limit ,;
命令解釋:limit后面有兩個(gè)參數(shù):第一個(gè)參數(shù)是起始位置,第二個(gè)參數(shù)是偏移量。聲明:第一條記錄的id不管為多少,索引位置都是0。
注:這種分頁(yè)查詢方式非常有用,例如使用百度搜索時(shí),告訴你總記錄數(shù),但是會(huì)分頁(yè)顯示。
五、事務(wù)控制語(yǔ)言(TCL):
事務(wù)控制語(yǔ)言:Transaction Control Language--TCL。如COMMIT,ROLLBACK語(yǔ)句。
1、事務(wù):
事務(wù)(Transaction)的概念:事務(wù)(Transaction)是訪問(wèn)并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。在關(guān)系數(shù)據(jù)庫(kù)中,一個(gè)事務(wù)可以是一條SQL語(yǔ)句,一組SQL語(yǔ)句或整個(gè)程序。
事務(wù)的屬性:原子性(atomicity)、一致性(consistency)、隔離性(isolation)、持續(xù)性(durability)。這四個(gè)屬性通常稱為ACID特性。
事務(wù)的特點(diǎn):事務(wù)就是對(duì)數(shù)據(jù)庫(kù)的多步操作,要么一起成功,要么一起失敗。
總結(jié):事務(wù)就是可以把多步操作看成一個(gè)整體,這個(gè)整體要么一起成功,要么一起失敗。
2、事務(wù)的提交和回滾命令:
設(shè)置默認(rèn)事務(wù)提交方式:(默認(rèn)為true)
設(shè)置事務(wù)提交方式為“手動(dòng)提交”:
autocommit false;
設(shè)置事務(wù)提交方式為“自動(dòng)提交”:
autocommit true;
手動(dòng)提交事務(wù):
;
回滾事務(wù):
rollback;
注:只要還沒(méi)手動(dòng)commit提交,一旦回滾,之前的修改操作都將清零。
注:commit命令和rollback命令只有在提交方式為“手動(dòng)提交”時(shí),才可以用。
3、保存還原點(diǎn)的命令:
當(dāng)數(shù)據(jù)未commit之前,增刪改查的操作都是暫時(shí)保存在內(nèi)存之中的,當(dāng)我們修改操作進(jìn)行到某一步時(shí),可以給這一步設(shè)置一個(gè)還原點(diǎn),方便以后回滾到此還原點(diǎn)(類似于PS當(dāng)中的快照)。
保存還原點(diǎn):
savepoint name_point;
回滾到指定還原點(diǎn):
rollback to name_point;