zoukankan      html  css  js  c++  java
  • 常用sql语句--DQL

    数据查询语言

    关键字 select

    where 条件

    order by 排序
    asc(升序)、desc(降序)

    排序语法:order by 字段1 [asc]|desc [,字段2 [asc]|desc,....]

    MySQL中中文排序规则
    注意:在utf—8编码集下排序并不是按照中文拼音进行排序,需要改为GBK编码集

    修改为按照拼音排序方法:

    SELECT * FROM teachers ORDER BY CONVERT(tName USING GBK),tage DESC;

    limit

    取前多少条-limit
    limit语法:limit m[,n]
    说明: 当limit后只有M一个数字是时,表示在结果集中取前m条数据
    当limit后有两个数字时,表是在结果集中从M+1开始取n条数据
    例子:

    SELECT * FROM teachers ORDER BY tage DESC LIMIT 2;

    取前面两条

    SELECT * FROM teachers ORDER BY tage DESC LIMIT 1,1;

    从第二条开始取一条

    使用limit分页

    limit (页码-1)*每页显示信息数,每页显示信息数

    SELECT * FROM ta ORDER BY id DESC LIMIT 0,2;

    第一页信息,每页两条数据

    SELECT * FROM ta ORDER BY id DESC LIMIT 1,2;

    第二页信息,每页两条数据

    聚合函数

    max():最大值
    min():最小值
    avg():平均值
    sum():求和
    count():求数目(符合条件的数据的数量)
    注意:

    #聚合函数不能嵌套使用

    #对于聚合函数:空值(null)不参与统计计算

    例:

    SELECT COUNT(*) FROM elogs

    count()括号里可以跟星号,主键字段,数字1。但是建议跟主键字段

    统计elogs表有多少条记录

    错例:
    SELECT COUNT(tage),tage FROM teachers;-- 在普通sql语句中不允许这样书写(count()返回一条数据,而tage代表一列数据)

    having子句

    与where字句类似,都是进行数据的筛选,只不过它是在分组之后;而where是在分组之后被执行

    having与where的不同
    1、执行顺序不同(having子句是在分组之后执行;而where子句是在分组之前执行)
    2、聚合函数的使用不同(having子句可直接使用聚合函数,而where不行)

    Group by子句

    分组技术的语法:
    SELECT 字段列表 FROM 表名 [WHERE 条件表达式] GROUP BY 字段1[,字段2] [HAVING 条件表达式
    ORDER BY 排序字段] [LIMIT m[,n]]

    例子:

    统计在选修记录信息表中,已登记同学每人选修课程门数

    select  *  from  ELogs

    select  count(*)  from  ELogs  group  by  sID;

    去重--distinct

    用法实例:

    去除cid重复的记录再统计条数

    SELECT COUNT(DISTINCT cid) FROM elogs

    合并结果集--union

    注意:默认情况下对重复值去重,如不想去重,则需要在其后加ALL
    SELECT sname FROM students
    UNION
    SELECT tname FROM teachers;

    (表或列)重命名

    方式1:oldname as newname
    方式2:oldname newname

    SELECT COUNT(*) AS '学生人数' FROM students

    SELECT COUNT(*) '学生人数' FROM students

    子查询

    例:

    SELECT * FROM ta;

    SELECT * FROM te;

    SELECT * FROM ta WHERE NAME IN (SELECT * FROM te);

    多表联合查询

    SELECT * FROM Courses INNER JOIN teachers ON tNo=tID;

    将Courses表和teachers表通过tNo、tID属性连接起来

    外连接outer join
    左外连接:left outer join/left join
    右外连接:right outer join/ right join

    拓展链接:https://blog.csdn.net/u012410733/article/details/63684663

  • 相关阅读:
    encodeURIComponent编码时为什么要编码两次
    JS校验身份证号的合法性
    react-router与react-router-dom使用时的区别
    数组去重
    window的cmd命令行下新增/删除文件夹及文件
    数组排序【冒泡排序、快速排序、选择排序】
    个人搭建后台管理模板 Bootstrap4 ,ASP.NET Core,EF Core,JWT
    个人搭建后台管理模板 Bootstrap4 ,ASP.NET Core,EF Core,JWT
    react-starter-projects
    基于H.ui.Admin UI模板的网站管理后台
  • 原文地址:https://www.cnblogs.com/zhuyunlong/p/11871459.html
Copyright © 2011-2022 走看看