MySQL CRUD以及优化查询入门

插入数据

INSERT INTO `table_name`(field1,filed2,field2.....fieldN)
VALUES
(valus1,value2.....valueN),
(valus1,value2.....valueN);

获取当前时间可以用 now()

查询

语法

SELECT field1,field2... FROM table_name;

condition为查询条件

查询所有信息

SELECT * FROM table_name;

WHERE子句

语法

SELECT * FROM table_name WHERE condition;

condition为条件

应用

SELECT
  *
FROM
  timi_adc
where
  win_rate > 0.5;

Limit子句

在世纪查询时需要返回查询结果的前多少个结构,,这时可以使用limit子句来约束。

语法

SELECT * FROM table_name LIMIT parameter;

parameter是LIMIT语句的参数,例以下几种情况:

查询第 x-y 行

SELECT
  *
FROM
  table_name
LIMIT
  5, 6;

这句表示查询表的 6-11 行

第一个参数5表示从第六行开始查询第二个参数6表示一共查询6条记录

数据库计数也是从0开始,所以5代表第六行

LIMIT语句一般配合分页进行使用。

查询 0-x 行

SELECT
  *
FROM
  timi_adc
LIMIT
  5;

意思为查询表的第0-5行,等价于

SELECT * FROM timi_adc LIMIT 0,5;

查询第 x 行

SELECT
  *
FROM
  timi_adc
LIMIT
  4, 1;

LIMIT子句通常与WHERE一同使用

SELECT
  *
FROM
  timi_adc
WHERE
  appearance_rate > 0.1
LIMIT
  5;

排序(ORDER BY子句)

语法

SELECT * FROM table_name ORDER BY field_name;

默认排序是按照升序

DESC关键字

ORDER BY默认是正序,关键字为ASC(一般不写),可以加上DESC关键字变成倒序。

SELECT
  *
FROM
  timi_adc
ORDER BY
  win_rate DESC
LIMIT
  3;

更新/删除

UPDATE语法

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

必须加入WHERE限定条件,否则会对整列起作用

UPDATE
  timi_adc
SET
  ban_rate = 0.01
WHERE
  hero_name = '艾琳';

DELETE语法

DELETE FROM table_name [WHERE Clause]

例一

删除 user 表中 id 为 4 的行

DELETE FROM USER WHERE id=4;

例二

删除 user 表中 id 小于20的数据

DELETE FROM `user` WHERE id<20;

例三

删除表中所有数据

DELETE FROM user;

优化查询

LIKE查询

sql语句中 LIKE 子句可以达到模糊查询

语法

SELECT * FROM table_name WHERE condition LIKE condition;
%

SQL LIKE 子句中用百分号 % 来代替任何任意字符,若没有使用任意%,则LIKE相当于=

SELECT
  *
FROM
  timi_adc
WHERE
  hero_name LIKE '%孙%';

%孙%表示字符串中含有孙字

%孙 表示以孙结尾

孙% 表示以孙开头

_

例如查询孙尚香,但我们只记得叫 某尚香 时,可以采用 _尚香 来进行查询。

SELECT
  *
FROM
  timi_adc
WHERE
  hero_name LIKE '_尚香';

但若想要查询的例如是 公孙尚香 则上面语句无法查询到 但 %孙% 可以查询到。

And & Or

日常查询中会涉及到多个条件,此时会使用and&or

语法

SELECT * FROM table_name WHERE conditionA AND/OR condtionB;

SELECT
  *
FROM
  timi_adc
WHERE
  win_rate > 0.5
  AND win_rate < 0.51
  OR win_rate < 0.47;

有时多个条件需要加括号

SELECT
  *
FROM
  timi_adc
WHERE
  (
    win_rate > 0.5
    OR win_rate < 0.47
  )
  AND win_rate < 0.51;

IN/NOT IN

语法

SELECT * FROM table_name WHERE column IN (condtionA,condtionB);

查询热度为 T0 和 T3

SELECT
  *
FROM
  timi_adc
WHERE
  fever IN ('T0', 'T3');

等价于

SELECT
  *
FROM
  timi_adc
WHERE
  fever = 'T0'
  OR fever = 'T3';

NOT IN/NOT LIKE

例:热度不是 T0 的所有英雄

SELECT
  *
FROM
  timi_adc
WHERE
  fever NOT IN ('T0');

SELECT
  *
FROM
  timi_adc
WHERE
  hero_name NOT LIKE '%孙%';

NULL值的处理

运用 WHERE 可以根据提供的字段进行查询,但提供 NULL 时,该指令可能就无法正常工作。

NULL值的概念

NULL值对应的是 NOT NULL,它们是 MySQL 字段的数据类型的属性,本身不属于任何数据类型,NULL值也不等于空值,空值不占用储存空间,NULL会占用。

如何处理NULL

MySQL 提供了三种运算符:

  • IS NULL :当列的值为NULL时,这个运算符返回 true

  • IS NOT NULL :不为NULL 时,返回 true

  • <=> :当两边值都为 NULL 时或者两边相等时返回 true

语法

SELECT field_name1,field_name2
FROM table_name
WHERE field_name2 IS NOT NULL/IS NULL;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CAROL嘉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值