Mysql操作表记录
前言
Mysql操作表记录增删改查语法
一、DML操作表(增删改)
1.插入记录(增)
方式一: 插入指定列, ==如果没有把这个列进行列出来, 以null进行自动赋值了
insert into 表(列,列...) values(值,值...);
方式二: 插入所有的列
insert into 表 values(值,值...);
2.更新记录(改)
update 表 set 列 = 值 [where 条件] //中括号表示条件可有可无
update 表 set 列 = 值 ,列 = 值, .... [where 条件]
3.删除记录
3.1 delete
delete from 表 [ where 条件] //删除数据用delete,不用truncate
delete from 表 //删除表中所有数据,表中的自增值将会延续自增
3.2
truncate table 表; //删除表中所有内容,表中的自增值也会恢复初始值
二、DQL操作表中记录(查询)
1.单表查询
1.基本查询语法
select [ * ] [ 列名,列名 ] [ 列名 as 别名 ..] [ distinct 字段 ] from 表 [ where 条件 ]
//新手建议先看下面 再回来看这个语句
选其中一种方式进行执行
2.简单查询
2.1 查询所有的列
select * from 表
2.2查询某张特定的表
select 列名,列名... from 表
2.3 去重查询
select distinct 字段名 from 表
2.4 别名查询
select 列名 as 别名 ,列名 from表
seect 别名.* from 表 as 别名
2.5运算查询(+ - * / 等)
select pricename ,price +10 from 表 //把商品名,和商品价格+10查询出来
3. 条件查询
select * from 表 where 条件
常用语法介绍:
3.1.between…and… 区间查询
select * from 表 where between 1 and 10 //查询1-10之间
3.2.in(值,值…)
select * from 表 where id in( 1,5,6) //查询id为 1,5,6的值
3.3.like 模糊查询
select * from 表 where name like '张%' --查询姓张的用户, 名字的字数没有限制 % 占0或者n位
select * from 表 where name like '张_' --查询姓张的用户 并且名字是两个的字的 _ 占一位
3.4.and 多条件同时满足
select * from 表 where 条件1 and 条件2 ...
3.5.or 任意条件满足
select * from 表 where 条件1 or 条件2 ...
2.排序查询
1.单列排序
select 字段名 from 表名 [where 条件] order by 字段名 [ASC/DESC] ; //ASC:升序,默认值; DESC:降序
范列:
select * from student order by id DESC;//以id降序查询所有学生
2.组合排序
select 字段名 from 表名 [where 字段名 = 值 ] order by 字段1 [ASC/DESC] ,字段2 [ASC/DESC]; //同时对多个字段进行排序,如果第1个字段相等,则按第2个字段排序,依次类推
范列:
select * from student order by id DESC ,age DESC //以id降序查询所有学生,如果id相同则用id进行降序排序
3.聚合函数
select 聚合函数(列) from 表名;
聚合函数:
max() 最大值
min() 最小值
sum() 求和
avg() 平均值
count() 统计数量
注意:聚合函数会忽略null值;
4 分组查询
1.分组
select 字段1,字段2...from 表名[where 条件 ] group by 列 [ having 条件 ]
范列:
select sex, count(*) from student group by sex having count(*) >3 ;//根据性别分组,统计每组学生总数>3的
5 分页查询
select 字段 from 表 limit 起始行数,查询的记录条数
3.Mysql 多表查询
1. 连接查询
1.内连接查询
1.1隐式内连接
select ... from 表1,表2 where 外键字段的值 = 主表主键的值 and 条件...;
1.2显示内连接
select ... from 表1 inner join 表2 on 外键字段的值 = 主表主键的值 [where 条件];
2.外连接
2.1左外连接
select ... from 左表 left [ outer ] join 右表 on 外键字段值 =主表主键值[ where 条件 ]
2.2右外连接
select ... from 右表 right [ outer ] join 左表 on 外键字段值 =主表主键值[ where 条件 ]
2.子查询
1.子查询的结果是一个值:
select ... from 表名 where 字段 (= > < >= <= <>) (子查询);
范例:
SELECT dept.name FROM dept WHERE dept.id IN (SELECT dept_id FROM emp WHERE salary > 5000);
//先查询大于5000的员工所在的部门id ,再查询在这些部门id中部门的名字
2.子查询的结果是单列多行:
select ... from 表名 where 字段 in (子查询);
3.子查询的结果是多列多行:
select ... from (子查询) 别名 where 条件;
select ... from (子查询) 别名,表名 别名 where 条件;
select ... from (子查询) 别名 left join 表名 别名 on 条件;
select ... from (子查询) 别名 right join 表名 别名 on 条件;