[mysql] mysql数据操作

本文详细介绍SQL的基本操作,包括数据插入、修改、删除及查询等核心功能,并解释了各种语句如INSERT、UPDATE、DELETE和SELECT的使用方法及其注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据修改

数据插入

1.插入元组:
    insert into 表名[(属性列,...)]
    values(),(),(),...;
2.插入子查询结果:
    insert into 表名[属性列名]
    子查询
注:
    子查询的结果只需数据类型与插入表对应即可,无需列名对应

数据修改

update 表名
set 属性列=取值
[where ...];

数据删除

delete from 表名
[where ...];

数据查询

注:
当表指定了别名时,其他地方都要用别名
当属性列执行了别名,其他地方还用原名

单表查询

select f(属性列名)[as 属性列别名],.... from 表名
[where f(属性列名) ]
[order by [属性列名 (asc|desc)],[属性列名 (asc|desc)]...]
[group by 属性列名]
[having f(属性列)]

select语句中f(属性列名):
    1.distinct 语句作用范围为select子句所有属性列
    2.聚集函数:(仅出现在select语句以及having子句)
        2.1count(*):统计元组个数
        2.2count([distinct]属性列名):统计属性列下非空元组个数(distinct表示重复值不计入结果)
        2.3sum([distinct]属性列名)
        2.4average([distinct]属性列名)
        2.5max(属性列名):最大分量值
        2.6min(属性列名):最小分量值
        
where语句的<行选择条件>:
    1.属性列 ? {属性列|常量}
    2.属性列 [NOT] between 常量1 and 常量2
    3.属性列 [NOT] like 字符串常量表达式(正则)
        正则表达式:
        _匹配任意一个字符
        %匹配任意长度字符
        []查询一定范围数据。[]用于指定一定范围内的任何单个字符,包括两端数据----------------------------------???
        [^]用来查询不属于制定范围的任何单个字符---------------------------????
        当匹配串中含有_%时,要使用escape'<换码字符>'制定取消通配符意义的换码字符
    4.属性列 is[NOT] NULL
    5.{属性列|常量} {[NOT]in|?{any|all}} {常量1[,常量2...]|(select 子句)}
    6.[NOT] exists (select 子句)
    7.<行选择条件> {and|or} <行选择条件>
    
group by:
    分组查询,若使用group by则select语句中的属性列必须来自group by的属性列(聚集函数属性列除外)
    
having:
    对分组进行统计,having语句必须在含有group by的子句查询语句中使用,不能单独使用。
    having与where的区别是:where子句作用在分组之前选择符合条件的记录,而having子句作用在分组之后选择符合条件的分组结果
执行顺序:
    where语句选出元组
    group by分组
    select语句(distinct|聚集函数)
    having子句

连接查询(多表查询)

注:
    进行连接运算的表,必须存在着某种关系的公共列,连接运算实际是比较各表的公共列值,如果满足条件的连接产生组合输出行。
连接操作的执行:
    1嵌套循环法
    2.排序合并法
    3.索引连接法
连接方式:
    1.内连接??????等值连接 自然连接
        实现一:from 表1 [inner] join 表2 on <连接条件>
        实现二:[表一.]属性列 <比较运算符> [表二.]属性列
    自连接(一种特殊的内连接)
    2.外连接
        左外连接、右外连接、全外连接

用TOP限制结果集

select [distinct] [top谓词] 属性列 from 表名
......

top谓词格式:
    top n[percent][with ties]
        n————前n
        n[percent]————前%n
        [with ties]————含并列
使用时注意:
    系统默认排列是按主键,使用top时考虑是否要用order by语句

嵌套查询

1.where子句嵌套查询
在查询的条件子句含有select查询子句
外层查询为父查询,内层为子查询
子查询可以返回单列或多列记录
子查询到对象可以使多个表,可以有条件子句和分组子句
子查询允许嵌套子查询
嵌套查询可分为不相关子查询和相关子查询

注:
    与=<>...比较晕算法相连的子查询,必须是返回非空的单值集合
    子查询只能比较运算符的右边,不能再比较运算符的左边
    如果子查询返回是空集火多值集合时,子查询只能用in,not in,any(有一个),all(所有),exists,not exists等比较运算符相连
    exists运算符是先执行外层查询,然后执行内层查询
    exists运算符和in,any,all所带的子查询方式基本相似,区别是:
        不用指定匹配的列值,而用*作为选择列表
        exists,all,any只能用于嵌套查询,而in,not in可以用于集合
    
2.from子句中的嵌套查询
查询结果作为一个表,然后用as指定表名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值