美文网首页
MySQL单表记录操作(增、删、改、查)

MySQL单表记录操作(增、删、改、查)

作者: 指间Hrc | 来源:发表于2018-10-23 14:26 被阅读9次

    插入记录:

    语法结构:

    ⑴ INSERT [ INTO ] tbl_name [( col_name,...)] { VALUES | VALUE }

        ({ expr | DEFAULT },...),(...),...

    ⑵ INSERT [ INTO ] tbl_name SET col_name = { expr | DEFAULT },...

    ⑶ INSERT [ INTO ] tbl_name [( col_name,...)] SELECT ...

    注:第一种可以一次性插入多条记录,第二种方式可以使用子查询(SubQuery)且只能一次性插入一条记录,第三种可以将查询结果插入到指定数据表中。

    案例:

    创建一张表 tb_user4:

    插入一条记录:

    再插入一条记录:

    由图可以看出,主键 id 自动增长,而赋予该字段的值可以为 NULL 也可以为 DEFAULT:

    如果在插入记录的时,省略了列名:

    系统提示创建失败,原因是插入的列数和数据表里的列数不一致,所以在没有对指定列插入记录时,必须对数据表里所有列进行插入记录。

    同样可以同时插入多条记录:

    插入多条记录之间用 “,” 隔开。

    我们来看看第二种插入记录方法:

    插入一条记录,并查看表记录,由于 sex 允许非必填,所以插入记录的时候,可以忽略,系统自动赋值为 NULL 。

    更新记录(单表更新):

    语法结构:

    UPDATE [ LOW_PRIORITY ] [ IGNORE ] table_reference SET

    col_name1 = { expr1 | DEFAULT } [,col_name2 = { expr2 | DEFAULT }] ...

    [ WHERE where_condition ]

    案例:

    将表 tb_user4 的所有字段 age 的值加1:

    同时修改多个字段值,age 减 10,sex 等于 0:

    以上更新记录没有指定 WHERE 条件,所以对表中所有的记录进行了更新。

    通过条件来更新记录:

    修改字段 id = 3 的年龄,并对年龄加 1 。

    删除记录(单表删除):

    语法结构:

    DELETE FROM tbl_name [ WHERE where_condition ]

    案例:

    删除 id = 4 的记录:

    由图可以看出,id = 4 的记录已经不存在了。同样,如果没有指定 WHERE 条件,将删除数据表里所有记录。

    注:如果再插入一条记录,新记录的 id 会在现有的最大 id 值加1,而并不会补充原来被删除的 id 值。

    查询记录:

    语法结构:

    SELECT select_expr [,select_expr ...]

    [

        FROM table_references

        [ WHERE where_condition ]

        [ GROUP BY { col_name | position } [ ASC | DESC ],...]

        [ HAVING where_condition ]

        [ ORDER BY { col_name | expr | position } [ ASC | DESC ],...]

        [ LIMIT {[ offset,] row_count | row_count OFFSET offset }]

    ]

    其中,select_expr 查询表达式注意以下几点:

    ① 每个表达式表示想要的一列,必须且至少一个

    ② 多个列之间以 “,” 隔开

    ③ 星号(*)表示所有列。tbl_name.* 可以表示指定表的所有列

    ④ 查询表达式可以使用 [AS] alias_name 为其赋予别名

    ⑤ 别名可以用于 GROUP BY , ORDER BY 或 HAVING 字句

    案例:

    针对表 tb_user4,只查询字段 id和 username:

    注:查询字段的顺序,影响查询结果的顺序。

    也可以这么查询:

    当然了,对于查询一张表来说,完全没必要这么操作,如果是对于多表查询,而多表之间的字段名称又重复,为了区别字段是属于哪张数据表,必须在字段名称前加数据表名称。

    当我们在查询字段且字段名称特别长的时候,可以对其取别名:

    可以发现,查询结果的字段名称已经变成我们所赋予的别名。

    注:关键字 AS 一定要加上,加上,加上 !!!

    WHERE(条件表达式):

    ⑴ 对条件进行过滤,如果没有指定 WHERE 子句,则显示所有记录

    ⑵ 在 WHERE 表达式中,可以使用 MySQL 支持的函数或运算符

    GROUP BY(查询结果分组):

    语法结构:

    [ GROUP BY { col_name | position }] [ ASC | DESC ],...]

    其中,ASC 是升序,系统默认;DESC 是降序。

    案例:

    先查看下表 tb_user4 的所有数据:

    进行分组查询:

    可以看出表 tb_user4 中的字段 sex 存在两种类型的值,NULL 和 0 。

    HAVING(分组条件):

    语法结构:

    [ HAVING where_condition ]

    案例:

    对原有的分组过虑数量大于2的值:

    在使用 HAVING 对分组结果进行过滤时,建议使用聚合函数。

    ORDER BY (对分组结果进行排序):

    语法结构:

    [ ORDER BY { col_name | expr | position } [ ASC | DESC ],...]

    案例:

    查询下表 tb_user4 的记录:

    可以看出,以字段 id 默认是升序排列。

    以字段 id 降序排列:

    注:如果对多个字段进行排序,系统会依次对每个字段进行排序,输出用户想要的结果。

    举个栗子:

    如果对字段 age 进行排序(默认是升序):

    再添加一个字段 id 进行排序:

    通过以上两个查询结果可以看出,id 的排列顺序是不一样的,虽然在 id=2 和 id=1 的年龄是一样,但是由于 id 值不一样,所以系统以这两个相同值的 id 进行排序。

    LIMIT(限制查询结果返回的数量):

    语法结构:

    [ LIMIT {[ offset,] row_count | row_count OFFSET offset }]

    案例:

    LIMIT 后只添加一个 2,查询返回从第 1 条开始,即索引位置从0开始,并返回 2 条。(与 id 无关,与记录的位置有关)

    如果想查询第 3 条和第 4 条,可以这么操作:

    在文章开头,INSERT 的用法里,其中第二种方法,可以将查询的结果插入到指定表里。

    先新建一张表 tb_user5:

    现在把表 tb_user4 中年龄大于或等于 20 的记录插入到表 tb_user5 里面:

    可以发现,表 tb_user5 成功插入一条记录且该记录为表 tb_user4 里面年龄为 24 的记录。

    验证一下:

    以上是单表记录的一些常用操作,多表记录操作,下一篇见。

    以上为本人的一些学习笔记,如有出错欢迎指正,陆续更新!!!

    相关文章

      网友评论

          本文标题:MySQL单表记录操作(增、删、改、查)

          本文链接:https://www.haomeiwen.com/subject/hrfuzftx.html