Mysql的使用二

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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,257评论 0 7
  • 笔记: 一、聚合函数:计数 最大值 最小值 平均数 求和 1.计数 COUNT() 忽略NULL值 方式1:COU...
    凤之鸠阅读 5,315评论 0 1
  • 50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cna...
    最美的太阳WW阅读 3,242评论 0 23
  • 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句。 问题及描述: --1.学生表 Stud...
    lijun_m阅读 1,332评论 0 1
  • 小宝昨天突然浑身起小红疹,一热似乎就会很痒,小家伙会不停地抓脸挠头,看她的样子感觉无比的难受。在观察了一...
    Anita_Tang阅读 190评论 0 1