国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL基本查詢例子2

2024-07-24 12:36:11
字體:
來源:轉載
供稿:網友
  注:本博文基于上一篇博文中的表進行查詢,上篇博文:MySQL基本查詢示例(1)。
 
  1、查詢fruits表中每個s_id對應的所有f_name值
  <!--以組來進行緊湊-->
  mysql> select s_id,group_concat(f_name) as name from fruits group by s_id having count(f_name) > 1;

  2、統計相同s_id值的行有多少?
  mysql> select s_id,count(*) as total
      -> from fruits
      -> group by s_id with rollup;
  MySQL基本查詢示例(2)
 
  注:with rollup的作用是將s_id分組后的和再進行相加,統計出來的總數,也就是16。
 
  3、創建一個新表并插入數據
  <!--創建新表-->
  mysql> create table orderitems
      -> (
      -> o_num int not null,
      -> o_item int not null,
      -> f_id char(10) not null,
      -> quantity int not null,
      -> item_price decimal(8,2) not null,
      -> primary key(o_num,o_item)
      -> );
  <!--插入數據-->
  mysql> insert into orderitems(o_num,o_item,f_id,quantity,item_price)
      -> values(30001,1,'a1',10,'5.2'),
      -> (30001,2,'b2',3,'7.6'),
      -> (30001,3,'bs1',5,'11.2'),
      -> (30001,4,'bs2',15,'9.2'),
      -> (30002,1,'b3',2,'20.0'),
      -> (30003,1,'c0',100,10),
      -> (30004,1,'o2',50,'2.50'),
      -> (30005,1,'c0',5,'10'),
      -> (30005,2,'b1',10,'8.99'),
      -> (30005,3,'a2',10,'2.2'),
      -> (30005,4,'m1',5,'14.99');

  4、查詢同一個o_num列的quantity(數量)和item_price(價格)相乘結果大于100的行
  mysql> select o_num,SUM(quantity*item_price) as total from orderitems
      -> group by o_num having total > 100 order by total;
  5、limit——限制返回的行數
  限制1:
  <!--只顯示表中的前四行-->

  限制2:
  <!--從第四行開始,顯示后面3行-->
  mysql> select * from fruits limit 4,3;
 
  6、查詢每個o_num對應的f_id有幾個
  mysql> select o_num,count(f_id) as items_total
      -> from orderitems
      -> group by o_num;

  7、查詢o_num為30005的quantity(數量)有多少
  mysql> select sum(quantity) as items_total
      -> from orderitems
      -> where o_num = 30005;
 
  8、查詢s_id為103的f_price的平均數是多少(s_id的平均價格是多少)
  mysql> select avg(f_price) as avg_price from fruitss where s_id = 103;
  返回的結果如下:
 
  9、查詢每個s_id對應的平均價格(f_price)是多少?
  mysql> select s_id,avg(f_price) as avg_price from fruits group by s_id;
  返回的結果如下:
 
  10、查詢每個s_id中f_price值最大的行是哪個?
  mysql> select s_id, max(f_price) as max_price from fruits group by s_id;
  返回的結果如下:
 
  同理,若要查看最小的行,只需要將max換為min即可。
 
  11、查詢每個f_price值最大的值及其所對應的s_id、f_name。
  mysql> select s_id,f_price,f_name from fruits
      -> where f_price in(select max(f_price) from fruits group by s_id);
 
  12、再次創建所需表并插入數據
  <!--創建表-->
  mysql> create table suppliers
      -> (
      -> s_id int not null auto_increment,
      -> s_name char(50) not null,
      -> s_city char(50) null,
      -> s_zip char(10) null,
      -> s_call char(50) not null,
      -> primary key(s_id)
      -> );
  mysql> create table orders
      -> (
      -> o_num int not null auto_increment,
      -> o_date datetime not null,
      -> c_id int not null,
      -> primary key(o_num)
      -> );
  <!--插入數據-->
  mysql> insert into suppliers(s_id,s_name,s_city,s_zip,s_call)
      -> values(101,'FastFruit Inc.','tianjin','300000','48075'),
      -> (102,'LT Supplies','chongqing','400000','44333'),
      -> (103,'acme','shanghai','200000','90046'),
      -> (104,'fnk inc.','zhongshan','528437','11111'),
      -> (105,'good set','taivuang','030000','22222'),
      -> (106,'just eat ours','beijing','010','45678'),
      -> (107,'dk inc.','zhengzhou','450000','33332');
  mysql> insert into orders(o_num,o_date,c_id)
      -> values(30001,'2008-09-01',10001),
      -> (30002,'2008-09-12',10003),
      -> (30003,'2008-09-30',10004),
      -> (30004,'2008-10-03',10005),
      -> (30005,'2008-10-08',10001);
  13、表聯接類型的概念
  在進行接下來的查詢,這里有必要說一下多表查詢的相關概念。
 
  1)內聯接
  內聯接(inner join)是最常見的一種聯接方式,只返回兩個數據集合之間匹配關系的行,將位于兩個互相交叉的數據集合中重疊部分以內的數據行聯接起來。
 
  內聯接使用比較運算符進行表間某些列數據的比較操作,并列出這些表中與聯接相匹配的數據行。
 
  2)外聯接
  外聯接(outer join)是對內聯接的擴充,除了將兩個數據集合中重復部分以內的數據行聯接起來之外,還可以根據要求返回左側或右側表中非匹配的數據或全部的數據。
 
  外聯接還可以分為以下幾種:
 
  左外聯接(left join或left outer join)的結果包括左表的所有行,如果左表的某一行在右表中沒有匹配行,則右表返回空值,否則返回相應值。
 
  右外聯接(right join或right outer join)是左外聯接的反向聯接,將返回右表的所有行,如果右表的某一行在左表中沒有匹配行,則左表返回空值,否則返回相應值。
 
  全聯接(full join 或full outer join)將返回左表和右表中的所有行,當某一行在另一個表中沒有匹配行時,另一個表返回空值,否則返回相應值。
 
  14、內聯接查詢,將兩個表的指定列生成一個新表
  mysql> select suppliers.s_id,s_name,f_name,f_price from fruits inner join suppliers on fruits.s_id = suppliers.s_id;
  返回的結果如下:
 
  15、左外聯接查詢示例
  mysql> select customers.c_id,orders.o_num from customers
      -> left outer join orders on customers.c_id = orders.c_id
      -> ;
  返回結果如下:

  16、內聯接查詢時指定其他條件
  mysql> select customers.c_id,orders.o_num from customers
      -> left outer join orders on customers.c_id = orders.c_id
      -> ;
 
  ———————— 本文至此結束,感謝閱讀 ————————、

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图们市| 陆河县| 宁河县| 兴城市| 合阳县| 韩城市| 闽清县| 彭州市| 赤峰市| 方正县| 铜陵市| 厦门市| 台中市| 金塔县| 西贡区| 德江县| 新津县| 云林县| 华容县| 桂阳县| 鞍山市| 射洪县| 花莲县| 阜康市| 巴彦县| 凤城市| 高清| 霍林郭勒市| 泌阳县| 大足县| 古浪县| 论坛| 三门峡市| 滁州市| 平安县| 桓台县| 榆中县| 巴里| 永宁县| 突泉县| 胶南市|