mysql面試題練習01

1.數學函數

有以下表和數組
把num值處於[20,29]之間,改成20
num值處於[30,39]之間的,改成30

 

UPDATE mian SET num = FLOOR(num/10)*10 WHERE num BETWEEN 20 AND 39;

2.字符串

把good表中商品名爲'諾基亞xxxx'的商品,改成'HTCxxxx',mysql

提示:大膽的把列當作變量,參與運算,甚至調用函數來處理 .sql

substring(),concat()數組

SELECT goods_id,goods_name,CONCAT('htc',SUBSTRING(goods_name,4)) FROM goods WHERE goods_name LIKE'諾基亞%';

3.where-having-group綜合練習題

要求:查詢出2門及2門以上不及格者的平均成績函數

SELECT * FROM result; SELECT *,AVG(score) AS pjf FROM result GROUP BY NAME; -- 顯示全部人的平均分

SELECT *,score < 60 FROM result; -- 比較運算

SELECT NAME,SUM(score < 60) AS gk,AVG(score) AS pj FROM result GROUP BY NAME; -- 統計每一個人的掛科數

-- 最終的查詢語句
SELECT NAME,SUM(score < 60) AS gk,AVG(score) AS pj FROM result GROUP BY NAME HAVING gk>=2;

4.鏈接查詢

根據給出的表結構按要求寫出SQL語句。
Match 賽程表
字段名稱 字段類型 描述
matchID int 主鍵
hostTeamID int 主隊的ID
guestTeamID int 客隊的ID
matchResult varchar(20) 比賽結果,如(2:0)
matchTime date 比賽開始時間
Team 參賽隊伍表
字段名稱 字段類型 描述
teamID int 主鍵
teamName varchar(20) 隊伍名稱
Match的hostTeamID與guestTeamID都與Team中的teamID關聯
查出 2006-6-1 到2006-7-1之間舉行的全部比賽,而且用如下形式列出:
拜仁  2:0 不來梅 2006-6-21

mysql> select * from m;
+-----+------+------+------+------------+
| mid | hid  | gid  | mres | matime     |
+-----+------+------+------+------------+
|   1 |    1 |    2 | 2:0  | 2006-05-21 |
|   2 |    2 |    3 | 1:2  | 2006-06-21 |
|   3 |    3 |    1 | 2:5  | 2006-06-25 |
|   4 |    2 |    1 | 3:2  | 2006-07-21 |
+-----+------+------+------+------------+
4 rows in set (0.00 sec)

mysql> select * from t;
+------+----------+
| tid  | tname    |
+------+----------+
|    1 | 國安     |
|    2 | 申花     |
|    3 | 公益聯隊 |
SELECT m.mid,t1.`tname` AS hname,m.`mres`,t2.`tname` AS gname, m.`matime` FROM m INNER JOIN t AS t1 ON m.`hid` = t1.`tid` INNER JOIN t AS t2 ON m.`gid` = t2.`tid` WHERE m.`matime` BETWEEN '2006-06-01' AND '2006-07-01';

 

5.子查詢和合並

A表:
+------+------+
| id   | num  |
+------+------+
| a    |    5 |
| b    |   10 |
| c    |   15 |
| d    |   10 |
+------+------+

B表:
+------+------+
| id   | num  |
+------+------+
| b    |    5 |
| c    |   15 |
| d    |   20 |
| e    |   99 |
+------+------+


要求查詢出如下效果:
+------+----------+
| id   |    num   |
+------+----------+
| a    |        5 |
| b    |       15 |
| c    |       30 |
| d    |       30 |
| e    |       99 |
+------+----------+
SELECT id,SUM(num) FROM (SELECT * FROM a UNION ALL SELECT * FROM b) AS temp GROUP BY id;

相關文章
相關標籤/搜索