美文网首页
Mysql的使用二

Mysql的使用二

作者: 简单生活101 | 来源:发表于2018-06-11 09:07 被阅读0次

1.现在数据库有一张表,表里面每一行都是一条交易记录,有ID,日期,类型(自营和第三方),支付状态,金额5个字段,现在需要一句SQL查询出当天自营和第三方总得营业额。未支付和已退款不算在营业额内,已支付和待退款算在营业额内。需要展现的结果就是自营 xxx元  第三方  xxx元

select type,sum(total) from payinfo where state in (1,2) group by type;   

2.用一条SQL 语句 查询出每门课都大于80 分的学生姓名

SELECT distinct sc_s_id FROM mydemo.score where sc_s_id not in (select sc_s_id from mydemo.score where sc_score <80);

select sc_s_id from mydemo.score group by sc_s_id having min(sc_score)>80;

select S_Name from mydemo.student where s_id in(select sc_s_id from mydemo.score group by sc_s_id having min(sc_score)>80);

3.删除除了编号不同, 其他都相同的学生冗余信息

delete from mydemo.score where sc_id not in(select min(sc_id) from mydemo.score group by sc_score,sc_s_id,sc_c_id);

4.连接两个数据表的用法inner join ......on.......:

    连接两个数据表的用法:

FROM Member(表1) INNER JOIN MemberSort(表2) ON Member.MemberSort=MemberSort.MemberSort(相同条件)

语法格式可以概括为:

FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

     连接三个数据表的用法:

FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号

      连接四个数据表的用法:

FROM ((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号

      连接五个数据表的用法:

FROM (((表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号) INNER JOIN 表4 ON Member.字段号=表4.字段号) INNER JOIN 表5 ON Member.字段号=表5.字段号

5、查询用户表中以李开头的所有用户数据

select *  from  user_info where uname like "李%";

6、查询用户表中以强结尾的所有用户数据

select * from user_info where uname like "%强";

7、查询表中姓张的用户的平均工资

select AVG(工资) from 表名 where S_name like '张%';

8、查询两张表中所有工资大于7000的用户和用户薪资

SELECT S_NAME as name,S_Salary as salary FROM mydemo.student1 where S_Salary>7000 union select S_NAME as name,S_Salary as salary from mydemo.student where S_Salary>7000 ;

9、如果两张表的结构 一致,把B表的数据插入到A表中

insert into mydemo.student (select * from mydemo.student1);

10、取出数据库中用户表中第10到20条记录,id为自增长可能不是连续的

SELECT * FROM mydemo.student where s_id limit 10,13;

SELECT * FROM mydemo.student limit 10,13;

limit的用法

select * from 表名 where (列名) limit 10,20;     //取出10到20条直接的记录

select * from 表名 where (列名) limit 5;          //取出前6条记录

select * from 表名 where (列名) limit 6,-1;      //取出7到最后一条记录

11、查询平均分大于70分的学生编号和平均分

select avg(sc_score) as pingjun,sc_s_id from mydemo.score group by sc_s_id having pingjun > 70;

相关文章

网友评论

      本文标题:Mysql的使用二

      本文链接:https://www.haomeiwen.com/subject/fxqxgxtx.html