Mysql--增删改查语句(单表)

1 Mysql-Dml(操作语言)

1.1 插入语句(insert)

指定字段添加数据:insert into 表名 (字段名1,字段名2,...) values (值1,值2...);
全部字段添加数据:insert into 表名 values (值1,值2,....);  //省去了字段名
批量添加数据(指定字段):insert into 表名 (字段名1,字段名2,...) values (值1,值2...),(值1,值2,...);
批量添加数据(全部字段):insert into 表名 values (值1,值2,....),(值1,值2,....);
*强调文本* _强调文本_

注意,插入的值顺序应与字段相对应,字符串和日期类数据需要加单引号.

#为某些字段插入值
insert into tb_emp(username,name,gender,create_time,update_time) values ('wuji','张无忌',1,now(),now());
# 为所有字段插入值
insert into tb_emp(id, username, password, name, gender, image, job, entrydate, create_time, update_time) VALUES (null,'zhiruo','123','周芷若',2,'1.gpg',1,'2010-01-01',now(),now());
#批量插入
insert into tb_emp(username,name,gender,create_time,update_time) values
                ('weihouwang','韦一笑',1,now(),now()),('xieshiwang','谢逊',1,now(),now());

1.2 修改数据(update)

	update 表名 set  字段名1=值1,字段名2=值2,....[where  条件];
# 将tb_emp表的ID为1员工姓名name字段更新为 '张三',时间更新为当前时间
update tb_emp set name = '张三',update_time = now() where id =1;
#将tb_emp 表的所有员工的入职日期更新为 '2010-01-01',时间更新为当前时间
update tb_emp set entrydate = '2010-01-01',update_time = now();

1.3 删除数据(delete)

	delete form 表名 [where 条件]  
	如果没有条件即为删除整张表
#删除tb_emp 表中ID为1的员工
delete from tb_emp where id = 1;
#删除tb_emp表中的所有员工
delete from tb_emp;

2 Mysql-DQl(查询语言)

2.1 基本查询

	查询多个字段: select 字段1,字段2,字段3 form 表名
#1.查询指定字段 name,entrydate
select name,entrydate from tb_emp;
#2.查询所有字段
select * from tb_emp;  /* '*' 代表全部字段 开发中不建议使用*/
#3.查询指定字段并起别名
select name as 姓名,entrydate as 入职日期 from tb_emp;
#4.查询已有的员工关联了哪几种职位 distinct 能过滤重复的数据
select distinct job from tb_emp;

2.2 条件查询

	比较运算符与逻辑运算符介绍

在这里插入图片描述

# 1.查询姓名为杨逍的员工
select * from tb_emp  where name = '杨逍';
#2.查询id小于等于5的员工
select * from tb_emp where id <= 5;
#3.查询没有分配职位的员工信息
select  * from tb_emp where job is null;
#4.查询有职位的员工信息
select * from tb_emp where job is not null;
#5.查询密码字段不是'123456'的员工信息
select * from tb_emp where password != '123456';
#6.查询入职日期在'2000-01-01'到 '2010-01-01' 之间的员工信息
select * from tb_emp where entrydate >= '2000-01-01' && entrydate <= '2010-01-01';
select * from tb_emp where entrydate between '2000-01-01' and '2010-01-01';
#7.查询入职时间在'2000-01-01'到'2010-01-01'之间性别为女的员工信息
select * from tb_emp where entrydate between '2000-01-01' and '2010-01-01' and gender =2;
#8.查询职位是2,3,4的员工信息
select * from tb_emp where job =2 or job =3 or job =4;
select * from tb_emp where job in (2,3,4);
#9.查询姓名为两个字的员工
select * from tb_emp where name like '__';
#10.查询姓名为张的员工
select * from tb_emp where name like '张%';

2.3 分组查询

	聚合函数:将一列数据作为一个整体,进行纵向计算,不对null值做运算. 语法:select 聚合函数(字段列表) from 表名
	count:统计数量  sum:求和 min:最小值  max:最大值  avg:统计平均数
# 1.统计员工的总数量
select count(id) from tb_emp;
select count(*) from tb_emp;
# 2.统计该企业最早入职的员工
select min(entrydate) from tb_emp;
#3.统计该企业最迟入职的员工
select max(entrydate) from tb_emp;
#4.统计该企业ID的平均值
select avg(id) from tb_emp;
#5.统计该企业员工的id之和
select sum(id) from tb_emp;
	分组查询语法:select 字段 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]
	注意 where在分组之前执行,而having是对分组结果进行筛选.,一般查询过程中需要统计每一类别的属性则进行分组查询
#1.统计男性女性的员工数量
select  gender,count(*) from tb_emp group by gender ;
#2.查询入职时间在'2015-01-01'以前的员工 并对结果进行职位分组,获取员工数量大于等于2的职位
select job,count(*) from tb_emp where entrydate <= '2015-01-01' group by job having count(*)>=2;

2.4 分页查询

	基础语法:select 字段列表 from 表名 limit 起始索引,查询记录数
	注意:起始索引=(页码-1)*每页展示数
#1.从起始索引0开始查询数据,并每页展示五条数据
select * from tb_emp limit 0,5;
#2.查询第2页员工数据,每页展示5条记录
select * from tb_emp limit 5,5;


sql里面的流程控制函数举例

```bash
if函数:
员工性别统计
select if(gender = 1, '男性员工', '女性员工') as 性别, count(*)
from tb_emp
group by gender;

case 函数:
员工职称统计
select (case job
            when 1 then '班主任'
            when 2 then '讲师'
            when 3 then '学工主管'
            when 4 then '教研主管'
            else '未分配职位' end) as '职位', count(*)
from tb_emp
group by job;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值