mysql增删改查

首先创建表emp和表dept

create table emp(
    ename varchar(10),
    hiredate date,
    sal decimal(10,2),
    deptno int(2)
);
create table dept(
    deptno int(2),
    deptname varchar(10)
);

1,插入记录

1,向表 emp 中插入以下记录:ename 为 zzx1,hiredate 为 2000-01-01,sal 为 2000,deptno
为 1,

insert into emp (ename,hiredate,sal,deptno) values ('zzxl','2000-01-01','2000',1);

2,只对表中的 ename 和 sal 字段显式插入值

insert into emp (ename,sal) values ('dony',1000);

3,对表 emp一次插入两条记录

insert into emp values
('lvjingying','2008-01-01','2100',2),
('xuqian','2010-03-05','2300',5);

2,更新记录

1,将表 emp 中 ename 为“lisa”的薪水(sal)从 3000 更改为 4000

update emp set sal = 4000 where ename = 'lisa';

2,同时更新表 emp 中的字段 sal 和表 dept 中的字段 deptname

删除记录

1,在 emp 中将 ename 为‘dony’的记录全部删除

delete from emp where ename = 'dony';

2,将表 emp 和 dept 中 deptno 为 3 的记录同时都删除

delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3;

查询记录

(1)查询不重复的记录。

1,将表 emp 中的记录全部查询出来

select * from emp;

2, 有时需要将表中的记录去掉重复后显示出来,可以用 distinct 关键字来实现

select distinct deptno from emp;
(2)条件查询

3,需要查询所有 deptno 为 1 的记录

select * from emp where deptno = 1;

4,– 使用多字段条件查询

select * from emp where deptno = 1 and sal < 3000;
(3)排序和限制

5,把 emp 表中的记录按照工资高低进行显示

select * from emp order by sal;

6,把 emp 表中的记录按照部门编号 deptno 字段排序

select * from emp order by deptno;

7,对于 deptno 相同的前两条记录,如果要按照工资由高到低排序,可以使用以下命令

select * from emp order by deptno , sal desc;

8,显示 emp 表中按照 sal 排序后的前 3 条记录

select * from emp order by sal limit 3;

9,– 显示 emp 表中按照 sal 排序后从第二条记录开始,显示 3 条记录

select * from emp order by sal limit 1,3;
(4)聚合

10,要 emp 表中统计公司的总人数

select count(1) from emp;

11,要统计各个部门的人数

select count(1) from emp  group by deptno;

12,要统计各部门人数,又要统计总人数

select deptno,count(1) from emp group by deptno with rollup;

13,统计人数大于 1 人的部门

select deptno,count(1) from emp   group by deptno having count(1)>1;

14,– 统计公司所有员工的薪水总额、最高和最低薪水:

select sum(sal),max(sal),min(sal) from emp;
(5)表链接

15, 查询出所有雇员的名字和所在部门名称

select ename,deptname from emp,dept where emp.deptno =dept.deptno;
-- 或者
select ename,deptname from emp,dept where emp.deptno =dept.deptno;
-- 或者
select ename,deptname from emp right join dept on emp.deptno=dept.deptno;
(6)子查询

16,从 emp 表中查询出所有部门在 dept 表中的所有记录

select * from emp where deptno in (select deptno from dept);

如果子查询记录数唯一,还可以用=代替 in:

select * from emp where deptno = (select deptno from dept);

某些情况下,子查询可以转化为表连接

select emp.* from emp , dept where emp.deptno = dept.deptno;

注意:

MySQL 4.1 以前的版本不支持子查询,需要用表连接来实现子查询的功能
表连接在很多情况下用于优化子查询

(7)记录联合

17 ,将 emp 和 dept 表中的部门编号的集合显示出来

select deptno from emp 
union all
select deptno from dept;

如果希望去重复

select deptno from emp 
union 
select deptno from dept;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值