单表内容的增删改查
Posted saoqiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单表内容的增删改查相关的知识,希望对你有一定的参考价值。
操作表内容***
注册一个表
create table d1(id int ,name varchar(12));
insert into d1(id,name) values
(1,'小珊珊'),
(2,'小白白'),
(3,'小嘿嘿');
增删改
增加
普通版
insert into 表名 values (内容1,内容2),(内容1,内容2);
实列
insert into user values(2,'wusir'),(3,'太亮');
推荐版
insert into 表名 (字段1,字段2) values
(内容1,内容2);
实列
insert into staff_info (id,name,age,sex,phone,job) values (1,'Alex',83,'female',13651054608,'IT');
删除
delete from d1; # 清空表 不用 删除所有的数据,但是不会重置自增字段的数据号
delete from 表名 where 条件;
truncate 表名; 自增字段会重置
举例
delete from d1 where id = 3;
修改 #注意语法,可以同时来修改多个值,用逗号分隔
update 表名 set 修改内容; # 不用 修改所有
update 表名 set 修改内容 where 查找条件;
举 例
update d1 set name = 'alex',id = 2 where id = 1;
自定义显示格式 concat用法
相当拼接
select concat('姓名: ',name,' 年薪: ', salary*12) AS Annual_salary from employee;
查看表中内容
显示模式
四则运算:
SELECT salary*12 FROM employee;
自定义显示格式 concat用法
SELECT CONCAT('姓名: ',name,' 年薪: ', salary*12) AS Annual_salary FROM employee;
查表顺序
查看
select * from 表名;
举例
select * from d1;
# 查询全部表内容
# select * from d1;
# 进阶版查询
# 1.找到表:
# 实列
#select * from d1;
# 2.拿着 where 指定的约束条件,去文件/表中取出一条条记录
# 实列
# select * from d1 where hoppy='玩';
# 3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组
# # 实列 找到爱好是玩的 将年龄分组
# select * from d1 where hoppy='玩' group by age ;
# 5.将分组的结果进行having过滤
# 实列 找到爱好是玩的 将年龄分组 且id>3
# select * from d1 where hoppy='玩' group by age having count(id)>3;
# 6将结果排序asc(升序从小到大)desc(降序 从大到小)
# 实列
# select * from d1 where hoppy='玩' group by age having count(id)>3 order by price;
# 7限制结果的显示条数
# 实列 去前6个
# select * from d1 where hoppy='玩' group by age having count(id)>3 order by price limit 6;
# having 对组过滤 必须先分组 在组的后面
# 就是一个对组进行筛选的条件
# 要部门人数大于3个人的部门 count(id)>3
# select post from employee group by post having count(id)>3;
#
# order by 排序
# order by 字段 (默认升序)
# order by 字段 asc(升序从小到大)
# order by 字段 desc(降序 从大到小)
#
# order by 字段1,字段2
# order by 字段 asc,字段2 desc
# order by 字段 desc,字段2 asc
# order by 字段 desc,字段2 desc
# limit 取一个区间
# 1.显示分页
# limit m,n(耗内存)
# 表示从m+1开始,取n条
# limit 0,6 表示从1开始取6条
# limit 6,6 表示从7开始取6条
# limit 12,6 表示从13开始取6条
# limit 18,6 表示从19开始取6条
# 2.取前n名
# limit n m默认为0
# 跟order by一起用
# limit n offset m :从m+1开始,取n条
where 初级筛选
# where:
# 范围
# > < = <= >= !=/<>
# between and 举例 between 80 and 100
# in (a,b,c) not in
# 模糊查询
# like
# %任意长度任意内容 _一个长度任意内容
# regexp 正则
# 放正则
# 身份运算符 -->null
# is , is not
# 逻辑运算符
# and or not
group by分组 与聚合
# 分组 group by 与聚合函数
# select * from 表 group by 字段名
# 分组 group by(生成一个新表)
# 根据某个重复率比较高的字段进行的
# 这个字段有多少种可能就分成多少个组
# 根据性别分组 : 男的一组 女的一组
# 根据部门分组 : 销售一组 教学一组 ...
# 去重
# 一旦分组了就不能对具体某一条数据进行操作了
# 永远都是考虑 这组 xxx
# group_concat : 只用来做最终的显示,不能结果操作其他数据(属于这个组的所有人)
# 与聚合 联系 聚合函数
# 99.99%的情况都是和分组一起用的
# 如果没有和分组一起用,默认一整张表是一组
# count(id) / count(*) 计数 :每个组对应几条数据
# max 求最大值: 这个组中某字段的最大值
# min 求最大值: 这个组中某字段的最小值
# avg 求平均值
# sum 求和值
having对组过滤
# having 对组过滤 必须先分组 在组的后面
# 就是一个对组进行筛选的条件
# 要部门人数大于3个人的部门 count(id)>3
# select post from employee group by post having count(id)>3;
distinct 去重
示例:
select distinct post from employee;
注意问题:select的字段必须写在distinct的后面,并且如果写了多个字段,比如:
select distinct post,id from employee;这句话,意思就是post和id两个组合在一起同时重复的才算是重复数据
order by 排序
# order by 字段 (默认升序)
# order by 字段 asc(升序从小到大)
# order by 字段 desc(降序 从大到小)
#
# order by 字段1,字段2
# order by 字段 asc,字段2 desc
# order by 字段 desc,字段2 asc
# order by 字段 desc,字段2 desc
limit 取一个区间
# limit 取一个区间
# 1.显示分页
# limit m,n(耗内存)
# 表示从m+1开始,取n条
# limit 0,6 表示从1开始取6条
# limit 6,6 表示从7开始取6条
# limit 12,6 表示从13开始取6条
# limit 18,6 表示从19开始取6条
# 2.取前n名
# limit n m默认为0
# 跟order by一起用
# limit n offset m :从m+1开始,取n条
查询步骤
select distinct 字段1 as a,字段2... from 库名.表名 (如果没有use连接到某个库,需要写上库名)
where 条件
group by 分组依据字段
having 分组后再过滤
order by 排序 order by 字段 asc,字段 desc;
limit limit 3 limit 5,5 从索引为5的记录(第六条)开始算上这一条取5条
以上是关于单表内容的增删改查的主要内容,如果未能解决你的问题,请参考以下文章