注释: 文中所有**代表查询的条件;文中所有#代表表格名称;#1代表表1名称;#2代表表2名称
数据库的基础认识
1.建库
1.连接数据库(mysql- uroot -p 密码)
2.查看数据库(show databases;)
3.windows必须指明编码数据库
create
4.删库:drop database 数据库名称;
2.mysql的数据类型
1.整数类型:
2.浮点数、位类型:
3.时间、日期类型:
4.字符串类型:
3.表的基本操作
1).建表(表名称:##)
1.基于数据库建表,use 数据库名称;
2.查看表:show tables;
3.以表格形式查看:desc ##;
4.删表:drop table 表名;
5.列设置
1
6.克隆表格:
create
2).改表
1
Mysql的使用
单表使用(基础)
数据插入(select into ** values #;)
①
数据更新(update # set ** ;)
①
数据查询(select ** from # where;)
基础查询
1).全部查询
select
2).去重查询
select
3).运算查询
1
条件查询
1).单条件查询 :直接按照单一条件查询,上述既是
2).多条件查询
1.where精准查询
基础查询(and/or /!=) 拓展(not and/ not or/ =)
select
between and 格式 拓展(not between and)
select
is null 格式 拓展(is not null)
select
带 in 关键字查询
select
2.like模糊查询
占位符(_)
%模糊查询(like %)
select
3.分组查询(group by)
select
4.排序查询(order by)
select
5.聚合函数查询(sum/avg/count/max/min)
不能放在where语句之后(参见where子句和having子句的异同)
where子句和having子句的异同
1.where和having子句具体用法差不多
2.having子句后面的条件必须在前面出现过,where不能在分组之后使用,必须使用原始数据;所以导致where后面不能使用聚合类函数
3.Where子句在聚合前先筛选数据,是从磁盘读入内存中一条条判断的;Having 子句筛选的是分组后的数据,是将所有数据读入内存后,在分组统计之前,根据having的条件再将不符合的条件删除;《准确的说就是where比较霸道,必须用原始数据,不能对后面新的数据进行分组判断的操作
多表使用(常用)
1 为了减少冗余,通过相应id(是唯一标识,另一个表的主键最合适)进行相应的连接,也是关系型数据库的根本; (2) 关联方式
①
2. 查询
①
子查询(灵活)
1 一次查询无法得到结果,笛卡尔积太大占用内存;
2 方式:select from # where sal=(select max()from #); (3) 复杂方式
①
综上所述,统计万能公式如下:
select
另,笔者能力有限,若文章出现错误,也拜托大佬在评论区指出,马上进行更改,不要因为笔者能力问题造成影响。
码字不易,谢谢支持!