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;

  • 相关阅读:
    Python3基础 keyword 查看所有的关键字
    Python3基础 print 格式化输出 %% 输出%
    Python3基础 print 格式化输出 %f %d 保留浮点数的位数 整数的位数不够零来凑
    Python3基础 for-else break、continue跳出循环示例
    Python3基础 global 在函数内部对全局变量进行修改
    Python3基础 continue while循环示例
    Python3基础 def 函数要先定义再调用
    Python3基础 输出逐行递增的小星星
    Python3基础 九九乘法表
    C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法
  • 原文地址:https://www.cnblogs.com/xiaoyqng/p/8343745.html
Copyright © 2011-2022 走看看