基礎語句練習:
IF(expr1,expr2,expr3):既可以作為表達式用,也可在存儲過程中作為流程控制語句使用
文法:如果 expr1 是TRUE 則 IF()的傳回值為expr2; 否則傳回值則為 expr3。IF() 的傳回值為數字值或字元串值,具體情況視其所在語境而定。
WHERE :用于提取那些滿足指定标準的記錄,類似語言中的if
SET:對已經定義的變量指派的方式,經常與update語句一起使用
文法:UPDATE 表名 SET 列名 = 新值 WHERE 列名稱 = 某值
left join(左聯接):傳回包括左表中的所有記錄和右表中聯結字段相等的記錄 ,類似的還有right join(右聯接) 傳回包括右表中的所有記錄和左表中聯結字段相等的記錄,inner join(等值連接配接) 隻傳回兩個表中聯結字段相等的行
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB1UMnRkT3tmeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyAjN1ITMwcTM0ADNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- mysql實戰三:交換工資
建立一個salary表,如下所示:
create table salary(
-> id INT NOT NULL AUTO_INCREMENT,
-> name VARCHAR(100) NOT NULL,
-> sex VARCHAR(100)NOT NULL,
-> salary INT NOT NULL,
-> PRIMARY KEY (id)
-> )ENGINE = InnoDB DEFAULT CHARSET =utf8;
注:箭頭(->)隻是提示符
插入資料:
要求:交換所有的f和m的值,并使用一個更新查詢語句,且沒有中間表.
語句如下:
Update salary set sex = if (sex=’m’,’f’,’m’);
結果如圖:可以看到f和m已經交換而其他沒有改變
- mysql實戰四:組合兩張表
在資料庫中建立表1和表2,并各插入三行資料,示例如下:
表1:
create table Person(
->Personid int not null,
->FirstName VARCHAR(255) NOT NULL,
->LasrName VARCHAR(255) NOT NULL,
->PRIMARY KEY(Personid)
->)ENGINE = InnoDB DEFAULT CHARSET =UTF8;
插入三組資料後:
表2:
create table Address(
->Addressid INT,
->Personid INT NOT NULL,
->City VARCHAR(255) NOT NULL,
->State VARCHAR(255) NOT NULL,
->PRIMARY KEY(Addressid)
->)ENGINE = InnoDB DEFAULT CHARSET =UTF8;
插入三組收據後:
要求:無論person是否有位址資訊,都需要基于上述兩表提供person的以下資訊:FirstName, LastName, City,State
代碼如下:
mysql> select person.FirstName,person.LasrName,address.City,address.State
-> from person left join address on person.Personid=address.Personid;
注:我的lastName前面寫成了lasrName
結果如下:可以看到下面的表顯示FirstName,LastName, City,State
- mysql實戰五:删除重複的郵箱
編寫一個sql查詢,來删除email表中所有重複的電子郵箱,且删除的郵箱隻保留id最小的那個.
email表如下:
代碼如下:
delete t1 from email t1, email t2 where t1.Email=t2.Email AND t1.Id>t2.Id;
結果如下: