day44初识MySQL--- 单表查询
若表格在cmd窗口中显示不开,可以在代码行结束前加\d
将原表中的记录迁移到新表中:

Create table user_new(字段名1,字段名2) select 字段名1,字段名2 from 表名(将select查出来的结果当vlaues传给user_new)
若user_new不使用父表的字段名,那么插入的内容还是以父表中格式插入,与子表自己的字段名并存,就是下面类似情况。


为自己的字段起一个别名
Create table user_new(ip char(60),username char(16)) select host as ip, user as username from mysql.user

可以直接跟上改变字段名
单表查询

单标查询的语法:
select distinct字段1,字段2,字段3........from 表名(每个字段前面加distinct是为了去除重复的)

简单查询

Mysql中的字段名可以进行四则运算(salary*12)

Concat的用法
Concat(‘名字: ’,name,’ ‘,’年薪: ’,salary*12)

where 约束条件 (单独取到某一字段,明确的字段)
1、比较运算符:> < >= <= !=
Select id,name from employee where post=’teacher’;
Select id,name from employee where id>=3 and id<5;
2、Between 80 and 100值在80到100之间的(between包含等于)
Select id,name from employee where between 3 and 5;
3、In(80,90,100) 值是100或者90或者100的
Select id,name from employee where age in (80,90,100);
4、Like ‘egon%’
Pattern 可以是%或_,
%表示任意多字符
_表示一个字符
Select id,name from employee where name like ‘e%’;
5、逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
Select id,name from employee where id<=3 or id>5;
group by 分组的字段(对整体做一个衡量)
目的:要么查分组的字段要么查聚合的结果
1、分组之后只能查看到分组的字段,要想查看组内内容,不能直接查看,
2、需要借助于聚合函数max,min,avg,sum,count
2、分组的目的是以组为单位处理数据,而不是单独处理数据
#每个部门的员工数
Select * from employee group by post;

可以禁止在分组字段中查询默认的某一条数据
Having 过滤条件
having是在分组之后,只能用分组的字段或者聚合函数作为过滤的条件

这句话可以读出取出的结果并不是一个明确的值而是一个字段(部门),那么就用到了group by 在通过having过滤出员工数量大于3的。



Order by 排序字段

默认升序排(asc)
降序(desc)
Order by可以直接使用

内部执行步骤:
1、先取表 from employee
2、在分组 group by post
3、若有having就去执行
4、post、max(salary)
5、order by max(salary)排序
Limit 限制条件



浙公网安备 33010602011771号