• NoteOfMySQL-06-数据操作


    一、插入数据

    1. 不指定字段名

    insert into table_name values(value1, value2....)
    

    不指定字段名

    2. 指定字段名

    insert into table_name(col_name1, col_name2...) values(value1, value2....)
    

    指定字段名

    3. 同时插入多条记录

    insert into table_name(col_name1, col_name2...) values(value1, value2....), (value1, value2....), (...)
    

    同时插入多条记录

    4. 从目标表中插入值

    insert into table_name[col_name1, col_name2...] select super_col_name1,super_col_name2,... from super_table
    

    5. 将一条或多条记录插入表中,或将一张表的结果集插入到目标表中

    replace [into] table_name values(value1, value2 ...)
    

      使用replace语句添加记录时,若新记录的主键值或唯一性约束的字段值与已有的记录相同,则已有的记录被删除后再添加新记录。

    6. 注意

      可以通过使用第二种方法为表插入部分字段的数据。若字段没有设置默认值,且为非空,则必须为其插入数据。

    二、修改数据

    update table_name set col_name1=value1, col_name2=value2,... where 条件表达式
    

    修改数据

    三、删除数据

    1. 删除表数据

    delete from table_name [where 条件表达式]
    

    删除表数据

    2. 清空表数据

    truncate table table_name
    

    3. 注意

      truncate语句与不使用where的delete语句在功能上相同,但truncate速度更快。
      truncate语句在清空表数据后会重置自增型字段的计数起始值为1,而delete语句没有重置该值。

    四、单表查询

    1. 查询语句

    1.1 语法格式

    select [all | distinct] {字段列表 | *} from 表名或视图名列表 [where 条件表达式] [group by col_name] [having 条件表达式] [order by col_name> [ASC |? DESC]] [limit 字句]
    

    1.2 参数说明

    参数 说明
    all 显示所有行,包括重复行
    distinct 显示结果不包括重复行
    group by 按照列名对指定字段进行分组。若后面带有having语句,则需先满足条件表达式
    having 指定分组的条件
    order by 对查询结果进行排序,ASC表示升序,DESC表示降序
    limit 限制输出结果的行数

    1.3 例子

    查询语句

    2. 查询语句为字段名取别名

    2.1 作用:直观显示

    2.2 语法格式

    select [all | distinct] {col_name [as] [别名], ...} from 表名或视图名列表?...
    

    2.3 例子

    查询语句为字段名取别名

    3. 条件查询

    3.1 使用关系运算符、逻辑运算符

    3.2 IN关键字

    [not] in (x1,x2...)
    

    IN关键字

    3.3 BETWEEN AND关键字

    [not] between x1 and x2
    

    BETWEEN AND关键字

    3.4 IS NULL关键字

    is [not] null
    

    注意点 :

    -- 查询zno为null的记录
    select * from student where zno is null
    -- 查询zno为字符串"null"的记录
    select * form studnet where zno=null
    

    3.5 LIKE关键字

    (1)语法格式:[not] like 'str'

    (2)注意点

    • str可以包含'%'、'_'、正则表达式。%表示任意长度的字符串,_表示单个字符。
    • LIKE匹配整个列,如果被匹配的文本仅在列值中出现,LIKE不会找到它,相应的行也不会返回。而REGEXP在列值内进行匹配,如果被匹配的文本仅在列值中出现,REGEXP不会找到它,相应的行会返回。
    • ESCAPE<转化码>:可以在'%'、'_'前添加转化码,对通配符进行转移,使其称为普通字符。如 'stu%2018__' ESCAPE ''

    模式介绍

    4. 高级查询

    4.1 分组查询

    group by col_name
    

    分组查询

    4.2 结果排序

    order by col_name [ASC | DESC]
    

    结果排序

    4.3 限制查询数量

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

    限制查询数量

    4.4 聚合函数

    函数 说明
    count 统计记录的条数
    sum 计算字段值总和
    avg 计算字段值平均值
    max 查询字段最大值
    min 查询字段最小值

    注意点 :

    • 对于函数sum、avg、max、min,若列中所有值为null,则结果为null;若列中部分值为null,则只计算非null部分。
    • 对于函数sum、avg,若之间结果为空,则结果为null。

    4.5 合并查询结果

    select ... union [ALL | DISTINCT]  [select ... union [ALL | DISTINCT]] select ...
    

    如:查询女生信息或年龄少于18的信息

    select * from student where sex='女' union select * from student where age<=18;
    

    五、多表查询

    1. 内连接查询

    1.1 等值连接

    select * from sc INNER JOIN course ON sc.cno=course.cno limit 4;
    

    1.2 自然连接

    select * from sc NATURAL JOIN course limit 4;
    特点:自然连接会把目标列中重复的属性列去掉。
    

    1.3 不等值连接

    select * from sc INNER JOIN course ON sc.cno != course.cno limit 4;
    

    2. 外连接查询

      外连接查询中,如左外连接,会保留左表的所有记录,然后按照连接条件连接右表,若右表没有满足的记录则填充 NULL。

    select statement from table_1 LEFT|RIGHT [OUTER] JOIN table_2 on table_1.col_name = table_2.col_name;
    

    3. 子查询

      子查询返回true时,外查询进行查询,否则外查询不进行查询。其中,options是比较运算符,如=、!=、>、<。

    3.1 带IN

    select statement from table_name where col_name [NOT] IN (select 子句);
    

    3.2 带EXISTS

    select statement from table_name where col_name EXISTS (select 子句);
    

    3.3 带ANY

    select statement from table_name where col_name options ANY (select 子句);
    

    3.4 带ALL

    select statement from table_name where col_name options ALL (select 子句);
    


    面试题:truncate、delete、drop有什么区别?

    删除内容 删除定义 释放空间
    delete
    truncate
    drop
  • 相关阅读:
    深入理解JS中的变量及变量作用域
    浏览器加载、解析、渲染的过程
    gerrit和git
    宽高等比缩放
    常见的网站性能优化手段
    JS实现数组去重(重复的元素只保留一个)
    重构与回流
    APP开放接口API安全性——Token令牌Sign签名的设计与实现
    索引原理-btree索引与hash索引的区别
    从四个维度谈谈如何做好团队管理
  • 原文地址:https://www.cnblogs.com/bpf-1024/p/14059579.html
Copyright © 2020-2023  润新知