数据库-数据库基础3-使用SQL对表中数据进行增删改查(MySQL)

  • 理解SQL语言的概念
  • 掌握DML的语法
  • 会使用DML对表进行修改

一、SQL语言的概念

  • SQL-结构查询语言
  • SQL时一门独立的语言,专门为关系型数据库建立的查询语言

1、数据库定义语言:DDL语句

create 建表 alter 修改表 drop删除表

2、数据库操作语言:DML语句

insert插入(增) delete删除(删) update更新(改)

1)insert-给表中增加数据

插入的值和列是一一对应的关系
传入空值:‘’,中间不写即可,用单引号括住
格式一和格式二在所有数据库中通用

  • 格式一:
    insert into 表名(列名1,列名2,列名3……) values(值1,值2,值3……);如果插入的是字符串,需要用‘’
  • 格式2:省略列名
    insert into 表名 values(值1,值2,值3……);
  • 格式三:一次性插入多条记录,用逗号隔开
    insert into 表名 values(值1,值2……),(值1,值2,……);

2)delete-对表中数据进行删除

注意:delete和drop的区别
delete仅限于把表中数据删除,表还在
drop把表和表结构以及表中数据一并删除
所有格式在所有数据库中都通用

  • 格式一:
    将整个表中数据全部删除
    delete from 表名;
  • 格式二:
    根据条件删除数据
    delete from 表名 where 条件;
  • 如果需要删除满足多个条件的记录
    • and 条件是同时满足
      delete from 表名 where 条件1 and 条件2 and 条件3 ……;
    • or 多个条件只需要满足其中一个
      delete from 表名 where 条件1 or 条件2 or 条件3 ……;

注意:删除记录时注意外键的影响

3)update–对表中数据进行修改

所有格式在所有数据库中都通用
更新时,可以在原有的数据基础上进行运算

  • 格式一:将列对应的值全部更改
    update 表名 set 列名=值;
  • 格式二:同时更改多个列的值
    update 表名 set 列名1=值1,列名2=值2……;
  • 格式三:有条件的更新
    update 表名 set 列名=值 where 条件;
  • 格式三:有条件的更新多个列
    update 表名 set 列名1=值1,列名2=值2 where 条件;

例:在每个学生的现有年龄上都加3
update 表名 set 年龄=年龄+3;

4)select–查询数据

查询功能是数据库最基本也是最重要的功能。
查询–对已经存在于数据库中的数据按特定的组合、条件或次序进行检索。

(1)、基本的语法结构

只要说到查询,一定离不开的两个关键词
格式:
select 列名 from 表名;
select子句:select 列名 要查询的是什么
from子句:from 表名 告诉我们从哪里来

  • 所有 *
    select * from 表名;
    针对查询语句的题目,做题思路:1、先确定表;2、再来确定需要查询的列
  • 查询多个列的格式:
    select 列名1,列名2,列名3…… from 表名;
(2)、使用关键字distinct查询

如果用户希望在查询返回结果中删除重复行,就可以在select子句中使用distinct关键字
语法:
select distinct 列名 from 表名;

(3)、使用别名查询

使用select语句查询数据时,可使用别名的方法根据需要对数据显示的标题进行修改,对表中的列名无影响。

  • 格式1:
    单个列:select 列名 ‘别名’ from 表名;
    多个列:select 列名1 ‘别名1’,列名2 ‘别名2’,列名3 ‘别名3’,…… from 表名;
  • 格式2:as作为别名的标识
    select 列名 as ‘别名’ from 表名;
(4)、计算列

针对已经查询出来的结果,进行再次计算
例如:查询成绩表中,每个学生的成绩+10分的结果
select 学号,课程编号,成绩,成绩+10 ‘新成绩’ from 成绩表;

(5)、选择查询

从整个表中选出满足指定条件的内容,使用where子句。

  • 格式一:单一条件
    select 列名 from 表名 where 条件 ;
  • 格式二:多个条件
    select 列名 from 表名 where 条件1 and 条件2 and ……;
i、比较搜索条件

比较运算符

