MySQL 系统学习系列 - SQL 语句 DQL 语句的使用(1)《MySQL系列篇-03》

SQL 语句 DQL

数据库表常见查询语句

1. 全部查询

  • # 查询全部 [SELECT * FROM 表名]
      SELECT * FROM stu; # 查询stu表中的所有列
      
    # 再 SELECT 语句后加上 distinct 语句,表示去重查询
      SELECT distinct `name` FROM stu; # 查询stu表中的所有name列(去重)
    

2. 条件查询

  • MySQL 系统学习系列 - SQL 语句 DQL 语句的使用(1)《MySQL系列篇-03》_第1张图片

  • # 条件查询 [SELECT * FROM 表名 FROM WHERE 条件]
        # 比较运算符
          SELECT * FROM stu FROM WHERE age<7;
          SELECT `name` FROM stu WHERE ag>=7;
          ......
    
  • # 逻辑运算
    	SELECT * FROM stu WHERE age>=7 and age<18;
        ........
    
  • # 范围查询 [非连续与连续查询]
      # 非连续 SELECT * FROM 表名 WHERE 条件列 IN (某一个范围逗号隔开)
        SELECT * FROM stu WHERE age IN (10,18,19); # 表示查询年龄为10、18、19的学生信息
        SELECT * FROM stu WHERE age=10 or age=18 or age=19;# 该语句与上面的语句等价
      # 连续 SELECT * FROM 表名 WHERE 条件列 BETWEEN v1 AND v2 [表示在v1到v2的范围之间,包含本身v1,v2]
        SELECT * FROM stu WHERE age BETWEEN 7 and 18; # 表示查询年龄在7-18之间的学生信息
        SELECT * FROM stu WHERE age>=7 AND age<=18; # 该语句与上面的语句等价
    
  • # 空值判断
         # 判空 SELECT * FROM 表名 WHERE 条件列 IS NULL
           SELECT * FROM stu WHERE age IS NOT NULL;
         # 判非空 SELECT * FROM 表名 WHERE 条件列 IS NOT NULL
           SELECT * FROM stu WHERE age IS NULL;
           
       /**上面只是判断null不包含空字符
        		- 所以想要包含空字符也包含null的话,可以直接使用空字符来进行判断
          - 空字符饱和null
        		如下
      */
          SELECT * FROM stu WHERE age!="";
          SELECT * FROM stu WHERE age="";
    

3. 模糊查询like

  • MySQL 系统学习系列 - SQL 语句 DQL 语句的使用(1)《MySQL系列篇-03》_第2张图片

  •   
    # 模糊查询like [SELECT * FROM 表名 WHERE 条件列 LIKE 模糊条件值]
      # % 任意字符 SELECT * FROM 表名 WHERE 条件列 LIKE v%|%v... 
        SELECT * FROM stu WHERE `name` LIKE "k%"; # 表示查询stu中name首位为k的所有数据
    
      # _ 单个字符,即相当于一个(_)代表一个字符
        SELECT * FROM stu WHERE `name` LIKE "k___"; # 表示查询stu中的name首位为k,并且后面为三个任意字符的的所有数据
    

4. 分页查询

  • MySQL 系统学习系列 - SQL 语句 DQL 语句的使用(1)《MySQL系列篇-03》_第3张图片

  • # 分页查询 SELECT * FROM LIMIT
      /**
          方式1:limit , [start] , count
          方式2:limit , count , offset num, start [有问题,可能不支持,不确定]
              其中;start表示从第几个开始[0=1],count表示查询多少个,offset表示跳过多少个
      */
        # 表示从第1为开始插入5条数据 [默认是从第一条数据开始,所以也可以不写0]
          SELECT * FROM stu LIMIT 0,5; 
        # 表示跳过两列,查询3列 
          SELECT * FROM stu LIMIT 3 offset 2; 
    

5. 排序查询

  • MySQL 系统学习系列 - SQL 语句 DQL 语句的使用(1)《MySQL系列篇-03》_第4张图片

  • # 排序查询:order by 列名 ASC/DESC,[列1 ASC/DESC]
       # 对年龄列进行升序排序查询
          ELECT * FROM stu ORDER BY age ASC;
      
       /**多列排序
           会先进行第一列的排序,在对第一列排序相互来的结果有重复的数据整进行第二列的拍戏,依次类推.....
           也可以理解为是排序的优先级(或以哪一个为基准等)[自理]
       */
       # 对年龄(age)进行排序,如果有重复的在进行名字(name)的排序 [升序]
          SELECT * FROM stu ORDER BY age ASC,name ASC;
    

6. 练习与子查询引入

  • # 练习1
      # 查询stu表中年龄最大的所有数据
          SELECT * FROM stu WHERE max(age); # 报错,因为where语句中不能存在函数
          SELECT max(age) FROM stu; # 只能查询年龄最大值的
      # 使用子查询,就是在查询语句中使用查询语句,记得需要用括号括起来
      /**该语句可以理解为
          先查询stu表中年龄的最大值
          再根据这个最大值,去查找stu中所有符合该结果的数据
          并以id列进行升序排序
      */
          SELECT * FROM stu WHERE age = (SELECT max(age) FROM stu) ORDER BY id ASC;
    

你可能感兴趣的:(MySQL,mysql,学习,sql)