天天看點

MySQL資料庫學習筆記(三)----基本的SQL語句

【正文】

主要内容:

一、cmd指令行的常用指令

二、資料定義語言(ddl)

三、資料操縱語言(dml)

四、資料查詢語言(drl)

五、事務控制語言(tcl)

一、cmd指令行的常用指令:

當我們使用mysql 5.5 command line client這個用戶端登陸時,隻能登陸root使用者。如果今後建立了别的使用者,就很麻煩了,是以我們不用mysql 5.5 command line client這個用戶端,而是直接使用cmd。

登入mysql資料庫:

因為在這之前安裝mysql的時候,已經将環境變量配置好了,是以可以直接在cmd中輸入如下指令進行登陸:

緊接着輸入密碼就行了。

上方代碼中,-u表示username,即使用者名。-p表示password,即密碼。

MySQL資料庫學習筆記(三)----基本的SQL語句

檢視資料庫: 

使用資料庫:(此指令後面可以不加分号)

檢視目前資料庫表:

注:指令後面的分号表示結束。

MySQL資料庫學習筆記(三)----基本的SQL語句

注:上圖中,先輸入show databases;顯示出了四個庫,前三個表示系統的庫,第四個test是系統自帶的測試庫。然後我們使用test這個資料庫,顯示:database changed,表示目前的資料庫處于激活狀态。緊接着可以對其進行其他相關的指令了。這裡我們輸入show tables,可以看到test這個資料庫的表裡面是空的。

是以要開始建表了,于是就涉及到了sql語句。

sql全稱是:結構化查詢語言(structured query language)。既然是語言,就涉及到了文法。下面來看一下常見的文法。

資料定義語言:data definition language。如create, drop,alter等語句。需要注意的是,資料庫中的指令不區分大小寫。

建立資料庫(create database語句):

【舉例】建立資料庫,命名為mydb:

注:如若要删除資料庫,将“create”改為“drop”即可。

建立表(create table語句):

【舉例】建立一個名為teacher的表:

MySQL資料庫學習筆記(三)----基本的SQL語句
MySQL資料庫學習筆記(三)----基本的SQL語句

上面所有的代碼其實是同一行。

定義字段的格式:字段的名字+字段的類型+屬性

注:每個字段定義完後,要用逗号隔開,最後一個字段沒有逗号。

一般情況下,每個表都要有一個主鍵。

指令運作的效果如下:

MySQL資料庫學習筆記(三)----基本的SQL語句

檢視表結構:

效果如下:

MySQL資料庫學習筆記(三)----基本的SQL語句

需要注意的是:主鍵是用來唯一代表一條記錄的字段(主鍵值必須是唯一)

删除表(drop table語句):

注:drop table 語句會删除該的所有記錄及表結構

修改表結構(alter table語句):(假設表名為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)--修改表列名(改名字和類型)

舉例:将主鍵修改為自動增長:alter table tab_teacher change id id int auto_increment;

三、資料操縱語言(dml):

資料操縱語言:data manipulation language。如:insert(增), update(改), delete(删)語句

添加資料(insert into…語句):(即添加表的記錄)

舉例:

注:上方的now()函數可以調出目前系統的時間。

然後通過如下指令進行查詢表的所有記錄:

其中,通配符“*”表示所有字段,即從tab_teacher這個表中查所有字段的記錄。

顯示效果如下:

MySQL資料庫學習筆記(三)----基本的SQL語句

修改資料(update … set語句):

注:where後面的部分表示修改的條件。修改時,按照字段1、字段2、字段3的先後順序修改。

删除資料:(delete from…語句)

删除所有記錄:

删除id為1的記錄:

四、資料查詢語言(drl):

資料查詢語言(data retrieval language --drl):select語句。

在實際開發中,資料查詢語言用的是最多的。我們現在以下面的這張表格為例:

MySQL資料庫學習筆記(三)----基本的SQL語句

注:實際開發中,要避免使用通配符"*"(通配符代表所有字段),因為系統要先解析出所有的字段名,将其還原為真實的名字,然後再進行操作。如果記錄資料庫内容特别多,會影響效率。

查詢所有老師的資訊:

或者:(推薦)

在沒有表被引用的情況下,允許指定dual作為一個假的表名:

dual是虛拟表。也就是說,表中沒有這個資料,但是要執意使用sql語句,系統就會用這個虛拟表來滿足你。舉例效果如下:

MySQL資料庫學習筆記(三)----基本的SQL語句

查詢id為2的老師資訊:

查詢職業為空的老師資訊:

注意,上方代碼中,字段為空用“job is null”來表示,而不是“job=null”。

