zoukankan      html  css  js  c++  java
  • 查询数据

    一、单表查询

    1、查询所有字段

    1),SELECT 字段 1,字段 2,字段 3...FROM  表名;

    2),SELECT * FROM  表名;

    2、查询指定字段

    1),SELECT 字段 1,字段 2,字段 3...FROM  表名;

    3、where 条件查询

    1),SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 条件表达式;

    SELECT bookTypeName, bookTypeDesc FROM t_booktype WHERE id=1;

    4、带IN关键字查询

    1),SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] IN (元素 1,元素 2,元素 3);

            SELECT * FROM t_student WHERE age IN (21,23) ;

            SELECT * FROM t_student WHERE age NOT BETWEEN 21 AND 24 ;

    5、带 BETWEENAND 的范围查询

    1),SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] BETWEEN 取值 1AND 取值 2;

            SELECT * FROM t_student WHERE age NOT BETWEEN 21 AND 24;

    6、带like的模糊查询

    1),SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] LIKE ‘字符串’;

    “%”代表任意字符;

    “_” 代表单个字符;

            SELECT * FROM t_student WHERE stuName LIKE '%张三_';

    7、空值查询

    1),SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 IS[NOT] NULL;

    SELECT * FROM t_student WHERE sex IS NULL;

    8、带and或or的多条件查询

    1),SELECT 字段 1,字段 2...FROM 表名 WHERE 条件表达式 1AND 条件表达式 2[...AND 条件表达式 n]

    SELECT * FROM t_student WHERE gradeName='一年级' AND age=23

    2),SELECT 字段 1,字段 2...FROM 表名 WHERE 条件表达式 1OR 条件表达式 2[...OR 条件表达式 n]

    SELECT * FROM t_student WHERE gradeName='一年级' OR age=23

    9、DISTINCT 去重复查询

    1),SELECTDISTINCT 字段名 FROM 表名;

    SELECT DISTINCT gradeName FROM t_student;

    10、对查询结果排序

    1),SELECT 字段 1,字段 2...FROM 表名 ORDER BY 属性名 [ASC|DESC]

    SELECT * FROM t_student ORDER BY age ASC; //升序

    SELECT * FROM t_student ORDER BY age DESC; //降序

    11、GROUP BY 分组查询

    1),GROUP BY 属性名 [HAVING 条件表达式][WITH ROLLUP]

    单独使用(毫无意义);

    SELECT * FROM t_student GROUP BY gradeName;

    与 GROUP_CONCAT()函数一起使用

     

    SELECT gradeName,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName;

    与聚合函数一起使用

    SELECT gradeName,COUNT(stuName) FROM t_student GROUP BY gradeName;

    与 HAVING 一起使用(限制输出的结果)

    SELECT gradeName,COUNT(stuName) FROM t_student GROUP BY gradeName HAVING COUNT(stuName)>3;

    与 WITH ROLLUP 一起使用(最后加入一个总和行)

    SELECT gradeName,COUNT(stuName) FROM t_student GROUP BY gradeName WITH ROLLUP;

    SELECT gradeName,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName WITH ROLLUP;

    12、limit分页查询

    1),SELECT 字段 1,字段 2...FROM 表名 LIMIT 初始位置,记录数;

    SELECT * FROM t_student LIMIT 0,5;

    SELECT * FROM t_student LIMIT 5,5;

    SELECT * FROM t_student LIMIT 10,5;

    二、使用聚合函数查询

    1、COUNT()函数

    1),COUNT()函数用来统计记录的条数;

    SELECT COUNT(*) FROM t_grade;

    SELECT COUNT(*) AS total FROM t_grade;//显示表格字段名为total

    2),与 GOUPE BY 关键字一起使用;

    SELECT stuName,COUNT(*) FROM t_grade GROUP BY stuName;

    2,SUN()函数

    1),SUM()函数是求和函数;

    SELECT stuName,SUM(score) FROM t_grade WHERE stuName="张三";

    2),与 GOUPE BY 关键字一起使用;

    SELECT stuName,SUM(score) FROM t_grade GROUP BY stuName;

    3,AVG()函数

    1),AVG()函数是求平均值的函数;

    SELECT stuName,AVG(score) FROM t_grade WHERE stuName="张三";

    2),与 GOUPE BY 关键字一起使用;

    SELECT stuName,AVG(score) FROM t_grade GROUP BY stuName;

    4,MAX()函数

    1),MAX()函数是求最大值的函数;

    SELECT stuName,course,MAX(score) FROM t_grade WHERE stuName="张三";

    2),与 GOUPE BY 关键字一起使用;

    SELECT stuName,MAX(score) FROM t_grade GROUP BY stuName;

    5,MIN()函数

    1),MIN()函数是求最小值的函数;

    SELECT stuName,course,MIN(score) FROM t_grade WHERE stuName="张三";

    2),与 GOUPE BY 关键字一起使用;

    SELECT stuName,MIN(score) FROM t_grade GROUP BY stuName;

    三、连接查询

    连接查询是将两个或两个以上的表按照某个条件连接起来,从中选取需要的数据。

    1、内连接查询

    SELECT * FROM t_book,t_bookType;

    2、外连接查询

    1)外连接可以查出某一张表的所有信息

    SELECT 属性名列表 FROM 表名 1LEFT|RIGHTJOIN 表名 2ON 表名 1.属性名 1=表名 2.属性名 2;

    SELECT * FROM t_book,t_bookType WHERE t_book.bookTypeId=t_bookType.id;

    SELECT bookName,author,bookTypeName FROM t_book,t_bookType WHERE t_book.bookTypeId=t_bookType.id;

    SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb,t_bookType tby WHERE tb.bookTypeId=tby.id;

    2)左连接查询

    SELECT * FROM t_book LEFT JOIN t_bookType ON t_book.bookTypeId=t_bookType.id;

    SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb LEFT JOIN t_bookType tby ON tb.bookTypeId=tby.id;

    3)有连接查询

    SELECT * FROM t_book RIGHT JOIN t_bookType ON t_book.bookTypeId=t_bookType.id;

    SELECT tb.bookName,tb.author, tby.bookTypeName FROM t_book tb RIGHT JOIN t_bookType tby ON tb.bookTypeId=tby.id;

    SELECT tb.bookName,tb.author FROM t_book tb RIGHT JOIN t_bookType tby ON tb.bookTypeId=tby.id;

    3、多连接查询

    SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb,t_bookType tby WHERE tb.bookTypeId=tby.id AND tb.price>70;

    四、子查询

    1 、带 In 关键字的子查询

    一个查询语句的条件可能落在另一个 SELECT 语句的查询结果中。

    SELECT * FROM t_book WHERE price>=(SELECT price FROM t_pricelevel WHERE priceLevel=1);

    2 、带比较运算符的子查询

    子查询可以使用比较运算符。

    SELECT * FROM t_book WHERE price>=(SELECT price FROM t_pricelevel WHERE priceLevel>2);

    3 、带 Exists 关键字的子查询

    假如子查询查询到记录,则进行外层查询,否则,不执行外层查询;

    SELECT * FROM t_book WHERE EXISTS (SELECT * FROM t_booktype);

    SELECT * FROM t_book WHERE NOT EXISTS (SELECT * FROM t_booktype);

    4 、带 Any 关键字的子查询

    ANY 关键字表示满足其中任一条件;

    SELECT * FROM t_book WHERE price>= ANY (SELECT price FROM t_pricelevel);

    5、 带 All 关键字的子查询

    ALL 关键字表示满足所有条件

    SELECT * FROM t_book WHERE price>= ALL (SELECT price FROM t_pricelevel);

    五、合并查询结果

    1、UNION

    使用 UNION 关键字是,数据库系统会将所有的查询结果合并到一起,然后去除掉相同的记录;

    SELECT id FROM t_book UNION SELECT id FROM t_booktype;

    2、UNION ALL

    使用 UNION ALL,不会去除掉系统的记录;

    SELECT id FROM t_book UNION ALL SELECT id FROM t_booktype;

    六、为表和字段取别名

    1、为表取别名

    格式: 表名   表的别名

    SELECT * FROM t_book WHERE id=1;

    SELECT * FROM t_book t WHERE t.id=1;

    2、为字段取别名

    格式: 属性名  [AS]  别名

    SELECT t.bookName FROM t_book t WHERE t.id=1;

    SELECT t.bookName bName FROM t_book t WHERE t.id=1;

    SELECT t.bookName AS bName FROM t_book t WHERE t.id=1;

  • 相关阅读:
    606. Construct String from Binary Tree
    696. Count Binary Substrings
    POJ 3255 Roadblocks (次短路)
    POJ 2823 Sliding Window (单调队列)
    POJ 1704 Georgia and Bob (博弈)
    UVa 1663 Purifying Machine (二分匹配)
    UVa 10801 Lift Hopping (Dijkstra)
    POJ 3281 Dining (网络流之最大流)
    UVa 11100 The Trip, 2007 (题意+贪心)
    UVaLive 4254 Processor (二分+优先队列)
  • 原文地址:https://www.cnblogs.com/xiaoyqng/p/8343745.html
Copyright © 2011-2022 走看看