常用的sql语句如下,应对工作足以

1.查询指定字段
select c_id,c_age,c_name from t_student;
select c_id as 编号,c_name as 姓名,c_age 性别 from t_student;

2.去重查询
select distinct c_address from t_student
select distinct c_address,c_name from t_student

3.比较运算符查询
select c_name,c_gender from t_student where c_gender ="女 ";
select c_id ,c_name,c_age,c_gender from t_student where c_age <>18;

4.逻辑运算符查询
select c_name,c_age,c_gender from t_student where c_gender = "女" and c_age <20;
select c_name,c_age from t_student where c_age =18 or 20;   # 有问题.会产生注入问题
select c_name ,c_age from t_student where not c_age = 18;   # not一般用在非空的地方

5.模糊查询
like
%: 表示任意多个字符
_: 表示任意一个字符
select c_id,c_name from t_student where c_name like "孙";
select c_id,c_name from t_student where c_name like "孙_";
select c_id,c_name from t_student where c_name like "%三%";

6.范围查询
in:非连续 / between:连续
select c_id,c_name from t_student where c_id in (1,5,8,23,7,12,100000);
select c_name,c_age from t_student where c_age between 18 and 20; # 包括18和20

7.判空
select c_name,c_age from t_student where c_age is Null;
select c_name,c_age from t_student where c_age is not Null;

8.查询结果排序 order by
select c_name ,c_id,c_age from t_student order by c_age; # 默认升序
select c_name ,c_id,c_age from t_student where c_gender = "女" order by c_age desc; # 降序

9.分页查询
select c_id ,c_name from t_student limit 10,10; # 从11开始 20结束
select c_id ,c_name from t_student limit 30,10; # 从31开始 40结束
-- 每页显示2个,第3个页面
select * from students limit 4,2;
-- 每页显示m个,第n个页面
select * from students limit   m(n-1),m;

10.聚合函数 # 很少单独用,一般结合分组一起用
select sum(c_age) from t_student;
select sum(c_age),avg(c_age),max(c_age),min(c_age),count(*) from t_stuudent where c_gender = "女"

11.分组:
  1. where....group by....having: 先经过where大筛选,再.group by分组,再对分组的结果用having限制查询
  2.单分组没有意义,相当于去重,往往结合:group_concat(c_name)使用
  3.having中like查询不再适用,只能配合group by 使用
单字段分组:
  select c_gender from t_student group by c_gender;
多字段分组: having 对group分组后进行筛选
  select c_address,c_gender from t_student group by c_gender,c_address;
  select c_address,c_gender,group_concat(c_name) from t_student group by c_gender,c_address   having c_gender = "女"; <====>select c_address,c_gender,group_concat(c_name) from t_student   where c_gender ="女"group by c_gender,c_address;

例1:mysql> select c_address,c_name from t_student group by c_address,c_name having c_gender = "女";
ERROR 1054 (42S22): Unknown column 'c_gender' in 'having clause'
注意1:having用在group by分组后,但是分组后并没有 c_gender这一字段

12.多表查询
没外键的时候:不会连接c_class_id为空的数据
select s.c_name,c.c_name from t_student as s,t_class as c where s.c_class_id = c.c_id;

  1.内连接:on
  """注意:数据库默认为内连接,也可以不写inner join 用,隔开2个表但是连接方式需要用where
    但是不能再接where了

    即:t_a , t_b where 连接关系; <=====> t_a inner join t_b on 连接关系 [+where]
    这里有where=情况下先执行where语句
  """
    select s.c_name,c.c_name from t_student s inner join t_class c on s.c_class_id = c.c_id where c_gender = "女";

  2.左连接:以左表为基准
    select s.c_name ,c.c_name from t_student s left join t_class c on s.c_class_id = c.c_id;

  3.右连接
    select s.c_name,c.c_name from t_student s right join t_class c on s.c_class_id =c.c_id;

    4.适用场景

     左A表  右B表

       如果 A>B且无包含关系 :right join
       如果 A<B且无包含关系 :left join
       如果 A>B且有包含关系 :inner join
       如果 A<B且有包含关系 :inner join

13.标量子查询
  select c_name,c_age from t_student where c_age > (select avg(c_age) from t_student);

13-1列级子查询: 结果为一列 (主查询 where 条件 in )
例:查询所有学生所在班级的班级名称
第一步:抽取关键字:所有学生---->student表, 班级名称---->class表
第二步:在student表中找出所有学生所在的教室id:select c_class_id from t_student
第三步:在class中根据这些教室id找出对应的教室名字(class表中可能不止这几个教室)
  select c_name from t_class where c_id in (select c_class_id from t_student);

13-2行级子查询 : 结果为一行 (主查询 where (字段1,2,...) = (行子查询))
例:查找班级里 年龄最大 且 所在班号最小 的学生
第一步:抽取关键字 :年龄最大----->student表 , 所在班号最小的学生--->student表
第二步:选出最大年龄的学生和最小的班号:select max(c_age),min(c_class_id) from t_student
第三步:找出年龄和班号满足条件的学生 :
如果所有学生中年龄最大的在2班,则找回的结果为空
  select * from t_student where (c_age,c_class_id) = (select max(c_age),min(c_class_id) from t_student);  # (c_age ,c_class_id )中的顺序后后面select语句限制
