sql语句单表查询以及多表查询

sql语句

  • SELECT * FROM student;

  • SELECT NAME FROM student;

  • SELECT name,sex,age FROM student;

  • #条件查询

  • #WHERE后面跟的是条件查询的条件

  • #and 和 多条条件语句的合并

  • #or 或

    • SELECT * FROM student WHERE sex='男';

    • SELECT * FROM student WHERE sex='男' and age=20;

    • SELECT * FROM student WHERE sex='男' or age=20;

    • SELECT name,age FROM student WHERE not sex ='男';

    • SELECT * FROM student where class_num=20201001 and sex='男';

    • SELECT * FROM student where not class_num=20201001 and sex='女'; ​​​​​​​

       

  • #去重查询DISTINCT

    SELECT DISTINCT age FROM student;

  • #模糊查询LIKE

    #通配符 _ 只能匹配一个字符的通配符, % 可以匹配任意多个字符 

    #搜索功能实现用的是两个% SELECT * FROM student WHERE name like '%王%';

    #排序 ORDER BY后面跟的就是排序的依据

    #默认从小到大,倒叙排列的时候就用 DESC SELECT * FROM student ORDER BY age; SELECT * FROM student ORDER BY age DESC;

    #想通过年龄降序,学号升序 SELECT * FROM student ORDER BY age DESC,sno;

  • #分页查询(限制查询) LIMIT

    #LIMIT后面跟的是限制查询的条数 

    #OFFSET是我们从哪里查询>>>>>默认从0开始查询 SELECT * FROM student LIMIT 3; SELECT * FROM student LIMIT 3 OFFSET 1;

    #每页展示的数量 pageSize;

    #当前页数 pageIndex; SELECT * FROM student LIMIT pageSize OFFSET pageSize *(pageIndex -1)

    #查询出年龄最高的学生信息 SELECT * FROM student ORDER BY age DESC LIMIT 1;

    #聚合查询

    #sum 求某一列的合并值

    #avg 求某一列的平均值

    #max 求某一列的最大值 #min 求某一列的最小值

    #count 求某一列的数据量

    #在sum(age)后面加xxx,代表算出来的值的名字. SELECT sum(age) num from student;

    #分组查询

    #查询出各个班男生的平均年龄 SELECT AVG(age) num FROM student GROUP BY class_num;

    #查询各个班的人数 SELECT count(*) 人数,class_num FROM student GROUP BY class_num;

  • #多表查询

    • #多对一,或一对多的连接

    • inner join 查询出两个表交集的部分

    • left join 查询出左表单独的部分和左右表交集的部分(如下,左表有的右表没有,优先显示左表的)

    • right join 查询出右表单独的部分和左右表交集的部分(如下,右表有的左表没有,优先显示右表的)

      • #两种方式(第二个是内连接)

        SELECT t1.name,t2.deptname FROM yuangong t1,dept t2 where t1.deptid=t2.id and t2.deptname="人事"; SELECT t1.name,t2.deptname FROM yuangong t1 INNER JOIN dept t2 on t1.deptid=t2.id and t2.deptname="人事";

      • #多表查询第二种

        #左连接右链接,内连接,FROM后面yuangong t1是把员工表设置变量t1,用join就必须用on SELECT t1.name eName,t2.deptname dName FROM yuangong t1 LEFT JOIN dept t2 on t1.deptid=t2.id; SELECT t1.name eName,t2.deptname dName FROM yuangong t1 RIGHT JOIN dept t2 on t1.deptid=t2.id;

    • #多对多的连接

      • #两种方式

        第一种:SELECT * FROM content t3,course t1,student t2 WHERE t1.id=t3.cid and t2.id=t3.sid; 第二种:SELECT * FROM course t1 INNER JOIN student t2 INNER JOIN content t3 on t2.id=t3.sid and t1.id=t3.cid;

    例:多表链接,无限套娃,这里连了三个表,首先是两个表链接生成新表,然后再在新表的基础上查新数据

    • SELECT student.name,relationship.cno FROM student INNER JOIN relationship on student.sno=relationship.sno

    • SELECT t1.name,scoure.gradeName FROM (SELECT student.name,relationship.cno FROM student INNER JOIN relationship on student.sno=relationship.sno) t1 INNER JOIN scoure on t1.cno=scoure.cno;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值