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;