1、having和where的区别

解答:

having子句用于分组后筛选,where子句用于行条件筛选

where条件子句中不能使用聚合函数,而having子句就可以。

having只能用在group by之后,where执行在group by之前

2、请写出删除和插入的SQL语句。

解答:

A、首先创建一张表,create table user(id int prinmary key,name varchar(5),sex varchar(3));

B、插入有四种方式,分别如下:

1)按字段插入:insert into user(name) values("zhangsan");

2) 插入一行数据:insert into user values(1,"wagnwu");

3) 插入多行数据:insert into user values(2,"lisa"),(3,"aimi"),(4,"coco");

4) 插入重复数据:replace into user values(1,"wagnwu");

C、删除有三种方式,分别如下:

1) 删除一行数据:delete from tableNme where id=x;

2)删除整张表的数据:delete from tableName;

3)大批量删除数据:truncate table tableName ;

3、使用where编写与内连接等价的sql语句

解答:

select 表的别名.字段名 from 表1 表1别名,表2 表2别名 where 关联条件

4、MySQL中有两个表,表A 中有name,性别,分数;表b中有name,性别,分数,女生总共多少人,平均年龄,工程中用到哪些函数?

解答:

女生总共多少人:select((select count(sex) from person where sex="girl")+(select count(sex) from p_person  where sex="girl")) as 女生总数;

平均分:select((select avg(sex) from person)+(select avg(age) from p_person)) as 平均年龄;

工程中用到count()和avg()函数

5、mysql 中有两个表格,表A 中有id,name,company,表B 中有id,工资,怎么查询李四的工资。

解答:使用内连接的方法通过id把表A和表B关联起来查找名字为李四的工资

select a.name,b.salary from A a inner join B b on a.id=b.id where name=“李四”;

6、根据分数,给不同分数段的学生成绩划分等级。

解答:select(case when score的区间 then "分数等级" end) score,name from student;

 

7、重复字段查询

需求:查询出相同姓名个数大于1的信息

解答:select  * from person where name in(select name from person group by name having count(*)>1);

8、需求:查询出不同性别年龄的总和

解答:select sex,sum(age) sum from person group by sex;

9、需求:查询出不同性别的平均年龄

解答:select sex,avg(age) sum from person group by sex;