运算符含义
=等于
>大于
<小于
>=大于等于
<=小于等于
<>不等于
!=不等于
ii、逻辑运算符
运算符含义
and连接多个条件,这些是必须同时满足的
or连接多个条件,这些条件只需要满足其中一个
iii、范围搜索条件
  • 针对查询结果:满足某个范围内的数据
  • 可分为包括范围和排除范围两种类型。用between,not between;
  • 开始值和结束值被包含在查询范围内

格式一:在某个范围内 between……and……
select 列名 from 表名 where 列名 between 开始值 and 结束值;
格式二:不在某个范围内 not between …… and ……
select 列名 from 表名 where 列名 not between 开始值 and 结束值;

iv、列表搜索条件 in

in关键词使用户可以选择与列表中的任意值匹配的行,只要满足其中一个,就有查询值

  • 格式一:在列表范围内 in
    select 列名 from 表名 where 列名 in(值1,值2,值3……);

  • 格式二:不在这个列表范围之内的 not in
    select 列名 from 表名 where 列名 not in(值1,值2,值3……);

v、搜索条件中的字符匹配符 like(模糊查询)

like关键字搜索与指定模式匹配的字符串、日期或时间值。
模式包含要搜索的字符串,字符串中可包含2中通配符的任意组合;

通配符含义
%表示0个或多个字符
_表示一个字符

格式:like 用来匹配某个字符模式
select 列名 from 表名 where 列名 like ’字符模式‘;
格式:not like 用来避开某个字符模式
select 列名 from 表名 where 列名 not like ‘字符模式’;

(6)、涉及空集的查询–不确定的值 null
  • 空值(null)在数据库中表示不确定的值
  • 判断某个值是否为NULL值,不能使用普通的比较运算符
  • 判断取值为空的语句格式为:列名 is NULL
  • 判断取值不为空的语句格式为:列名 is not NULL

格式一:判断为空
select 列名 from 表名 where 列名 is null;
格式二:判断不为空
select 列名 from 表名 where 列名 is not null;

(7)、聚合函数
  • SUM([distinct]<列名>):计算列表总和;
  • AVG([distinct]<列名>):计算列值平均值;
  • MAX([distinct]<列名>):求列值最大值;
  • MIN([distinct]<列名>):求列值最小值;
  • COUNT(*):统计表中元组个数;看一个表有多少条记录
  • COUNT([distinct]<列名>):统计本列列值个数;统计某个列有多少个值

上述函数中除COUNT(*)外,其他函数在计算过程中均忽略NULL值
默认情况下保留4位小数

格式:select 聚合函数 from 表名;

(8)、MySQL的行数限定–limit

查询时按行获取,限定获取第几行到第几行
格式:
select 列1,列2…… from 表名 limit [start,] nums;
start:从第几行开始,可选字符,不写的话从0开始(MySQL数据库中记录从0开始)
nums:总共要查询几行

(9)、数据分组–group by
i、分组 group by

针对查询出来的结果进行分组
group by语句用于结合聚合函数,根据一个或多个列对结果集进行分组
格式:
select 列名,聚合函数 from 表名 group by 列名;

  • 1、先查询结果(先统计出相关的总数或者总和)
  • 2、统计出来之后或者查询出来之后,在进行分组(依据某个列进行的分组)
ii、分组条件 having
  • 对分组的结果添加条件
  • having通常与group by 子句一起使用,相当于一个用于分组的where子句(有having必须有group by 但是有group by 不一定有having)
  • having子句可以包含聚合函数,但where不可以

格式:
select 列名 from 表名 group by 列名 having 条件(一般情况下都是聚合函数当作条件)

(10)、排序 order by
  • order by 语句用于对指定的结果集进行排序
  • order by 语句默认升序
  • 降序排序可以使用desc关键字
  • 格式:
    select 列名 from 表名 order by 列名 ;升序(asc)
    select 列名 from 表名 order by 列名 desc;降序

    有时候排序是根据两个列进行排列的
    例如:查看成绩表中所有学生的记录,要求按照成绩升序排列,成绩相同时,按照学号进行降序排列。
    格式:
    select 列名 from 表名 order by 列名1 [asc],列名2 desc;
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值