MySQL必知必会总结_mysql必知必会则呢么样(2)

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

百分号(%)通配符

SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE 'jet%';

将检索任意以jet开头的词.%告诉MySQL接受jet之后的任意字符,不管它有多少字符。

需要注意的是,%可以匹配0个字符。

下划线(_) 通配符
下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符。

a) 不要过度使用通配符。如果其他操作符能达到相同的效果,应该使用其他操作符。

b) 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。

7. 用正则表达式进行搜索

基本字符匹配

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000'
ORDER BY prod_name;

LIEK与REGEXP之间有一个重要的差别:LIKE匹配整个列,如果被匹配的文本仅在列值中出现,LIKE将不会找到它,相应的行也不会被返回(除非使用通配符)。而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP就会找到它,相应的行将被返回。
进行OR匹配,使用|。

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000|2000'
ORDER BY prod_name;

匹配几个字符之一

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[123] Ton'
ORDER BY prod_name;

[123]也就是[1|2|3]的缩写。

匹配特殊字符,可以用\为前导。\-表示查找-,\.表示查找.。

8. 创建计算字段

SELECT Concat(vend_name, ' (', vend_country, ')')
FROM vendors
ORDER BY vend_name;

Concat()拼接串,即把多个串联接起来形成一个较长的串,各个串之间用逗号分隔。

Trim函数:RTrim去除串右边的空格,LTrim去除串左边的空格,以及Trim去除左右两边的空格。

SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')') AS vend_title
FROM vendors
ORDER BY vend_name;

执行算术计算

SELECT prod_id,quantity, item_price, quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num = 20005;

9. 使用数据处理函数

SELECT vend_name, Upper(vend_name) AS vend_upcase
FROM vendors
ORDER BY vend_name;

常用的文本处理函数包括Left(), Length(), Locate(), Lower(), LTrim(), Right(), RTrim(), Soundex(), SubString(), Upper()。
常用的数值处理函数包括Abs(), Cos(), Exp(), Mod(), Pi(), Rand(), Sin(), Sqrt(), Tan()。

10. 聚集函数

SQL聚集函数包括AVG(), COUNT(), MAX(), MIN(), SUM()。

COUNT()函数有两种使用方式:

a) 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的空值(NULL),还是非空值。

b) 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

MAX函数返回指定列中的最大值。MAX要求指定列名。

对非数值数据使用MAX():虽然MAX()一般用来找出最大的数值或日期值,但MySQL允许将它用来返回任意列中的最大值,包括文本列中的最大值。在用于文本数据时,如果数据按相应的列排序,则MAX()返回最后一行。MIN()返回第一行。

SUM函数将忽略列值为NULL的行。

SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
WHERE vend_id = 1003;
SELECT COUNT(*) AS num_items,
             MIN(prod_price) AS price_min,
             MAX(prod_price) AS price_max,
             AVG(prod_price) AS price_avg
FROM products;

11. 分组数据

SELECT vend_id, COUNT(*) AS num_prods
FROM products
GROUP BY vend_id;

GROUP BY可以包含任意数目的列。如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组上进行汇总。换句话说,在建立分组时,指定的所有列都一起计算。而且要求列出的每个列都必须是检索列或有效的表达式(
不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句给出。如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。GROUP BY必须出现在WEHRE子句之后,ORDER BY子句之前。

SELECT cust_id, COUNT(*) AS orders
FROM orders
GROUP BY cust_id
HAVING COUNT(*) >= 2;

HAVING支持所有WEHRE操作符。用来过滤分组。过滤是基于分组聚集值而不是特定行值的。它与WHERE的区别在于,WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。WHERE排除的行不包括在分组中。

SELECT vend_id, COUNT(*) AS num_prods
FROM products
WHERE prod_price >= 10
GROUP BY vend_id
HAVING COUNT(*) >= 2;

SELECT子句及其顺序

SELECT => FROM => WHERE => GROUP BY => HAVING => ORDER BY =>LIMIT

12. 使用子查询

SELECT cust_name, cust_contact
FROM customers
WHERE cust_id IN (SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id = 'TNT2'));
SELECT cust_name,
             cust_state,
             (SELECT COUNT(*)
              FROM orders
              WHERE orders.cust_id = customers.cust_id) AS orders