查詢id為2的老師的姓名和性别:

MySQL資料庫學習筆記(三)----基本的SQL語句

查詢性别為女和指定日期的老師資訊:

注:并且用“and”,或用“or”。

查詢性别為男或者id小于2的老師:

MySQL資料庫學習筆記(三)----基本的SQL語句

查詢姓名的最後一個字元為“e”的老師:(關鍵字:like '%+指定字元')

查詢姓名以指定字元開頭的老師:

查詢姓名中包含“m”的老師:

查詢所有老師資訊,并按日期降序或者升序排列:(order by 字段,+預設為升序:asc/降序:desc)

升序:

注:最後一個單詞asc可寫可不寫,因為預設為升序。

降序:

MySQL資料庫學習筆記(三)----基本的SQL語句

多個排序條件:(當第一個條件相同時,按照第二個條件排序)

例如:上面圖檔的排序中,是按照日期降序排序的,但是id為2和id為3的日期相同,這兩條記錄按照預設順序排序。

舉例:現在排序的第一條件為:日期降序,第二條件為:年齡降序。多個排序條件用逗号隔開。指令為:

按性别分組查詢男女老師的人數(group by ):

上面的指令表示,查找gender這個字段;并計算gender有多少個(count(gender));然後按照gender裡的内容将個數進行分組(group by gender)。

問題:我覺得應該是先分組,再查詢性别,再數性别的個數。

注:這裡面用到了count()這個内置的函數。關于count()這個聚合函數,将在下一篇文章中講到。

正确的效果和錯誤的效果如下:

MySQL資料庫學習筆記(三)----基本的SQL語句

按性别分組,查詢出女老師人數的總數:

這裡在上一個指令的基礎上,增加了一個關鍵字:having。having關鍵字專門用來在分組之後添加的條件。意思是:先求總數,然後進行分組,然後再從分組裡找到字段等于“m”的個數。注:不能用where作為關鍵字,因為where是加在分組之前的條件。

MySQL資料庫學習筆記(三)----基本的SQL語句

注:這種寫法操作繁瑣,效率較低,having語句盡量少用,可以用其他語句代替,例如:

效果是一樣的。

查詢表的總記錄數:

方式一:(不推薦)

方式二:(使用主鍵的方式查詢)

方式一将空記錄也包含進來了。是以采用方式二,因為主鍵唯一,且不能為空,此時id總數則代表總記錄數。

别名的用法:

使用别名查詢表的總記錄數:

不用别名和用别名的效果對比如下:(指令中的"as"可以省略)

MySQL資料庫學習筆記(三)----基本的SQL語句

使用别名來代替表的名字:

舉例:将表的名字起為t。

MySQL資料庫學習筆記(三)----基本的SQL語句

當表名比較長,或者同時有多個表存在時,用别名就顯得非常友善了。

查詢老師記錄的前三條(從0位置開始找出3條):(非常有用)

指令解釋:limit後面有兩個參數:第一個參數是起始位置,第二個參數是偏移量。聲明:第一條記錄的id不管為多少,索引位置都是0。

注:這種分頁查詢方式非常有用,例如使用百度搜尋時,告訴你總記錄數,但是會分頁顯示。

五、事務控制語言(tcl):

事務控制語言:transaction control language--tcl。如commit,rollback語句。

1、事務:

事務(transaction)的概念:事務(transaction)是通路并可能更新資料庫中各種資料項的一個程式執行單元(unit)。在關系資料庫中,一個事務可以是一條sql語句,一組sql語句或整個程式。

事務的屬性:原子性(atomicity)、一緻性(consistency)、隔離性(isolation)、持續性(durability)。這四個屬性通常稱為acid特性。

事務的特點:事務就是對資料庫的多步操作,要麼一起成功,要麼一起失敗。

總結:事務就是可以把多步操作看成一個整體,這個整體要麼一起成功,要麼一起失敗。

2、事務的送出和復原指令:

設定預設事務送出方式:(預設為true)

設定事務送出方式為“手動送出”:

設定事務送出方式為“自動送出”:

手動送出事務:

復原事務:

注:隻要還沒手動commit送出,一旦復原,之前的修改操作都将清零。

注:commit指令和rollback指令隻有在送出方式為“手動送出”時,才可以用。

3、儲存還原點的指令:

當資料未commit之前,增删改查的操作都是暫時儲存在記憶體之中的,當我們修改操作進行到某一步時,可以給這一步設定一個還原點,友善以後復原到此還原點(類似于ps當中的快照)。

儲存還原點:

復原到指定還原點: