day44初识MySQL--- 单表查询

若表格在cmd窗口中显示不开,可以在代码行结束前加\d

 

将原表中的记录迁移到新表中:

Create table user_new(字段名1,字段名2select 字段名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值在80100之间的(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就去执行

 

4postmax(salary)

 

5order by max(salary)排序

 

 

Limit 限制条件

 

 

 

posted @ 2017-10-25 20:47  hello沃德  阅读(99)  评论(0)    收藏  举报