MySql中对数据表中数据的操作

二. 关于对数据表中数据的操作

image-20220327143946741

以下数据的操作都是围绕这三个数据表

  • student

    image-20220326213009395
  • course表

    向输入cpno为null的元组,再选择cpno为已经输入元组cno值相同的元组输入。不然会出现参照不完整的报错。

    image-20220326212933211
  • CS表

    这个表的数据是查看cource表和student表中的数据

    image-20220326213021821

1)数据查询

a.单表查询
选择表中的列
  1. 查询指定列
select 属性1,属性2... from 表名
image-20220327153745446
  1. 查询全部列

    查询全部列时可以用*来标识所有列

image-20220327153602712
  1. 查询经过计算的值

    image-20220327154024253
image-20220327155337775
选择表中的行
  1. 去重

    使用distinct关键字

    image-20220327155552981
  2. 条件查询

    image-20220327160123971
    • 单条件查询

      a. 比较

      image-20220327160455089 image-20220327160349603

      b. 范围

      image-20220327160703960

      between是包含边界的

      image-20220327160738053

      not between不包含边界

      c. 确定集合

      image-20220327161007919

      d. LIKE模糊查询

      image-20220327161432840 image-20220327161959989

      _表示任意一个字符,如"李_",表示姓李,长度为2的名字

      image-20220327161844727

      _被用来表示任意一个字符,%表示任意多个任意字符,如果查询数据中包含这两个字符可以用ESCAPE转义

      使用\作为转义发生无法执行的错误

      image-20220327162951998

      被当作转义字符串的串最好是不经常使用的串>

      image-20220327163109463

      e. 多条件查询

      image-20220327163517355
order by 排序
image-20220327163712730

默认是递增(asc)排序。默认时可以省略asc。递减需要指定desc

聚集函数
image-20220327165729063

image-20220327165159962image-20220327165409526

group by 子句

GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。
对查询结果分组的目的是为了细化聚集函数的作用对象。分组后聚集函数将作用于每一个
组,即每一组都有一个函数值。

image-20220327170217670
b. 多表查询

student表

image-20220326213009395

course表

image-20220326212933211

SC表

image-20220326213021821
连接查询

连接时会把比较的两个列都显示出来>

等值连接
image-20220327172535479
非等值连接
image-20220327173003238
自身连接

自身连接需要对表取别名

image-20220327173919906
外连接
image-20220327175322308

留下前者的所有值

多表连接
image-20220327174224310
嵌套查询
image-20220327180623048
带有IN谓词的子查询

image-20220327181553379

先执行子查询找到刘晨的专业号,从student表中取出专业号集合中的数据

带有比较运算符的子查询

image-20220327185911296

找出成绩大于自身成绩平均值的学科

带有ANY (SOME) 或ALL谓词的子查询
image-20220327190757648

image-20220327191407287

image-20220327191130812

ANY是小于返回集合中的任意一个就行

image-20220327191312005

ALL是小于返回集合中的全部值

带有EXISTS谓词的子查询
image-20220327191601992

image-20220327192158082

存在选修1号课程的学生

image-20220327192255891
c. 集合查询

image-20220327200349666

  • 并union

    image-20220327202849841

image-20220327200919784

cs专业学生和年龄小于19的学生

  • 交 intersect

image-20220327201902722

MySQL不支持INTERSECT操作符

  • 差 except

    MySQL 不支持 EXCEPT 运算符。

    image-20220327203347465

d. 派生查询

子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表(derived table)成为主查询的查询对象。

image-20220327204827440

如果子查询中没有聚集函数,派生表可以不指定属性列
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-128FGqGP-1648440785033)(https://s2.loli.net/2022/03/27/FJdrURYQxDmnBTl.png)]

2)插入数据

a. 插入一般数据
  • 插入一列数据
INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );

field的元组可以缺省

  • 插入多列数据

    INSERT INTO table_name
    VALUES
    (value_for_column1, value_for_column2, value_for_column3,... value_for_columnN),
    (value_for_column1, value_for_column2, value_for_column3,... value_for_columnN),;
    
image-20220327145121849 image-20220327145204213
  • 插入特定列数据

    INSERT INTO table_name(column1, column3) VALUES (value_for_column1 , value_for_column3);
    
  • 插入子查询的结果

    insert into <表名> (属性1,属性2...) 子查询
    
b. 插入子查询结果
insert into 表名(属性1,属性2...) 子查询;

image-20220327210621881

3)删除数据

delete from 表名 where 条件
a. 删除某个元组

image-20220327213005160

b. 删除多个元组

image-20220327213424691

直接把表清空

c. 带子查询的删除

image-20220327213409700

4)修改数据

update 表名 set 列名1=表达式1,列名2=表达式2... where 条件
a. 修改某个元组

image-20220327212136504

b. 修改多个元组

image-20220327212324475

c. 带子查询的修改语句

image-20220327212453346

三. 视图

视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以一旦基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。视图一经定义,就可以和基本表一样被查询、被删除。也可以在一个视图之上再定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wuming先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值