一:完整查询语句

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(id int primary key auto_increment,name char(),math float,english float); insert into stu values(null,"赵云",,); insert into stu values(null,"小乔",,); insert into stu values(null,"小乔",,); insert into stu values(null,"大乔",,); insert into stu values(null,"李清照",,); insert into stu values(null,"铁拐李",,); insert into stu values(null,"小李子",,);
查询所有人的总成绩 select name,english+math 总分 from stu;
select name,english+ 英语 from stu;
需要 在字段的数据前加上字段名:
name:赵云 english: math:
需要使用字符串拼接函数
concat(字符串) 案列:
select
concat("name:",name),
concat("english:",english),
concat("math:",math)
from stu;

小练习

 

观光代码 **

select (case

when english + math < 150 then

concat(name," shit")

when english + math >= 150 then

concat(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_BY

2.sql_mode中有设置 ONLY_FULL_GROUP_BY  直接报错

原因是:  * 表示所有字段都要显示  但是 分组后 记录的细节被隐藏 只留下了

这意味着:只有出现在group by 后面的字段才能被显示

分组是为了统计分组数据  如何统计?

需要使用到聚合函数

聚合函数:
             将一堆数据经过计算,得到一个数据
             sum() 求和
             avg() 求平均数
             max()/min() 求最大值 / 最小值
             count() 个数

准备数据
create table emp (id int,name char(),sex char,dept char(),job char(),salary double);
insert into emp values (,"刘备","男","市场","总监",),
(,"张飞","男","市场","员工",),
(,"关羽","男","市场","员工",),
(,"孙权","男","行政","总监",),
(,"周瑜","男","行政","员工",),
(,"小乔","女","行政","员工",),
(,"曹操","男","财务","总监",),
(,"司马懿","男","财务","员工",);

练习一

查询每个部⻔门有⼏几个⼈人
select dept,count(*) from emp group by dept; 计算每个部⻔门的平均⼯工资
select avg(salary) from emp group by dept; .查询平均⼯工资⼤大于5000的部⻔
select avg(salary) from emp where avg(salary) > group 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中可以

 需求:
.查询平均⼯工资⼤大于5000的部⻔
select dept,avg(salary) from emp group by dept h0aving avg(salary) > ; .查询工资最高的人的姓名和他的工资
需要用到子查询

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页

Python 41 完整查询语句 和 一堆关键字的更多相关文章

  1. mysql查询语句包含有关键字

    查询mysql的时候,有时候mysql表名或者列名会有关键字.这时候查询会有错误.例如表名是order,查询时候会出错. 简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别,例如se ...

  2. 高性能mysql-----MySQL_explain关键字分析查询语句(一)

    转载地址:https://www.cnblogs.com/xpp142857/p/7373005.html   MySQL_explain关键字分析查询语句 通过对查询语句的分析,可以了解查询语句的执 ...

  3. MySQL_explain关键字分析查询语句

    版权声明:本文为博主原创文章,转载请注明出处. 通过对查询语句的分析,可以了解查询语句的执行情况.MySQL中,可以使用EXPLAIN语句和DESCRIBE语句来分析查询语句. EXPLAIN语句的基 ...

  4. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  5. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  6. elasticsearch查询语句

    1,安装es 安装java环境 # java --versionjava version "1.8.0_65" Java(TM) SE Runtime Environment (b ...

  7. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  8. python 3 mysql sql逻辑查询语句执行顺序

    python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_t ...

  9. Python 41 多表查询 和 子查询

    1.查询             完整的查询语句             select [distinct] {* | 字段 | 聚合函数 | 表达式}from 表名                 ...

随机推荐

  1. codevs2833 奇怪的梦境

    2833 奇怪的梦境  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description Aiden陷入了一个奇怪的梦境:他被困 ...

  2. elasticsearch学习(1)简单查询与聚合

    elastic 被用作全文搜索.结构化搜索.分析以及这三个功能的组合 一个ElasticSearch集群可以包含多个索引, 每个索引包含多个类型 一个类型存储着多个文档 每个文档又有多个属性 索引(名 ...

  3. [luogu3155 CQOI2009] 叶子的染色(树形dp)

    传送门 Solution 十分简单的树形dpQwQ,转移关系:父亲染了儿子不用染 只需要确定根就是简单树形dp,而其实根可以随便取一个非叶子节点 可以分情况讨论发现答案并不会改变 Code //By ...

  4. 该页必须使用安全性较高的Web 浏览器查看

    当用https访问某个网站时,IE提醒“该页必须使用安全性较高的Web 浏览器查看” 您要访问的资源使用了128位版本的“安全套接层(SSL)” 安全保护.要查看该资源,您需要使用支持该版本的SSL浏 ...

  5. 【Codeforces 385C】Bear and Prime Numbers

    [链接] 我是链接,点我呀:) [题意] f[i]表示在x[]中有多少个数字是i的倍数 让你求出sum(f[i]) li<=i<=ri 且i是质数 [题解] 做筛法求素数的时候顺便把素数i ...

  6. vs2005添加include lib文件目录

    vs2005添加include lib文件目录 http://blog.sina.com.cn/s/blog_79489160010145wb.html 1. 添加编译所需要的 lib 文件 [解决方 ...

  7. 百度地图API位置偏移的校准算法

    转自极客人原文 百度地图API位置偏移的校准算法 在开始使用百度地图API进行开发时可能会遇到一件相当奇怪的事情,使用百度定位的经纬度在地图上显示相当不准确,这一问题我在微信开发和安卓开始时都遇到过. ...

  8. vs2010+cuda5.0+qt4.8

    在进行CUDA处理的时候,总是在控制台程序下,于是就想要通过qt进行界面处理. 一开始先测试一下qt的环境,新建一个qt项目,不过在运行的时候提示平台不对,换成64位 出现 这个是qt的版本问题,在右 ...

  9. servlet 中getLastModified()

    在http协议中,浏览器对访问过的页面缓存后,它将会在以后访问该页面时,将会根据LastModified头字段指定的时间值生成If-Modified-Since头字段,作为缓存页面的最新更新时间.如果 ...

  10. 【LeetCode】Longest Substring Without Repeating Characters 解题报告

    [题意] Given a string, find the length of the longest substring without repeating characters. For exam ...