FROM customers
ORDER BY cust_name;

13. 组合查询

SELECT vend_id, prod_id, prod_price
FROM products
WHERE prod_price <= 5
UNION
SELECT vend_id, prod_id, prod_price
FROM products
WHERE vend_id IN (1001, 1002);

UNION指示MySQL执行两条SELECT语句,并把输出组合成单个查询结果集。

UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔。

UNION中的每个查询必须包含相同的列,表达式或聚集函数。

列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型。

UNION默认行为是去除了重复的行。如果不要求去除重复的行,可以用UNION ALL。

后加ORDER BY 可以进行查询结果的排序。

14. DELETE 表数据

如果想从表中删除所有的行,不要使用DELETE,可使用TRUNCATE TABLE语句,它完成相同的工作,但速度更快(TRUNCATE实际上删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。

15. 数据库对象的基本操作

MySQL用户帐户和信息存储在名为mysql的MySQL数据库中。

USE mysql;
SELECT user FROM user;

将会所有用户帐号列表。

创建用户帐户

CREATE USER ben IDENTIFIED BY 'xxxx';

RENAME USER ben TO bforta;  // 5.0之后支持。
DROP USER bforta;

新创建的用户帐号没有访问权限。它们能登陆MYsql,但不能看到数据,不能支持任何数据库操作。

想要看到用户帐户的权限,可以使用SHOW GRANTS FOR.

SHOW GRANTS FOR bforta;

为设置权限,使用GRANT语句。GRANT要求你至少给出以下信息:

  1. 要授予的权限;

  2. 被授予访问权限的数据库或表;

  3. 用户名。

GRANT SELECT ON $dbname.* TO bforeta;

授予访问权限。

GRANT的反操作是REVOKE, 用它来撤销特定的权限。

REVOKE SELECT ON $dbname.* FROM bforta;

而且被撤销的权限必须存在,否则将会出错。

GRANT和REVOKE可在几个层次上控制访问权限:

  1. 整个服务器,使用GRANT ALL和REVOKE ALL

  2. 整个数据库,使用ON database.*;

  3. 特定的表,使用ON database.table;

  4. 特定的列;

  5. 特定的存储过程。

更改口令:

SET PASSWORD FOR bforta = Password(“xxxx”);

如果不指定用户名,SET PASSWORD就是为当前用户更改口令。

DROP永久地删除数据库对象(表,视图,索引等)。

DROP DATABASE|INDEX|PROCEDURE|TABLE|TRIGGER|USER|VIEW itemname;

INSERT 给表增加一行。

INSERT INTO tablename [(columns, …)]

VALUES(values, …);

INSERT INTO tablename [(columns, …)]

SELECT columns, … FROM tablename, …

[WHERE …];

SELECT 用于从一个或多个表(视图)中检索数据。

SELECT columnname, …

FROM tablename, …

[WHERE …]

[UNION …]

[GROUP BY …]

[HAVING …]

[ORDER BY …];

UPDATE更新表中一行或多行。

UPDATE tablename

SET columnname = value, …

[WHERE …];

16. MySQL的基本数据类型

串数据类型

CHAR 1-255个字符的定长串,长度必须在创建时指定,否则MYSQL会认为是1.

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

e*

SET columnname = value, …

[WHERE …];

16. MySQL的基本数据类型

串数据类型

CHAR 1-255个字符的定长串,长度必须在创建时指定,否则MYSQL会认为是1.

[外链图片转存中…(img-NDcK0eIG-1715890856222)]
[外链图片转存中…(img-tQBRnL9e-1715890856223)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值