数据库——(7)数据高级操作

来源:互联网 发布:淘宝打折工具在哪里 编辑:程序博客网 时间:2024/06/06 05:48

新增数据
基本语法:insert into 表名[(字段列表)] values(值列表);
当主键存在冲突的时候,可以选择性的进行处理:更新和替换。
主键冲突:更新操作
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数量];

注意:删除时如果存在主键自增长,删除后,自增长不会还原。只能删除表后重新建表。
truncate 表名; – –先删除改变,后新增改变。危险不建议用。

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

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

1.All:默认的,保留所有结果。2.Distinct:去重,查出来的结果,将重复给去除(所有字段都相同)。

2)别名语法: 字段名 [as] 别名
3)数据源:数据的来源,分为单表数据源、多表数据源、查询语句。

单表数据源:select * from 表名;多表数据源:select * from 表名1 表名2;-- --查询结果称为笛卡儿积(交叉查询),尽量避免。子查询:select*from(select 语句)as 别名;

4)where字句:返回结果:0和1

运算符:>,<,>=,<=,!=,<>,like,betweent and,in/not in逻辑运算符:&&(and),||(or),!(not)

where原理:where是唯一一个直接从磁盘获取数据的时候就开始判断的条件:从磁盘取出一条纪录,开始进行where判断,成功就保存到内存,失败就直接放弃。
5)group by字句:根据某个字段进行分组(相同的放一组,不同的放到不同的组)。
分组的意义:为了统计数据(按分组字段进行数据统计)。
SQL提供了一系列统计函数:
Count():统计总记录数:函数里可以有两种参数。count(*)代表全部,count(字段)
Max():统计最大值
Min():统计最小值
Avg():统计平均值
Sum():统计和
分组会自动排序:根据分组字段:默认升序
多字段分组:先根据一个字段进行分组,然后对分组后的结果再次按照其他字段进行分组。

select c_id,sex,count(*) from my_stu group by c_id,sex;

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

select c_id,sex,count(*),group_concat(score) from my_stu group by c_id,sex;

回溯统计:with rollup:任何一个分组后都会有一个小组,最后都需要向上级分组进行汇报统计。

select c_id,sex,count(*)from my_stu group by c_id,sex with rollup;

5)having字句:与where字句一样进行条件判断
区别:

1.where是针对磁盘数据进行判断:进入内存后若进行分组操作,分组结果需要用having来处理。2.having能做where能做的几乎所有事情,但是where却不能做having能做的很多事情。3.having能够使用字段别名,where不能。

6)order by字句:排序,根据某个字段升序或者降序,依赖校对集。
基本语法:order by 字段名[asc/desc];

select c_id,count(*)from my_stu group by c_id having count(*)>=2;

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

select * from my_stu limit 2;

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

select * from my_stu limit 2,2;

方案2主要用来实现数据的分页,为用户节省时间,提高服务器的响应效率,减少资源的浪费。

对于用户来讲:可以点击分页按钮:1,2,3,4对于服务器来讲:根据用户选择的页面来获取不同的数据:limit offset,length;Length:每页显示的数据量:基本不变。。Offset:offset=(页面-1)*每页显示量。
原创粉丝点击