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

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

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

蠕虫复制:insert into 表名 [(字段列表)]  select  字段列表/* from 数据表名;

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


更新数据:

update 表名 set 字段=值 [where  条件];

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


删除数据:

delete from 表名 [where 条件]  [limit 更新数量];

如果表中存在主键自增长,那么删除之后,自增长不会还原;


数据的删除不会改变表结构,只能删除表后重建表;

truncate 表名; -- 先删除该表后新增该表


查询数据:

完整语法:select [select选项] 字段列表 [字段别名] /* from 数据源 [where 条件子句]

[group by 子句] [having 字句 ][ order by 子句] [ limit 子句]


select选项:select对查出来的结果的处理方式:

all:默认的,保留所有的结果;distinct:去重,查出来的结果将重复的(所有字段都相同)给去除;

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

select  id, number  as 学号 ,name as  姓名 ,sex  性别  from my_student;



数据源:数据的来源,关系型数据库的来源都是数据表,本质上只要保证数据类似二维表,最终都可以作为数据源;   数据源分为多种,单表数据源,多表数据源,查询语句

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

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


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

比较运算符:> , < ,>= , <= ,!= , <>,=,,like,between and , in /not in;

逻辑运算符:&&,||,!

注意:between本身是闭区间,左边的值必须小于等于右边的值

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

分组是为了统计数据;SQL提供了一系列的统计函数,count(),统计分组后的记录数,每一组有多少条记录数;

max(),统计每组中的最大值;  min(),统计最小值;  avg(),统计平均值;sum(),统计和;


select  sex,count(*),max(height),min(height),avg(age),sum(age) from my_student group by sex;

注意:count函数可以有两种参数, *代表统计记录, 字段名代表统计对应的字段(null不计入);

分组会自动排序,根据分组字段默认升序排序

group by 字段 [asc|desc] ;


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

select  c_id,sex,count (*) from my_student group by c_id,sex;
select  c_id,sex,count (*),group_concat(name) from my_student group by c_id,sex;
select c_id,count(*) from my_student_1 group by c_id with rollup;