<======>select * from t_student where (c_age = (select max(c_age) from t_student)) and (c_class_id = (select min(c_class_id) from t_student));

14.自连接查询--省--市--区
在查询数据时,只有一张表,查询时使用自己连接自己。 语法: select * from 表1 inner join 表2 on 表1.列 运算符 表2.列 where 条件;
1.查询一共有多少个省
select count(*) from areas where pid is null;

2.查询山西省的所有城市=====>要用到where 所以要用inner join ..on 语法
第一步:拆分表:省表(字段:aid ,atitle) 市表(字段:aid ,atitle,pid)
第二步:找出省表(p)中的山西省
第三步:分析表可知,省表中的aid = 市表(c)中的cid 即有所属关系,并不是简单的aid = pid
select c.* from areas as c inner join areas as p on c.pid = p.aid where p.atitle ="山西省"; # 必须是p.atitle

3.查询市的名称为“广州市”的所有区县
select qu.* from areas as qu inner join areas as c on c.aid = qu.pid where c.atitle ='广州市';

如果你和我有共同爱好,我们可以加个好友一起交流哈!

MySQL常用sql语句-----数据表的查询操作的更多相关文章

  1. MySQL常用sql语句-----数据表的增删改操作

    常用sql操作如下: 1.查看当前数据库的所有表 show tables; 2.创建表 create table stu(sid int,sname char(20),sage int default ...

  2. Mysql 常用 SQL 语句集锦

    Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...

  3. Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)

    Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...

  4. Mysql常用sql语句(14)- 多表查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  5. mysql 常用 sql 语句 - 快速查询

    Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互         1.1.1 mysql 连接             mysql.exe -hPup    ...

  6. Mysql常用sql语句(19)- in / exists 子查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 子查询在我们查询方法中是比较常用的,通过子查询可 ...

  7. Mysql常用sql语句(21)- regexp 正则表达式查询

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 正则的强大不言而喻,Mysql中也提供了 reg ...

  8. Mysql常用sql语句(22)- insert 插入数据

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 终于讲完基础的查询语句了...这篇讲的就是插入数 ...

  9. Mysql常用sql语句(3)- select 查询语句基础使用

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 针对数据表里面的每条记录,select查询语句叫 ...

随机推荐

  1. Failed to access IIS metabase.

    framework4.0 可这样 C:\Inetpub\AdminScripts>cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\ C:\WIN ...

  2. PyCharm2019激活

    PyCharm下载地址:https://www.jetbrains.com/pycharm/download/ 永久激活 这里主要介绍永久激活的方式,永久激活后,就可以放心使用了,一劳永逸,5分钟就能 ...

  3. Mongodb关于查询返回指定字段的方法记录

    //通常指定字段由前端传入后台,例如params 前端以逗号分隔 //后端获取字段后操作如下: Query query = new Query(); if (params != null) { Str ...

  4. Appium+python自动化(三十八) - Appium自动化测试框架综合实践 - 框架简介-助你冲击高薪,迎娶白富美(超详解)

    简介 好久没有更新博客了,博友们是不是有点等不及了.不好意思啊,中秋节过后太忙了,这篇是好不容易抽点零碎时间写的.从这一篇开始小伙伴或者童鞋们,就跟随宏哥的脚步,一步步的从无到有,从0到1的搭建一个完 ...

  5. Python中的MRO(方法解析顺序)[转载]

    本文转载至: http://hanjianwei.com/2013/07/25/python-mro/ 对于支持继承的编程语言来说,其方法(属性)可能定义在当前类,也可能来自于基类,所以在方法调用时就 ...

  6. selenium-03-常用操作

    基本介绍: Selenium工具专门为WEB应用程序编写的一个验收测试工具. Selenium的核心:browser bot,是用JavaScript编写的. Selenium工具有4种:Seleni ...

  7. 初识PE文件结构

    前言 目前网络上有关PE文件结构说明的文章太多了,自己的这篇文章只是单纯的记录自己对PE文件结构的学习.理解和总结. 基础概念 PE(Portable Executable:可移植的执行体)是Win3 ...

  8. RMAN备份归档日志ORA-19575

    RMAN备份归档日志ORA-19575 一.问题描述 1)环境oracle 10g; 2)报错现象RMAN进行备份归档报错失败ORA-19575 二.问题处理 1)根据客户说明的现象,百度了一波(详见 ...

  9. Dropout原理与实现

    Dropout是深度学习中的一种防止过拟合手段,在面试中也经常会被问到,因此有必要搞懂其原理. 1 Dropout的运作方式 在神经网络的训练过程中,对于一次迭代中的某一层神经网络,先随机选择中的一些 ...

  10. 实际体验华为云AI : ModelArts

    国庆前看到了博客园官方博客发布的一篇博客: 学AI有奖:博客园&华为云AI有奖训练营开战啦 本着对AI这种火热的话题,以及华为云博客园联名公仔(次要),我决定参与这个活动. 现在华为云开始全面 ...