- group by 语句
- 使用group by 进行数据分组,对每个组应用函数
- GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组
- 分组检索出的结果,需要具有可以分组的属性,如组平均,组的区域名等等。但组内每个样本的序号id是不能select检索的,因为不具有分组的属性
- 使用having对组进行过滤
- 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。WHRER语句针对样本,HAVING语句针对分组。
- HAVING 子句可以让我们筛选分组后的各组数据
- HAVING 子句中的过滤条件,要使用原表中的列名
- 子查询
- 子查询是嵌套在其他查询中的查询
- 嵌套的语句经常使用在where或者 from中的字句
- select * from (select Countrycode,district,avg(population) as avg_popu,sum(population) as sum_popu from world.City group by countrycode,district having avg(population) >=1000000 and sum(population) >=1000000) as a where a.avg_popu >=1000000;
- 表联结
- 对多张表进行联结,使用select选取数据
- 表 a,和表b 如下图
- a 表中 有 abcd
- b表中有 abcf
- inner join
- 内连接:SELECT * from a INNER JOIN b on a.name=b.id;
- 得出结果 如图,选择等值的结果(abc)
- left join
- 左连接:SELECT * from a left JOIN b on a.name=b.id;
- 查询结果如图,选择a表为基准。(abcd)
- 工作原理:
- 以left join为例,从左表读出一条,选出所有与on匹配的右表纪录(n条)进行连接,形成n条纪录。如果右边没有与on条件匹配的表,那连接的字段都是null.然后继续读下一条。
- 引申:
- 我们可以用右表没有on匹配则显示null的规律, 来找出所有在左表,不在右表的纪录。
- right join
- 右连接:SELECT * from a right JOIN b on a.name=b.id;
- 查询结果如图,选择a表为基准。(abcf)
- 组合查询
- 将多个查询结果的数据通过union 进行组合
- union组合的规则:
- 必须由两条或者两条以上的select语句组成,语句之间用union分隔
- union中的每个查询必须包含相同的列,表达式或聚集函数
- 列数据类型必须兼容
- union会自动对数据进行去重,如果不需要去重,只是数据的组合,请使用union all
- order by 只能用于最后一条select语句后面
- 创建和操作表
- 利用CREATE TABLE 创建表,必须给出下列信息
- 表名:在关键字CREATETABLE 之后给出
- 表字段名
- 定义每个表字段
- 表列的名字和定义,用逗号隔开
- 例子
- 单列定义主键
- 多列定义主键
- 数值类型
- 时间类型
- 字符数据类型
- DROP TABLE 删除表
- DROP TABLE table_name ;
- MySQL中删除数据表是非常容易操作的, 但是在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。
- 利用CREATE TABLE 创建表,必须给出下列信息
- 插入查询结果
- 附上练习代码,注意insert into后面直接跟上表名,不用单独写出table单词
- 每一次调整表的内容,都需要drop后再插入
- mysql中的drop删除表示不可逆的
- 更新数据
- ALTER
- ALTER TABLE tb_name ADD[CHANGE,RENAME,DROP] ...要更改的内容...
- 实例:
- alter table world.xiaomin_test2 add new_name char(80);
- 增加一列名为new_name的列,字符类型为char(80)
- >alter table world.xiaomin_test2 drop gnp;
- drop删除表内gnp数据
- ALTER TABLE 用来更新表结构,但是强烈建议在创建表的时候就仔细考虑表结构,不要轻易变动
- UPDATE
- 用来更新表中的数据,一定要仔细,不要省略where字句
- 实例:
- UPDATE tb_name SET score=189 WHERE id=2;
- UPDATE tablename SET columnName=NewValue [ WHERE condition ];
- update world.xiaomin_test2 set new_name = 1 where new_name is null;
- DELETE
- 用于从表中删除特定的行或者从表中删除所有行,一定要仔细,不要省略where字句
- 实例:
- DELETE (从表中删除一行或多行)
- DELETE FROM table_name [WHERE ......]
- delete from world.xiaomin_test2 where new_name is null;
- drop是将整个表删除,delete仅仅是清楚表内数据
- ALTER
- NULL值
- 不是空值也不是0,它是一种特殊的值
- 我们不能使用数学操作符对它进行操作,比如> = 等
- 使用is null / is not null
- null值会被忽略计算
- 创建表的时候要注明是否允许列存储null值
Mysql回顾总结2
最新推荐文章于 2024-06-17 15:52:42 发布