数据库的操作:DML数据操纵语言:增删修改查(insert/delete/update/select)

一.概论

对表中的数据进行操纵的语言

二.语法:

1.增加数据:insert

2.删除数据:delete

3.修改数据:update

4.查找数据:select

三.案例insert/delete/update/select

1.查找商品数量:select

语法:

select 字段|表达式 from 表名|视图|结果集

[where 条件]

[group by 分组]

[having 分组之后进行检索]

[order by 排序]

[limit 限制结果]

select count(*) from 商品表 where name = '耳机' 
-- 查看所有信息
select * from classroom
-- 查看部分信息
SELECT class_id,class_name FROM classroom
-- 员工表与部门表
# emp员工表:员工姓名,员工编号,上级领导员工编号,所在部门,薪资等等
# dept部门表:部门id,部门名称,部门地址
-- 查看所有员工的姓名和工资
select 员工姓名,工资 from emp
-- 员工工资提升5%之后员工的姓名和工资 ---算数运算
select 员工姓名,薪资+薪资*0.05 from emp
-- 查询工资大于2k的员工信息
select * from emp where 薪资>2k
-- 查询工资在1k-2k之间的员工信息
select * from emp where 薪资>=1k and 薪资<= 2k
select * from emp where 薪资 between 1k and 2k; # between包含边界类似于=
-- 查询员工编号为1,2,3的员工信息
select * from emp where 员工编号 in (1,2,3)

别名:字段,表达式,结果集,表都可以起别名 as

判断是否为空函数:isnull(字段,0):判断字段是否为null,是的话就赋值为0

# 给字段取别名
select 员工姓名,薪资+薪资*0.05 as '提升后的薪资' from emp;

# 1)去重 distinct:
# 每个人都有工作岗位,可能会重复,只查系统里有多少个岗位
select distinct 工作类型 from emp; 

# 2)模糊查询 like %:匹配字符,匹配0个多个长度的任意字符
# 查询名字以s开头的员工信息
select * from emp where ename like 's%'
# 查询名字包含s的员工信息
select * from emp where ename like '%s%'
# 查询第二个字符为L的所有员工信息:'_'可实现第几个字符
select * from emp where ename like '_L%'

#3)排序:asc升序(默认);desc降序
select * from emp order by 薪资 asc/desc;
# 根据员工的工资降序排,如果薪资一致,则按照员工编号降序排序
select * from emp order by 薪资 desc,员工编号 desc

4)限制结果集显示:limit m,n【m:开始位置,索引值从0开始;n:取值的长度(个数)】
# 查询在10号部门工资最高的员工信息(第一位)
select * from emp where 部门 = 10 order by 薪资 desc limit 0,1

# 5)为空/非空数据的查询
# 查询所有有奖金的员工信息
select * from emp where 奖金>0
# 查询所有奖金列为空的员工
select * from where 奖金 is null;
# 将奖金小于500的员工奖金加100元
select * from where 奖金<500 or 奖金 is null
# 方法一:首先先把空值设置为0
update emp set 奖金=0 where 奖金 is null # 没有这一步操作的话,以下更新语句遇见null则不再执行接下来的更新
update emp set 奖金 = 奖金+100 where 奖金<500 or 奖金 is null
# 方法二:函数:ifnull(字段,0) 判断字段是否为null,是的话就赋值为0
update emp set 奖金 = ifnull(奖金,0)+100 where 奖金<500 or 奖金 is null

2.插入数据:instert

insert into 表名[{(字段名...)}]values(值....)

# 给所有字段添加值,和表中字段顺序一致
insert into classroom VALUES(1,'高中一班')
# 给某个字段单独添加值,和指定字段的顺序一致
insert into classroom(class_id,class_name) VALUES(2,'高中二班')
# 批量插入:添加3条记录
INSERT INTO classroom VALUES(3,'高中三班'),(4,'高中4班'),(5,'高中5班')

复制另外一张表的内容

前提:两个表的结构必须一致!!!!

语法:insert into <新表> SELECT * from <被复制的表>

# 整表复制:将classroom的内容复制到classroom
-- 1)创建classroom1
create table classroom1(
	class_id int,
	class_name VARCHAR(20)
)
-- 2)查看classroom的所有数据
select * from classroom;
-- 3)复制
insert into classroom1 SELECT * from classroom

3.删除数据:delete

①语法1:delete 删除后没有改变表的结构,自增性会继续

(删除一条或所有数据)delete from 表名 [where 条件]

②语法:truncate 删除后,自增性会重置

(清空表的数据)truncate table 表名

# 查看数据
SELECT* FROM classroom1
# 只删除classroom1表中class_id为1的数据
DELETE from classroom1 where class_id = 4
# 删除表的所有数据(逐行删除)
DELETE from classroom1
# 清空表(文件级别的清空)
truncate table classroom1

3.更改/修改数据:update

语法:(修改一条/所有数据) update 表名 set 字段= 新值...[where 条件]

SELECT * FROM classroom
# 优先以id(唯一键)进行查询可以优化查询速度
# 把class_id为4的班名改为高中肆班
update classroom set class_name = '高中肆班' where class_id = 4
# 把class_name为高中肆班的班名改为高中四班
update classroom set class_name = '高中四班' WHERE  class_name = '高中肆班' 
# 修改classroom 所有class_name的数据
UPDATE classroom set class_name = '批量修改班名'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值