• 数据高级操作


    数据高级操作

    基本语法
    Insert into 表名[(字段列表)] values(值列表);

    在数据插入的时候,假设主键对应的值已经存在:插入一定失败

    主键冲突
    在主键存在冲突的时候(Duplicate Key),可以选择性的进行处理:更新和替换

    主键冲突:更新操作
    Insert into 表名[(字段列表:包含主键)]values(值列表) on duplicate key update 字段=新值;

     

    主键冲突:替换

    Replace into 表名 [(字段列表:包含主键)] values(值列表);

     

    蠕虫复制

    蠕虫复制:从已有的数据中去获取数据,然后将数据又进行新增操作:数据成倍的增长

    表创建高级操作:从已有的表创建新表(表只复制结构)

    Create table 表名 like 数据库.表名;

     

    蠕虫复制:先查出数据,然后将查出的数据新增一遍

    Insert into 表名[(字段列表)] select 字段列表/* from 数据表名;

     


    蠕虫复制的意义
    1.从已有表拷贝数据到新表中;
    2.可以迅速的让表中的数据膨胀到一定的数量级:测试表的压力以及效率


    高级更新数据

    基本语法
    update 表名 set 字段 = 值 [where 条件];

    高级新增语法

    update 表名 set 字段 = 值 [where 条件] [limit 更新数量];

     

    高级删除数据

    与更新类似 :可以通过limit 来限制数量
    delete from 表名 [where 条件] [limit 数量] ;


    删除:如果表中存在主键自增长,name当删除之后,自增长不会还原
    数据的删除是不会改变表结构的,只能删除表后重建表

    Truncate 表名;-- 先删除该表,后新增该表

     


    高级数据查询

    基本语法
    select 字段列表/*from 表名 [where 条件] ;

    完整语法
    select [select 选项] 字段列表[字段别名] /* from 数据源 [where 条件字句] [group by字句] [having 字句] [order by字句 ] [limit 字句];

    select 选项:select 对查出来的结果的处理方式
    All:默认的,保留所有的结果
    Distinct:去重,查出来的结果,将重复的去除(所有字段都相同)

     


    字段别名

    字段别名:当数据进行查询的时候,有时候名字并不一定就满足需求(多表查询的时候,会有同名字段),需要对字段进行重命名:别名
    语法:
    [字段名] [as] 别名;

     

    数据源

    数据源:数据的来源,关系型数据库的来源都是数据源:本质上只要保证数据类似二维表,最终都可以作为数据源

    数据源分为多种:单表数据源,多表数据源,查询语句

    单表数据源:select * from 表名;
    多表数据源:select * from 表1,表2;
    将一种表中取出一条记录,去另外一种表中匹配所有记录,而且全部保留(记录数和字段数),将这种结果成为:笛卡尔积(交叉连接):笛卡尔积没什么用,所以尽量避免


    子查询:数据的来源是一条查询语句(查询语句的结果是二维表)

    select * from (select 语句 ) as 表名;

     


    where 子句

    where子句:用来判断数据,筛选数据
    where 字句返回结果:0或者1, 0代表false 1代表true

    判断条件:运算符:>, <, >=, <=, !=, = ,like ,between and, in/not in
    逻辑运算符:&&(and) ,||(or) ,!(not)

    where原理:where是唯一一个直接从磁盘获取数据的时候就开始判断的条件:从磁盘取出一条记录,开始进行where 判断:判断的结果如果成立保存到内存,如果失败直接放弃

     

    条件查询1:要求找出学生ID为1或者3或者5的学生


    条件查询2:查出区间在180,190身高之间的学生


    between本身是闭区间,between左边的值必须小于或者等于右边的值

    group by字句 

    group by: 分组的意思,根据某个字段进行分组(相同的放一组,不同的分到不同的组)

    基本语法:group by 字段名;

    分组的意思:是为了统计数据(按组统计:按分组字段进行数据统计)
    SQL提供了一系列统计函数:
    count():统计分组后的记录数:每一组有多少记录
    max():统计每组中的最大值
    min():统计最小值
    avg():统计平均值
    sun():统计和


    count()函数:里面可以使用两种参数:*代表统计记录,字段名代表统计对应的字段(NULL不统计)

    分组会自动排序:根据分组字段:默认升序
    group by 字段 [asc|desc]; -- 对分组的结果然后合并之后的整个结果进行排序

    多字段分组:先根据一个字段进行分组,然后对分组后的结果再次按照其他字段进行分组


    有个函数:可以对分组的结果中的某个字段进行字符串链接(保留改组所有的某个字段):
    group_concat(字段);

     

    having 子句

    Having子句:与where子句一样:进行条件判断的
    where 是针对磁盘数据进行数据判断:进入到内存之后,会进行分组操作:分组结果就需要having 来处理

    having能做 where能做的几乎所有事情 但是where却不能做having能做的很多事情
    1.分组 统计的结果或者说统计函数都只有having能够使用


    2.having能够使用字段别名:where不能:where是从磁盘取数据,而名字只可能是字段名:
    别名是在字段进入到内存后才会产生

     

    order by 子句
    order by:排序,根据某个字段进行升序或者降序,依赖校对集

    使用基本语法
    order by 字段名 [asc|desc] ; --asc 是升序(默认的) desc 是降序


    排序可以进行多字段排序:先根据某个字段记性排序,然后排序好的内部,在按照某个数据进行再次排序

     


    limit 子句

    limit子句是一种限制结果的语句:限制数量
    limit 有两种使用方式
    方案 1 :只用来限制长度(数据量):limit数据量

    方案2:限制其实位置,限制数量: limit 起始位置,长度

    limit方案2主要用来实现数据的分页:为用户节省时间,提交服务器的响应效率,减少资源的浪费
    对于用户来讲:可以点击的分页按钮:1,2,3,4
    对于服务器来讲:根据用户选择的页码来获取不同的数据:limit offset ,length

    length:每页显示的数据量:基本不变
    offset:offset=(页码-1) * 每页显示量

     

  • 相关阅读:
    js实现方块弹珠游戏
    学习servlet时出现的一些问题
    简述JAVA类的生命周期
    JAVA高级之路----JAVA多线程
    小计Tomcat的调优思路
    java生成pdf
    git分支在团队中的使用
    程序员修炼内功心法
    学会学习
    如何快速阅读
  • 原文地址:https://www.cnblogs.com/sunhao96/p/7891588.html
Copyright © 2020-2023  润新知