申请个人网站,福清市建设局网站,互动网站欣赏,威海教育行业网站建设一#xff1a;完整查询语句1、拷贝表 ***create table copy_table select *from customer ; 拷贝结构 与数据create table copy_table select *from customer where 0 1; 仅拷贝结构共同点#xff1a; 索引 不能拷贝 描述不能拷贝(自增)[ ] 表示可选的{ }表示必选的增…一完整查询语句1、拷贝表 ***create table copy_table select *from customer ; 拷贝结构 与数据create table copy_table select *from customer where 0 1; 仅拷贝结构共同点 索引 不能拷贝 描述不能拷贝(自增)[ ] 表示可选的{ }表示必选的增insert [into] 表名[字段名] value|values(字段值....);into 可省略 [字段名] 可选 如果写了你后面的值必须与写的字段匹配不写后面的值必须和表的结构完全匹配value 插入一条记录values 插入多条记录改update 表名 set 字段名 新的值[,字段n 新值n] [where 条件] 可以同时修改多个字段用逗号隔开注意最后一个字段不能加逗号where 可选 有就修改满足条件的记录没有就全部修改删delete from 表名 [where 条件]where 可选 有就删除满足条件的记录没有就全部删除如果你需要全部删除 请使用truncate table 表名delete 是逐行比对 删除 效率低delete删除的行号会保留查询完整的查询语句select [distinct] {* | 字段名 | 聚合函数 | 表达式} from 表名[where 条件group by 字段名having 条件order by 字段名limit 显示的条数]注意 关键字的顺序必须与上述语法一致简单查询 ******1.* 表示所有列 都显示2.也可以手动指定要显示的列 可以是多个3.distinct 用于去除重复的记录只取出完全相同的记录当然也可以手动指定要显示的列 从而来去重4.表达式 支持四则运算执行顺序def select()from() 打开文件where() 读取每一行并判断是否满足条件group() 对数据进行分组having() 再分组之后进行过滤having不单独出现 仅用于分组之后进行过滤distinct() 去重order() 用于对筛选后的数据 进行排序limit() 限制显示的条数最后根据select后制定的字段来显示数据准备数据create table stu(idint primary key auto_increment,name char(10),math float,english float); insert into stu values(null,赵云,90,30); insert into stu values(null,小乔,90,60); insert into stu values(null,小乔,90,60); insert into stu values(null,大乔,10,70); insert into stu values(null,李清照,100,100); insert into stu values(null,铁拐李,20,55); insert into stu values(null,小李子,20,55);查询所有人的总成绩select name,englishmath 总分 fromstu;select name,english10 英语 fromstu;需要 在字段的数据前加上字段名:name:赵云 english:90 math:30需要使用字符串拼接函数concat(字符串)案列selectconcat(name:,name),concat(english:,english),concat(math:,math)from stu;小练习观光代码 **select (casewhen english math 150 thenconcat(name, shit)when english math 150 thenconcat(name, nice)end) 评语 from stu;二一堆关键字where 条件 ******group by 字段名 ***having 条件 ***order by 字段名 *****limit 显示的条数] *******where从硬盘上读取数据时的一个过滤条件where 的筛选过程 在没有索引的情况下挨个比较效率低所以我们应该给表添加索引group by作用 用于给数据分组为什么要分组 思考生活为什么要分组1.在生活中是为了方便管理2.在数据库中是为了 方便统计按照部门给数据分组 select *from emp group by dept;有两种情况1.sql_mode中 没有设置 ONLY_FULL_GROUP_BY 显示每个组的第一条记录 没有意义 所以新版中 自带ONLY_FULL_GROUP_BY2.sql_mode中有设置 ONLY_FULL_GROUP_BY 直接报错原因是 * 表示所有字段都要显示 但是 分组后 记录的细节被隐藏 只留下了这意味着只有出现在group by 后面的字段才能被显示分组是为了统计分组数据 如何统计需要使用到聚合函数聚合函数将一堆数据经过计算得到一个数据sum() 求和avg() 求平均数max()/min() 求最大值 / 最小值count() 个数准备数据create table emp (idint,name char(10),sex char,dept char(10),job char(10),salary double);insert into emp values (1,刘备,男,市场,总监,5800),(2,张飞,男,市场,员工,3000),(3,关羽,男,市场,员工,4000),(4,孙权,男,行政,总监,6000),(5,周瑜,男,行政,员工,5000),(6,小乔,女,行政,员工,4000),(7,曹操,男,财务,总监,10000),(8,司马懿,男,财务,员工,6000);练习一查询每个部⻔门有⼏几个⼈人select dept,count(*) fromemp group by dept;计算每个部⻔门的平均⼯工资select avg(salary) fromemp group by dept;5.查询平均⼯工资⼤大于5000的部⻔select avg(salary) from emp where avg(salary) 5000group by dept;where语句后面 不能使用聚合函数select avg(salary) from emp练习二练习一总结 什么时候需要使用分组 只要你的需求中 带有 每个这样的字眼 就需要分组 每个岗位 每个部门 每个性别练习二总结 where 条件不能用于筛选分组后的数据group_concat 用于分组后 将组中的某些字段拼接成字符串select dept,group_concat(name) from emp group by dept;having用于对分组后的数据进行过滤having不会单独出现 都是和group by 一起出现与where的区别相同点 都用于过滤数据不同点1.where是最先执行 用于读取硬盘数据having 要等到数据读取完之后 才能进过滤 比where晚执行2.where中不能使用聚合函数having中可以需求5.查询平均⼯工资⼤大于5000的部⻔select dept,avg(salary) from emp group by dept h0aving avg(salary) 500;6.查询工资最高的人的姓名和他的工资需要用到子查询having小练习order by [desc,asc]用于对记录进行 排序desc为降序 asc为升序按照工资的从低到高顺序 显示所有的员工 select *from emp order by salary; 默认为升序修改为降序 select *from emp order by salary desc;按照每个部门的平均工资 降序排序 select dept,avg(salary) from emp group by dept order by avg(salary) desc;limit *******用于限制显示的条数 limit [start,]count看看表里前三条数据 select *from emp limit 3;看看表里的3-5条 select * from emp limit 2,3;看工资最高的那个人的信息 select *from emp order by salary desc limit 1;limit 常用于 数据的分页展示 比如腾讯新闻 的上拉加载新的而一页select *from emp limit 0,10; 第一页 页数 减1 乘以条数 得到起始位置select *from emp limit 10,10; 第2页select *from emp limit 20,10; 第3页