一.概论
对表中的数据进行操纵的语言
二.语法:
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 = '批量修改班名'
标签:classroom,insert,DML,update,员工,emp,where,class,select
From: https://blog.csdn.net/m0_53780713/article/details/142096097