MySQL必知必会总结_mysql必知必会则呢么样

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

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

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

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

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

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.

ENUM 接受最多64k个串组成的一个预定义集合的某个串

LONGTEXT 与TEXT相同,但最大长度为4GB

MEDIUMTEXT 与TEXT相同,但最大长度为16M

SET 接受最多64K个串组成的一个预定义集合的零个或多个串

TEXT 最大长度为64K的变长文本

TINYTEXT 与TEXT相同,但最大长度为255字节

VARCHAR 长度可变,最多不超过255字节。如果在创建时指定为VARCHAR(n),则可纯初0到n个字符的变长串(n<=255)

数值数据类型

BIT 位字段,1~64位

BIGINT 整数值

BOOLEAN 布尔标志,或者为0或者为1.

DECIMAL 精度可变的浮点值

DOUBLE 双精度浮点值

FLOAT 单精度浮点值

INT 整数值

MEDIUMINT 整数值

REAL 4字节的浮点值

SMALLINT 整数值,2字节

TINYINT 整数值,1字节。

(可支持unsigned 类型)

日期和时间数据类型

DATE

DATETIME

TIMESTAMP 功能与DATETIME相同,但范围较小

TIME

YEAR

img
img

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

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

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

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

TINYINT 整数值,1字节。

(可支持unsigned 类型)

日期和时间数据类型

DATE

DATETIME

TIMESTAMP 功能与DATETIME相同,但范围较小

TIME

YEAR

[外链图片转存中…(img-xby3mNDG-1715890890170)]
[外链图片转存中…(img-4ax7Ihwl-1715890890170)]

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

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

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

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

  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值