MySQL的增删查改

一、插入
1.方式一
insert into 表名(字段名) values(值)
  • 特点
  1. 要求值的类型和字段的类型要一致或兼容
  2. 字段的个数和顺序不一定与原始表中的字段个数和顺序一致,但必须保证值和字段一一对应
  3. 假如表中有可以为null的字段,注意可以通过以下两种方式插入null值
    ①字段和值都省略
    ②字段写上,值使用null
  4. 字段和值的个数必须一致
  5. 字段名可以省略,默认所有列
2.方式二
insert into 表名 set 字段名=值
3. 俩种方式的区别
  1. 方式一支持插入多行,方式二不支持

insert into 表名(字段名,…) values(值,…),(值,…)

  1. 方式一支持子查询,方式二不支持

insert into  表名   查询语句

二、修改
1.修改单表的语法
update 表名 set 字段名=值   【where 筛选条件】
2. 修改多表的语法
update 表1 别名 
left|right|inner join 表2 别名 
on 连接条件  
set 字段=值,字段=值 【where 筛选条件】;
三、删除
1.使用delect
  • 删除单表的记录
delete from 表名 【where 筛选条件】【limit 条目数】
  • 级联删除[补充]
delete  别名1, 别名2  from  表1 别名 
inner|left|right  join 表2 别名 
on  连接条件  【where 筛选条件】
2.使用truncate
truncate table 表名
3.delect与truncate对比
delecttruncate
delete删除后,如果再插入,标识列从断点开始truncate删除后,如果再插入,标识列从1开始
delete可以添加筛选条件truncate不可以添加筛选条件
delect效率较低truncate效率较高
delete可以返回受影响的行数truncate没有返回值
delete可以回滚truncate不可以回滚

1.truncate删除后,如果再插入,标识列从1开始
delete删除后,如果再插入,标识列从断点开始
2.delete可以添加筛选条件
truncate不可以添加筛选条件
3.truncate效率较高
4.truncate没有返回值
delete可以返回受影响的行数
5.truncate不可以回滚
delete可以回滚

四、查询
1.基础查询
selete 查询列表  from 表名
  • 特点
  1. 查询列表可以是字段、常量、表达式、函数,也可以是多个
  2. 查询结果是一个虚拟表
2.条件查询
select 查询列表 from 表名 where 筛选条件
  • 筛选条件的分类

简单条件运算符

   > < = <> != >= <=  <=>安全等于

逻辑运算符

  • && and
  • || or
  • ! not

模糊查询

  • like:一般搭配通配符使用,可以判断字符型或数值型
  • 通配符:%任意多个字符,_任意单个字符
3.排序查询
select 查询列表 from 表名 where 筛选条件 order by asc|desc
  • 特点
  1. asc :升序,如果不写默认升序
    desc:降序
  2. 排序列表 支持 单个字段、多个字段、函数、表达式、别名
  3. order by的位置一般放在查询语句的最后(除limit语句之外)
4.分组查询
select 查询列表 from 表名 
where 筛选条件 
group by 分组字段
having 分组后的筛选
order by asc|desc
5. 连接查询
select 查询列表 from 表名1
inner|left|right|full  join  表名2
on 连接条件 
where 筛选条件 
group by 分组字段
having 分组后的筛选
order by asc|desc
  • sql92与sql99区别
sql92sql99(推荐使用)
内连接支持支持
外连接支持一部分(Oralce、SQL Server),MySQL不支持支持
交叉连接不支持支持
语法select 查询列表
from 表1 别名,表2 别名
where 表1.key=表2.key
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
select 查询列表
from 表1 别名
【inner/left/right/full/cross】 join 表2 别名
on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
  • 分类
内连接外连接交叉连接
等值连接左外连接类似于笛卡尔乘积
非等值连接右外连接
自连接全连接(MySQL不支持)
6. 分页查询
select 查询列表 from 表名1
inner|left|right|full  join  表名2
on 连接条件 
where 筛选条件 
group by 分组字段
having 分组后的筛选
order by asc|desc
limit (page-1) size
  • 注意:其中page为显示的页数,每一页条目数为size
7. 子查询
  • 含义

嵌套在其他语句内部的select语句称为子查询或内查询
外面的语句可以是insert、update、delete、select等,一般select作为外面语句较多
外面如果为select语句,则此语句称为外查询或主查询

  • 分类
  1. 按出现位置

select后面:

  • 仅仅支持标量子查询

from后面:

  • 表子查询

where或having后面

  • 标量子查询
  • 列子查询
  • 行子查询

exists后面:

  • 标量子查询
  • 列子查询
  • 行子查询
  • 表子查询
  1. 按结果集的行列

标量子查询(单行子查询):结果集为一行一列
列子查询(多行子查询):结果集为多行一列
行子查询:结果集为多行多列
表子查询:结果集为多行多列

  • 示例

where或having后面

  1. 标量子查询

案例:查询最低工资的员工姓名和工资
①最低工资

select min(salary) from employees

②查询员工的姓名和工资,要求工资=①

select last_name,salary
from employees
where salary=(
	select min(salary) from employees
);
  1. 列子查询

案例:查询所有是领导的员工姓名
①查询所有员工的 manager_id

select manager_id
from employees

②查询姓名,employee_id属于①列表的一个

select last_name
from employees
where employee_id in(
	select manager_id
	from employees
);
8.联合查询
查询语句1
union 【all】
查询语句2
union 【all】
...
  • 定义
    union:合并、联合,将多次查询结果合并成一个结果

  • 意义

  1. 将一条比较复杂的查询语句拆分成多条语句
  2. 适用于查询多个表的时候,查询的列基本是一致
  • 特点
  1. 要求多条查询语句的查询列数必须一致
  2. 要求多条查询语句的查询的各列类型、顺序最好一致
  3. union 去重,union all包含重复项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值