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

文章目录

    • 二. 关于对数据表中数据的操作
      • 1)数据查询
        • a.单表查询
          • 选择表中的列
          • 选择表中的行
          • order by 排序
          • 聚集函数
          • group by 子句
        • b. 多表查询
          • 连接查询
            • 等值连接
            • 非等值连接
            • 自身连接
            • 外连接
            • 多表连接
          • 嵌套查询
            • 带有IN谓词的子查询
            • 带有比较运算符的子查询
            • 带有ANY (SOME) 或ALL谓词的子查询
            • 带有EXISTS谓词的子查询
        • c. 集合查询
        • d. 派生查询
      • 2)插入数据
        • a. 插入一般数据
        • b. 插入子查询结果
      • 3)删除数据
        • a. 删除某个元组
        • b. 删除多个元组
        • c. 带子查询的删除
      • 4)修改数据
        • a. 修改某个元组
        • b. 修改多个元组
        • c. 带子查询的修改语句
    • 三. 视图

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

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

  • student

  • course表

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

  • CS表

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

1)数据查询

a.单表查询

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

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

  1. 查询经过计算的值

选择表中的行
  1. 去重

    使用distinct关键字

  2. 条件查询

    • 单条件查询

      a. 比较

      b. 范围

      between是包含边界的

      not between不包含边界

      c. 确定集合

      d. LIKE模糊查询

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

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

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

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

      e. 多条件查询

order by 排序

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

聚集函数

group by 子句

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

b. 多表查询

student表

course表

SC表

连接查询

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

等值连接
非等值连接
自身连接

自身连接需要对表取别名

外连接

留下前者的所有值

多表连接
嵌套查询
带有IN谓词的子查询

image-20220327181553379

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

带有比较运算符的子查询

image-20220327185911296

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

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

MySql中对数据表中数据的操作_第1张图片

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

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

带有EXISTS谓词的子查询

image-20220327192158082

存在选修1号课程的学生

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)成为主查询的查询对象。

如果子查询中没有聚集函数,派生表可以不指定属性列
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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),;
    
  • 插入特定列数据

    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

三. 视图

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

你可能感兴趣的:(mysql,mysql,sql)