MySQL入门(二)

数据的增删改查

Posted by YD Blog on September 26, 2022

MySQL入门(二)

书接上文,在学会了表管理后,就应该开始学习对表内数据的管理了。

数据的增删改

  1. 添加数据
    -- 给指定列添加数据↓
    INSERT INTO TableName(列名1,列名2,...)
                 VALUES(1,2,...);
    -- 给全部列添加数据↓
    INSERT INTO TableName VALUE(1,2,...);
    -- 批量添加数据↓
    INSERT INTO TableName(列名1,列名2,...)
                 VALUES(1,2,...),
                 VALUES(1,2,...),
                 ...;
    INSERT INTO TableName   VALUE(1,2,...),
                         VALUES(1,2,...),
                         ...;
    
  2. 修改数据
    -- 将指定条件的数据修改为指定值↓
    UPDATE TableName SET 列名1=1,列名2=2,...
     WHERE 条件;
    -- 注意:若UPDATE语句没有WHERE条件则会将表中所有数据修改
    
  3. 删除数据
    -- 将指定条件的数据从表中删除↓
    DELETE FROM TableName WHERE 条件;
    -- 注意:若DELETE语句没有WHERE条件则会将表中所有数据删除
    

表中数据的查询

查询的基本语法

-- 基础的查询语句结构如下↓
SELECT
    字段列表
FROM
    表名列表
WHERE
    条件列表
GROUP BY
    分组字段
HAVING
    分组后条件
ORDER BY
    排序字段
LIMIT
    分页限定;

其中SELECT后的字段列表可以通过AS关键字标注别名

  • 条件查询(WHERE)

即WHERE语句后跟条件,条件写法与java条件类似。

SELECT
    *
FROM
    stu
WHERE
    age >= 20 AND age <= 30;
-- 既查询年龄在20~30的stu表中数据
-- 条件写法与java语法的区别
-- 等于不用双等号而是直接用=或者<>
-- null值的比较需要使用IS NULL或者IS NOT NULL,不能使用=和!=
-- BETWEEN...AND...表示在某个范围内开区间
-- IN (...)表示多选一
-- like占位符可用_表示单个字符,%表示多个
  • 分组查询(GROUP BY)

将表内数据分组分别进行查询。 分组的目的是分开统计,故需要使用聚合函数进行统计计算。 聚合函数的具体语法如下:

SELECT
    聚合函数名(列名)
FROM
    ;
-- 聚合函数具体如下5种:
-- count(列名),统计数量(一般不用于有null的列)
-- max(列名),最大值
-- min(列名),最小值
-- sum(列名),求和
-- avg(列名),求均值
-- 注意:所有的聚合函数在计算时都将null值排除在外

分组查询既在GROUP BY后加上分组字段名,HAVING进行条件筛选。 注意:分组后查询的字段为分组字段和聚合函数,其他字段无意义

SELECT
    sex,avg(math)
FROM
    stu
GROUP BY
    sex
HAVING
    count(*) > 2;
-- 即根据sex字段分组,返回分组后数据大于两个的math平均值和对应的sex

关于WHERE和HAVING的区别: 首先是执行时间不一样,WHERE是在分组前执行而HAVING是在分组后。 其次是可判断条件不同,WHERE不能使用聚合函数,而HAVING可以。

  • 排序查询(ORDER BY)

排序方式: ASC:升序排列(默认值,不指定排序方式既默认) DESC:降序排列

SELECT
    *
FROM
    stu
ORDER BY
    age ASC;
-- 即按照年龄升序排列stu表内所有数据
-- 排序查询可以指定优先级,在第一优先级的值一样的情况下遵循第二优先级进行排序
-- 例如
SELECT
    *
FROM
    stu
ORDER BY
    age ASC,
    id DESC;
-- 即按照age升序,若age相同则按照id降序排列
  • 分页查询(LIMIT)

若数据太多,一次性展示会造成内存过大,故可以分页返回查询的数据。 基础语法如下:

SELECT
    字段列表
FROM
    表明
LIMIT
    起始索引,查询条目数;

起始索引就是从第几条数据开始查询(偏移量),条目数即返回数据的条数。 MySQL的起始索引从0开始。 起始索引的公式如下: 起始索引=(当前页码-1)*每页显示的条数

SELECT
    *
FROM
    stu
LIMIT
    3,3;
-- 即每页显示3条,第二页

另外:

  • 分页查询LIMIT是MySQL的方言
  • Oracle分页查询使用ROWNUMBER
  • SQL Server分页查询使用的TOP

小结

查询语句的基本语法:

SELECT
    字段列表
FROM
    表名列表
WHERE
    查询条件
GROUP BY
    分组字段
HAVING
    分组后筛选条件
LIMIT
    起始索引,每页的数据条数;

这就是一个最完整的MySQL查询语句。