天天看點

mysql基礎實戰第二部分

基礎語句練習:

IF(expr1,expr2,expr3):既可以作為表達式用,也可在存儲過程中作為流程控制語句使用

文法:如果 expr1 是TRUE 則 IF()的傳回值為expr2; 否則傳回值則為 expr3。IF() 的傳回值為數字值或字元串值,具體情況視其所在語境而定。

WHERE :用于提取那些滿足指定标準的記錄,類似語言中的if

SET:對已經定義的變量指派的方式,經常與update語句一起使用

文法:UPDATE 表名 SET 列名 = 新值 WHERE 列名稱 = 某值

left join(左聯接):傳回包括左表中的所有記錄和右表中聯結字段相等的記錄 ,類似的還有right join(右聯接) 傳回包括右表中的所有記錄和左表中聯結字段相等的記錄,inner join(等值連接配接) 隻傳回兩個表中聯結字段相等的行

mysql基礎實戰第二部分
  • 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;
    注:箭頭(->)隻是提示符
           
mysql基礎實戰第二部分

插入資料:

mysql基礎實戰第二部分

要求:交換所有的f和m的值,并使用一個更新查詢語句,且沒有中間表.

語句如下:

Update salary set sex = if (sex=’m’,’f’,’m’);
           

結果如圖:可以看到f和m已經交換而其他沒有改變

mysql基礎實戰第二部分
  • 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;
           
mysql基礎實戰第二部分

插入三組資料後:

mysql基礎實戰第二部分

表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;
           
mysql基礎實戰第二部分

插入三組收據後:

mysql基礎實戰第二部分

要求:無論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基礎實戰第二部分
  • mysql實戰五:删除重複的郵箱

編寫一個sql查詢,來删除email表中所有重複的電子郵箱,且删除的郵箱隻保留id最小的那個.

email表如下:

mysql基礎實戰第二部分

代碼如下:

delete t1 from email t1, email t2 where t1.Email=t2.Email AND t1.Id>t2.Id;
           

結果如下:

mysql基礎實戰第二部分

繼續閱讀