2022年05月07日讲到了 mysql 单表查询 同志们
1. 数据库约束
① 非空约束
加了非空约束, 表里的数据就不能为 null了
② 唯一约束
加了唯一约束, 表里的数据就不可以重复了
③ 主键约束
加了主键约束, 表里的值既不能为 null,也不能重复
主键自增长
如果有一个列光是数字, 只用来标识每一行数据
可以给它加一个自增长, 让它自己往上加
但是------------------
如果你使用 delete from product 清空表
然后再添加数据
你会发现 id 是从原来基础上继续加的
比如说把1 2 删掉了, 再添加的就是3 4 5 6 .........
使用 truncate from product 截断表 (也是清除)
就可以重新计数了
2.多表查询
假如 我们有一个学生表, 里面写着同学们的姓名 班级 学号 之类的信息
还有一个老师编号, 但老师的信息我们放在另一个表里了
我们希望通过老师编号拿到老师的名字 怎么办呢?
就要用到多表查询
查询语句:
但如果这样写 要是一个学生没有老师编号, 那这个学生是不会显示的
要让它显示出来可以这样写:
左外链接就是 表中不满足条件的数据也会被显示出来
假如我们有个员工表, 里面有员工姓名 员工编号 上级领导编号 工资之类的信息
现在我们要拿到所有员工及其上级的姓名
我们可以这样写
# 看员工及其上级 select e1.ename, e2.ename from emp e1 left outer join emp e2 on e1.mgr = e2.empno;
3.子查询
还是刚才那个员工表
现在我们要拿到工资最高的员工的名字
可以这样写:
# 查看工资最高的员工姓名 select * from emp where sale = (select max(sale) from emp);
现在我们要找到所有工资比任意一个销售员工资都高的人
# 找出所有工资比任意一个销售员工资都高的人 select ename,job,sale from emp where sale> any (select sale from emp where job='销售员');
找到所有和艾本职位相同的人
# 找到所有工作与艾本相同的人 select * from emp where deptno=(select deptno from emp where ename='艾本');
THE END凸(`0´)凸