• 第三章 数据库查询


    1、前言
    -》查询:就是对数据库内的数据进行检索、创建、修改或删除的特定请求。
    -》数据库的基本查询:简单查询、分组查询、数据汇总、子查询、连接查询

    2、select查询语法格式
    select [distinct] [top n [percent]] *
    from table1
    join table2 on ... join table3 on ...
    where ....
    group by ... [with cube |rollup]
    having ...
    order by ...

    -》为表起别名as
    -》查询全部列、指定列
    为列起别名as
    -》查询前n部分数据:
    top n 列名:表示查看前n行
    top n percent 列名:表示查看前百分之几的数据
    -》排序:asc升序 desc降序
    order by 列名1 asc|desc,列名1 asc|desc...
    -》消除重复行:distinct
    -》条件查询:写在where后面
    对行进行筛选,返回bool类型的值,如果某行中的列数据满足条件,则加入结果集,否则不出现在结果集中
    比较运算符:=,>,>=,<,<=,!=或<>
    between ... and ...表示在一个连续的范围内
    in表示在一个非连续的范围内
    逻辑运算符:and,or,not
    模糊查询:用于处理字符串类型的值,运算符包括:like % _ [] ^
    %与_写在[]中表示本身的含义
    在[]表示一个连续的范围可以使用-
    ^写在[]内部的开头,表示不使用内部的任何字符
    null的判断:使用is null或is not null,与其它值计算时返回null,排序时null被认为是最小
    优先级:小括号,not,比较运算符,逻辑运算符
    -》连接查询:join 表名 on 关联条件
    内连接:inner join,两表中完全匹配的数据
    左外连接:left outer join,两表中完全匹配的数据,左表中特有的数据
    右外连接:right outer join,两表中完全匹配的数据,右表中特有的数据
    完全外连接:full outer join,两表中完全匹配的数据,左表中特有的数据,右表中特有的数据
    -》聚合函数:对行数据进行合并
    sum,avg,count,max,min
    一般是对数字类型的列进行操作
    一条查询中可以同时写多个聚合函数,但是不能与普通列混写
    聚合中的null问题:不参与计算
    -》开窗函数:over()
    将统计出来的数据分布到原表的每一行中
    结合聚合函数、排名函数使用
    -》分组:group by 列名1,列名2...
    聚合函数一般结合分组使用,进行分组内的数据进行统计
    根据指定列进行分组
    分组后条件筛选:having ...

    3、子查询
    -》当一个查询依赖另一个查询结果时,就可以用子查询。
    -》无关子查询
    ·比较子查询:将一个表达式的值与子查询返回的单值进行比较。
    例:在“教学库”中查询C007号课的考试成绩比“郑辉”高的学号和姓名。
    语句: use 教学库
    select 学生表.学号,姓名 from 学生表,选课表
    where 学生表.学号=选课表.学号 and 课程号='007'
    and 成绩>(select 成绩 form 选课表 where 课程号='007' /*2、确定郑辉成绩,并比较测试*/
    and 学号=(select 学号 from 学生表 where 姓名='郑辉')) /*1、确定学号*/
    ·some、any、all和in子查询
    用在子查询前,在比较测试时,any表示子查询集中任意一个,
    all表示子查询集中的所有,
    in表示在子查询集范围内。
    -》相关子查询
    ·比较查询
    获取员工工资低于所在部门的平均工资的员工信息
    select empno,ename,sal,deptno from emp out
    where sal <(
    select avg(sal) from emp inner
    where inner.deptno=out.deptno
    )
    ·exists在关联子查询的使用
    获取80年的员工号信息
    select empno,ename,sal,hiredate,substr(hiredate,8,2)
    from emp out where exists(
    select empno from emp inner
    where out.empno=inner.empno
    and substr(hiredate,8,2)=’80’);

    3、联合查询
    -》将多个查询的结果集合并成一个结果集
    -》联合要求:
    结果集列数要一致
    对应列的类型要一致
    -》union(合并)、union all、except(返回不包含右侧的左侧查询)、intersect(返回不包含重复的左右两侧查询)
    select 列名 from 表名1
    union | except | intersect
    select 列名 from 表名2
    -》用处:在查询结果处显示汇总

    4、数据库操作中使用select子句
    ·在insert语句中使用
    insert into 副本表(列名1,列名2,···) select * from 源表
    where 条件表达式
    ·在update语句使用
    update 表名
    set 列名=值
    where 条件表达式
    注:select子句用在条件表达式中
    ·在delete语句使用
    delete 表名
    where 条件表达式
    注:select子句用在条件表达式中

    5、快速备份
    -》存储查询结果:
    select 列名 into 新表名 from 源表名 where 查询条件
    注意:select···into不能与compute子句一起使用
    -》备份:
    select 列名 into 新表名 from 源表名
    备份表可以不存在,会新建表,表的结构完成一致,但是不包含约束
    如果想只包含结构不包含数据,可以加个top 0
    -》向已有表备份:insert into 备份表名 select 列名 from 源表名

    6、内置函数
    -》类型转换函数:
    cast(expression as data_type):将任意类型转到到任意类型
    convert(date_type,expression[,style]):将任意类型转到到任意类型
    如果目标类型是字符串,则style可以设置格式,具体格式参考帮助
    -》字符串函数:ascii(求字符的ascii值),char(根据ascii转到字符),
    left,right,substring:字符串截取
    len:返回字符串的长度
    lower,upper:转小写、大写
    ltrim,rtrim:去空格
    注意:索引从1开始,而不是0
    -》日期函数:getDate(获取当前日期时间),
    dateAdd(日期加),
    dateDiff(日期差),
    datePart(取日期的某部分),year,month,day
    注意:dateAdd、dateDiff、datePart的第一个参数使用双引号

    不知跬步,无以至千里;不积小流,无以成江海。菜鸟的梦想是雄鹰。
  • 相关阅读:
    使用 ASP.NET 2.0 ObjectDataSource 控件

    掌握 ASP.NET 之路:自定义实体类简介
    将 JavaScript 与 ASP.NET 2.0 配合使用
    C# 程序的通用结构
    实例化web service里类的实例
    Web服务枚举组件不可用 修复 (转载)
    09年初步学习计划
    Javascript return false的作用
    如何识别 SQL Server 的版本
  • 原文地址:https://www.cnblogs.com/ysq2018China/p/9147704.html
Copyright © 2020-2023  润新知