蠕虫复制:从已有数据中获取数据,然后将数据进行新增操作,数据成倍的增加
表创建高级操作,从已有表创建新表(复制表的结构)
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; 有一个函数可以对分组的结果中的某个字段进行字符串连接(保留该组所有的某个字段):group_concat(字段名字)select c_id,sex,count (*),group_concat(name) from my_student group by c_id,sex;
回溯统计:with rollup 任何一个分组都会有一个小组,最后都需要向上级分组进行汇报统计,根据当前分组的字段;
回溯统计会将分组字段置空;
select c_id,count(*) from my_student_1 group by c_id with rollup; 多字段回溯:考虑第一层分组会有次回溯,第二次分组要看第一次分组的组数,组数是多少,回溯就是多少,然后加
上第一次回溯.
having子句:
having能做where能做的所有事,where不能做having能做的所有事;
分组统计结果或者统计函数只有having能使用;having能够使用字段别名,where不能:where是从磁盘取数据,别名是
字段进入内存后才会产生;
order by子句:排序子句,根据某个字段进行升序或者降序排序,依赖校对集;
order by 字段名[ asc|desc ] ; -- asc是升序 desc是降序
排序可以进行多字段排序;
limit子句:限制结果的语句,限制数量
使用方案:1.用来限制长度(数量),limit 数量;
2.限制起始位置,限制数量, limit 起始位置,长度;