MySQL表的增删查改

06-01 1341阅读

目录

  • 一、MySQL表的增删查改
  • 二、Create
    • 单行数据+全列插入
    • 多行数据 + 指定列插入
    • 插入否则更新
    • 替换数据
    • 三、Retrieve
      • SELECT 列
      • WHERE 条件
      • NULL的查询
      • 结果排序
      • 筛选分页结果
      • 四、Update
        • 将孙悟空同学的数学成绩修改为80分
        • 将曹孟德同学的数学成绩修改为60分,语文成绩修改为70分
        • 将总成绩倒数前三的3位同学的数学成绩加上30分
        • 将所有同学的语文成绩修改为原来的2倍
        • 五、Delete
          • 删除数据
          • 删除整张表数据
          • 截断表
          • 六、插入查询结果
          • 七、聚合函数
            • 统计班级共有多少同学
            • 统计班级收集的QQ号有多少个
            • 统计本次考试数学成绩的分数个数
            • 统计数学成绩总分
            • 统计平均总分
            • 返回英语最高分
            • 返回70分以上的英语最低分
            • 八、分组查询
              • 分组查询测试表 —— 雇员信息表
              • 显示每个部门的平均工资和最高工资
              • 显示每个部门的每种岗位的平均工资和最低工资
              • HAVING 条件

                一、MySQL表的增删查改

                • 表的增删查改简称CRUD:Create(新增),Retrieve(查找),Update(修改),Delete(删除)。
                • CRUD的操作对象是对表当中的数据,是典型的DML(Data Manipulation Language)数据操作语言。

                  二、Create

                  新增数据

                  INSERT [INTO] table_name [(column1 [, column2] ...)] VALUES (value_list1) [, (value_list2)] ...;
                  

                  说明:

                  • SQL中大写的表示关键字,[ ]中代表的是可选项。
                  • SQL中的每个value_list都表示插入的一条记录,每个value_list都由若干待插入的列值组成。
                  • SQL中的column列表,用于指定每个value_list中的各个列值应该插入到表中的哪一列。

                    创建一个学生表,表当中包含自增长的主键id、学号、姓名和QQ号。

                    MySQL表的增删查改

                    创建完表后,查看表的结构。

                    MySQL表的增删查改

                    单行数据+全列插入

                    下面使用insert语句向学生表中插入记录,每次向表中插入一条记录,并且插入记录时不指定column列表,表示按照表中默认的列顺序进行全列插入,因此插入的每条记录中的列值需要按表列顺序依次列出。

                    MySQL表的增删查改

                    多行数据 + 指定列插入

                    使用insert语句也可以一次向表中插入多条记录,插入的多条记录之间使用逗号隔开,并且插入记录时可以只指定某些列进行插入。

                    MySQL表的增删查改

                    说明: 在插入记录时,只有允许为空的列或自增长字段可以不指定值插入,不允许为空的列必须指定值插入,否则会报错。

                    插入否则更新

                    MySQL表的增删查改

                    这时可以选择性的进行同步更新操作:

                    • 如果表中没有冲突数据,则直接插入数据。
                    • 如果表中有冲突数据,则将表中的数据进行更新。

                      插入否则更新的SQL如下:

                      INSERT ... ON DUPLICATE UPDATE column1=value1 [, column2=value2] ...;
                      

                      说明:

                      • SQL中大写的表示关键字,[ ]中代表的是可选项。
                      • SQL中INSERT之后语法与之前的INSERT语句相同。
                      • UPDATE后面的column=value,表示当插入记录出现冲突时需要更新的列值。

                        向学生表中插入记录时,如果没有出现主键冲突则直接插入记录,如果出现了主键冲突,则将表中冲突记录的学号和姓名进行更新。

                        MySQL表的增删查改

                        执行插入否则更新的SQL后,可以通过受影响的数据行数来判断本次数据的插入情况:

                        • 0 row affected:表中有冲突数据,但冲突数据的值和指定更新的值相同。
                        • 1 row affected:表中没有冲突数据,数据直接被插入。
                        • 2 row affected:表中有冲突数据,并且数据已经被更新。

                          替换数据

                          • 如果表中没有冲突数据,则直接插入数据。
                          • 如果表中有冲突数据,则先将表中的冲突数据删除,然后再插入数据。

                            只需要在插入数据时将SQL语句中的INSERT改为REPLACE即可。

                            若3号不存在则直接插入,否则修改数据。

                            MySQL表的增删查改

                            执行替换数据的SQL后,也可以通过受影响的数据行数来判断本次数据的插入情况:

                            • 1 row affected:表中没有冲突数据,数据直接被插入。
                            • 2 row affected:表中有冲突数据,冲突数据被删除后重新插入。

                              三、Retrieve

                              查找数据

                              SELECT [DISTINCT] {* | {column1 [, column2] ...}} FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...];
                              

                              说明:

                              • SQL中大写的表示关键字,[ ]中代表的是可选项。
                              • { }中的 | 代表可以选择左侧的语句或右侧的语句。

                                创建一个成绩表,表当中包含自增长的主键id、姓名以及该同学的语文成绩、数学成绩和英语成绩。

                                MySQL表的增删查改

                                创建完表后查看表结构,可以看到表结构。

                                MySQL表的增删查改

                                插入一些信息,以供进行查找。

                                MySQL表的增删查改

                                SELECT 列

                                全列查询

                                在查询数据时直接用 * 代替column列表,表示进行全列查询,这时将会显示被筛选出来的记录的所有列信息。

                                MySQL表的增删查改

                                说明: 通常情况下不建议使用*进行全列查询,因为被查询到的数据需要通过网络从MySQL服务器传输到本主机,查询的列越多也就意味着需要传输的数据量越大,此外,进行全列查询还可能会影响到索引的使用。

                                指定列查询

                                在查询数据时也可以只对指定的列进行查询,这时将需要查询的列在column列表列出即可。

                                MySQL表的增删查改

                                查询字段为表达式

                                查询数据时,column列表中除了能罗列表中存在的列名外,也可以将表达式罗列到column列表中。

                                MySQL表的增删查改

                                select不仅能够用来查询数据,还可以用来计算某些表达式或执行某些函数。

                                MySQL表的增删查改

                                如果我们将表达式罗列到column列表,那么每当一条记录被筛选出来时就会执行这个表达式,然后将表达式的计算结果作为这条记录的一个列值进行显示。

                                column列表中的表达式可以包含表中已有的字段,这时每当一条记录被筛选出来时,就会将记录中对应的列值提供给表达式进行计算。

                                MySQL表的增删查改

                                column列表中的表达式中也可以包含多个表中已有的字段,这时我们就可以通过表达式计算出更多有意义的数据。

                                MySQL表的增删查改

                                为查询结果指定别名

                                SELECT column [AS] alias_name [...] FROM table_name;
                                

                                说明:

                                • SQL中大写的表示关键字,[ ]中代表的是可选项。

                                  比如查询成绩表中的数据时,将每条记录中的三科成绩相加,然后将计算结果对应的列指定别名为“总分”。

                                  MySQL表的增删查改

                                  结果去重

                                  查询成绩表时指定查询数学成绩对应的列,可以看到数学成绩中有重复的分数。

                                  MySQL表的增删查改

                                  若想要对查询结果进行去重操作,可以在SQL中的select后面带上distinct。

                                  MySQL表的增删查改

                                  WHERE 条件

                                  添加where子句的区别:

                                  • 如果在查询数据时没有指定where子句,那么会直接将表中所有的记录作为数据源来依次执行select语句。
                                  • 如果在查询数据时指定了where子句,那么在查询数据时会先根据where子句筛选出符合条件的记录,然后将符合条件的记录作为数据源来依次执行select语句。

                                    where子句中可以指明一个或多个筛选条件,各个筛选条件之间用逻辑运算符AND或OR进行关联,下面给出了where子句中常用的比较运算符和逻辑运算符。

                                    比较运算符:

                                    运算符说明
                                    >、>=、
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码