单表查询

  • 查询表中的所有内容
SELECT * FROM 表名;
  • 按照规定的字段进行查询
SELECT 字段名1 [,字段名2] [,字段名3] FROM 表名;

例如:

SELECT f_name, f_price FROM fruits;
  • 按照规定范围进行查询
SELECT 字段名1 [,字段名2] [,字段名3] FROM 表名 WHERE 条件;

SELECT 字段名1 [,字段名2] [,字段名3] FROM 表名 WHERE 字段名 IN 条件;

例如:

SELECT f_name, f_price FROM fruits WHERE f_price = 10.2;

SELECT f_name, f_price FROM fruits WHERE f_price < 10;
SELECT s_id,f_name, f_price FROM fruits WHERE s_id [NOT] IN (101,102) ORDER BY f_name;

SELECT f_name, f_price FROM fruits WHERE f_price [NOT] BETWEEN 2.00 AND 10.20;

SELECT f_id, f_name FROM fruits WHERE f_name LIKE '%g%';

SELECT c_id, c_name,c_email FROM customers WHERE c_email IS [NOT] NULL;

单列排序

  • 默认为升序排序,如果在某个字段名后加上 DESC ,表示该字段名按照降序排序
  • 如果按照多个字段名进行排序,则按照顺序依次进行排序
//直接按照字段名进行排序
SELECT * FROM [WHERE 条件] ORDER BY 字段名;

SELECT * FROM 表名 WHERE 字段名 IN 条件 ORDER BY 字段名;

//查询fruits表,先按f_price降序排序,再按f_name字段升序排序,SQL语句如下:
SELECT f_price, f_name FROM fruits ORDER BY f_price DESC, f_name;

按照分组进行排序

//根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息,SQL语句如下:
SELECT s_id,COUNT(f_name) FROM fruits  GROUP BY s_id HAVING COUNT(f_name)>1;
-
//根据s_id对fruits表中的数据进行分组,显示水果种类大于1的分组信息,并按照水果的种类排序,SQL语句如下:
SELECT s_id,COUNT(f_name) FROM fruits GROUP BY s_id HAVING COUNT(f_name)>1 ORDER BY COUNT(f_name);

查询前几行

  • 使用LIMIT
//查询fruits表的前4行
SELECT * From fruits LIMIT 4;

 

//在fruits表中,使用LIMIT子句,返回从第5个记录开始的,行数长度为3的记录,SQL语句如下:
SELECT * From fruits LIMIT 3 OFFSET 4;

使用集合函数查询

COUNT()函数统计数据表中包含的记录行的总数,或者根据查询结果返回的列中包含的数据行数。其使用方法有两种:

  • COUNT(*) 计算表中总的行数,不管某列有数值或者为空值
SELECT COUNT(*) AS cust_num FROM customers;
  • COUNT(字段名)计算指定列下总的行数,计算时将忽略字段值为空值的行
SELECT COUNT(c_email) AS email_num FROM customers;

 

Questions:

【例8.31】在fruits表中,使用COUNT()函数统计不同的s_id的水果种类,然后计算每个分组中的总记录数。
SELECT s_id,COUNT(f_name)
FROM fruits 
GROUP BY s_id;

 

//在fruits表中查询不同s_id的水果价格总和
SELECT s_id,SUM(f_price) AS price_total
     FROM fruits
     GROUP BY s_id;

//在fruits表中,查询s_id=103的供应商的水果价格的平均值
SELECT AVG(f_price) AS avg_price
     FROM fruits
     WHERE s_id = 103;

//在fruits表中,查询每一个供应商的水果价格的平均值
SELECT s_id,AVG(f_price) AS avg_price
      FROM fruits
      GROUP BY s_id;

//在fruits表中查找市场上价格最高的水果
SELECT MAX(f_price) AS max_price FROM fruits;

//在fruits表中查找市场上水果的最低价格
SELECT MIN(f_price) AS min_price FROM fruits;

//在fruits表中查找不同供应商提供的价格最高的水果
SELECT s_id, MAX(f_price) AS max_price
      FROM fruits
GROUP BY s_id;

//在fruits表中查找不同供应商提供的价格最低的水果,SQL语句如下:
SELECT s_id, MIN(f_price) AS min_price
      FROM fruits
GROUP BY s_id;

 

连接查询

  • 通过不同表中的相同字段建立联系,输出不同表中的不同字段
/*
fruits表和suppliers表中都有相同数据类型的字段s_id,两个表通过s_id字段建立联系。接下来从fruits表中查询f_name、f_price字段,从suppliers表中查询s_id、s_name,SQL语句如下:
*/
SELECT suppliers.s_id, s_name,f_name, f_price
     FROM fruits ,suppliers
     WHERE fruits.s_id = suppliers.s_id;

 

【例8.42】在fruits表和suppliers表之间使用INNER JOIN语法进行内连接查询,SQL语句如下:
SELECT suppliers.s_id, s_name,f_name, f_price
       FROM fruits INNER JOIN suppliers
       ON fruits.s_id = suppliers.s_id;

 

# 查询f_id=’a1’的水果供应商提供的其他水果种类,SQL语句如下:
SELECT f1.f_id, f1.f_name
        FROM fruits AS f1, fruits AS f2
        WHERE f1.s_id = f2.s_id AND f2.f_id = 'a1';  # s.id 指供应商

 

 

 

子查询

合并查询结果

为表和字段取别名

使用正则表达式查询

Comments are closed

2020年十月
« 9月    
 1234
567891011
12131415161718
19202122232425
262728293031